Remplacement du plugin RF-link par RFLinkGateway (docker) <-> MQTT <-> Jeedom (Jmqtt)

Bonjour,

Le plugin RF-Link ne semblant plus être maintenu, j’ai décidé de le remplacer.

J’ai trouvé ce projet : RFLinkGateway qui permet de pousser les réceptions du module RFLink vers MQTT

Etant en manque de temps, j’ai trouver une version dockerisé ici https://hub.docker.com/r/magpern/rflinkgateway avec un exemple de docker-compose : docker-compose.yml

J’ai juste du mettre le contenu exemple du config.json (avec les paramètre de mon serveur MQTT) et ça fonctionne.

Le plus compliqué pour moi a été de trouver comment faire remonté les informations de MQTT vers Jeedom. Car je voyais bien les infos dans « MQTT Explorer ».
Je pensais que le plugin MQTT Manager permettait de faire cela mais visiblement non ou je m’y suis mal pris.
Après quelques rechercher j’ai trouvé le plugin jMQTT (plugin-jmqtt) qui est vraiment top et m’a permis de recréer mes sondes de températures et sonnette assez facilement grace à son interface.

J’ai créé un broker :

Dans la partie temps réel, j’ai vu remonté mes trames qui m’intéressaient pour la souscription rflink/#

Ensuite il y a 2 boutons un pour créer un élément et un autre pour ajouter à un élément existant. C’est pas mal pour faire le premier ensuite quand on a compris, on peut directement créer les éléments en précisant les bonnes trames qui sont présentes dans MQTT Explorer.

Voici deux exemples sonnette et capteur de température :



Dans MQTT Explorer on peut récupérer directement les informations a saisir pour l’équipement dans la partie Topic de l’élément.

Ce qui est pas mal dans le projet RFLinkGateway c’est que l’on peut ignorer des éléments ce qui fait moins de trames qui arrive dans MQTT.

Dans le config.json, j’ai ajouté dans le bloc rflink_ignored_devices tous les devices du voisinage que je n’ai pas besoin.
Attention, dans le fichier d’exemple si vous avez des appareils ignorés que vous possédez penser à supprimer les lignes :slight_smile:

"rflink_ignored_devices": [
      "Friedland", 
      "Oregon Temp/FD10",
      "BL999",
      "RTS"

Dans le début du fichier, il faut penser à configurer les infos du serveur MQTT, par défaut le mqtt_prefix est « rflink » mais ça peut se changer si besoin :

"mqtt_host": "IP_DU_BROKER",
    "mqtt_port": 1883,
    "mqtt_user": "jeedom",
    "mqtt_password": "password",
    "mqtt_prefix": "rflink",
    "mqtt_message_timeout": 60,
    "mqtt_switch_incl_topic": "true",
    "mqtt_json": "true",
    "mqtt_include_message": "false",  
    "rflink_tty_device": "/dev/ttyUSB0",

Voila j’espère que ça pourra aider certain d’entre vous.
J’essaye d’avoir un maximum d’élément dans MQTT, cela permet de faire des tests ou de basculer sur une nouvelle installation facilement. Mes clés zigbee, zwave et autres sont branchés sur le serveur docker qui héberge mes containers au lieu d’être sur la vm jeedom en cours d’utilisation.
La je me suis mis comme objectif de mettre Jeedom dans docker (je découvre un peu docker alors je veux y aller progressivement).

Après si vous avez des questions, je peux essayer d’y répondre et si j’ai écris des choses qu’il ne faut pas faire, je suis preneur de vos conseils.

Bonne journée

2 « J'aime »

Bonjour,

Je reviens un peu sur mon expérience car ce matin, je constate que je n’ai plus de remonté de valeur depuis quelques jours.

En regardant plus attentivement les messages transmis à MQTT changent :

rflink/Alecto V4/5548/R/04/message
rflink/Alecto V4/5548/R/08/message
rflink/Alecto V4/5548/R/-1/message

J’ai essayé de mettre un wilcard dans le topic mais ça n’a pas l’air d’être pris en compte
rflink/Alecto V4/5548/R/*/message, rflink/Alecto V4/5548/R/+/message ou rflink/Alecto V4/5548/R/#/message

Je ne sais pas s’il est possible de gérer ce dynamisme avec le plugin-jmqtt
Je cherche en parallèle pour comprendre pourquoi les valeurs changent sur les sondes de températures. Ce qui m’échappe c’est que c’est la même valeurs pour toutes les sondes (ça viendrait de mon container rflinkgateway

Finalement j’ai contourné le problème en utilisant la version d’origine du projet : RFLinkGateway/readme.md at master · Iture/RFLinkGateway · GitHub

Il n’y a pas le problème du paramètre qui varie aléatoirement…

Du coup le topais a cette forme RFLinkGateway/Alecto V4/5548/READ/TEMP
et je le paramètre dans jmqtt comme ceci :

Le fichier de config est aussi différent et on ne peut plus ignorer certains appareils:
J’ai changé le prefix en RFLinkGateway pour comparer facilement les 2 versions

{
  "mqtt_host": "your_mqtt_host",
  "mqtt_port": 1883,
  "mqtt_prefix": "/data/RFLINK",
  "mqtt_format": "json",
  "mqtt_message_timeout": 60,
  "mqtt_user":"your_mqtt_user",
  "mqtt_password":"your_mqtt_password",
  "rflink_tty_device": "/dev/ttyUSB0",
  "rflink_direct_output_params": [
    "BAT",
    "CMD",
    "SET_LEVEL",
    "SWITCH",
    "HUM",
    "CHIME",
    "PIR",
    "SMOKEALERT"
  ],
  "rflink_signed_output_params": [
    "TEMP",
    "WINCHL",
    "WINTMP"
  ],
  "rflink_wdir_output_params": [
    "WINDIR"
  ]
}

Sur le serveur j’ai cloner le repo :

git clone https://github.com/Iture/RFLinkGateway.git

Et j’ai générer une image docker (il faut être dans le répertoire de la solution avec la commande ci dessous) :

docker build -t Iture/rflinkgateway .

J’ai aussi réalise ce compose (en faite j’ai rajouté un services dans mon stack mqtt contenant mosquitto d’ou le depends_on que j’ai commenté si vous n’avez pas cette dépendance) :

version: '3.8'
services:
  rflinkgateway:
    container_name: rflinkgateway
    image: Iture/rflinkgateway:latest
    #depends_on:
    #  - mosquitto
    volumes:
      - /home/appData/rflinkgateway/config/config.json:/app/config.json
    devices:
      - /dev/serial/by-id/usb-Arduino__www.arduino.cc__0042_55632313338351B0F031-if00:/dev/ttyUSB0:rw
    restart: unless-stopped

J’imagine qu’il est possible de faire un build direct dans le compose mais je n’ai pas eu le temps de chercher plus pour le moment.

Bonne soirée à tous

Très bizarre comme constat !
pour ma part, je suis sous debian 11 avec Jeedom en 4.4.18 et le plugin RFlink fonctionne très bien avec une gateway USB.

Bonjour
Le constat de heliospeed et ton expérience ne sont pas contraire.
Antoine

Bonjour @rol-rider, je n’ai pas dis que le plugin ne fonctionnait pas. J’ai plutôt l’impression qu’il n’est plus maintenu.
Pour ma part, j’ai du taper les commandes suivantes pour que le demon tourne :

cd /var/www/html/plugins/rflink/resources && sudo npm rebuild
ou >>> sudo npm install

J’ai aussi suite à une mise à jours de nodejs j’ai du refaire d’autre commande pour créer un lien symbolique.

Après niveau Interface, les périphériques désactivés ne sont pas visuellement éclairci comme dans les autres plugins.

J’ai deux objets un désactivé et un activé :
image
image
Dans l’interface, je ne peux pas visuellement l’identifier :
image

Alors que les autres plugins ont cette visualisation :
image

Certes, je les renommes pour avoir l’info d’un coup mais c’est pas pratique.

Après pour moi de passer par MQTT cela permet de recevoir les informations sur plusieurs machines et ne pas être obligé d’avoir plusieurs modules RF-Link pour faire des tests par exemple.
Le plugin jMQTT est parfait pour cet usage.

Alors ça doit être sur le… « plus maintenu » que j’ai mal compris.
si plus maintenu signifie qu’il fonctionne mais que quasiment rien a changé depuis pas mal de temps…alors on est d’accord.

j’ai fait une instal récente sous Raspbian 12 (node20) …aucun problème, d’où mon interrogation !

J’avoue que comme j’ai du passer par des lignes de commandes pour réinstaller les dépendances lors de ma migration en debian 10 vers 11 (alors que je n’avais pas eu besoin lors de la précédente). Je n’ai pas tenté de le faire sous debian 12 car je n’ai qu’un module RF-Link pour ma prod.
Avec ma solution je n’ai plus cette problématique, je peux faire des tests plus facilement.