Page 1 sur 2

Transmettre une température de Domoticz vers ESP8266 via MQTT

Publié : 08 mars 2023, 18:23
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é 1298 fois
Capture2.JPG
Capture2.JPG (138.68 Kio) Consulté 1298 fois
Capture3.JPG
Capture3.JPG (90.71 Kio) Consulté 1298 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.

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

Publié : 08 mars 2023, 21:49
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 :

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

Publié : 09 mars 2023, 10:35
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.

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

Publié : 09 mars 2023, 12:29
par Neutrino
J'avais pas vu l'IP différente en effet ;)

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

Publié : 09 mars 2023, 16:04
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 ?

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

Publié : 09 mars 2023, 20:59
par Neutrino
A mon avis, c'est pour éviter les boucles.
Remplace simplement out par in et svalue1 par svalue et ça devrait rouler.

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

Publié : 10 mars 2023, 12:38
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

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

Publié : 11 mars 2023, 09:33
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...

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

Publié : 11 mars 2023, 12:04
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

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

Publié : 13 mars 2023, 15:11
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