Page 1 sur 2

NODE RED Vers mqtt DOMOTICZ

Publié : 13 avr. 2023, 22:57
par david86
Bonsoir à tous,
En suivant des tuto j'ai réussi à récupérer les informations d'un bus RS485 et de l'envoyer en mqtt. Via nodered je sais récupérer le topic, mais après je ne sais pas quoi ni où ni comment me diriger pour envoyer ces différentes valeurs vers domoticz ?
Merci,

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 10:25
par boum

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 10:36
par Jeff
Node red est très puissant et assez complexe quand on est pas développeur comme moi.
Au fur et à mesure des années, j'arrive à traiterles données et les rediriger vers autres devices (nextion, magic mirror; afficheur RGB), jamais vers domoticz d'ailleurs :?

Je procède de cette façon.
Récupérez les données comme tu le fais et après les traiter, via une fonction et les envoyer. Prendre ces blocs.
fonction_node_red.JPG
fonction_node_red.JPG (12.37 Kio) Consulté 1738 fois
En dans le bloc fonction, traiter les données de cette façon

Code : Tout sélectionner

//*********************TEMP MINI MAXI*****************
//Temp mini
var temp_min = 50;

for (var i = ndebut; i <= nfin; i++) {
    var tmini = (msg.data.list[i].main.temp_min);
    if (tmini < temp_min) {
        temp_min = tmini;
    }
}

//Temp maxi
var temp_max = -50;

for (var i = ndebut; i <= nfin; i++) {
    var tmax = (msg.data.list[i].main.temp_max);
    if (tmax > temp_max) {
        temp_max = tmax;
    }
}

var tempminimaxi = parseInt(temp_min) + "°" + "/" + parseInt(temp_max) + "°";
var urltempminimaxi = "http://192.168.1.110/control?cmd=NEXTION,minimaxi1.txt=" + "\"" + tempminimaxi + "\"";
node.send({ topic: msg.payload[ndebut].dt_txt, url: urltempminimaxi });
Je passe par des urls et donc dans ton cas, tu peux utiliser api Json de domoticz.
Tu dois aussi pouvoir l'envoyer en MQTT compatible domoticz, en sortie à la place d'un node URL , tu prends un MQTT sortant.

Voila des pistes, en espérant t'aider. A l'occasion je testerais l'envoi vers domoticz

Edit : ici ca semble beaucoup plus clair que mes explications pour ton besoin :lol:
https://www.domoticz.com/forum/viewtopic.php?t=36463

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 10:51
par david86
Ca fait un peu peur, mais je vais y regarder, merci quand même :D :D

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 12:01
par Jeff
Tu verras, une fois la logique compris, ca le fera.
Essaye déjà de récupérer la valeur qui intéresse et affiche dans le debug.
Tu peux utiliser des variables aussi

Code : Tout sélectionner

msg.payload = msg payload.battery_temp;
Return msg

Code : Tout sélectionner

var tempbatt = msg.payload.battery_temp
var conso = msg.payload.consumption
msg.payload = tempbatt + conso;
return msg

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 12:17
par david86
ça c'est ok, merci, j'avais un peu avancé sur les debug, mais pas avec des variables. Petite avancé pour moi, merci.

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 12:19
par david86
Maintenant ça serait d'etre capable d'envoyer cette donnée vers un idx de domoticz avec des lignes de ce type :

msg.payload = {"command": "switchlight", "idx": idx, "switchcmd": "Off"};

ou

msg.payload = {};
msg.payload.idx = 1110;
msg.payload.svalue = ".......;
return msg;

:?

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 12:36
par Jeff
J'ai fait vite fait l'essai avec une sonde temp/humidité/baro vers domoticz à partir de openweather
Ca marche nickel en MQTT.
MQTT_flows.JPG
MQTT_flows.JPG (21.6 Kio) Consulté 1714 fois
Json_open.JPG
Json_open.JPG (17.51 Kio) Consulté 1714 fois
La fonction

Code : Tout sélectionner

var idx = 373;
var tempc = msg.payload.tempc;
var humidity = msg.payload.humidity;
var baro = msg.payload.pressure;
var data = tempc + ";" + humidity + ";" + 0 + ";" + baro + ";" + 0 ; //json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT;BAR;BAR_FOR
msg.payload = { "idx": idx, "nvalue": 0, "svalue": data }

return msg;
Device_dz.JPG
Device_dz.JPG (17.44 Kio) Consulté 1714 fois
Pour les svalue, se servir de l'API Json, lien ci dessus.

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 12:47
par david86
Dans la fonction, tu as copié copié collé directement ce que tu m'as mis ?
Ca communique, mais dans les log de domoticz j'ai invalid data, il y a déjà une grosse avancée, merci !

Re: NODE RED Vers mqtt DOMOTICZ

Publié : 14 avr. 2023, 12:58
par david86
Avec la fonction ci-après :

Code : Tout sélectionner

var idx = 1146;
var tempbatt = msg.payload.battery_temp
var data = tempbatt;
msg.payload = { "idx": idx, "nvalue": 0, "svalue": data }
return msg;
sachant que mon idx 1146 est un dummy device de tempérture uniquement et si je saisis dans mon explorateur directement :

Code : Tout sélectionner

adresseIP:port/json.htm?type=command&param=udevice&idx=1146&nvalue=0&svalue=20
la valeur est prise en compte dans domoticz