F1ATB forum
Remonté d'erreur dans Home Assistant - Version imprimable

+- F1ATB forum (https://f1atb.fr/forum_f1atb)
+-- Forum : Forum de F1ATB (https://f1atb.fr/forum_f1atb/forum-3.html)
+--- Forum : Routeur Photovoltaïque (https://f1atb.fr/forum_f1atb/forum-4.html)
+--- Sujet : Remonté d'erreur dans Home Assistant (/thread-2383.html)



Remonté d'erreur dans Home Assistant - f4ame - 07-03-2026

J'ai des remontés d'erreur du routeur dans mes log home Assistant.
D'habitude je cherche et modifie mais en ce moment je manque de temps.
Si 'un de vous a la solution?

voici les erreurs :
Citation :première erreur:

Enregistreur: homeassistant.components.mqtt.client
Source: components/mqtt/client.py:1183
intégration: MQTT (documentation, problèmes)
S'est produit pour la première fois: 05:15:21 (8 occurrences)
Dernier enregistrement: 05:30:20

Can't decode payload b'{"name": "Tension M","uniq_id": "routeur_rms_Tension_M","stat_t": "homeassistant/routeur_rms_state","device_class": "voltage","unit_of_meas": "V","unit_class":"voltage",oF\xfc?\xa2E\xfc?larouteur_rms_RTE_Demain"val_tpl": "{{ value_json.Tension_M|default(0)|round(2)}}","device": {"ids":"31abe342a8","name":"Routeur - ECS","mdl":"ESP32 - 31abe342a8","mf":"F1ATB - https://f1atb.fr","hw":"ESP32-D0WD-V3 rev.301","sw":"17.08","cu":"http://192.168.1.45"}, "availability_topic": "homeassistant/routeur_rms/Available"}' on homeassistant/sensor/routeur_rms_Tension_M/config with encoding utf-8 (for <Job None HassJobType.Callback <function async_start.<locals>.async_discovery_message_received at 0x7fdd7a3a47d0>>)

Can't decode payload b'{"name": "Intensit\xc3\xa9 M","uniq_id": "routeur_rms_Intensite_M","stat_t": "homeassistant/routeur_rms_state","device_class": "current","unit_of_meas": "A","unit_class":"current",oF\xfc?\xa2E\xfc?larouteur_rms_RTE_Demain"val_tpl": "{{ value_json.Intensite_M|default(0)|round(2)}}","device": {"ids":"31abe342a8","name":"Routeur - ECS","mdl":"ESP32 - 31abe342a8","mf":"F1ATB - https://f1atb.fr","hw":"ESP32-D0WD-V3 rev.301","sw":"17.08","cu":"http://192.168.1.45"}, "availability_topic": "homeassistant/routeur_rms/Available"}' on homeassistant/sensor/routeur_rms_Intensite_M/config with encoding utf-8 (for <Job None HassJobType.Callback <function async_start.<locals>.async_discovery_message_received at 0x7fdd7a3a47d0>>)

deuxième erreur :

Enregistreur: homeassistant.components.sensor.recorder
Source: components/sensor/recorder.py:416
intégration: Capteur (documentation, problèmes)
S'est produit pour la première fois: 05:15:10 (2 occurrences)
Dernier enregistrement: 05:15:10

Entity sensor.routeur_ecs_routeur_rms_frequence from integration mqtt has state class total_increasing, but its state is not strictly increasing. Triggered by state 49.98 (previous state: 50.01) with last_updated set to 2026-03-07T04:10:32.027492+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+mqtt%22

Entity sensor.routeur_ecs_temperature_du_triac from integration mqtt has state class total_increasing, but its state is not strictly increasing. Triggered by state 16.9 (previous state: 17.0) with last_updated set to 2026-03-07T04:11:44.530511+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+mqtt%22



RE: Remonté d'erreur dans Home Assistant - Sgb31 - 07-03-2026

F4ame
Après une rapide analyse de Claude.AI, voilà le retour , en espérant que cle puisse t'aider :
Analyse de l'erreur HA :
L'erreur "Can't decode payload" vient du fait que les messages MQTT envoyés par ton ESP32 contiennent des données binaires corrompues au milieu du JSON.
Ce qui se passe concrètement
Dans le payload, tu vois cette séquence bizarre :
oF\xfc?\xa2E\xfc?larouteur_rms_RTE_Demain"val_tpl":

\xfc, \xa2 sont des octets non-UTF-8 (binaire brut)
Ces octets parasites s'insèrent au milieu du JSON, cassant le parsing
Home Assistant tente de décoder en UTF-8 → échec

Cause probable
L'ESP32 envoie des données mémoire non initialisées (garbage) dans le payload MQTT. C'est typiquement dû à :

Un buffer mal initialisé avant construction du JSON
Une variable non initialisée ou un pointeur foireux qui "fuite" dans la string
Un sprintf / snprintf sur un buffer trop petit (overflow)
Une concaténation de string qui déborde

La chaîne corrompue décryptée
La partie routeur_rms_RTE_Demain qui apparaît est le nom d'un autre topic MQTT — ça confirme que c'est un problème de mémoire partagée/overlap dans les buffers de l'ESP32.


RE: Remonté d'erreur dans Home Assistant - michy - 07-03-2026

Bonjour,

 mise à part les accents qui sont convertis, en caractères échappés avec \x suivi d'un code hexa sur 2 caractères [situation normale : "Intensit\xc3\xa9 M"  pour "Intensité T"]

dans la partie de code :
Code :
  char state_class[60];
  snprintf(DiscoveryTopic, sizeof(DiscoveryTopic), "%s%s/%s_%s/%s", PrefixMQTT, SSR, MQTTdeviceName.c_str(), VarName.c_str(), "config");
  snprintf(UniqueID, sizeof(UniqueID), "%s_%s", MQTTdeviceName.c_str(), VarName.c_str());
  snprintf(ValTpl, sizeof(ValTpl), "{{ value_json.%s|default(0)|round(%s)}}", VarName.c_str(), Round.c_str()); // le compilateur estime 24 caractères par string
  if (Unit == "Wh" || Unit == "kWh")
    snprintf(state_class, sizeof(state_class), "\"state_class\":\"total_increasing\",");
  else if (Unit == "W" || Unit == "kW")
    snprintf(state_class, sizeof(state_class), "\"state_class\":\"measurement\",");
  // Ajout de unit_class pour HA Core
  snprintf(value, sizeof(value), "{\"name\": \"%s\",\"uniq_id\": \"%s\",\"stat_t\": \"%s\",\"device_class\": \"%s\",\"unit_of_meas\": \"%s\",\"unit_class\":\"%s\",%s\"val_tpl\": \"%s\",\"device\": %s, \"availability_topic\": \"%s\"}", TitleName.c_str(), UniqueID, StateTopic, Class.c_str(), Unit.c_str(), Class.c_str(), state_class, ValTpl, DEVICE, AvailableTopic);

si on n'est pas sur un cas Unit en Wh, kWh, W ou kW, la variable  "state_class" n'est pas initialisée, (les cas qui posent problèmes sont des unités V, A et Hz)

juste changer pour initialiser la chaine comme étant vide:
Code :
  char state_class[60] = {0};

  dans la 17.06, c'était traité par   sprintf(state_class, "%s", "");

ça colle avec l'IA : Un buffer mal initialisé avant construction du JSON


RE: Remonté d'erreur dans Home Assistant - F1ATB - 08-03-2026

(07-03-2026, 10:33 PM)michy a écrit : Bonjour,

 mise à part les accents qui sont convertis, en caractères échappés avec \x suivi d'un code hexa sur 2 caractères [situation normale : "Intensit\xc3\xa9 M"  pour "Intensité T"]

dans la partie de code :
Code :
  char state_class[60];
  snprintf(DiscoveryTopic, sizeof(DiscoveryTopic), "%s%s/%s_%s/%s", PrefixMQTT, SSR, MQTTdeviceName.c_str(), VarName.c_str(), "config");
  snprintf(UniqueID, sizeof(UniqueID), "%s_%s", MQTTdeviceName.c_str(), VarName.c_str());
  snprintf(ValTpl, sizeof(ValTpl), "{{ value_json.%s|default(0)|round(%s)}}", VarName.c_str(), Round.c_str()); // le compilateur estime 24 caractères par string
  if (Unit == "Wh" || Unit == "kWh")
    snprintf(state_class, sizeof(state_class), "\"state_class\":\"total_increasing\",");
  else if (Unit == "W" || Unit == "kW")
    snprintf(state_class, sizeof(state_class), "\"state_class\":\"measurement\",");
  // Ajout de unit_class pour HA Core
  snprintf(value, sizeof(value), "{\"name\": \"%s\",\"uniq_id\": \"%s\",\"stat_t\": \"%s\",\"device_class\": \"%s\",\"unit_of_meas\": \"%s\",\"unit_class\":\"%s\",%s\"val_tpl\": \"%s\",\"device\": %s, \"availability_topic\": \"%s\"}", TitleName.c_str(), UniqueID, StateTopic, Class.c_str(), Unit.c_str(), Class.c_str(), state_class, ValTpl, DEVICE, AvailableTopic);

si on n'est pas sur un cas Unit en Wh, kWh, W ou kW, la variable  "state_class" n'est pas initialisée, (les cas qui posent problèmes sont des unités V, A et Hz)

juste changer pour initialiser la chaine comme étant vide:
Code :
  char state_class[60] = {0};

  dans la 17.06, c'était traité par   sprintf(state_class, "%s", "");

ça colle avec l'IA : Un buffer mal initialisé avant construction du JSON

J'ai corrigé dans la V17.10.
Merci Michy

André


RE: Remonté d'erreur dans Home Assistant - f4ame - 10-03-2026

Merci a tous je vais tester cette dernière version corrigée