[RTEX] plugin-rfxcom et les boitiers RFXtrx433

Bonjour à tous, c’est akenad :slight_smile: ,

Aujourd’hui je vais vous présenter un retour d’expérience sur la mise en oeuvre du plugin-rfxcom « NG » (New Generation). C’est une mise à jour « majeure » du plugin-rfxcom existant.

Pour réaliser une migration en douceur, je n’ai pas touché à mon existant et j’ai installé le plugin NG sur un autre Jeedom (mais en reprenant le même boitier RFXtrx433E qui était associé au 1er Jeedom, donc avec appairages RTS mémorisés). J’ai pu ainsi basculer de l’un à l’autre progressivement par ajout d’équipement manuellement, sans utiliser l’inclusion, en reprenant les mêmes ID.
J’ai par exemple basculé :

  • un Store banne de terrasse Somfy RTS (avec télécommande Somfy RTS Telis 1 canal) sans avoir à refaire un appairage.
  • des prises Chacon
  • des sondes Oregon

Références :

Depuis le 26/11/2020, le plugin-rfxcom a fait l’objet d’une mise à jour majeure par Jeedom SAS.
C’est un refonte avec mise en conformité par rapport à la documentation officielle RFXcom.
Le démon qui était en python2 a été réécrit en python3.
Certains capteurs nécessitent une ré-inclusion.

/!\ ATTENTION : ne pas activer tous les protocoles en même temps, certains sont incompatibles entre eux. Activer uniquement les protocoles nécessaires à vos équipements.

Jeedom SAS, pour un bon fonctionnement du plugin, indique de mettre le boitier RFXtrx433 en dernière version de firmware.

Il y a 3 modèles de RFXtrx433 (RFXtrx433, RFXtrx433E, RFXtrx433XL) et plusieurs « dernière version de firmware ».

J’ai acheté celui-ci en octobre 2017 (il avait une firmware 1021 EXT) :

