Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Améliorations MQTT ?
#1
Lightbulb 
Bonjour à tous,
Merci André de nous proposer ce projet très efficace !

Je rencontre depuis longtemps quelques désagréments au niveau de MQTT que j'utilise avec HA.
Le routeur est un élément essentiel dans mes cartes et participe à plusieurs calculs et statistiques, j'utilise l'UxIx2 avec les 2 sondes.
  • Le premier est très léger, lorsque je relance HA, les infos du routeur remontent plus ou moins rapidement.
A l'époque André avait intégré un cycle de 5 minutes pour obliger la "reconnexion" MQTT. 
Ca fonctionne, modulo ce délai < 5' suivant ou le cycle se trouve au moment du reboot.
  • Le second est plus agaçant. Peut-être est-il lié à mon usage (ou configuration F1AAB/HA) mais systématiquement au reboot du routeur, je me retrouve avec des données erronées dans HA qui faussent donc les statistiques.
Après analyse, il s'avère que le routeur transmets au reboot des valeurs à 0, notamment pour les énergies du jour (4). A chaque reboot HA incrémente donc ces capteurs avec le total de la journée en cours.

J'ai tenté avec l'aide de l'IA de résoudre ces deux inconvénients.

Je vous partage le code si c'est bien la bonne approche, de mon côté mes essais sont concluants.

Premier fix :
Code :
Ajout du flag retain: true sur les messages MQTT discovery (EnvoiMQTT.ino:340).
Lignes 341/361/374/389/402
Exemple : clientMQTT.publish(DiscoveryTopic, value, true);

Second fix :

Code :
a) Flag EnergieJourInitialisee (Solar_Router_V16_09.ino:379)

  bool EnergieJourInitialisee = false;

  Ce flag passe à true seulement après que EnergieQuotidienne() ait calculé les valeurs avec des données valides (ligne 1784) :

  if (Energie_M_Soutiree > 0) {
    EnergieJourInitialisee = true;
  }

  b) Blocage de l'envoi MQTT au démarrage (EnvoiMQTT.ino:132-134)

  if (EnergieJourInitialisee) {
    SendDataToHomeAssistant();
  }

Bon routage  Smile
Répondre

#2
Merci pour votre remarque.
Dans la Version 16.10 en cours de développement, j'ai utilisé la variable EnergieActiveValide pour autoriser l'envoi des informations d'énergie et de puissance à HA.

André
Répondre



Atteindre :


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

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