FHEM : utilisation de la télécommande du kit 3 prises télécommandées Castorama

Étiquettes:

Pour rappel, le kit de prises télécommandées castorama qui contient 3 prises et une télécommande peut être utilisé avec des logiciels domotique utilisant un tellstick ou un RFXtrx433, et en particulier FHEM.

Elles répondent en effet aux codes RISINGSUN et peuvent être définies dans FHEM ainsi :

# codage de la prise = C1
define ma_prise TRX_LIGHT RISINGSUN C1 light

Par contre la télécommande utilise un codage un peu différent, qui est lui aussi compris par les prises… Quand j’ai commencé à utiliser FHEM, il n’était possible de l’intercepter que dans le mode « undec » du RFXtrx433. Depuis, Bert, le créateur du RFXcom, a intégré dans le firmware le décodage des codes basés sur le chip PT2266 qui est utilisé dans ce matériel , et Willi (qui a codé les modules RFXtrx433 de FHEM) a intégré ça dans FHEM.

La seule contrainte est qu’on ne peut à ce moment-là plus décoder les codes ARC (qui sont proches et se recouvrent avec ceux-ci).

Configuration du RFXtrx433

Pour intercepter les commandes générées par la télécommande, il faut utiliser un firmware du RFXtrx compatible. A ce jour, le firmware 66 fonctionne (RFXtrx433_Type1_firmware) mais semble-t-il pas le 67 qui est dans le même zip !

  1. Télécharger et décompresser dans un même répertoire le firmware du RFXtrx433, RFXflash et RFXmngr  (disponibles sur RFXCOM Downloads Page), ainsi que le driver USB FTDI si nécessaire et le manuel d’utilisation
  2. Installer le driver
  3. Flasher le firmware
  4. Avec RFXmngr activer les codes Lightning4 et désactiver ARC

Décodage avec FHEM

Le module TRX_LIGHT de FHEM découvre de manière automatique la ou les télécommandes et génère dans fhem.cfg un device PT2262 générique qui va décoder l’ensemble des codes générés par les devices de ce type :

define TRX_PT2262 TRX_LIGHT PT2262
attr TRX_PT2262 room TRX_LIGHT
define FileLog_TRX_PT2262 FileLog ./log/TRX_PT2262-%Y-%m.log TRX_PT2262
attr FileLog_TRX_PT2262 logtype text
attr FileLog_TRX_PT2262 room TRX_LIGHT

Avec une télécommande configurée avec le code A,  la log contient  :

  • En appuyant sur ON  sur A3 :
    2013-10-01_23:37:35 TRX_PT2262 011111011113
  • En appuyant sur OFF sur A3 :
    2013-10-01_23:37:39 TRX_PT2262 011111011110
    2013-10-01_23:37:40 TRX_PT2262 011111111113

Le codage est le suivant : XXXXYYYYZZZT, avec

  • XXXX = home code ( A = 0111, B = 1011, C = 1101, D = 1110)
  • YYYY = device code ( 1 = 0111, 2 = 1011, 3 = 1101, ? = 1111)
  • ZZZ = 111
  • T = commande ( off = 0, on = 3)

La télécommande qu’elle génère en plus du code de commande utile des codes non utiles (en tout cas je vois pas à quoi ils servent), par exemple avec un device code à 1111 et un command code à 3. La prise réagit de la même façon que ces codes soit présents ou non…

Configuration définitive

Maintenant qu’on connaît le codage de la télécommande, on peut la définir, en déclarant  séparément chaque bouton comme un device spécifique PT2262 d’identifiant XXXXYYYYZZZ (home code et device code) et en spécifiant le mapping des codes de commande on et off :

# télécommande A (3 boutons)
define TRX_PT2262_A1 TRX_LIGHT PT2262 01110111111 light 0:off,3:on
define TRX_PT2262_A2 TRX_LIGHT PT2262 01111011111 light 0:off,3:on
define TRX_PT2262_A3 TRX_LIGHT PT2262 01111101111 light 0:off,3:on

On garde le device générique mais on supprime tous les événements non décodés spécifiquement au-dessus (en particulier les événements « parasites » qui ont du device code 1111). Si on devait découvrir comment fonctionne un nouveau type de télécommande basé sur le même chip PT2262, il faudrait supprimer la ligne « event-on-update-reading » pour pouvoir analyser la log et déchiffrer son code :

define TRX_PT2262 TRX_LIGHT PT2262
attr TRX_PT2262 room TRX_LIGHT
attr TRX_PT2262 event-on-update-reading 1

Si on ne veut pas avoir tous les événements parasites dans la log générale de FHEM il faut changer le niveau de verbiage de la log de 3 à 2 par exemple. Il apparaissent sinon comme :

2013.10.10 07:38:44 1: TRX_LIGHT_parse_PT2262() TRX_PT2262_A1 devn=TRX_PT2262_01110111111 command=error, cmd=151557

Remarque

Il est possible de déclarer prise et télécommande de manière séparée (par exemple pour séparer les événements générés par une action manuelle sur la télécommande de ceux qui sont générés par programmation dans FHEM). Il faut dans ce cas définir une commande notify qui va changer l’état de la prise dans FHEM, de manière à ce que l’état de la prise dans FHEM reflète bien son état réel :

define ma_prise  TRX_LIGHT RISINGSUN C1 light
define ma_telecommande TRX_LIGHT PT2262 11010111111 light 0:off,3:on
define ma_prise_remotecmd notify ma_telecommande:light.* setstate ma_prise $EVTPART1

Sinon, le plus simple est de ne faire qu’une définition prise/télecommande :

define ma-prise TRX_LIGHT PT2262 11010111111 light 0:off,3:on

Références

 

prises casto