Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

espRFLinkMQTT - Passerelle de RFLink à MQTT

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 28 sept. 2018, 10:32

Bonjour tout le monde,

Ayant passé un peu de temps dessus, je partage avec vous un code qui permet d'utiliser un ESP8266 (ESP01, D1 mini, ...) pour servir de passerelle entre une carte RFLink Mega et un serveur MQTT. C'est un développement perso, mais si ça peut servir à d'autres tant mieux.

A la base, l'idée est de pouvoir se passer du branchement à Jeedom par l'USB. Alors certes, avec le plugin RFLink il y a l'option réseau. Mais même s'il y a eu du mieux depuis cet été, j'avais toujours un problème de mélange de trames et création de mauvaises commandes (j'ai essayé avec ESP Link, et le plugin Ser2Net de ESP Easy).

Et puis je me suis dis que ça me permettrait de supprimer un plugin / démon, simplifier l'intégration avec d'autres plateformes en cas de changement, et peut-être gagner un peu de charge avec le filtrage par ID (ayant mis une bonne antenne à l'extérieur, je reçois aussi beaucoup de signaux inutiles que Jeedom doit traiter).

Pour les avantages :
- Compatibilité avec plusieurs plateformes domotiques du fait du MQTT
- Un plugin en moins
- Interface web sympathique pour voir les trames qui arrivent
- Possibilité de filtrer par ID, de ne publier qu'en cas de changement de valeur et à un certain intervalle de temps
- Possibilité d'attribuer une ID spécifique à un équipement (en fait cela s'applique à un protocole, il faut que l'équipement soit le seul à l'utiliser). Pratique pour certains équipements qui changent d'ID lorsqu'on change les piles.
- Envoi de commandes depuis l'interface web ou en publiant sur le serveur MQTT
- Reset "hard" du RFLink Mega par la pin RST
- Possibilité de faire un reset automatique du Mega lorsqu’aucune donnée n'est reçue depuis un certain temps.

Pour les inconvénients :
- Pas de configuration automatique du type de commande dans Jeedom => il faut le faire à la main la première fois
- Pas d'intégration du suivi et des alertes de batterie (page Analyse > Equipements > Batteries)
- Il faut savoir compiler et flasher un ESP8266 (y'a plein de tutos sur le web, chercher flash esp8266 Arduino IDE)
- Obligation de reflasher pour changer le SSID et mot de passe Wifi
- Obligation de reflasher pour ajouter une nouvelle ID si on utilise le filtrage
Pour ces deux derniers points, ce serait faisable de sauver en flash, mais il faut faire l'interface web qui va bien, vérifier les données, rajouter du code, etc. C'est jouable mais avec pas mal de temps, donc pas prévu pour le moment. Par contre, on peut flasher depuis l'interface web (faire Sketch > Export compiled Binary dans l'Arduino IDE et récupérer le fichier) ou en OTA.

Voilà, n'hésitez pas à faire un retour. Le code se trouve sur Github : espRFLinkMQTT.
Dernière édition par Seb82 le 19 août 2019, 14:28, édité 1 fois.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 28 sept. 2018, 10:37

Image

sylvaing
Timide
Messages : 18
Inscription : 10 févr. 2017, 20:43

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par sylvaing » 19 oct. 2018, 19:25

L'idée est vraiment pas mal ! je pense que je vais me procurer un nouveau mega pour tester!

sylvaing
Timide
Messages : 18
Inscription : 10 févr. 2017, 20:43

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par sylvaing » 20 oct. 2018, 10:29

@Seb82 J'ai un wemos D1 mini qui traine, tu n’aurais pas un lien pour savoir comment connecter un wemos à mon RFLINK sur un mega2560 ?

Avatar de l’utilisateur
dcjona
Actif
Messages : 1547
Inscription : 16 juil. 2017, 11:06

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par dcjona » 13 déc. 2018, 21:35

intéressant ce projet, du coup ca permet aussi de gérer deux rflink pour étendre la portée?

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 17 déc. 2018, 12:35

@sylvaing

J'ai mis les connexions pas défaut dans le readme :

Code : Tout sélectionner

Wire serial as defined in serial configuration ; by default, wire ESP [b]RX[/b] pin to RFLink TXpin, and ESP GPIO2/D4 pin to RFLINK RX pin
For hardware reset of MEGA (RFLink) from ESP, wire ESP pin defined by MEGA_RESET_PIN to MEGA RST pin ; by default, is uses GPIO/D3 pin
Pour ma part, j'utilise un Arduino Mega mini monté moi-même. Pour la version officielle, ça ne doit pas être loin.

