Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Amelioration MQTT / PREFIXE / TOPIC
#31
Merci a vous deux Smile
Répondre
#32
Bonjour 

Donc j'ai essayé de le faire moi meme sur la V12.06 car je suis passé de enphase à shelly em pro pour la source de donnée 
Bon le .bin , j'y arrive pas car j'ai un message de probleme de taille et il ne le créé pas Sad  Je l'envoi avec ARDUINO du coup 

Alors j'ai suivi tes indications sauf pour l'histoire de l'etat, cela fonctionne mais il y a un soucis pour la partie publication
Niveau forcage ok dans le prefixe mais pas la temperature (J'ai migré aussi d'une sonde interne a un capteur zigbee) 

Si je publie dans prefixe/temperatureMQTT , je reste à 0 alors que si je publie a la racine, cela fonctionne 

Pour infos, j'avais le meme soucis avec ta version V12
Répondre
#33
Ha je n'ai pas de sonde de temperature, je n'ai donc pas pu voir que j'avais oublié des choses  Big Grin

Je regarde et te redis  Tongue
Enphase -> Node-RED -> Source MQTT
3x IQ7+/3x 375WhC + 4x IQ8MC/4x 400WhC
1x Routeur 12.06_Custom -> CES 2,5kW
Domotique gérée sous Jeedom 4.4.19 (DIY VMM Synology)
Répondre
#34
(28-10-2024, 10:20 AM)Nalexdouze a écrit : Ha je n'ai pas de sonde de temperature, je n'ai donc pas pu voir que j'avais oublié des choses  Big Grin

Je regarde et te redis  Tongue

Merci  Smile
Répondre
#35
Voici l'ensemble de mes modifications MQTT mise à jour pour la version 12.06 au 29-10-2024 rassemblées dans cette réponse.

Action dans le Topic PrefixMQTT :

Dans le fichier MQTT.ino

• ajouts en ligne 10
Code :
char ActionsTopic[50];

• suppression de la ligne 63
Code :
char TopicAct[50];

• remplacement de l'ancienne ligne 64 et 65
Code :
sprintf(TopicAct, "%s", LesActions[i].Titre.c_str());
clientMQTT.subscribe(TopicAct);
par (devenue ligne 63 et 64)
Code :
sprintf(ActionsTopic, "%s%s", PrefixMQTT, LesActions[i].Titre.c_str());
clientMQTT.subscribe(ActionsTopic);

• ajoute en ligne (devenue 124, entre le for et le if)
Code :
sprintf(ActionsTopic, "%s%s", PrefixMQTT, LesActions[i].Titre.c_str());

