Pas de remontée Heures creuse ou heures pleines avec le TIC Zigbee ZLinky

Je ne peut vous aider plus car j’ai pas de HP/HC …

Pas de soucis, merci :slight_smile:
Peut être que Phyllox n’a pas attendu les 5 minutes du cron avant de forcer la relecture de l’attribut.
Je vais laisser tourner, on verra demain si ça a changé dans la nuit.

1 « J'aime »

Hello
Oui j’ai attendu et refait plusieurs fois. En plus j’ai un cron à 2min…
Cec dit, je ne comprends pas vraiment le mécanisme qu’il faudrait appliquer… Un refresh ?

Je suis preneur d’infos sur ce fonctionnement (ou de liens de lecture)

Pour le scénario j’en ai fait ( un seul) sur les 2 événements… Et pour tenir compte des crons qui reçoivent en même temps une modif HP et une HC, je teste avant le changement la durée depuis le dernier changement…

Mais c’est du palliatif, devoir créer un virtuel et un scénario parce que quelque chose ne fonctionne pas, ça n’est pas normal

En tous cas, merci pour le support

Pour ma part la valeur change bien.

J’ai juste désactivé le Cache, fait un « Rafraichr les informations » avant de refaire la lecture de l’attribut et j’ai bien eux mon changement de valeur j’étais en HP et je suis passer en HC

Hello @Tarlak

Effectivement en décochant : autoriser le cache (option à laquelle je n’vais jamais prêté attention jusqu’à maintenant), quand je fais action, 794:ZLinkyTICMonitoring, valeur 32 et valider, la valeur change bien (à cette heure ci : HC… (avec deux points pas trois, impossible d’écrire 2 points ici)

C’est bien, mais en pratique, comment faire pour forcer la lecture de cette valeur pour qu’elle alimente la zone « Periode tarifaire en cours » ?

C’est moins grave depuis que j’ai mon virtuel et mon scénario, mais j’aimerais bien comprendre pourquoi le plugin ne le fait pas d’autorité.

Merci

Ha ca je suis bien d’accord, vu que l’équipement est capable de le récupérer j’aimerai bien aussi pouvoir me passer d’un virtuel et d’un scénario pour le faire :). Je ne trouve pas moyen de forcer ça à la main, à moins peut être de pouvoir le faire via un bloc code dans un scénario, mais bon ça fera quoi qu’il arrive un scénario à mettre en place au lieu que ce soit automatique

J’ai creusé un peu la question.
Voici ce qui est envoyé lors de l’exécution du cron

[2021-12-13 21:18:08]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:18:08]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":1794,"cluster_type":"in","attributes":[0,256,258,260,262,264,266,32],"manufacturer":null,"allowCache":0}
[2021-12-13 21:18:08]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:18:08]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:18:08]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":65382,"cluster_type":"in","attributes":[1,2,4,5,6,7,8],"manufacturer":null,"allowCache":0}
[2021-12-13 21:18:08]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:18:08]DEBUG : {"devices":{"00:15:8d:00:05:be:7f:8c":{"1":{"1794":{"0":{"value":"0","cluster_name":"ZLinkyTICMetering"},"256":{"value":"6595373","cluster_name":"ZLinkyTICMetering"},"258":{"value":"4090002","cluster_name":"ZLinkyTICMetering"},"260":{"value":"0","cluster_name":"ZLinkyTICMetering"},"262":{"value":"0","cluster_name":"ZLinkyTICMetering"},"264":{"value":"0","cluster_name":"ZLinkyTICMetering"},"266":{"value":"0","cluster_name":"ZLinkyTICMetering"}},"2820":{"1288":{"value":"1","cluster_name":"Electrical Measurement"},"1295":{"value":"340","cluster_name":"Electrical Measurement"},"2312":{"value":"65535","cluster_name":"Electrical Measurement"},"2568":{"value":"65535","cluster_name":"Electrical Measurement"},"1290":{"value":"90","cluster_name":"Electrical Measurement"},"2314":{"value":"65535","cluster_name":"Electrical Measurement"},"2570":{"value":"65535","cluster_name":"Electrical Measurement"},"1293":{"value":"-32768","cluster_name":"Electrical Measurement"}},"65382":{"1":{"value":"","cluster_name":"Manufacturer Specific"},"2":{"value":"0","cluster_name":"Manufacturer Specific"},"4":{"value":"0","cluster_name":"Manufacturer Specific"},"5":{"value":"0","cluster_name":"Manufacturer Specific"},"6":{"value":"0","cluster_name":"Manufacturer Specific"},"7":{"value":"0","cluster_name":"Manufacturer Specific"},"8":{"value":"0","cluster_name":"Manufacturer Specific"}}}}}}
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::0 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::256 => 6595373 convert to 6595373
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::258 => 4090002 convert to 4090002
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::260 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::262 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::264 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::266 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1288 => 1 convert to 1
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1295 => 340 convert to 340
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2312 => 65535 convert to 65535
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2568 => 65535 convert to 65535
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1290 => 90 convert to 90
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2314 => 65535 convert to 65535
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2570 => 65535 convert to 65535
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1293 => -32768 convert to -32768
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::1 =>  convert to
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::2 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::4 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::5 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::6 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::7 => 0 convert to 0
[2021-12-13 21:18:08]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::8 => 0 convert to 0