Les firmwares au 26/11/2020 sont les suivants (extrait de http://www.rfxcom.com) :

RFX

Pour le RFXtrx433E, RFXCOM recommande le Firmware « Pro1 », mais Ext, Ext2 et Pro2 fonctionne aussi. Tout dépend des équipements que l’on souhaite faire fonctionner.
Par exemple, RFXtrx433E_Pro1_firmware.zip contient les firmware 1026 a 1029, 1031 a 1033, 1035 a 1043 et RFXtrx433E_Ext_firmware.zip contient les firmwares 1020 a 1025
. En cas de problème il est possible de revenir en arrière. Pour vérifier la compatibilité d’un équipement en fonction de la version du firmware :

Pour retrouver la version de son RFXtrx433 :
(si le firmware est trop ancien, je dirais environ plus de 5 ans, cette procédure ne fonctionnera pas. Vérifié à partir d’un firmware 1020)

Exemple d’un RFXtrx433E :

Avec le plugin-rfxcom Stable v2020-11-26 :

Dans « Configuration » du plugin :

  • mettre « Niveau log » à Debug
  • Sauvegarder
  • ReDémarrer le Démon

Au redémarrage du démon,
le plugin transmet un message de commande de statut à l’interface série du RFXtrx : 0d00000102000000000000000000
et reçoit un message de réponse de statut.

Le plugin décode le message de statut, extrait de la log Rfxcom :

[DEBUG] : Firmware version = 0x15
[DEBUG] : RFXtrx433 operating at 433.92MHz
[DEBUG] : Hardware major version = 0x01
[DEBUG] : Hardware minor version = 0x03
[DEBUG] : Output power = 0x1C
[DEBUG] : Firmware Ext
[DEBUG] : Noise level (only used in special firmware) = 0x52

Interprétation :

0x15 = 21 en décimal
mettre 10 à gauche => 1021
Ext => E

=> RFXtrx433E (v1.3), firmware 1021 Ext

Nota : dans une version antérieure du plugin (avant sa mise à jour majeure), il y a moins d’information (et la partie droite du firmware est directement en décimal) :

[DEBUG] : Transceiver type = 433.92MHz|
[DEBUG] : Firmware version = 21

Après mise à jour du firmware (de 1021 EXT à 1043 Pro1):

message de réponse de statut : 1401000102532b000c2f0001030005564658434f4d

[DEBUG] : Firmware version = 0x2B
[DEBUG] : RFXtrx433 operating at 433.92MHz
[DEBUG] : Hardware major version = 0x01
[DEBUG] : Hardware minor version = 0x03
[DEBUG] : Output power = 0x1C
[DEBUG] : Firmware Pro1
[DEBUG] : Noise level (only used in special firmware) = 0x5D

0x2B = 43

=> firmware 1043 Pro1

Exemples d’environnement ou l’installation du plugin-rfxcom fonctionne :

Compatibilité d’un équipement en fonction du firmware :

Les protocoles implémentés sont différents en fonction du type de firmware : Par exemple, le type « ProXL1 » les inclus tous, alors qu’ils sont différents dans « Pro1 » et « Pro2 ».
Un tableau qui liste les protocoles supportés et les équipements en fonction des types de firmwares se trouve dans le
guide RFXtrx (cf rérérence plus haut). Ce tableau commence à la page 10.
Donc bien vérifier qu’en fonction de votre équipement et de votre firmware, le protocole est dans ce tableau.

Installation des dépendances du plugin-rfxcom :

Voici un extrait du script d’installation au 30/11/2020 :

apt-get update

sudo pip3 uninstall -y serial

sudo apt remove -y python3-serial

apt-get install -y python3-pip python3 python3-requests python3-pyudev

sudo python3 -m pip install --force-reinstall --ignore-installed --no-cache-dir pyserial

  • Remarque1 : Ce script désinstalle le module python3 « serial » et le paquet debian python3 « serial » et installe ou réinstalle un module python3 « pyserial » (celui-ci : pyserial · PyPI) pour être compatible avec le plugin.
    Cela résout l’erreur : « module ‹ serial › has no attribute ‹ VERSION › ».
    /!\ ATTENTION : la désinstallation de « serial » peut avoir un impact sur le fonctionnement d’un autre plugin qui l’utiliserait.
  • Remarque2 : l’installation de certains paquets debian pour python3, avec apt-get, n’est pas précédé de sudo.
  • Remarque3 : En principe les paquets debian python3 et python3-pip sont déjà installés par une installation initiale de Jeedom V4 (exemple sur Smart Buster) :

Exemple du Store banne de terrasse Somfy RTS
(avec télécommande Somfy RTS Telis 1 canal) :

Telecommande-Somfy-RTS-Telis-1-canal

(L’image de l’équipement dans le plugin-rfxcom représente une télécommande Somfy RTS Telis 4 canaux).

Analyse des messages/paquets émis par les commandes Action
(champs « Logical ID » de l’onglet « Commandes » de l’équipement) :

Type de paquet 0x1A : RFY (Somfy RTS)
Taille du paquet = 0x0C (12 octets, premier octet du message non inclus)

Commandes de l’onglet « Commandes » utilisées :
Programme, Monter, Descendre, Stop

Codage des commandes correspondantes dans le message (9 ième octet du message) :
cmnd : Program (0x07), up (0x01), down (0x03), stop (0x00)

#ID# (de l’onglet Commandes) = ID (de l’onglet Equipement) = id sur 3 octets
#GROUP# (de l’onglet Commandes) = ID (de l’onglet Commandes) = unitcode = 0x01 (canal 1)

Exemple Log Debug Rfxcom pour commande « Monter » :

[DEBUG] : Client connected to [127.0.0.1:43066]
[DEBUG] : Message read from socket: b'{"apikey":"XXX","cmd":"send","data":["0C1A000002ABA0010100000000"]}'
[DEBUG] : Client disconnected from [127.0.0.1:43066]
[DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[DEBUG] : Test message: 0C1A000002ABA0010100000000
[DEBUG] : flushOutput serial port
[DEBUG] : flushInput serial port
[DEBUG] : Write message to serial port
[DEBUG] : Write data to serial port : 0c1a000002aba0010100000000
[DEBUG] : Write message ok : 0C1A000002ABA0010100000000
[DEBUG] : Message: 0402010000
[DEBUG] : Decode : 0402010000
[DEBUG] : Test message: 0402010000
[DEBUG] : PacketType: 0x02
[DEBUG] : Length: 5
[DEBUG] : No decoder found

Le message de réponse du boitier RFXtrx au message de commande n’est pas décodé par le plugin.
C’est un acquittement qui indique que la transmission de la commande est OK.

Résolution de problèmes, erreurs dans la log :

  • module ‹ serial › has no attribute ‹ VERSION › => mettre à jour en dernière version du plugin et relancer l’installation des dépendances
  • unrecognizable packet (XXXX) : index out of range => mettre à jour le firmware du boîtier RFXtrx433

Voila j’espère que ce retour d’expérience sera utile aux membres Jeedom.

akenad :slight_smile:

10 « J'aime »

Salut @akenad

De mon côté, je suis sur jeedom smart en v3.3.53, avec le plugin rfxcom (donc pas la dernière version car je veux être sûr de moi avant d’y aller). J’ai un dongle RFXComTRX433XL
En log debug, quand je fais un redémmareg du démon j’ai ceci :

[2020-11-30 09:08:50][DEBUG] : Firmware is 38
[2020-11-30 09:08:50][DEBUG] : Type is 16

D’après toi, est ce que j’ai directement la version en décimale donc 1038 ou bien ce n’est pas ça du tout?
Merci

1 « J'aime »

38en hex c’est 26 en décimal donc plutot 1026

1 « J'aime »

je vais tenter de débrancher le module de jeedom et de le mettre sur un windows avec rfxmanager pour voir. Mais faut il désactiver le plugin rfxcom avant de débrancher le module ou pas?

non pas la peine

Hello,

Pour ma part j’ai un boitier de 2014 qui remonte ça :

[2020-11-30 09:05:18][DEBUG] : Response on cmnd	= Not used.
[2020-11-30 09:05:18][DEBUG] : Transceiver type	= 433.92MHz
[2020-11-30 09:05:18][DEBUG] : Firmware version	= 227
[2020-11-30 09:05:18][DEBUG] : Protocols:
[2020-11-30 09:05:18][DEBUG] : Undecoded                 Disabled
[2020-11-30 09:05:18][DEBUG] : Imagintronix,Opus         Disabled
[2020-11-30 09:05:18][DEBUG] : Byron SX,SelectPlus       Disabled

Mise à jour or not mise à jour ?

Merci,

Le constructeur conseille de toute manière d’upgrader…
Donc si vous êtes pas à jour avec la dernière, upgrade.

Préhistorique :

FW release 433_77/177/227 25-06-2014

Bon bah y a plus qu’à :smirk:

merci

Je suis à jour avec un RFXComTRX433XL pour ceux qui souhaitent voir ce que ça doit donner :

[2020-11-30 09:50:34][DEBUG] : Subtype			= Interface response
[2020-11-30 09:50:34][DEBUG] : Sequence nbr		= 01
[2020-11-30 09:50:34][DEBUG] : Response on cmnd	= Get Status, return firmware versions and configuration of the interface.
[2020-11-30 09:50:34][DEBUG] : Transceiver type	= 433.92MHz
[2020-11-30 09:50:34][DEBUG] : Firmware version	= 43

Je n’ai pas fait la mise à jour du plugin encore. J’attends tout de même un peu.

Juste pour clarifier

hexa 38 > 3*16 +8 = 48 +8 = 56 ?

Pour avoir l’info c’est la commande Get Status
une action de type 0D00000602001C00000000000000 devrait répondre :
Pour moi 1401000102532b571e2f000301001082000000894d → hexa 2B = 43 votre version
le plugin la décode aussi

[2020-11-30 09:58:59][DEBUG] : Write data to serial port : 0d00000102000000000000000000
[2020-11-30 09:58:59][DEBUG] : Write message ok : 0d00000102000000000000000000
[2020-11-30 09:58:59][DEBUG] : Message: 1401000102532b571e2f000301001082000000894d
[2020-11-30 09:58:59][DEBUG] : Decode : 1401000102532b571e2f000301001082000000894d
[2020-11-30 09:58:59][DEBUG] : Test message: 1401000102532b571e2f000301001082000000894d
[2020-11-30 09:58:59][DEBUG] : PacketType: 0x01
[2020-11-30 09:58:59][DEBUG] : Length: 21
[2020-11-30 09:58:59][DEBUG] : Start decoding packet type 0x01
[2020-11-30 09:58:59][DEBUG] : Data : {'packetlen': '0x14', 'packettype': '0x01', 'subtype': '0x00', 'seqnbr': '0x01', 'cmnd': '0x02', 'msg1': '0x53', 'msg2': '0x2B', 'msg3': '0x57', 'msg4': '0x1E', 'msg5': '0x2F', 'msg6': '0x00', 'msg7': '0x03', 'msg8': '0x01', 'msg9': '0x00', 'msg10': '0x10', 'msg11': '0x82', 'msg12': '0x00', 'msg13': '0x00', 'msg14': '0x00', 'msg15': '0x89', 'msg16': '0x4D'}
[2020-11-30 09:58:59][DEBUG] : Subtype = response on a mode command
[2020-11-30 09:58:59][DEBUG] : Firmware version = 0x2B
[2020-11-30 09:58:59][DEBUG] : RFXtrx433 operating at 433.92MHz
[2020-11-30 09:58:59][DEBUG] : Hardware major version = 0x03
[2020-11-30 09:58:59][DEBUG] : Hardware minor version = 0x01
[2020-11-30 09:58:59][DEBUG] : Output power = 0x00
[2020-11-30 09:58:59][DEBUG] : Firmware ProXL1
[2020-11-30 09:58:59][DEBUG] : Noise level (only used in special firmware) = 0x82

bon, ben ça commence mal, impossible de connecter le module au logiciel rfxflash :frowning: j’ai ouvert un fil ici si vous avez des idées : Mise à jour module RFXComtrx433XL

Oui j’ai bien fumé !
38en decimal c’est 26 en hexa… j’ai fait l’inverse…

Je vais me coucher, la nuit a été longue

ce qui voudrait dire que j’ai la dernière 1043? Mais comme je ne peux pas connecter mon module à un pc, impossible de savoir :–(

Bonne « nuit » @+ on devrait dire bonne journée ( j’en sait quelque chose +20ans de nuit)

Après mise à jour, j’ai [2020-11-30 11:00:16][DEBUG] : Firmware is 43
Donc de mon côté, le firmware est explicité en décimal car j’avais 38 avant et j’ai vu dans RFXmngr que j’étais en 1038 avant upgrade) et j’ai mis le 1043

Donc on attend ton retour après mis en service sur Jeedom
relance dépendance si tu mets pas à jour
@Loic à déployé une nouvelle version ‹ OJ8 ›
Version 2020-11-30 09:08:27

Non la dernière pour fixer le souci de serial version c’est 2020-11-30 11:23:53

Il est en avance ici que 11H13 :smile:

C’est de l’anticipation :wink: