From bfaa070fce04de474c2705d2869966faed6925c6 Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Fri, 16 Oct 2026 01:02:33 +0200 Subject: [PATCH] HA : un statut de borne illisible ne fabrique plus de faux branchement (vehicle_connected garde son etat) --- HANDOFF.md | 6 + packages/SAVE/victron_evcs.yaml | 250 ++++++++++++++++++++++++++++++++ 2 files changed, 256 insertions(+) create mode 100755 packages/SAVE/victron_evcs.yaml diff --git a/HANDOFF.md b/HANDOFF.md index 0752831..3b41cb9 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -2451,5 +2451,11 @@ batterie a 32 A et JEEP (branchee 13:01, 52 %) qui ne demarre pas. SOC 47 % a 12 - ⚠️ Rejeu du 14/10 20:40 : requis prudent **82,2 %** pour SOC 87 -> budget **1,44 kWh** seulement ; ma premiere analyse (« ~9 kWh, la batterie etait la bonne source ») utilisait le requis du matin (56 %) : fausse. Le gain reel du soir aurait ete ~1,4 kWh + les 2,8 kWh de batterie (corriges par A). - ⚠️ Les gardes de courant par bande de SOC restent en place sur le chemin batterie : debit possiblement bride. +### 16/10 01:00 — Faux branchements d'une seconde : supprimes a la source +- Signale par SPARK (15/10 01:30:29 -> question du concierge a 01:50). A 01:30:29.9, TOUS les capteurs MQTT de la borne passent a `unknown` ~0,2 s (le GX perd la borne, origine non verifiee cote GX) ; `binary_sensor.victron_evcs_vehicle_connected` faisait `status_raw | int(-1) != 0` -> statut illisible = « branche ». 7 faux allers-retours du 08 au 15/10 ; le controleur a ouvert une session de nuit 30 s le 15/10 (budget fige puis efface, borne commandee 8 s sans voiture) ; une etiquette VW (11/10 23:29, sessions_vues 0) accrochee a l'un d'eux, sans effet sur les totaux. +- Correctif (accord du proprietaire, 16/10 01:01) : statut illisible -> etat precedent (`this.state`). Fichier `packages/SAVE/victron_evcs.yaml` (⚠️ CHARGE par HA : `!include_dir_named` lit les sous-dossiers ; copie dans le depot `packages/SAVE/`), sauvegarde `.bak-20261016-statut-illisible`, check_config valide, gabarits recharges, capteur toujours `on` (VW branchee). Effet du rechargement : `last_changed` du capteur remis a 01:01:55 (aucun evenement, aucune session fraiche constatee). +- Cote SPARK : filtre concierge « branchement termine en < 2 min = pas de question » (garde en second rideau). +- Branchement VW du 15/10 14:09 etiquete par le proprietaire (etiquette `proprietaire` + session 16:23 0,64 kWh confirmee) ; la JEEP roulait pendant ce temps (Uconnect). + --- *Document mis a jour le : 14/10/2026 (~00:10) — disjoncteur EDF 100A (identifiants repris), revue (EDF absent, voiture payee par la batterie, interventions, kWh sur la puissance), piles (hysteresis + acquittement), frontal web .17 en cours ; 13/10/2026 (~06:30) — nuit du 12-13/10 : disjoncteur EDF qui n'executait pas la fermeture (alerte edf_ne_ferme_pas, envoyee a toute heure), charge HC manuelle reparee et utilisee a 40 % ; 13/10 : certificats HTTPS du .50 renouveles (via le .17) + alerte d'expiration ; 12/10 : VW payee par la batterie (temps mini + tolerance nuage bornes par le bilan), niveaux estimes par l'autonomie ; 10/10/2026 (~16:00) — conseiller relecteur de la journee (revue calculee + pistes) ; nuit : voiture qui profite d'EDF ferme pour la batterie, nuit qui prepare le soir les jours annonces faibles ; 08/10/2026 (~00:15) — jour faible : charge maximale en HC de midi (bilan 100 %, ACM plafond + solaire) ; 07/10/2026 (~22:45) — reprise de 16 h verifiee, EDF en HP a 18:03, bilan : reprise du soir et prevision recalee sur la matinee ; bilan HC de midi, reprise du soir apres coupure en pleine chauffe, mesure ECS sur 10 min ; recharge reseau HC : courant calcule (12 kVA) et consigne non tenue ; HC de midi : AUTO ne chauffe pas (BOOST), alerte v2, Jeep (contact, relecture, zone), recharge batterie bridee a 30 A par l'ACM ; jour faible = EDF les deux fenetres HC pour le chauffe-eau, alerte BOOST, Victron Mobile refait ; 1re decision jour faible en reel, mesure ECS reparee, douches 06:00/20:00, Grafana chauffe-eau, tableaux ECS ; chauffe-eau en HC de nuit les jours faibles (decision du bilan, workflow ECS sous controle du depot, VRM, V2.3 desactive) ; garde batterie reseau : voiture bridee a 6 A au lieu d'un arret ; garde-fou concierge 2 h ; allers-retours brefs de la borne retrouves dans l'historique HA (echange VW -> JEEP de 20 s), production 14,5 kWh contre 22 prevus, defaut garde batterie en mode reseau a trancher ; voiture a midi : la batterie n'est plus comptee comme du solaire (EDF automatique les jours de depart si le surplus ne couvre pas) ; nuit 05->06 : JEEP chargee sur EDF en complete (6,32 kWh), budget 0 du a la prevision, Windy/ECMWF contre VRM, a comparer ce soir ; concierge aligne sur la preuve fin de trajet ; a verifier : nuit 05->06 et mardi faible, comparaison VRM/Forecast.Solar ; JEEP identifiee aussi par sa fin de trajet, prevision de la nuit 05->06 ; identification JEEP reussie en reel, correction humaine qui prime (refus supprime), session du 04/10 coupee ; EVCS Master en quatre onglets ; Jeep lue par Uconnect et identifiee seule, capacite JEEP 10 kWh, concierge variante (a) ; releve par photo (SPARK), hass-uconnect en attente ; ecart semaine/week-end mesure (pas de profil week-end la nuit) ; nuit du budget : budget borne au plancher prudent, sans EDF = voiture bloquee meme EDF ferme (batterie seule) ; Energie : sauts corriges ; tableau Energie complete (Sud/Ouest, batterie par integration, borne ; aucun redemarrage HA) ; kilometrage des vehicules (km/kWh, capacite, releves de reference, agent cable 15/15) ; a verifier le 04/10 au matin : nuit du budget JEEP ; concierge : vehicule non confirme demande, heure de saisie ; Grafana vehicules en tableau ; Grafana vehicules : ZERO et Invite ajoutes, session 16:46 reetiquetee ZERO ; prevision SOC 10 h ~35 % ; concierge fiable : niveau note par le script, une ligne, dedoublonnage, simulation par drapeau ; agent : message incompris = question, bourse sur demande explicite (banc final 6/6) ; a verifier : nuit du samedi 03 au dimanche 04/10 (budget < besoin JEEP), cron orange-cloture lundi 05/10 apres 17:40, comparaison VRM / Forecast.Solar lundi 05/10* diff --git a/packages/SAVE/victron_evcs.yaml b/packages/SAVE/victron_evcs.yaml new file mode 100755 index 0000000..750f024 --- /dev/null +++ b/packages/SAVE/victron_evcs.yaml @@ -0,0 +1,250 @@ +mqtt: + sensor: + - name: "Victron EVCS Status Raw" + unique_id: victron_evcs_status_raw + state_topic: "N/c0619ab34ac5/evcharger/40/Status" + value_template: "{{ value_json.value }}" + icon: mdi:ev-station + + - name: "Victron EVCS Mode Raw" + unique_id: victron_evcs_mode_raw + state_topic: "N/c0619ab34ac5/evcharger/40/Mode" + value_template: "{{ value_json.value }}" + icon: mdi:tune + + - name: "Victron EVCS Current" + unique_id: victron_evcs_current + state_topic: "N/c0619ab34ac5/evcharger/40/Current" + value_template: "{{ value_json.value }}" + unit_of_measurement: "A" + state_class: measurement + icon: mdi:current-ac + + - name: "Victron EVCS Set Current" + unique_id: victron_evcs_set_current_sensor + state_topic: "N/c0619ab34ac5/evcharger/40/SetCurrent" + value_template: "{{ value_json.value }}" + unit_of_measurement: "A" + state_class: measurement + icon: mdi:current-ac + + - name: "Victron EVCS Max Current" + unique_id: victron_evcs_max_current + state_topic: "N/c0619ab34ac5/evcharger/40/MaxCurrent" + value_template: "{{ value_json.value }}" + unit_of_measurement: "A" + state_class: measurement + icon: mdi:current-ac + + - name: "Victron EVCS Min Current" + unique_id: victron_evcs_min_current + state_topic: "N/c0619ab34ac5/evcharger/40/MinCurrent" + value_template: "{{ value_json.value }}" + unit_of_measurement: "A" + state_class: measurement + icon: mdi:current-ac + + - name: "Victron EVCS Charging Time Raw" + unique_id: victron_evcs_charging_time_raw + state_topic: "N/c0619ab34ac5/evcharger/40/ChargingTime" + value_template: "{{ value_json.value }}" + unit_of_measurement: "s" + state_class: measurement + icon: mdi:timer-outline + + - name: "Victron EVCS Connected Raw" + unique_id: victron_evcs_connected_raw + state_topic: "N/c0619ab34ac5/evcharger/40/Connected" + value_template: "{{ value_json.value }}" + icon: mdi:connection + + - name: "Victron EVCS Product Name" + unique_id: victron_evcs_product_name + state_topic: "N/c0619ab34ac5/evcharger/40/ProductName" + value_template: "{{ value_json.value }}" + icon: mdi:ev-station + + - name: "Victron EVCS Custom Name" + unique_id: victron_evcs_custom_name + state_topic: "N/c0619ab34ac5/evcharger/40/CustomName" + value_template: "{{ value_json.value }}" + icon: mdi:rename-box + + - name: "Victron EVCS Serial" + unique_id: victron_evcs_serial + state_topic: "N/c0619ab34ac5/evcharger/40/Serial" + value_template: "{{ value_json.value }}" + icon: mdi:identifier + + - name: "Victron EVCS Firmware Version" + unique_id: victron_evcs_firmware_version + state_topic: "N/c0619ab34ac5/evcharger/40/FirmwareVersion" + value_template: "{{ value_json.value }}" + icon: mdi:chip + + - name: "Victron EVCS Device Instance" + unique_id: victron_evcs_device_instance + state_topic: "N/c0619ab34ac5/evcharger/40/DeviceInstance" + value_template: "{{ value_json.value }}" + icon: mdi:identifier + + - name: "Victron EVCS AC Power" + unique_id: victron_evcs_ac_power + state_topic: "N/c0619ab34ac5/evcharger/40/Ac/Power" + value_template: "{{ value_json.value }}" + unit_of_measurement: "W" + device_class: power + state_class: measurement + icon: mdi:flash + + - name: "Victron EVCS L1 Power" + unique_id: victron_evcs_l1_power + state_topic: "N/c0619ab34ac5/evcharger/40/Ac/L1/Power" + value_template: "{{ value_json.value }}" + unit_of_measurement: "W" + device_class: power + state_class: measurement + icon: mdi:flash + + - name: "Victron EVCS L1 Energy Forward" + unique_id: victron_evcs_l1_energy_forward + state_topic: "N/c0619ab34ac5/evcharger/40/Ac/L1/Energy/Forward" + value_template: "{{ value_json.value }}" + unit_of_measurement: "kWh" + device_class: energy + state_class: total_increasing + icon: mdi:lightning-bolt + + binary_sensor: + - name: "Victron EVCS Device Connected" + unique_id: victron_evcs_device_connected + state_topic: "N/c0619ab34ac5/evcharger/40/Connected" + value_template: "{{ value_json.value | int }}" + payload_on: "1" + payload_off: "0" + device_class: connectivity + icon: mdi:lan-connect + + switch: + - name: "Victron EVCS Charging" + unique_id: victron_evcs_charging + state_topic: "N/c0619ab34ac5/evcharger/40/StartStop" + value_template: "{{ value_json.value | int }}" + state_on: "1" + state_off: "0" + command_topic: "W/c0619ab34ac5/evcharger/40/StartStop" + payload_on: '{"value":1}' + payload_off: '{"value":0}' + icon: mdi:power + + - name: "Victron EVCS Auto Start" + unique_id: victron_evcs_auto_start + state_topic: "N/c0619ab34ac5/evcharger/40/AutoStart" + value_template: "{{ value_json.value | int }}" + state_on: "1" + state_off: "0" + command_topic: "W/c0619ab34ac5/evcharger/40/AutoStart" + payload_on: '{"value":1}' + payload_off: '{"value":0}' + icon: mdi:auto-fix + + number: + - name: "Victron EVCS Set Current Command" + unique_id: victron_evcs_set_current_command + state_topic: "N/c0619ab34ac5/evcharger/40/SetCurrent" + value_template: "{{ value_json.value }}" + command_topic: "W/c0619ab34ac5/evcharger/40/SetCurrent" + command_template: '{"value": {{ value | int }}}' + min: 6 + max: 32 + step: 1 + unit_of_measurement: "A" + mode: box + icon: mdi:current-ac + +template: + - sensor: + - name: "Victron EVCS Status" + unique_id: victron_evcs_status + state: > + {% set v = states('sensor.victron_evcs_status_raw') | int(-1) %} + {% if v == 0 %} + EV déconnecté + {% else %} + Inconnu ({{ v }}) + {% endif %} + icon: mdi:ev-station + + - name: "Victron EVCS Mode" + unique_id: victron_evcs_mode_text + state: > + {% set v = states('sensor.victron_evcs_mode_raw') | int(-1) %} + {% if v == 0 %} + Manuel + {% elif v == 1 %} + Auto + {% elif v == 2 %} + Planifié + {% else %} + Inconnu ({{ v }}) + {% endif %} + icon: mdi:tune + + - name: "Victron EVCS Charging Time" + unique_id: victron_evcs_charging_time + state: > + {% set s = states('sensor.victron_evcs_charging_time_raw') | int(0) %} + {% set h = s // 3600 %} + {% set m = (s % 3600) // 60 %} + {% set sec = s % 60 %} + {% if h > 0 %} + {{ h }}h {{ m }}m + {% elif m > 0 %} + {{ m }}m {{ sec }}s + {% else %} + {{ sec }}s + {% endif %} + icon: mdi:timer-outline + + - binary_sensor: + - name: "Victron EVCS Vehicle Connected" + unique_id: victron_evcs_vehicle_connected + # 16/10/2026 : un statut ILLISIBLE (le GX perd la borne ~0,2 s) garde + # l'etat precedent. Avant, `int(-1)` le transformait en -1, donc + # « branche » : 7 faux branchements d'une seconde du 08 au 15/10 + # (questions du concierge, session de nuit ouverte 30 s le 15/10 01:30). + state: > + {% set raw = states('sensor.victron_evcs_status_raw') %} + {% if raw | is_number %} + {{ raw | int != 0 }} + {% else %} + {{ this.state == 'on' }} + {% endif %} + device_class: plug + icon: mdi:car-electric + +script: + victron_evcs_mode_manuel: + alias: Victron EVCS Mode Manuel + sequence: + - service: mqtt.publish + data: + topic: "W/c0619ab34ac5/evcharger/40/Mode" + payload: '{"value":0}' + + victron_evcs_mode_auto: + alias: Victron EVCS Mode Auto + sequence: + - service: mqtt.publish + data: + topic: "W/c0619ab34ac5/evcharger/40/Mode" + payload: '{"value":1}' + + victron_evcs_mode_planifie: + alias: Victron EVCS Mode Planifié + sequence: + - service: mqtt.publish + data: + topic: "W/c0619ab34ac5/evcharger/40/Mode" + payload: '{"value":2}' +