• remplacement de la ligne 125
Code :
if (LesActions[i].Actif > 0 && LesActions[i].Titre == String(topic)) {
par
Code :
if (String(topic) == ActionsTopic && LesActions[i].Actif > 0) {

DiscoveryTopic dans le Topic homeassistant :

• aux lignes 210, 225, 236, 250 et 263, remplaceer PrefixMQTT par "homeassistant/"

soit par exemple pour la ligne 210
Code :
sprintf(DiscoveryTopic, "%s/%s/%s_%s/%s", PrefixMQTT, SSR, MQTTdeviceName.c_str(), VarName.c_str(), "config");
devient
Code :
sprintf(DiscoveryTopic, "%s/%s/%s_%s/%s", "homeassistant/", SSR, MQTTdeviceName.c_str(), VarName.c_str(), "config");

Organisation du topic façon Shellies :

• remplacement de la ligne 68 
Code :
sprintf(StateTopic, "%s%s_state", PrefixMQTT, MQTTdeviceName.c_str());

par
Code :
sprintf(StateTopic, "%s%s/state", PrefixMQTT, MQTTdeviceName.c_str());

• remplacement des lignes 63 et 124
Code :
sprintf(ActionsTopic, "%s%s", PrefixMQTT, LesActions[i].Titre.c_str());

par
Code :
sprintf(ActionsTopic, "%s%s/actions/%s", PrefixMQTT, MQTTdeviceName.c_str(), LesActions[i].Titre.c_str());

AvailableTopic dans le Topic PrefixMQTT/MQTTdeviceName :

• modifier la ligne 38
Code :
sprintf(AvailableTopic, "%s/%s", MQTTdeviceName.c_str(), TopicA.c_str());

par
Code :
sprintf(AvailableTopic, "%s%s/%s", S.c_str(), MQTTdeviceName.c_str(), TopicA.c_str());

• la déplacer en ligne 41 juste après
Code :
sprintf(PrefixMQTT,"%s",S.c_str());

Un topic infos pour la frime Tongue  :

Pour jouer je souhaitais un topic info  Wink

• ajouter en ligne 11
Code :
char InfoTopic[50];

• ajouter en ligne 80 et 81
Code :
sprintf(InfoTopic, "%s%s/info", PrefixMQTT, MQTTdeviceName.c_str());
clientMQTT.publish(InfoTopic, DEVICE, true);
 
juste après 
Code :
PeriodeMQTTMillis = 500;

Et voici ce que j'obtiens :
   

En postant les actions dans le topic : RMS/routeur-fcb467f4ea10/actions/Triac

Avec cette configuration
   

(27-10-2024, 08:20 PM)Francky a écrit : Bonjour 

Donc j'ai essayé de le faire moi meme sur la V12.06 car je suis passé de enphase à shelly em pro pour la source de donnée 
Bon le .bin , j'y arrive pas car j'ai un message de probleme de taille et il ne le créé pas Sad  Je l'envoi avec ARDUINO du coup 

Alors j'ai suivi tes indications sauf pour l'histoire de l'etat, cela fonctionne mais il y a un soucis pour la partie publication
Niveau forcage ok dans le prefixe mais pas la temperature (J'ai migré aussi d'une sonde interne a un capteur zigbee) 

Si je publie dans prefixe/temperatureMQTT , je reste à 0 alors que si je publie a la racine, cela fonctionne 

Pour infos, j'avais le meme soucis avec ta version V12

Je me demandais je ce que j'avais bien pu cassé  Big Grin

En fait apparement rien  Wink
Code :
        if (Source_Temp[C] == "tempMqtt") {
          char TopicV[50];
          sprintf(TopicV, "%s", TopicT[C].c_str());
          clientMQTT.subscribe(TopicV);
        }
      }
      if (Source == "Pmqtt") {
        char Topicp[50];
        sprintf(Topicp, "%s", TopicP.c_str());
        clientMQTT.subscribe(Topicp);
      }

Comme pour une source MQTT le routeur vas écouter le topic renseigné dans le champs du formulaire.

Ainsi dans mon cas j'ai fait les tests suivant :

   

Temp extérieure sur le topic ESP32/Capteur-Bureau/status/DS18B20:0
Et Temp ballon PAC sur le topic TemperatureMQTT

Comme tu peux le voir j'ai bien les deux canaux MQTT visible sur l'accueil

   

Et ils sont lu a différents endroits 

   

Et voici mon binaire compilé toujours avec le support de l'écran OLED  Big Grin


.zip   Solar_Router_V12_06CA-f.bin.zip (Taille : 847.6 Ko / Téléchargements : 3)
Enphase -> Node-RED -> Source MQTT
3x IQ7+/3x 375WhC + 4x IQ8MC/4x 400WhC
1x Routeur 12.06_Custom -> CES 2,5kW
Domotique gérée sous Jeedom 4.4.19 (DIY VMM Synology)
Répondre
#36
(29-10-2024, 03:44 PM)Nalexdouze a écrit : Voici l'ensemble de mes modifications MQTT mise à jour pour la version 12.06 au 29-10-2024 rassemblées dans cette réponse.

Action dans le Topic PrefixMQTT :

Dans le fichier MQTT.ino

• ajouts en ligne 10
Code :
char ActionsTopic[50];

• suppression de la ligne 63
Code :
char TopicAct[50];

• remplacement de l'ancienne ligne 64 et 65
Code :
sprintf(TopicAct, "%s", LesActions[i].Titre.c_str());
clientMQTT.subscribe(TopicAct);
par (devenue ligne 63 et 64)
Code :
sprintf(ActionsTopic, "%s%s", PrefixMQTT, LesActions[i].Titre.c_str());
clientMQTT.subscribe(ActionsTopic);

• ajoute en ligne (devenue 124, entre le for et le if)
Code :
sprintf(ActionsTopic, "%s%s", PrefixMQTT, LesActions[i].Titre.c_str());

• remplacement de la ligne 125
Code :
if (LesActions[i].Actif > 0 && LesActions[i].Titre == String(topic)) {
par
Code :
if (String(topic) == ActionsTopic && LesActions[i].Actif > 0) {

DiscoveryTopic dans le Topic homeassistant :

• aux lignes 210, 225, 236, 250 et 263, remplaceer PrefixMQTT par "homeassistant/"

soit par exemple pour la ligne 210
Code :
sprintf(DiscoveryTopic, "%s/%s/%s_%s/%s", PrefixMQTT, SSR, MQTTdeviceName.c_str(), VarName.c_str(), "config");
devient
Code :
sprintf(DiscoveryTopic, "%s/%s/%s_%s/%s", "homeassistant/", SSR, MQTTdeviceName.c_str(), VarName.c_str(), "config");

Organisation du topic façon Shellies :

• remplacement de la ligne 68 
Code :
sprintf(StateTopic, "%s%s_state", PrefixMQTT, MQTTdeviceName.c_str());

par
Code :
sprintf(StateTopic, "%s%s/state", PrefixMQTT, MQTTdeviceName.c_str());

• remplacement des lignes 63 et 124
Code :
sprintf(ActionsTopic, "%s%s", PrefixMQTT, LesActions[i].Titre.c_str());

par
Code :
sprintf(ActionsTopic, "%s%s/actions/%s", PrefixMQTT, MQTTdeviceName.c_str(), LesActions[i].Titre.c_str());

AvailableTopic dans le Topic PrefixMQTT/MQTTdeviceName :

• modifier la ligne 38
Code :
sprintf(AvailableTopic, "%s/%s", MQTTdeviceName.c_str(), TopicA.c_str());

par
Code :
sprintf(AvailableTopic, "%s%s/%s", S.c_str(), MQTTdeviceName.c_str(), TopicA.c_str());

• la déplacer en ligne 41 juste après
Code :
sprintf(PrefixMQTT,"%s",S.c_str());

Un topic infos pour la frime Tongue  :

Pour jouer je souhaitais un topic info  Wink

• ajouter en ligne 11
Code :
char InfoTopic[50];

• ajouter en ligne 80 et 81
Code :
sprintf(InfoTopic, "%s%s/info", PrefixMQTT, MQTTdeviceName.c_str());
clientMQTT.publish(InfoTopic, DEVICE, true);
 
juste après 
Code :
PeriodeMQTTMillis = 500;

Et voici ce que j'obtiens :


En postant les actions dans le topic : RMS/routeur-fcb467f4ea10/actions/Triac

Avec cette configuration


(27-10-2024, 08:20 PM)Francky a écrit : Bonjour 

Donc j'ai essayé de le faire moi meme sur la V12.06 car je suis passé de enphase à shelly em pro pour la source de donnée 
Bon le .bin , j'y arrive pas car j'ai un message de probleme de taille et il ne le créé pas Sad  Je l'envoi avec ARDUINO du coup 

Alors j'ai suivi tes indications sauf pour l'histoire de l'etat, cela fonctionne mais il y a un soucis pour la partie publication
Niveau forcage ok dans le prefixe mais pas la temperature (J'ai migré aussi d'une sonde interne a un capteur zigbee) 

Si je publie dans prefixe/temperatureMQTT , je reste à 0 alors que si je publie a la racine, cela fonctionne 

Pour infos, j'avais le meme soucis avec ta version V12

Je me demandais je ce que j'avais bien pu cassé  Big Grin

En fait apparement rien  Wink
Code :
        if (Source_Temp[C] == "tempMqtt") {
          char TopicV[50];
          sprintf(TopicV, "%s", TopicT[C].c_str());
          clientMQTT.subscribe(TopicV);
        }
      }
      if (Source == "Pmqtt") {
        char Topicp[50];
        sprintf(Topicp, "%s", TopicP.c_str());
        clientMQTT.subscribe(Topicp);
      }

Comme pour une source MQTT le routeur vas écouter le topic renseigné dans le champs du formulaire.

Ainsi dans mon cas j'ai fait les tests suivant :



Temp extérieure sur le topic ESP32/Capteur-Bureau/status/DS18B20:0
Et Temp ballon PAC sur le topic TemperatureMQTT

Comme tu peux le voir j'ai bien les deux canaux MQTT visible sur l'accueil



Et ils sont lu a différents endroits 



Et voici mon binaire compilé toujours avec le support de l'écran OLED  Big Grin




MERCI pour cette réponse ultra détaillée 
MAJ effectuée, je referais les tests pour la temperature demain
Répondre
#37
(01-07-2024, 12:33 AM)F1ATB a écrit : C'est homeassistant qui demande d'avoir homeassistant en préfixe
Cdlt

Bonjour André,
Je viens de passer de la V8.07 à la V12.06 et Je constate dans Home Assistant un nouvel RMS supplémentaire et pourtant Je n'ai pas changé d'ESP. 
Dans HA, Je suis obligé de tout reprendre la config de l'utilisation des "sensors" du RMS pour les retrouver dans mes tableaux de bord puisque pour HA la balise "ids" (identification unique) est obligatoire pour bénéficier de l'autodiscovery. Pour HA ce n'est pas le même RMS....
J'ai comparé les deux versions RMS et il semble que vous n'avez pas codé la valeur "ESP_ID" de la même façon. Y a t-il une raison particulière à ce nouveau codage ?
Cdlt.
Répondre


Atteindre :


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