(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
par (devenue ligne 63 et 64)Code :sprintf(TopicAct, "%s", LesActions[i].Titre.c_str());
clientMQTT.subscribe(TopicAct);
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
parCode :if (LesActions[i].Actif > 0 && LesActions[i].Titre == String(topic)) {
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 :
Pour jouer je souhaitais un topic info
• 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 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é
En fait apparement rien
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
MERCI pour cette réponse ultra détaillée
MAJ effectuée, je referais les tests pour la temperature demain