Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
DPT 229.001
#13
Ayant réussi à trouver l'origine du bug qui faisait planter linknx, je vous livre ci-dessous la méthode pour récupérer les 2 éléments contenus dans un télégramme en DPT 229.001 et les stoker dans des objets sous knxweb.

Tout d'abord il faut créer les objets suivants :
  •    EDF229 --> DPT29.xxx lié à la GA de l'objet en 6 bytes
  •    EDF_conso --> DPT12.xxx lié à la GA de l'objet en 6 bytes
  •    EDF_consoHP --> DPT12.xxx sans liaison avec une GA (stockage de la conso en heures pleines avec ou sans log)
  •    EDF_consoHC --> DPT12.xxx sans liaison avec une GA (stockage de la conso en heures creuses avec ou sans log)
  •    EDF_trigger --> DPT12.xxx sans liaison avec une GA (pour le déclenchement du script)
  •    EDF_Tarif --> DPT5.xxx sans liaison avec une GA (optionnel si l'on veut stocker le n° de l'index)
Ensuite la règle à mettre en place :

       <rule id="MAJ_EDF_229" description="EDF consommation en DPT 229" init="false">
           <condition type="object-compare" id="EDF_conso" id2="EDF_trigger" op="ne" trigger="true" ></condition>
           <actionlist type="if-true">
               <action type="script" delay="" >
               <![CDATA[conso=obj("EDF_conso"); value=tonumber(string.sub(string.sub('00'..string.format('%x', 4294967295 and obj("EDF229")),-8),1,2)); if (value ~= nil) then set("EDF_Tarif",value); end; if (value==2) then set("EDF_ConsoHP",conso); else set("EDF_ConsoHC",conso); end; set("EDF_trigger",conso); ]]>
               </action>
           </actionlist>
       </rule>

Naturellement si il y a plus de 2 index possibles, il faudra adapter le script au niveau du if .... then ... else et créer autant d'objets "conso" que d'index.

NE PAS OUBLIER que pour gérer du 64 bits, il faut que LUA soit installé sur une machine avec une architecture 64 bits et un système d'exploitation 64 bits sinon la fonction retournera systématiquement la valeur hexa FFFFFFFF !!!! ........................ Donc ce script ne peut pas fonctionner sur un raspberry tant que l'OS ne sera pas en 64 bits

ATTENTION : A ce jour ne pas utiliser knxweb pour créer la règle car du fait d'un bug de knxweb, la condition contiendra une erreur qui fera planter linknx

EDIT : Bug corrigé (voir ce post).
Le perfectionnement de soi et l'accession à sa légende personnelle passe obligatoirement par le partage de son savoir et de son expérience avec les profanes en demande d'initiation. (R. Bach)
Répondre


Messages dans ce sujet
DPT 229.001 - par pollux06 - 20/05/2017, 09:22:05
RE: DPT 229.001 - par Natheu - 20/05/2017, 09:39:16
RE: DPT 229.001 - par pollux06 - 20/05/2017, 10:09:22
RE: DPT 229.001 - par Natheu - 20/05/2017, 10:18:38
RE: DPT 229.001 - par pollux06 - 20/05/2017, 10:34:28
RE: DPT 229.001 - par Natheu - 20/05/2017, 10:46:40
RE: DPT 229.001 - par pollux06 - 20/05/2017, 11:41:10
RE: DPT 229.001 - par lales67 - 20/05/2017, 11:54:15
RE: DPT 229.001 - par Natheu - 20/05/2017, 12:03:24
RE: DPT 229.001 - par pollux06 - 21/05/2017, 05:57:41
RE: DPT 229.001 - par Natheu - 21/05/2017, 11:24:13
RE: DPT 229.001 - par pollux06 - 22/05/2017, 20:32:00
RE: DPT 229.001 - par pollux06 - 23/05/2017, 18:25:37
RE: DPT 229.001 - par pollux06 - 24/05/2017, 19:22:05
RE: DPT 229.001 - par filou59 - 24/05/2017, 20:50:23
RE: DPT 229.001 - par pollux06 - 25/05/2017, 06:05:00
RE: DPT 229.001 - par filou59 - 25/05/2017, 07:56:26
RE: DPT 229.001 - par pollux06 - 25/05/2017, 14:34:14
RE: DPT 229.001 - par Ives - 03/03/2023, 08:52:19

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)