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 !

Etude d'une trame RAW pour une télécommande générique

Retrouvez ici des sujets concernant le protocole RFXcom et les modules domotiques compatibles RFXcom (Chacon, DI-O, Oregon, Blyss, etc...) utilisés avec JEEDOM
Knova
Timide
Messages : 1
Inscription : 16 mai 2019, 16:38

Etude d'une trame RAW pour une télécommande générique

Message par Knova » 16 mai 2019, 17:17

Hello,

J'espère que ce qui suit pourra aider l'un ou l'autre et éviter de passer toute une soirée comme moi à chercher une solution :D . Tout d'abord un petit point sur ma situation. Je viens d’emménager dans une nouvelle maison qui était équipé d'un store contrôlé par une télécommande RF générique et j me suis dit, ça serait bien que je puisse la contrôler comme le reste de mes équipements connectés. J'avais une petit télécommande RF universelle pour copier un signal que j'utilisait pour une porte de garage et j'ai testé si je pouvais recopier le signal, et ça a marché.
style:
Image

Du coup je suis parti sur l'achat d'un module RFXCom pour mon install de Jeedom ( qui est sur un Docker du NAS synology ).
A la réception du module je test une première fois avec le soft rfxmgr pour voir si j'arrive a capter le signal, et effectivement j'obtiens un truc mais uniquement en mode undecoded. Après lecture de la doc sur le modules rfxcom je vois comment il faut éditer un fichier texte pour renvoyer une trame de type raw. Et première constatation, c'est que je suis obligé de mettre une répétition au minimum de 3 trames. Mais au final ça faisait le job et mon store bougeait.

Code : Tout sélectionner

0
3 <= répétition
2500  <= début de ma trame
389
845
....etc...
10000 
Je passe ensuite à l'installation du module sur mon NAS et en regardant la documentation du plugin RFXCom pour jeedom. J'essaye de suivre la procédure d’installation pour une télécommande "chinoise" mais en vain. Via le log de debug j'arrivait à capter le signal qu'en mode undec et non lighnting 4 comme précisé dans la doc.

Je regarde ce que je capte via ce log et effectivement ça ressemble à ce que je recevais via le soft rfxmgr sur mon PC.
Pour la suite j'essaye de créer une nouvelle télécommande générique et mettre ma trame RAW dans le champs Logical ID. Et là, la même erreur que visiblement d'autres on eu sur le forum, le champs DB est trop petit. ma trame faisait bien plus de 400 caractères (et le champs limité a 127 je crois).

Je me suis ensuite penché sur l'étude de ma trame pour voir si je ne pouvais pas la réduire ou trouver une sorte de protocol ou codage. J'ai remarqué que pour toutes les valeurs, elles se trouvaient soit autour de 400 (+-100) soit autour de 800(+-100) à l'exception de la première qui traînait autour de 2500. Pour mon premier test j'ai remplacé toutes ces valeurs par 400 ou 800 et j'ai pu constater que ma trame continuait à fonctionner via rfxmgr. J'ai cherché les style de codages utilisés en RF et je suis parti sur l'hypothèse que pour les valeur autour de 400 cela correspondait à un 0 logique et autour de 800 un 1 logique. Ce qui m'a déjà réduit la trame à quelque chose de beaucoup plus petit (16 bytes étaient donc réduit à 1 ^^).

Code : Tout sélectionner

800 400 800 400 800 400 .......
1   0   1   0   1   0 ....
J'avais quelque-chose qui ressemblait à "AA69596AA66996.." en hexa . Ensuite puisqu'une coïncidence est assez rare en informatique, ces valeurs binaires me paraissait trop régulières, mais ça m'a rassuré dans mon raisonnement (il n'y avait jamais plus de deux 1 ou 0 à la suite et par bloque de deux bit un 0 suivait forcement un 1 et inversement). Je suis parti du principe qu'un codage de type Manchester avec complément était utilisé (01=>0 , 10=>1) qui apparemment est aussi utilisé pour les trames des produits Oregon. Ce qui m'a encore permis de diviser par deux la longueur du message.

Code : Tout sélectionner

10101010011010010101100101101010101001100110100110010110011010101010101010101010101001011010100101011001
1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 1 0
      F       6       2       7       D       6       9       7       F       F       C       E       2
Ce qui fait q'une trame raw d'environ 435 caractère, était maintenant réduite a 18 ou 19 caractères (ce qui me paraissait parfait pour la limitation de la taille du champ en DB ^^). Toujours dans l'hypothèse ou je pourrait ensuite l'utilise via jeedom et le champs LogicalID mais en trouvant le protocol qui correspondrait à mes recherches. Mais hélas cette voie fut un échec, car impossible de trouver quelle type de Protocol utiliser pour cela. De ce que j'ai compris le premier byte du message envoyé sur le rfxcom est la longeur de la trame et le deuxième le codage utilisé (7F pour du Raw), suivi de deux byte pour un numéro de séquence puis un byte pour le paramètre de répétition. J'ai testé plusieurs type d'équipements qui du coup utilisait d'autre protocol que le raw (il y avait autre chose que 7F en deuxième byte) mais je n'ai rien réussi à trouvé pour faire fonctionner ma trame "décodé". Et c'est là que si quelqu'un aurait une idée je suis preneur.

Mais je ne me laisse pas abattre, et je suis parti sur une autre approche. Heureusement pour moi j'ai un container docker avec ma DB mysql qui supportait l'augmentation du champ LogicalID, je l'ai donc mis à 1000 pour être tranquille.

Ensuite j'ai pu recopié la trame récupéré dans le fichier de log, mais la commande ne faisait rien. Puis je me suis souvenu que pour faire marcher la commande via le rfxmgr, j'avais du mettre le paramètre de répétition à minimum 3. et que dans le log du debug, la trame reçu avait ce paramètre à 1 donc un bête copier coller ne marchait pas.
Du coup je modifie l'en-tête de ma commande raw pour passer ce paramètre à 10 (0x0A) pour être sûr (ce qui donnait D87F00630109FB0.... à D87F00630A09FB0....) et là miracle ma commande fonctionne enfin \o/ :p .

Du coup pour le moment j'ai configuré jeedom pour utiliser ma grosse trame en mode Raw, mais je serais quand même intéressé pour savoir ce que vous pensez de ma première approche et interprétation, et si il y aurait moyen de trouver une façon d'utiliser la trame de manière raccourci (décodé en gros) sans avoir a trifouiller la taille du champ de la DB.

Adrib29
Timide
Messages : 5
Inscription : 21 juil. 2019, 17:01

Re: Etude d'une trame RAW pour une télécommande générique

Message par Adrib29 » 28 juil. 2019, 15:41

Bonjour Knova,

si je comprends bien t'as manip de conversion manuelle n'a pas fonctionné? C''est uniquement en passant par MySql que t'as réussi à t'en sortir?

Si oui, peux tu m'expliquer comment t'as réussi à t'en sortir avec ça "un container docker avec ma DB mysql".

merci d'avance. je suis bloqué aussi...

Répondre

Revenir vers « [Plugin Officiel] RFXcom »

Qui est en ligne ?

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