OpenMQTTGateway + Sonoff RF Bridge + Jeedom example


#1

Je commence ce fils en français et vais le compléter au fur et à mesure, car je ne pense pas avoir le temps de le finir ce soir, traduction plus tard avec de l’aide bien sûr.

But à atteindre de cet exemple :

Intégrer des équipements radio 433.92 Mhz Sonoff ou compatible à une solution domotique Jeedom via OpenMQTTGateway et un Sonoff RF Bridge

La configuration est la suivante :
1 Serveur Jeedom
1 Serveur MQTT mosquitto
1 Sonoff RF Bridge
1 Télécomande Sonoff 433Mhz
1 Pack 3 prises radio commandées 1er prix 433.92Mhz BricotDépôt

Je ne décrirai pas l’installation de Jeedom, ni d’un serveur MQTT, ni non plus la méthode de flashage du firmware dans le sonoff de nombreux tutos existent pour cela.

Dans un premier temps il faut donc remplacer le firmware du Sonoff RF Bridge par OpenMqttGateway,
en résumé l’opération consiste à ouvrir le bridge, souder ou connecter 4 fils qui vont permettre de l’alimenter et d’y transférer le firmware

Avant de transférer le firmware voici le paramétrage que j’ai mis en place pour cela il faut modifier le
fichier User_config.h comme suit
Partie wifi
Pour des raisons de facilité, connaissant mon réseau (internaute free avec configuration de base)
la freebox est à l’adresse 192.168.0.254, elle sert de passerelle alors j’ai forcé la configuration IP

Le sonoff RF bridge au départ va donc chercher à se connecter au point d’accès WIFI de la Freebox en cherchant MaFreebox et en se servant
de wifi_password puis utilisera l’adresse 192.168.0.241

J’ai donc renseigné mes paramètres wifi en manuel comme suit :

#if defined(ESP8266) // for nodemcu, weemos and esp8266
#define ESPWifiManualSetup true //uncomment you don’t want to use wifimanager for your credential settings on ESP
#endif

#if defined(ESP32) || defined(ESPWifiManualSetup) // for nodemcu, weemos and esp8266
#define wifi_ssid “Mafreebox”
#define wifi_password “Monmotdepasse”
#else // for arduino + W5100
const byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0x54, 0x95 }; //W5100 ethernet shield mac adress
#endif

#define WifiManager_password “your_password” //this is going to be the WPA2-PSK password for the initial setup access point
#define WifiManager_ssid “OpenMQTTGateway” //this is the network name of the initial setup access point

Mes paramètres IP comme cela :
const byte ip[] = { 192, 168, 0, 241 }; //ip adress
const byte gateway[] = { 192, 168, 0, 254 }; //ip adress, if first value is different from 0 advanced config network will be used and you should fill gateway & dns
const byte Dns[] = { 192, 168, 0, 254 }; //ip adress, if first value is different from 0 advanced config network will be used and you should fill gateway & dns
const byte subnet[] = { 255, 255, 255, 0 }; //ip adress

Paramètre pour dialoguer avec le serveur MQTT :

Le serveur MQTT est à l’adresse IP 192.168.0.66 avec le port standard sans protection de login (pas de login mot de passe) alors je complète comme ci-dessous
A noter que le serveur MQTT peut fort bien être installé sur le serveur Jeedom, je n’ai pas choisi cette option car cela me permet en cas de Jeedom HS d’avoir toujours les messages MQTT disponibles et même d’avoir pourquoi pas un deuxième serveur Jeedom qui s’abreuve des MQTT

//MQTT Parameters definition
//#define mqtt_server_name “www.mqtt_broker.com” // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
char mqtt_user[20] = “”; // not compulsory only if your broker needs authentication
char mqtt_pass[30] = “”; // not compulsory only if your broker needs authentication
char mqtt_server[40] = “192.168.0.66”;
char mqtt_port[6] = “1883”;

Comme c’est un Sonoff RF Bridge il faut decommenter la ligne SRFB

