Je suis en train de tester Jeedom (avant je tournais sur Domoticz). J'ai l'avantage d'avoir 2 rfxcom et 2 raspberry 3 pour faire des essais en parallèle et mieux gérer la transition. Hier j'ai donc acheté le plugin RFXcom pour jeedom.
Contexte: J'utilise un module "fait maison" pour lire la sortie de mon compteur EDF, sur domoticz cela marche sans souci. Il s'agit du code qu'on trouve un peu partout sur le net censé émulé la trame d'un OWL CM180.
Cela marche parfaitement sur Domoticz (puissance instantanée et conso totale) sont identiques au compteur.
Par contre sur Jeedom (la conso totale varie).
J'ai donc activé le debug du module RFXcom et voilà la trame que je trouve:
Code : Tout sélectionner
[2018-12-30 15:31:43][DEBUG] : Decode data : {'count': '0', 'instant': '321', 'raw': '115A020203C2000000014100022237E5B659', 'battery': '9', 'signal': '5', 'subtype': '02', 'packettype': '5A', 'total': '39843579', 'id': '03C2'}
[2018-12-30 15:31:43][DEBUG] : Send to jeedom : {'devices': {'03C25A': {'count': '0', 'instant': '321', 'raw': '115A020203C2000000014100022237E5B659', 'battery': '9', 'signal': '5', 'subtype': '02', 'packettype': '5A', 'total': '39843579', 'id': '03C2'}}}
En utilisant un petit programme destiné à lire directement le RFXcom sur le raspberry ( sans passer par Jeedom donc) j'otenais une valeur identique à celle de domoticz et du compteur.
En regardant de plus près, on voit que le programme qui code la trame multiplie les Wh par 223,666 (ne me demandez par pourquoi);
Code : Tout sélectionner
HCP=(BASE*223666LL)/1000LL;
/var/www/html/plugins/rfxcom/resources/rfxcomd/rfxcomd.py:
Code : Tout sélectionner
# ---------------------------------------
# 0x5A Energy sensor
# ---------------------------------------
if packettype == '5A':
usage = int ((int(jeedom_utils.ByteToHex(message[11]), 16) * 0x10000000000 + int(jeedom_utils.ByteToHex(message[12]), 16) * 0x100000000 +int(jeedom_utils.ByteToHex(message[13]), 16) * 0x1000000 + int(jeedom_utils.ByteToHex(message[14]), 16) * 0x10000 + int(jeedom_utils.ByteToHex(message[15]), 16) * 0x100 + int(jeedom_utils.ByteToHex(message[16]), 16) ) / 230)
action['id'] = str(id1 + id2)
action['count'] = str(int(jeedom_utils.ByteToHex(message[6]), 16))
action['instant'] = str(int(jeedom_utils.ByteToHex(message[7]), 16) * 0x1000000 + int(jeedom_utils.ByteToHex(message[8]), 16) * 0x10000 + int(jeedom_utils.ByteToHex(message[9]), 16) * 0x100 + int(jeedom_utils.ByteToHex(message[10]), 16))
if usage <> 0:
action['total'] = str(usage)
action['signal'] = str(decodeSignal(message[17]))
action['battery'] = str(decodeBattery(message[17]))
J'aimerai comprendre s'il s'agit d'une erreur , d'un bug , d'un changement de version ?
Ensuite comment le corriger de la manière la plus propre possible ?
Merci d'avance