Transmettre une température de Domoticz vers ESP8266 via MQTT

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
Berringue
Messages : 40
Inscription : 25 avr. 2017, 06:59

Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Berringue »

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 :
Capture1.JPG
Capture1.JPG (66.4 Kio) Consulté 1299 fois
Capture2.JPG
Capture2.JPG (138.68 Kio) Consulté 1299 fois
Capture3.JPG
Capture3.JPG (90.71 Kio) Consulté 1299 fois
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.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Neutrino »

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 :
Pièces jointes
Screenshot 2023-03-08 at 21-49-49 ESP_Veilleuse.png
Screenshot 2023-03-08 at 21-49-49 ESP_Veilleuse.png (243.03 Kio) Consulté 1283 fois
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Berringue
Messages : 40
Inscription : 25 avr. 2017, 06:59

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Berringue »

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.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Neutrino »

J'avais pas vu l'IP différente en effet ;)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Berringue
Messages : 40
Inscription : 25 avr. 2017, 06:59

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Berringue »

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 ?
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Neutrino »

A mon avis, c'est pour éviter les boucles.
Remplace simplement out par in et svalue1 par svalue et ça devrait rouler.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Jeff »

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
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Berringue
Messages : 40
Inscription : 25 avr. 2017, 06:59

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Berringue »

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...
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Jeff »

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
endon

Code : Tout sélectionner

on Ds18b20#Temperature do
Publish MagicMirror/Jardin,[Ds18b20#Temperature]
endon

Code : Tout sélectionner

on INA219#Amps do
 SendToHTTP 192.168.1.2,8080,/json.htm?type=command&param=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
Berringue
Messages : 40
Inscription : 25 avr. 2017, 06:59

Re: Transmettre une température de Domoticz vers ESP8266 via MQTT

Message par Berringue »

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à :

Code : Tout sélectionner

on Ds18b20#Temperature do
Publish MagicMirror/Jardin,[Ds18b20#Temperature]
endon
Répondre