Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
MQTT et jeedom: mise en cache valeur température > 4 mins
#1
Bonjour, 
tout d'abord un grand merci pour le routeur.  J'ai réalisé le montage tout frais de ce weekend.
juste à temps pour le retour du soleil. Smile 
ça fonctionne plutôt bien dans l'ensemble et le fait d'avoir le code est un grand plus.
Quel plaisir d'arrêter d'envoyer gratuitement à EDF Wink


Au niveau de mon setup : 
  • J'utilise principalement la sortie triac en mode découpe sinus vers mon chauffe eau pour le moment. 
    J'ai mis 2 SSR pour utilisation future.
  • J'ai un jeedom avec sonde de température au niveau du chauffe eau en zwave
  • J'envoie la valeur via MQTT au routeur.


Le pb c'est que tant que la valeur de la sonde zwave ne change pas elle n'est pas ®envoyée par jeedom via MQTT.  
et le watchdog MQTT niveau routeur ne semble gérer qu'une durée de ~4 minutes avant de passer la valeur de température comme invalide. 

Quand la valeur de temp est considérée invalide, si elle est activée sur le triac: alors le triac est forcé à off quoi qu'il arrive.

Et ce même si on est dans la tranche horaire d'une action qui n'utilise pas la température (en mode sinus sur seuil Pw sans se baser sur la temp par exemple) 
Le pb se produit aussi si on fait marche forcée manuelle à ON, le triac passe à OFF après ~4 minutes si il n'a pas eu de nouvelle valeur de la temp.
et il repassera à ON dès qu'il aura reçu une nouvelle valeur par MQTT, pour 4 Minutes.. 


Pour commencer j'ai contourné plus ou moins en forçant jeedom à réenvoyer toutes les 5 minutes(mais on ne peut pas descendre plus bas) 
Le triac s'activait donc pendant ~4m puis restait off pendant 45s-60s , pour repassait à ON quand il reçoit à nouveau une valeur au bout de 5 minutes. 


Pour améliorer ce contournement j'ai augmenté la valeur de départ du watchdog de 5 à 12  
(en étant très large: jeedom renvoyant maintenant toutes les 5 minutes , même si jamais il y a une maj qui se perd, ça doit pouvoir tenir ~11 minutes sans valeur maintenant au lieu de ~4 minutes, donc 1 perte de 1 event est même tolérée.)


Code :
diff --git a/MQTT.ino b/MQTT.ino
index 153d48f..6d5f594 100644
--- a/MQTT.ino
+++ b/MQTT.ino
@@ -109,7 +109,7 @@ void callback(char *topic, byte *payload, unsigned int length) {
   for (int canal = 0; canal < 4; canal++) {
     if (String(topic) == TopicT[canal] && Source_Temp[canal] == "tempMqtt") {
       temperature[canal] = ValJson("temperature", message);
-      TemperatureValide[canal] = 5;
+      TemperatureValide[canal] = 12;

ça l'air de faire le job pour le moment. 


Idéalement le mieux serait aussi que dans le cas du forçage à ON manuel ou que si l'on est dans la tranche horaire d'une action qui n'utilise pas la température, 
le fait que la température soit manquante ou invalide n'impacte pas ces actions.


A noter aussi que jeedom par défaut envoie la valeur dans la clé "value" et non pas temperature

J'ai du modifier manuellement dans le code comme suit 
      temperature[canal] = ValJson("value", message);

Rajouter la possibilité de configurer dans l'interface le nom de la clé où aller chercher dans le json serait un plus Smile
Sinon je remergerai mes modifs à chaque version , ça n'est pas très long à faire non plus.

Merci.
Répondre
#2
(04-11-2024, 05:22 PM)tim a écrit : Pour commencer j'ai contourné plus ou moins en forçant jeedom à réenvoyer toutes les 5 minutes(mais on ne peut pas descendre plus bas) 

Bonjour Tim,

Tu peux créer un scénario qui se déclenche chaque minute (* * * * *) et qui renvoie la valeur de ta sonde, qu'elle ait changé ou pas.
Répondre
#3
Bonjour,

Et un flux Node-RED qui reformate le value en température et qui colle un retain pourrait faire l'affaire ?
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
#4
Oui le formattage il y a moyen de se débrouiller en bidouillant de diverses autres manières en effet. 
Tu peux éventuellement le faire directement dans une action custom et ta propre topic en créant un nouvel equipement MQTTManager, ou faire des templates customs..

Mais le but était plus de simplifier le process en utilisant le natif du plugin
et faire que le routeur soit compatible et plus accessible "pour Mr tout le monde",
sans avoir un rajouter 3 couches par dessus que ce soit un scenario, action custom , ou du nodered..

La plupart des gens va juste essayer d'installer le plugin MQTTManager
et cocher la case du / des sensors directement dans le plugin pour les envoyer au routeur.
C'est le plus "user friendly".

Et donc laisser tomber si ça ne fonctionne pas ce qui est dommage, il ne manque pas grand chose pour que ça colle directement avec jeedom en faisant ça.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : DEMEIGE, 2 visiteur(s)