Vanne Danfoss Ally - Consigne envoyée non prise en compte

Bonjour à tous,

J’ai acheté une tête thermostatique Danfoss Ally sur les conseils de @tcharp38 (Tête thermostatique compatible Abeille?)

J’ai réussi à l’associer, et je reçois bien les informations en provenance de la vanne (température mesurée, niveau de batterie). Je reçois également la température de consigne lorsque je la change sur la vanne (physiquement).

En revanche, impossible de lui transmettre une consigne depuis Jeedom/Abeille; la commande « Consigne set » semble ne rien faire du tout.

Dans les logs « Temps réel » on voit bien la commande apparaître, ainsi que dans les logs de Abeille (en mode debug), que je copie-colle ci-dessous.

Merci d’avance pour le coup de main…
Jean-Baptiste

[2021-11-12 18:24:12] Queues status : tempoMessageQueue=1, cmdQueue[1]=0
[2021-11-12 18:24:12] Zigates status: zg1=1, zg2=1, zg3=1, zg4=1, zg5=1, zg6=1, zg7=1, zg8=1, zg9=1, zg10=1
[2021-11-12 18:24:12] -- execute(eqName=Radiateur bureau name=Consigne Set type=action, options={"background":"0","slider":"21"})
[2021-11-12 18:24:12] updateField()
[2021-11-12 18:24:12]   Updated 'EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=#slider#'
[2021-11-12 18:24:12]   To 'EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=21'
[2021-11-12 18:24:12] -- execute(): Msg sent: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/43D5\/WriteAttributeRequestGeneric","payload":"EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=21"}}
[2021-11-12 18:24:12] Message from queueKeyAbeilleToCmd: CmdAbeille1/43D5/WriteAttributeRequestGeneric -> EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=21
[2021-11-12 18:24:12]   L2 - procmsg({"topic":"CmdAbeille1\/43D5\/WriteAttributeRequestGeneric","payload":"EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=21","priority":1,"message":null})
[2021-11-12 18:24:12]     L1 - processCmd({"WriteAttributeRequestGeneric":"1","priority":1,"dest":"Abeille1","address":"43D5","EP":"01","Proprio":"","clusterId":"0201","attributeId":"0012","attributeType":"30","value":"15"})
[2021-11-12 18:24:12]     NE en Time Out alors je mets la priorite au minimum.
[2021-11-12 18:24:12] command setParam4
[2021-11-12 18:24:12]       addCmdToQueue("Abeille1", cmd="0530", data="0243D5010102010104023007101A0212003015", addr=43D5, priority=1)
[2021-11-12 18:24:12]       incStatCmd(): {"0024":1,"0016":1,"0002":1,"0009":1,"0100":66,"0010":25,"0045":1,"0030":30,"0530":32}
[2021-11-12 18:24:12] processCmdQueueToZigate(zigate1)
[2021-11-12 18:24:12]   J'ai 1 commande(s) pour la zigate a envoyer.
[2021-11-12 18:24:12]   sendCmdToZigate(Dest=Abeille1, cmd=0530, len=0013, datas=0243D5010102010104023007101A0212003015)
[2021-11-12 18:24:13] ackCheck(): Je n'ai pas de Ack (Status) depuis 1 secondes avec now = 1636737853 et timeLastAck = 1636737852 donc je considère la zigate dispo.....
[2021-11-12 18:24:13] processCmdQueueToZigate(zigate1)
[2021-11-12 18:24:13]   J'ai 1 commande(s) pour la zigate a envoyer.
[2021-11-12 18:24:13]   sendCmdToZigate(Dest=Abeille1, cmd=0530, len=0013, datas=0243D5010102010104023007101A0212003015)
[2021-11-12 18:24:14] ackCheck(): Je n'ai pas de Ack (Status) depuis 1 secondes avec now = 1636737854 et timeLastAck = 1636737853 donc je considère la zigate dispo.....
[2021-11-12 18:24:14] processCmdQueueToZigate(zigate1)
[2021-11-12 18:24:14]   J'ai 1 commande(s) pour la zigate a envoyer.
[2021-11-12 18:24:14]   sendCmdToZigate(Dest=Abeille1, cmd=0530, len=0013, datas=0243D5010102010104023007101A0212003015)
[2021-11-12 18:24:14]   La commande n a plus de retry, on la drop: {"received":1636737852.727545,"time":1636737854,"retry":0,"priority":4,"dest":"Abeille1","cmd":"0530","len":"0013","datas":"0243D5010102010104023007101A0212003015","shortAddr":"43D5"}
[2021-11-12 18:24:27] Message from queueKeyCmdToCmd: CmdAbeille1/0000/getVersion -> Version
[2021-11-12 18:24:27]   L2 - procmsg({"topic":"CmdAbeille1\/0000\/getVersion","payload":"Version","priority":4,"message":null})
[2021-11-12 18:24:27]   No prepare function. Forwarding cmd to AbeilleCmdProcess.
[2021-11-12 18:24:27]     L1 - processCmd({"getVersion":"getVersion","name":"getVersion","priority":4,"dest":"Abeille1","Version":1,"addr":"0000"})
[2021-11-12 18:24:27]     getVersion cmd
[2021-11-12 18:24:27]       addCmdToQueue("Abeille1", cmd="0010", data="", addr=, priority=4)
[2021-11-12 18:24:27]       incStatCmd(): {"0024":1,"0016":1,"0002":1,"0009":1,"0100":66,"0010":26,"0045":1,"0030":30,"0530":32}
[2021-11-12 18:24:27] processCmdQueueToZigate(zigate1)
[2021-11-12 18:24:27]   J'ai 1 commande(s) pour la zigate a envoyer.
[2021-11-12 18:24:27]   sendCmdToZigate(Dest=Abeille1, cmd=0010, len=0000, datas=)

