Transmettre une température de Domoticz vers ESP8266 via MQTT
Transmettre une température de Domoticz vers ESP8266 via MQTT
Bonjour,
Après 3 jours de recherche sur les forums, je me décide à poser ma question.
Sur un Raspberry sur lequel je fais des essais et des tests, j'ai Domoticz et Mosquitto. Une sonde envoie la température à Domoticz par RFlink. Tout va bien. Quand Domoticz reçoit une température, il envoie un topic sur MQTT.
Par ailleurs, j'ai un Wemos mini avec ESPeasy sur lequel sont branchés un BMP085 (baromètre), un DHT 22 et un petit afficheur Oled. Le Wemos affiche les 3 valeurs et les envoie à Domoticz via MQTT. Tout fonctionne bien.
Je voudrais maintenant afficher sur l'écran du Wemos la température de l'autre sonde. Pour cela, je cherche à la récupérer par un device "Generic - MQTT import" de ESPeasy.
Je ne vois pas comment parser correctement les topics envoyés par Domoticz pour récupérer l'info...
Voici mes pages de configuration de Espeasy : Et un exemple du topic envoyé par Domoticz :
{
"Battery": 0,
"RSSI": 12,
"description": "",
"dtype": "Temp",
"hwid": "4",
"id": "47904",
"idx": 16,
"name": "Oregon_Temp",
"nvalue": 0,
"stype": "LaCrosse TX3",
"svalue1": "13.9",
"unit": 32
}
Je ne vois pas comment parser correctement le topic pour récupérer svalue1...
Pouvez vous m'aider ? Merci d'avance.
Après 3 jours de recherche sur les forums, je me décide à poser ma question.
Sur un Raspberry sur lequel je fais des essais et des tests, j'ai Domoticz et Mosquitto. Une sonde envoie la température à Domoticz par RFlink. Tout va bien. Quand Domoticz reçoit une température, il envoie un topic sur MQTT.
Par ailleurs, j'ai un Wemos mini avec ESPeasy sur lequel sont branchés un BMP085 (baromètre), un DHT 22 et un petit afficheur Oled. Le Wemos affiche les 3 valeurs et les envoie à Domoticz via MQTT. Tout fonctionne bien.
Je voudrais maintenant afficher sur l'écran du Wemos la température de l'autre sonde. Pour cela, je cherche à la récupérer par un device "Generic - MQTT import" de ESPeasy.
Je ne vois pas comment parser correctement les topics envoyés par Domoticz pour récupérer l'info...
Voici mes pages de configuration de Espeasy : Et un exemple du topic envoyé par Domoticz :
{
"Battery": 0,
"RSSI": 12,
"description": "",
"dtype": "Temp",
"hwid": "4",
"id": "47904",
"idx": 16,
"name": "Oregon_Temp",
"nvalue": 0,
"stype": "LaCrosse TX3",
"svalue1": "13.9",
"unit": 32
}
Je ne vois pas comment parser correctement le topic pour récupérer svalue1...
Pouvez vous m'aider ? Merci d'avance.
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Tu n'as besoin que d'un seul contrôleur qui sera le Domoticz MQTT.
De mémoire, il a besoin d'être en première position pour fonctionner et pourra alimenter Domoticz tout comme le http.
Ensuite
- Mets "Parse JSON messages" et "Apply filters" à Yes (La page va se recharger à chaque fois)
- Mets le Topic à 'domoticz/out' et le JSON Attribute à 'svalue1'
- Mets le filtre du topic 1: Name = 'idx', Operand = 'Equals', Value = '16'
Chez moi, j'ai ça :
De mémoire, il a besoin d'être en première position pour fonctionner et pourra alimenter Domoticz tout comme le http.
Ensuite
- Mets "Parse JSON messages" et "Apply filters" à Yes (La page va se recharger à chaque fois)
- Mets le Topic à 'domoticz/out' et le JSON Attribute à 'svalue1'
- Mets le filtre du topic 1: Name = 'idx', Operand = 'Equals', Value = '16'
Chez moi, j'ai ça :
- Pièces jointes
-
- Screenshot 2023-03-08 at 21-49-49 ESP_Veilleuse.png (243.03 Kio) Consulté 1280 fois
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Merci pour ta réponse. Je vais essayer ça ce week-end.
Pourquoi 2 contrôleurs ? Parce que la sonde baromètre alimente actuellement mon système domotique à partir de Domoticz sur un autre Raspberry, par HTTP. Ca marche bien (super bien même), mais je voulais passer tout mon système par le protocole MQTT. Je fais donc des essais sur un autre Domoticz sur un autre Raspberry pour ne pas risquer de "flinguer" mon installation actuelle... D'où les deux contrôleurs, avec une IP différente.
Pourquoi 2 contrôleurs ? Parce que la sonde baromètre alimente actuellement mon système domotique à partir de Domoticz sur un autre Raspberry, par HTTP. Ca marche bien (super bien même), mais je voulais passer tout mon système par le protocole MQTT. Je fais donc des essais sur un autre Domoticz sur un autre Raspberry pour ne pas risquer de "flinguer" mon installation actuelle... D'où les deux contrôleurs, avec une IP différente.
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
J'avais pas vu l'IP différente en effet 
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Super ! Ça marche bien avec ce paramétrage de MQTT-Import ! Un grand merci pour l'aide.
Pour info, je n'ai pas modifié l'ordre des contrôleurs et ça fonctionne comme ça.
J'ai une question subsidiaire : j'ai une autre sonde DS18b20 sous ESPeasy qui alimente Domoticz (dispositif idx 38), mais cette fois via MQTT. La t° est bien mise à jour dans Domoticz, je peux voir la trame dans domoticz/in
Je ne vois pas de trame domoticz/out correspondant à ce dispositif idx=38. Je ne peux donc pas la récupérer pour l'afficher sur mon écran OLED. Il y a-t-il une explication au fait que Domoticz n'alimente pas le broker dans ce cas ?
Pour info, je n'ai pas modifié l'ordre des contrôleurs et ça fonctionne comme ça.
J'ai une question subsidiaire : j'ai une autre sonde DS18b20 sous ESPeasy qui alimente Domoticz (dispositif idx 38), mais cette fois via MQTT. La t° est bien mise à jour dans Domoticz, je peux voir la trame dans domoticz/in
Je ne vois pas de trame domoticz/out correspondant à ce dispositif idx=38. Je ne peux donc pas la récupérer pour l'afficher sur mon écran OLED. Il y a-t-il une explication au fait que Domoticz n'alimente pas le broker dans ce cas ?
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
A mon avis, c'est pour éviter les boucles.
Remplace simplement out par in et svalue1 par svalue et ça devrait rouler.
Remplace simplement out par in et svalue1 par svalue et ça devrait rouler.
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Tu peux aussi envoyer des valeurs en direct entre tes esp sous espeasy.
Je n'ai plus exactement comment faire, voir wiki.
Edit : ca se trouve à la rubrique "SendTo and Publish" du wiki des rules
Je n'ai plus exactement comment faire, voir wiki.
Edit : ca se trouve à la rubrique "SendTo and Publish" du wiki des rules
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Oui, effectivement la transmission entre ESP fonctionne bien et permet de répondre à la question. On perd toutefois la souplesse d'un transfert par MQTT qui permet à n'importe quel dispositif de récupérer l'info.
Merci pour l'adresse du wiki. Dommage que la rubrique Publish ne soit pas encore rédigée...
Merci pour l'adresse du wiki. Dommage que la rubrique Publish ne soit pas encore rédigée...
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Tu peux faire autant de commande que tu veux quand la température est mise à jour en MQTT, http vers domoticz, esp, node red...
Code : Tout sélectionner
on Compteur#Count do
if [Compteur#Count]>1
Publish domoticz/in,'{"command": "udevice", "idx": 204, "svalue": "[Compteur#Count]"}'
else
Publish domoticz/in,'{"command": "udevice", "idx": 204, "svalue": "0"}'
endif
endonCode : Tout sélectionner
on Ds18b20#Temperature do
Publish MagicMirror/Jardin,[Ds18b20#Temperature]
endonCode : Tout sélectionner
on INA219#Amps do
SendToHTTP 192.168.1.2,8080,/json.htm?type=command¶m=udevice&idx=123456&nvalue=0&svalue=[INA219#Amps] //Own made up IDX 123456
endon
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Re: Transmettre une température de Domoticz vers ESP8266 via MQTT
Merci pour ta réponse. Elle m'ouvre des perspectives de communication entre ESP...
J'aurais voulu essayer d'utiliser la communication directe entre ESP, en UDP je crois, pour envoyer une température lue sur un esp à un autre esp qui va l'afficher, mais je ne trouve pas de documentation ni de tuto pour comprendre comment faire.
Tu as joint des rules, mais je ne sais pas dans quel contexte et comment utiliser celle là :
J'aurais voulu essayer d'utiliser la communication directe entre ESP, en UDP je crois, pour envoyer une température lue sur un esp à un autre esp qui va l'afficher, mais je ne trouve pas de documentation ni de tuto pour comprendre comment faire.
Tu as joint des rules, mais je ne sais pas dans quel contexte et comment utiliser celle là :
Code : Tout sélectionner
on Ds18b20#Temperature do
Publish MagicMirror/Jardin,[Ds18b20#Temperature]
endon