//#define ZgatewayRF “RF” //ESP8266, Arduino, ESP32
//#define ZgatewayRF315 “RF315” //ESP8266, Arduino, ESP32
//#define ZgatewayIR “IR” //ESP8266, Arduino, Sonoff RF Bridge
//#define ZgatewayPilight “Pilight” //ESP8266, Arduino, ESP32
//#define ZgatewayBT “BT” //ESP8266, Arduino, ESP32
//#define ZgatewayRF2 “RF2” //ESP8266, Arduino, ESP32
#define ZgatewaySRFB “SRFB” // Sonoff RF Bridge
//#define Zgateway2G “2G” //ESP8266, Arduino, ESP32
//#define ZactuatorONOFF “ONOFF” //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZsensorINA226 “INA226” //ESP8266, Arduino, ESP32
//#define ZsensorHCSR501 “HCSR501” //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZsensorADC “ADC” //ESP8266, Arduino, ESP32
//#define ZsensorBH1750 “BH1750” //ESP8266, Arduino, ESP32
//#define ZsensorTSL2561 “TSL2561” //ESP8266, Arduino, ESP32
//#define ZsensorBME280 “BME280” //ESP8266, Arduino, ESP32
//#define ZsensorDHT “DHT” //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZgatewayRFM69 “RFM69” //ESP8266, Arduino, ESP32
//#define ZsensorGPIOKeyCode “GPIOKeyCode” //ESP8266, Arduino, ESP32
//#define ZsensorGPIOInput “GPIOInput” //ESP8266, Arduino, ESP32

Je definie un nom pour ma passerelle MQTT je compte en avoir plusieur à terme alors j’ajoute 001 dans le nom par defaut

#define Gateway_Name “OpenMQTTGateway001”

Par défaut je laisse le topic commencer par /home cela n’a pas vraiment d’importance car Jeedom écoute tous les topics

#define Base_Topic “home/”

Je commente la ligne permettant d’avoir une seule info par topic MQTT en ajoutant un double //
// #define simplePublishing true //comment if you don’t want to use simple publishing (one topic for one parameter)

Voilà je charge donc ce firmware dans le Sonoff RF Bridge.

Au démarrage le Sonoff une fois connecté au réseau et liaison établie avec le serveur MQTT envoi les messages suivant :
home/OpenMQTTGateway001/LWT Online
home/OpenMQTTGateway001/version 0.9beta

Puis cycliquement le message MQTT suivant:

home/OpenMQTTGateway001/SYStoMQTT {“uptime”:120,“freeMem”:45944,“rssi”:-84,“SSID”:“TataTitou”,“modules”:“SRFB”}

Enfin je presse un bouton de télécommande
home/OpenMQTTGateway001/SRFBtoMQTT {“raw”:“24F4017C03AC151557”,“value”:“1381719”,“delay”:“9460”,“val_Thigh”:“380”,“val_Tlow”:“940”}

Maintenant rendez-vous dans Jeedom.
Chez moi le plugin MQTT est celui du market fait par lunarok (pour info il y en a 3 qui supporte MQTT)
Voici pour info l’ecran de configuration et mes paramètres, on retrouve l’IP du serveur MQTT et le port

Jeedom par defaut surveille tous les topics qui passe sur le serveur MQTT
Il crée alors pour chaque topic une entrée graphique
Ainsi sur l’écran suivant vous pouvez voir les trois icônes qui correspondent respectivement au 3 topics précèdent.

Regardons plus précisement le premier qui correspond à home/OpenMQTTGateway001
Nous pouvons voir dans l’onglet équipement le topic mqtt de base.

Et dans l’onglet Commande les deux topics d’info envoyés au départ du sonoff RF Bridge

Revenons sur le premier écran pour activer cet objet et rendre visible cet objet; au passageje coche automatisme et l’objet parent est maison pour ma configuration.

A l’issue nous pouvons constater que l’objet est maintenant sur le Dashboard Jeedom

6-Jeedom-OMG

Maintenant nous allons réellement ajouter de vraie commande correspondante au deux boutons de la radio commande.

Pour cela j’ai trois solutions :
1/ utiliser une commande Mosquitto pour surveiller le topic et ainsi voir le json correspondant
2/ utiliser la console serie de l’IDE arduino
3/ utiliser le log de jeedom

Je prend l’option 3
Dans Jeedom -> Analyse -> Log puis selection de MQTT

Je retourne maintenant dans l’onglet commande de l’objet homeOpenMQTTGateway001

Et j’ajoute une commande On et une commande Off comme cela

A noter qu’il faut echapper les doubles côtes par un anti-slash sinon la commande ne s’enregistre pas.

A ce stade nous avons maintenant un objet fonctionnel sur le DashBoard comme celui là

Le click sur On transmet le message json au bon topic et l’emission radio se fait
Idem pour Off


#2

Super merci pour le tutoriel !