Bonjour à tous,

Je suis toujours coincé, mais j’ai peut-être un peu avancé quand même…

En farfouillant j’ai trouvé une documentation XLS (qui n’est peut-être pas officielle) de la vanne, qui décrit les « Attributs » gérés par la vanne.

L’attribut relatif à la consigne est « OccupiedHeating Setpoint » dans cette documentation (cf fichier joint contenant un extrait). Je ne sais pas si c’est lisible…

Voilà ce qui ressort concernant cet attribut:
Cluster: 0x0201
Attribute ID: 0x0012
Data type: Int 16
Lecture / écriture (R/W)
Valeur par défaut: 0x834 (soit 2100 en décimal, c’est à dire 21.00° Celsius)

L’attribut semble donc attendre une valeur en centièmes de degrés.

Or, lorsque j’exécute la commande « Consigne Set » via Jeedom (en utilisant le slider), on voit dans les logs que la valeur semble être envoyée sans être multipliée par 100. Ci-dessous, j’ai fait un test en demandant 27°, et retrouve dans les logs la valeur hexadécimale « 1B » (correspondant à 27). Je pense qu’il faudrait à la place avoir « A8C », équivalent hexa de 2700.

J’ai donc modifié le fichier json de configuration de la commande pour voir… J’ai remplacé les valeur mini et maxi dans le fichier danfossTemperatureConsigneSet.json, de la manière suivante:

J’ai bien sûr rechargé la configuration de l’équipement pour tester, en envoyant 21 degrés (2100). En hexa, je m’attends donc à retrouver la valeur 0834 quelque part dans les logs, et c’est bien le cas:

[2021-11-15 17:18:14] -- execute(eqName=Radiateur bureau name=Consigne Set type=action, options={"background":"0","slider":"2100"})
[2021-11-15 17:18:14] updateField()
[2021-11-15 17:18:14]   Updated 'EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=#slider#'
[2021-11-15 17:18:14]   To 'EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=2100'
[2021-11-15 17:18:14] -- execute(): Msg sent: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/43D5\/WriteAttributeRequestGeneric","payload":"EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=2100"}}
[2021-11-15 17:18:14] Message from queueKeyAbeilleToCmd: CmdAbeille1/43D5/WriteAttributeRequestGeneric -> EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=2100
// Ici, en "haut niveau", on a bien 2100 
[2021-11-15 17:18:14]   L2 - procmsg({"topic":"CmdAbeille1\/43D5\/WriteAttributeRequestGeneric","payload":"EP=01&Proprio=&clusterId=0201&attributeId=0012&attributeType=29&value=2100","priority":1,"message":null})
// A partir d'ici, en "bas niveau", on retrouve l'équivalent hexadécimal, 834:
[2021-11-15 17:18:14]     L1 - processCmd({"WriteAttributeRequestGeneric":"1","priority":1,"dest":"Abeille1","address":"43D5","EP":"01","Proprio":"","clusterId":"0201","attributeId":"0012","attributeType":"30","value":"834"})
[2021-11-15 17:18:14]     NE en Time Out alors je mets la priorite au minimum.
[2021-11-15 17:18:14] command setParam4
// On a bien "0834" à la fin; je ne sais pas ce que signifient les autres octets:
[2021-11-15 17:18:14]       addCmdToQueue("Abeille1", cmd="0530", data="0243D5010102010104023007101A02120030834", addr=43D5, priority=1)
// Mais ça veut pas :( 
[2021-11-15 17:18:14]       ERROR: Wrong length

Malheureusement, toujours aucune réaction de la vanne. Je ne connais pas assez les différentes couches (abeille / zigate / protocole zigbee) pour savoir où ça coince…

Si un développeur Abeille passe par là, je peux sûrement fournir d’autres infos, tests, etc.

A bientôt,

J’ai finalement pu corriger le bug dans le plugin Abeille.

En attendant que la correction soit reprise par les auteurs du plugin, si vous rencontrez le même problème il y a simplement une petite correction à faire dans un fichier.

Cf: https://github.com/KiwiHC16/Abeille/issues/1881#issuecomment-969374895

Bonne soirée à tous

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.