On observe ici que l’on demande le refresh de 8 champs [0,256,258,260,262,264,266,32]
et que l’on a le retour des 7 premiers uniquement. Et que le dernier est le 32 (le PTEC, celui qui nous intéresse ici)

Si l’on fait un appel via la procédure décrite plus haut, on voit que l’on a bien un retour sur l’attribut 32

[2021-12-13 20:43:58]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":1794,"cluster_type":"in","attributes":[32],"allowCache":1,"manufacturer":null}
[2021-12-13 20:43:58]DEBUG : [{"32":"HP.."},[]]

J’ai essayé de trié dans l’ordre les id des attributs et je reçoit bien le résultat pour la 32 mais plus pour la 266 (la dernière).

J’en déduis donc que l’on ne peut pas demander l’actualisation de plus de 7 attributs par requêtes.

J’ai essayé de découper en plusieurs requêtes (par lots de 7)
Voici le résultat

[2021-12-13 21:34:07]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:34:07]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":1794,"cluster_type":"in","attributes":[0,256,258,260,262,264,266],"allowCache":0}
[2021-12-13 21:34:07]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:34:07]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:34:07]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":1794,"cluster_type":"in","attributes":[32],"allowCache":0}
[2021-12-13 21:34:07]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:34:07]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:34:07]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":2820,"cluster_type":"in","attributes":[1288,1295,2312,2568,1290,2314,2570],"allowCache":0}
[2021-12-13 21:34:07]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:34:07]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:34:07]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":2820,"cluster_type":"in","attributes":[1293],"allowCache":0}
[2021-12-13 21:34:07]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:34:07]DEBUG : http://127.0.0.1:8089/device/attributes type : POST
[2021-12-13 21:34:07]DEBUG : {"ieee":"00:15:8d:00:05:be:7f:8c","endpoint":1,"cluster":65382,"cluster_type":"in","attributes":[1,2,4,5,6,7,8],"allowCache":0}
[2021-12-13 21:34:07]DEBUG : [Garage][ZLinky_TIC] refresh
[2021-12-13 21:34:07]DEBUG : {"devices":{"00:15:8d:00:05:be:7f:8c":{"1":{"1794":{"0":{"value":"0","cluster_name":"ZLinkyTICMetering"},"256":{"value":"6595373","cluster_name":"ZLinkyTICMetering"},"258":{"value":"4090059","cluster_name":"ZLinkyTICMetering"},"260":{"value":"0","cluster_name":"ZLinkyTICMetering"},"262":{"value":"0","cluster_name":"ZLinkyTICMetering"},"264":{"value":"0","cluster_name":"ZLinkyTICMetering"},"266":{"value":"0","cluster_name":"ZLinkyTICMetering"},"32":{"value":"HP..","cluster_name":"ZLinkyTICMetering"}},"2820":{"1288":{"value":"1","cluster_name":"Electrical Measurement"},"1295":{"value":"320","cluster_name":"Electrical Measurement"},"2312":{"value":"65535","cluster_name":"Electrical Measurement"},"2568":{"value":"65535","cluster_name":"Electrical Measurement"},"1290":{"value":"90","cluster_name":"Electrical Measurement"},"2314":{"value":"65535","cluster_name":"Electrical Measurement"},"2570":{"value":"65535","cluster_name":"Electrical Measurement"},"1293":{"value":"-32768","cluster_name":"Electrical Measurement"}},"65382":{"1":{"value":"","cluster_name":"Manufacturer Specific"},"2":{"value":"0","cluster_name":"Manufacturer Specific"},"4":{"value":"0","cluster_name":"Manufacturer Specific"},"5":{"value":"0","cluster_name":"Manufacturer Specific"},"6":{"value":"0","cluster_name":"Manufacturer Specific"},"7":{"value":"0","cluster_name":"Manufacturer Specific"},"8":{"value":"0","cluster_name":"Manufacturer Specific"}}}}}}
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::0 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::256 => 6595373 convert to 6595373
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::258 => 4090059 convert to 4090059
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::260 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::262 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::264 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::266 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::1794::32 => HP.. convert to HP..
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1288 => 1 convert to 1
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1295 => 320 convert to 320
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2312 => 65535 convert to 65535
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2568 => 65535 convert to 65535
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1290 => 90 convert to 90
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2314 => 65535 convert to 65535
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::2570 => 65535 convert to 65535
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::2820::1293 => -32768 convert to -32768
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::1 =>  convert to
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::2 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::4 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::5 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::6 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::7 => 0 convert to 0
[2021-12-13 21:34:07]DEBUG : Search attribut for 00:15:8d:00:05:be:7f:8c logicalId : 1::65382::8 => 0 convert to 0