Du coup :
D1 mini D4 sur RFLink RX (RXD ou RD0 parfois)
D1 mini RX sur RFlink TX (TXD ou TX0 parfois)
D1 mini GND sur RFlink GND
D1 mini 5V sur 5V RFLink
D1 mini D3 sur RFLink RST (RESET parfois)

Utiliser GPIO/D3 pour le reset, ce n'est pas ce qu'il y a de mieux vu que cette pin sert normalement à passer en mode flash. Mais sur un ESP01 il n'y a pas trop le choix. Tu peux changer cela dans le code, par exemple en changeant "#define MEGA_RESET_PIN 5" dans Common.h qui correspond à GPIO5/D1 (voir ce tableau).

Un petit avertissement quand même : strictement, on ne devrait pas relier directement les pin d'un Mega et d'une D1 mini, l'un étant en 5V et l'autre en 3.3V. Pour ma part, je n'ai jamais eu de soucis, mais théoriquement il faudrait convertir.

J'espère que c'est clair.
Dernière édition par Seb82 le 17 déc. 2018, 12:42, édité 2 fois.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 17 déc. 2018, 12:41

dcjona a écrit :
13 déc. 2018, 21:35
intéressant ce projet, du coup ca permet aussi de gérer deux rflink pour étendre la portée?
J'aurais tendance à dire que oui. Si un signal est reçu par plusieurs passrelles, il sera juste écrit plusieurs fois sur le topic MQTT, mais a priori ce n'est pas gênant (et encore, pour éviter cela il suffit juste de scinder la liste d'équipements à remonter).

Par contre, il faut avoir le wifi à chaque endroit.

Avatar de l’utilisateur
dcjona
Actif
Messages : 1547
Inscription : 16 juil. 2017, 11:06

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par dcjona » 17 déc. 2018, 13:10

j'ai uploadé le sketch en modifiant ssid et pass mqttserver etc et c mais je n'ai pour le moment aucune remontée sur mon routeur quand je connecte le module... rien d'autre à faire pourtant je suppose ?

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 17 déc. 2018, 15:31

Y'a plusieurs choses qui peuvent jouer. La première étape c'est de vérifier les connexions wifi et mqtt :

- Déconnecter les liaisons au RFLink
- Dans Common.h, vérifier les paramètres WIFI_SSID et WIFI_PASSWORD => vérifier que le module se connecte bien au wifi
- Toujours dans Common.h, vérifier les paramètres MQTT_SERVER, MQTT_PORT, MQTT_USER, MQTT_PASSWORD => vérifier que le module se connecte bien au serveur MQTT => il doit publier un 1 sur le topic rflink/online
- A partir de là, on doit pouvoir se connecter sur l'interface web avec l'IP

Pour faciliter, dans espRFLinkMQTT.ino, tu peux décommenter la ligne #define SERIAL_DEBUG ce qui publiera des infos de debug sur le port TX de l'ESP / la D1 mini. Tu peux voir cela en connectant en USB sur un PC et en regardant avec le moniteur série d'Arduino IDE par exemple.
Et tu peux aussi envoyer une trame type RFLink - par exemple 20;2A;Xiron;ID=2801;TEMP=0043;HUM=29;BAT=OK; - , ce qui publiera sur le topic rflink/Xiron-2801.

Ensuite, tu relies la pin TX du RFLink à la pin RX de l'ESP / D1 mini, le 5V et la terre, puis tu regardes s'il y a des infos qui arrivent sur l'interface web (Live Data) ou le moniteur série (pour les essais, je gardais ma D1 mini connectée au PC et j'alimentais le RFLink directement depuis la D1 mini).

Avatar de l’utilisateur
dcjona
Actif
Messages : 1547
Inscription : 16 juil. 2017, 11:06

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par dcjona » 17 déc. 2018, 16:13

A mon avis le soucis vient d'ici et du idée Arduino car j'ai même des difficulté s avec l'upload d'un nouveau sketch. Je vais regarder pour solutionné cela d'abord. Merci pour les infos

Envoyé de mon Redmi 5 Plus en utilisant Tapatalk


xcorp
Timide
Messages : 9
Inscription : 16 déc. 2018, 22:46

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par xcorp » 08 janv. 2019, 21:30

Bonjour Seb82,

j'ai reçu et configuré avec succès mon esp01. Je reçois bien les infos des différents équipements installés chez moi. A ce niveau tout est ok.

en revanche, je n'arrive pas à envoyer de commandes, que ce soit par l'interface web de l'esp ( à l'aide du champs prévu à ce effet ) ou bien même à travers le plugin mqtt dans jeedom.

