Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Remonté d'erreur dans Home Assistant
#1
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/i...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/i...3A+mqtt%22
F4AME - Patoutheone
8 panneaux Recom Sillia Panther 375 Wc Full Black soit 3 KWc
Onduleur Huawei 3KTL-L1 mono et compteur DDSU666-H
Routeur F1ATB + 2 Afficheurs - Home Assistant


Répondre

#2
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.
Config : 3 routeurs F1ATB en V17.11 - 2 routeurs fixes en mode Triacs + 1 routeur mobile polyvalent en mode : Triac+SSR + 1 afficheur distant ESP32-S3
PV : (8*425W + Onduleur SunGrow 3KW) + (2 *500w + MO Hoymiles HMS-1000W-2T)
Supervision & Domotique : F1atb + Home Assistant / Shelly & MQTT
Répondre

#3
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
Merci André Smile ,
Routeur V17.10 (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (DemiSin) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (DemiSin ) : circuit d'eau 1500W
1 SSR (DemiSin ) : Ultime 2000W
Répondre

#4
(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é
Répondre

#5
Merci a tous je vais tester cette dernière version corrigée
F4AME - Patoutheone
8 panneaux Recom Sillia Panther 375 Wc Full Black soit 3 KWc
Onduleur Huawei 3KTL-L1 mono et compteur DDSU666-H
Routeur F1ATB + 2 Afficheurs - Home Assistant


Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
Stephane, 1 visiteur(s)

Moteur MyBB, © 2002-2026 Melroy van den Berg.