Files
EVCS/src/energy-balance/HA_SNAPSHOT_TEMPLATE.json.tpl
Tallagrand Thierry c35c39cb83 Chantier : le bilan lit la courbe horaire au lieu de l'enveloppe
RESOURCE_ESTIMATE consomme desormais la courbe horaire publiee par le workflow
de prevision : forme et magnitude d'un seul tenant, sur 6 jours, avec les trois
plans reels et sans censure. Plus de repartition au prorata, plus de
renormalisation — le noeud se simplifie.

L'enveloppe est retrogradee en repli, utilisee seulement si la courbe est
absente ou vieille de plus d'une heure, le champ `mode` disant laquelle a
servi. Elle garde un role de repere de vraisemblance mais n'ecrete PLUS la
prevision : etant minoree l'apres-midi, elle tronquerait a tort une prevision
correcte.

Piege corrige au passage : le nouveau champ `source` entrait en collision avec
l'objet `source` deja present dans la sortie et etait silencieusement ecrase.
Renomme en `mode`.

Suite portee a 35 scenarios (courbe fraiche lue telle quelle, courbe perimee
basculant en repli).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
2026-08-25 02:37:41 +02:00

52 lines
2.4 KiB
Smarty

{{ {
"ts": now().isoformat(),
"nowMs": as_timestamp(now()) * 1000,
"balance_enabled": states("input_boolean.evcs_balance_enabled"),
"usable_capacity_kwh": states("input_number.evcs_balance_usable_capacity_kwh"),
"consumption_p50_csv": states("input_text.evcs_balance_consumption_p50"),
"consumption_p80_csv": states("input_text.evcs_balance_consumption_p80"),
"envelope_csv": states("input_text.evcs_balance_envelope"),
"censorship_rate_csv": states("input_text.evcs_balance_censorship_rate"),
"forecast_today_csv": states("input_text.evcs_balance_forecast_today"),
"forecast_tomorrow_csv": states("input_text.evcs_balance_forecast_tomorrow"),
"forecast_updated": states("input_text.evcs_balance_forecast_updated"),
"grid_soc_off": states("input_number.victron_grid_soc_off"),
"pv_power_w": states("sensor.victron_pv_power_system"),
"house_ac_power_w": states("sensor.victron_consumption_power_l1"),
"vebus_ac_out_l1_power_w": states("sensor.victron_ve_bus_ac_out_l1_power"),
"evcs_ac_power_w": states("sensor.victron_evcs_ac_power"),
"soc_percent": states("sensor.victron_battery_soc"),
"battery_current_a": states("sensor.victron_battery_current"),
"battery_voltage_v": states("sensor.victron_battery_voltage"),
"vebus_dc_power_w": states("sensor.victron_ve_bus_dc_power_system"),
"grid_switch": states("switch.edf_general_ok_switch"),
"acin1_available": states("sensor.victron_ac_in1_available"),
"grid_power_l1_w": states("sensor.victron_grid_power_l1"),
"multiplus_state": states("sensor.airtria_mpii_v1_state"),
"multiplus_overload_alarm": states("sensor.airtria_mpii_v1_overload_alarm"),
"system_state": states("sensor.gx_device_system_state"),
"ess_batterylife_state": states("sensor.gx_device_ess_batterylife_state"),
"dc_battery_state": states("sensor.gx_device_dc_battery_state"),
"mppt_1_state": states("sensor.airtria_mppt1_state"),
"mppt_2_state": states("sensor.mppt_450_200_hq2449yr9pt_state"),
"mppt_3_state": states("sensor.v1_state"),
"evcs_native_status": states("sensor.evcs_hq2239dnt7p_status"),
"forecast_today_remaining_kwh": states("sensor.energy_production_today_remaining"),
"forecast_today_kwh": states("sensor.energy_production_today"),
"forecast_tomorrow_kwh": states("sensor.energy_production_tomorrow"),
"forecast_next_hour_w": states("sensor.power_production_next_hour"),
"sun_elevation": state_attr("sun.sun", "elevation")
} | tojson }}