le log dans les deux cas ça ne donne rien, et les commandes ne s’exécutent pas.

j'ai essayé la même chose via rflinkloader et le rflink connecté en USB au PC, les commandes sont bien exécutés.

As-tu une idée d'où cela peut venir ?

d'avance merci.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 09 janv. 2019, 00:32

J'ai fait l'essai en recompilant mon code le plus récent ainsi que celui sur github, et effectivement j'ai le même soucis. C'est étonnant, parce qu'avec le firmware que j'avais compilé à l'époque pas de soucis.

Après quelques essais, il semble que ce soit le core 2.4.2 de l'esp qui pose problème. En compilant avec le core 2.4.1 (Tools > Board > Boards Manager > esp8266 > Select version > 2.4.1 > Install) cela fonctionne.

xcorp
Timide
Messages : 9
Inscription : 16 déc. 2018, 22:46

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par xcorp » 09 janv. 2019, 08:09

Merci du conseil !

je teste ça ce soir.

xcorp
Timide
Messages : 9
Inscription : 16 déc. 2018, 22:46

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par xcorp » 09 janv. 2019, 20:15

je viens de tester avec la 2.4.1 et malheureusement ça ne fonctionne pas.

les commandes envoyées via l'interface web de l'esp01 ne sont pas executées et n'apparaissent pas dans le log.

il doit y avoir encore une autre difference de version dans les libs.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 09 janv. 2019, 22:10

C'est étrange en effet.
Est-ce que le GPIO 2 (alias D4 sur D1 mini) est bien relié à la pin RX de l'Arduino Mega ?
Pour le log, de quoi s'agit-il exactement ? Parce que la fonction "debug MQTT" ne fera apparaître quelque chose que pour des trames reçues.
Pour faire apparaître le debug sur le port série, il faut décommenter "#define SERIAL_DEBUG" et lire le port TX de l'ESP (connection directe avec le câble USB si on utilise une D1 mini, sinon avec un ESP01 il faut connecter un adaptateur TTL / USB).

xcorp
Timide
Messages : 9
Inscription : 16 déc. 2018, 22:46

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par xcorp » 10 janv. 2019, 00:27

j'avais déjà testé le port serie mais je reçois qu'une purée de pois indéchiffrable :)

concernant le montage et la connexion au rflink j'ai suivi les consignes que tu as donné dans ton post initial. J'ai aussi connecté le PIN CH-PD au VCC.

en fait je parlais du log dans la page HTTP. Je pensais qu'une commande 10;PING; envoyée via l'interface ferait apparaitre la reponse "pong"

Et l'envoi de commandes à mon store banne via le même champs ( 10;Aster;0b5c;2;ON; ) ne fait rien.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 10 janv. 2019, 08:51

Oui, tu dois recevoir un retour PONG lorsque tu envoie une commande 10;ping;
Pareil pour la commande 10;version; ça doit retourner quelque chose comme ça : VER=1.1;REV=48;BUILD=04;
Pour le port série, tu n'avais peut-être pas la bonne vitesse. J'ai mis le debug à la même vitesse que l'échange avec le RFLink - c'est à dire à 57600 - pour que ce soit plus simple si on veut les changer.

Ce que tu peux essayer si tu as l'adaptateur TTL/USB, c'est de séparer l'ESP et de te mettre à la place du RFLink :
- ESP GPIO 2 sur RX adaptateur TTL/USB
- ESP RX sur TX adaptateur TTL/USB
- VCC / CH-PD / GND comme il faut.
Ensuite, tu essaie d'envoyer une commande depuis l'interface web, et tu dois la recevoir sur le PC (vitesse de 57600). Cela permettra de vérifier que l'ESP envoie bien la commande. A noter que le code envoie les deux commandes 10;ping et 10;version au démarrage => à tester en en débranchant / rebranchant VCC ou en faisant toucher la pin RESET de l'ESP à GND. Comme ça t'es sûr que ce n'est pas un problème dans le code de l'interface web.

Si ça ne fonctionne toujours pas, tu pourras tenter d'inverser les ports série utilisés en changeant cela dans la config :
auto& debugSerialTX = softSerial;
auto& rflinkSerialTX = Serial;
Et là normalement les commandes sont envoyées sur la pin TX de l'ESP. Toujours pareil, vérifier que ça arrive bien sur le PC en branchant ESP TX à RX adaptateur TTL/USB.
Le code compile bien, par contre je ne peux pas faire le réel. Mais y'a pas de raison que ça ne fonctionne pas.
De cette manière, on élminie les soucis de version de la librairie SoftwareSerial et/ou du core.