Les 2 requêtes partent : une de 7 attributs et une de 1 et nous avons bien le résultat.

La modification apportée concerne le fichier zigbee.class.php
ligne 1002

    foreach ($datas as $endpoint => $data) {
      foreach ($data as $cluster => $attributes) {
        foreach (array_chunk($attributes, 7) as $key => $chunk) {  
          try {
            zigbee::request($this->getConfiguration('instance', 1), '/device/attributes', array(
              'ieee' => $ieee,
              'endpoint' => $endpoint,
              'cluster' => $cluster,
              'cluster_type' => 'in',
              'attributes' => $chunk,
              'allowCache' => 0
            ), 'POST');

            log::add('zigbee', 'debug', $this->getHumanName() . ' refresh');
          } catch (\Exception $e) {
            log::add('zigbee', 'info', $this->getHumanName() . ' ' . $e->getMessage());
          }
      	}
      }
    }
2 « J'aime »

Bonjour,

Merci pour cette trouvaille :slight_smile:
Je tente aussi avec ce code modifié.
Si cela peut être mis en standard, ça pourrait être pas mal.

Bonjour,

J’ai créé un post dans le salon des beta testeurs.

Pour analyse avec les auteurs du plugin.

Tiens nous au courant si ça résout ton problème.

1 « J'aime »

Vu avec Loic, ça sera dans la beta du plugin demain.

3 « J'aime »

Ha ben voila une bien bonne nouvelle :slight_smile:

bibine :beer: oui

ok ---->>>
boire ou jeedomer il faut choisir :thinking:

Les deux sont possible :smiley:

1 « J'aime »

Sinon autre solution en attendant que le fix passe en stable :

Vous pouvez supprimer les commandes qui ne sont pas utilisées (en fonction de votre abonnement)
par exemple chez moi les 260,262,264,266 retournent toujours 0. En les supprimant on repasse en dessous des 7 attributs / refresh.

1 « J'aime »

Hello tout le monde
Avant que vous ne cherchiez des choses qui me sont inaccessibles, et auxquelles je n’ai pas compris grand chose, j’avais demandé au fabriquant de voir de son côté avec l’équipe Jeedom pour demander la correction de ce bug.
Il m’avait répondu qu’il le ferait

Mais puisque des gens compétents ont investigué et trouvé l’origine du problème, et puisque Loic l’a pris en compte, c’est génial.
Merci à tous. Vous êtes supers.

Hello
Pour moi, la rectification est arrivée dans la stable de ce matin
Merci donc @Loic pour la correction attendue

Il reste un petit souci, c’est que la commande ne renvoie pas HC et HP mais cette valeur suivi de de 2 points (je ne peux pas écrire 2 points dans un message, c’est remplacé par …).

Dans Suivi Conso, je dois récupérer HP et HC pour le traitement, sans les 2 points qui suivent.

Mais bien sûr, je peux corriger la commande pour ne prendre que les deux premiers caractères de la chaîne. Evidemment, ça serait mieux en standard, mais peut être suis-je le seul avec cet inconvénient ?

Merci

en attendant
un petit scenario avec un str_replace …

Hello @olive
Merci du retour
Oui, pas de souci pour la correction. Du reste, j’ai déjà un scénario qui tourne sur le virtuel que je peux garder en attendant. Ca doit être possible aussi dans les propriété avancées de la commande, avec « action sur valeur si », mais je ne sais pas trop comment ça fonctionne, je ne sais pas si on peut faire un substr() à cet endroit là…
Merci

C’est le compteur lui même qui envoie HC.. ou HP.. donc pas modifiable dans le plugin

Sinon un petit widget peut faire le boulot

2 « J'aime »

Hello
Jolie solution le widget.
Un truc en plus tout de même, mais moins lourd et plus élégant qu’un scénario…
Merci