sylvaing
Timide
Messages : 18
Inscription : 10 févr. 2017, 20:43

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par sylvaing » 18 janv. 2019, 22:52

salut Seb82,
J'ai enfin trouvé le temps faire une maquette, chez ça fonctionne correctement.
Je suis donc avec un wemos D1 mini. Bon pour l'instant j'ai une antenne avec un fil, j'ai commandé une antenne sur ebay, je vais donc attendre pour finaliser l'installation. Pour l'instant j'arrive a envoyer des commandes, par contre la réception reste difficile a cause justement de l'antenne je pense; il faut que je me positionne à côté du rflink... pas très opti
En tous cas beau travail! cela me permet d'utiliser 2 rflink sur un seul jeedom simplement; 1 pour le RTS qui est pour l'instant en USB avec le plug-in rflink de lunarok et qui fonctionne très bien, et l'autre avec ton firmware en réseaux pour le 433.92.
Magnifique et magique! et cela viens compléter mon arsenal de tamosta en MQTT.

Mon wemos d1 mini est alimenté en 3.3v et non en 5v; en fait-on le choix sur un wemos, les deux bornes existent. J'ai donc repiqué le 3.3 sur la carte du mega. Je ne sais pas si ça change grand-chose pour le wemos.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 19 janv. 2019, 06:51

Pour l'antenne - et vu que j'avais un câble coax déjà tiré vers l'extérieur - j'ai fini par acheter l'antenne d'Aurel. Un peu cher, mais efficace pour capter les stations météo des voisins.
Il y a aussi le récepteur qui joue pas mal. Après plusieurs essais, je crois que je suis parti sur le SRX882. Au prix que ça coute sur aliexpress, tu peux en essayer plusieurs (SRX882, SRX887, RXB6, ...).
D'expérience, j'ai aussi trouvé important de relier aussi directement que possible l'antenne au récepteur 433 mhz, et de connecter le blindage du câble s'il y en a un. Pour mon câble coaxial (type F en anglais), j'ai pris un adapteur avec câble que j'ai coupé et soudé directement sur le récepteur (pas évident, c'est vraiment fin). Sinon pour les tests, j'ai aussi eu des résultats tout à fait corrects avec une antenne faite maison en découvrant la partie cuivre d'un câble coaxial sur la bonne longueur. Pour cette longueur, on trouve différentes infos sur les forums, mais au prix du câble coaxial c'est facile d'essayer. Il y aussi cet article qui m'a semblé être une explication cohérente. Attention, il faut diviser les longueurs par deux pour faire un quart d'onde donc entre 15,6 cm et 17,3 cm. Un dipole en demi-longueur d'onde c'est mieux, mais plus compliqué à "fabriquer".
La vraie difficulté, c'est de savoir si on reçoit vraiment mieux ou pas vu que je n'ai pas trouvé de récepteur 433 mhz qui donne la force du signal. Sur le forum de RFLink, il y a une discussion qui parle d'un RXB6 2.0 mais sans conclusion.

Tu utilises quoi comme récepteur / émetteur 433 mhz ? Parce qu'à moins d'avoir celui d'Aurel vendu sur Nodo-shop et qui est un combiné émetteur/récepteur (en fait il y a une pin utilisée par le MEGA qui bloque le récepteur lors d'envoi de commandes), il faut bien une antenne individuelle pour l'émetteur et une autre pour le récepteur.

Pour l'alimentation, oui il faut juste faire attention à faire correspondre et c'est bon ce que tu as fait. En fait, là où il faudrait théoriquement faire gaffe, c'est que la pin TX de l'arduino MEGA émet en 5V alors que les pin de la D1 mini n'est censée recevoir que du 3.3V. Dans les faits, je n'ai jamais eu de soucis et je ne suis pas le seul, mais il faudrait en principe utiliser un convertisseur de tension ou un montage diviseur de tension comme dans cet exemple.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: espRFLinkMQTT - Passerelle de RFLink à MQTT

Message par Seb82 » 19 janv. 2019, 06:59

Juste pour le suivi, xcorp a bien réussi à régler son soucis. Juste un problème de câblage : le code utilise le GPIO2 alias D4 pour l'envoi de données au RFLink qui est donc à relier sur le RX du Mega. C'est possible de changer cela (voir plus haut) - et peut-être mieux d'ailleurs à terme vu qu'avec le core 2.42 il semble y avoir des soucis avec le softwareserial.

Répondre

Revenir vers « [Catégorie] Passerelle Domotique »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 12 invités