deConz et Sinopé

Forum dédié au ZigBee : objets, interfaces ...
Plugins DeConz et ZigBee2MQTT
Pour les questions concernant le plugin ZigBeeForDomoticZ, merci d'utiliser le forum spécifique en dessous.
mercusot
Messages : 116
Inscription : 05 janv. 2017, 14:05

Re: deConz et Sinopé

Message par mercusot »

Et tu sur que "power" fonctionne sur le id 18 ? car si il fonctionne, il faudrait que tu ais un widget avec "power" ET "consumption", par contre si la valeur reste a 0, on peux aussi juste l'ignorer ?
Très honnêtement je n'en sais rien car cela a toujours été affiché à 0 ce qui laisserait à penser que si c'est power qui écrase consumption c'est qu'il est toujours à 0 alors que l'autre widget power est lui bien renseigné.

Après mise à jour, suppression du widget et redémarrage de Domoticz le widget reste à zero pour la partie power mais la valeur de consommation augmente bien. Donc cela semble effectivement ne pas remonter comme il faut. On pourrait donc l'ignorer ! Je n'aurais pas moyen de le virer en mettant à jour un DDF à la place plutôt que de modifier ton code ?
Pour le Backlight, je viens de comparer avec z2m, et il semblerait qu'ils utilisent les memes commandes, bizarre que cela ne marche pas, pas de message d'erreur ?
Pour ça cela ressemble à un bug de Deconz parce que le cluster est bien affiché ainsi que la valeur "On demand" mais lorsque je veux aller changer (ou forcer la valeur) le choix de menu déroulant avec les deux valeurs ne s'affiche pas et lorsque que je clique pour écrire ça me dit que la valeur est invalide (ou quelque chose du genre de mémoire parce que je suis revenu en mode sans GUI).

J'étais tombé sur le post hier concernant le DDF et le cluster specifique de Xiaomi ... Merci pour l'info. J'espère que l'on pourra avoir bientôt la même chose pour Sinopé parce que tous leurs thermostats semblent sur le même mode et d'autres plateformes savent déjà les mettre à jour.
Thorgal
Messages : 913
Inscription : 16 août 2018, 20:02
Contact :

Re: deConz et Sinopé

Message par Thorgal »

Yep c'est possible avec un DDF. Je sais pas si tu y a deja touché ? Mais il suffit de selectionner le mauvais state/power et de presser la touche "delete". Le seul soucis, c'est que tout ca c'est a partir d'un DDF deja complet ^^

Pour le moment je laisse le code comme ca, tu auras la consumption meme si la valeur power reste a 0

quelqu'un qui fait le meme type de demande que toi https://forum.phoscon.de/t/danfoss-ally ... t-api/1755

Pour le bug du xml, la je vois pas

Code : Tout sélectionner

			<attribute id="0x0402" name="Backlight" type="enum8" access="rw" required="m" mfcode="0x119c">
				<value name="On demand" value="0x00"></value>
				<value name="Sensing" value="0x01"></value>
			</attribute>
Il n'ya pas de valeur par defaut

Code : Tout sélectionner

default="0x00"
donc c'est peut etre pour ca que la liste est vide tant que tu ne lis pas une valeur, mais elle devrait marcher apres, et pourquoi un message d'erreur si tu essayes d'ecrire ....

Avec le debug "ZCL' on a ca en essayant de lire un attribut

Code : Tout sélectionner

16:40:37:625 ZCL cmd-req nwk: 0x6A70, profile: 0x0104, cluster: 0x0006 cmd: 0x00
16:40:37:727 ZCL got data for node=0x6A70, cl=0x0006, at=0x4001, status=0x00, type=0x21
Ca confirme le type et donne un status, y a un peu plus d'infos avev "APS", mais ca affiche pas la valeur retournée par l'appareil non plus.
mercusot
Messages : 116
Inscription : 05 janv. 2017, 14:05

Re: deConz et Sinopé

Message par mercusot »

Pour le moment je laisse le code comme ca, tu auras la consumption meme si la valeur power reste a 0
Oui pas de problème. L'autre solution serait de lui fournir la bonne valeur au travers du DDF, mais lorsque je vais dns l'éditeur DDF de Phoscon, la configuration de l'attribut poser est exactement là même dans ZHAConsumption que dans ZHAPower.

Dans les deux cas celà référence le même Cluster Id (0x0b04) et le même Attribute id (0x050b) (en Parse et Read) avec la même Expression

Code : Tout sélectionner

if (Attr.val != -32768) { Item.val = Attr.val; }
, et cette valeur est bien différente de zéro dans un des cas mais pas l'autre !?

Pour l'attribut Backlight, lorsque je force un read j'ai bien le message "read done" dans l'interface graphique deCONZ, mais lorsque je clique "write" j'ai "invalid data". La valeur par défaut à 0x00 cela devrait vouloir dire que c'est "On demand" par défaut ce qui semble être le cas. C,est quand même bizarre.
mercusot
Messages : 116
Inscription : 05 janv. 2017, 14:05

Re: deConz et Sinopé

Message par mercusot »

Thorgal a écrit : 22 mars 2022, 17:43

Pour le bug du xml, la je vois pas

Code : Tout sélectionner

			<attribute id="0x0402" name="Backlight" type="enum8" access="rw" required="m" mfcode="0x119c">
				<value name="On demand" value="0x00"></value>
				<value name="Sensing" value="0x01"></value>
			</attribute>
Il n'ya pas de valeur par defaut

Code : Tout sélectionner

default="0x00"
donc c'est peut etre pour ca que la liste est vide tant que tu ne lis pas une valeur, mais elle devrait marcher apres, et pourquoi un message d'erreur si tu essayes d'ecrire ....

Avec le debug "ZCL' on a ca en essayant de lire un attribut

Code : Tout sélectionner

16:40:37:625 ZCL cmd-req nwk: 0x6A70, profile: 0x0104, cluster: 0x0006 cmd: 0x00
16:40:37:727 ZCL got data for node=0x6A70, cl=0x0006, at=0x4001, status=0x00, type=0x21
Ca confirme le type et donne un status, y a un peu plus d'infos avev "APS", mais ca affiche pas la valeur retournée par l'appareil non plus.
Je viens de me rendre compte que l'editeur d'attribut de deCONZ affiche "Unknown name field" pour l'attribut 0x402 Backlight, c'est peut-être de là que vient ensuite le problème qui fait que je ne peux pas le modifier. Alors que pour l'attribut juste au dessus (0x400 Occupancy) il m'affiche bien son nom et les deux valeurs possibles en menu déroulant.

Le debug ZCL semble bien aller le lire

Code : Tout sélectionner

09:11:39:916 ZCL got data for node=0x3466, cl=0x0201, at=0x0402, status=0x00, type=0x30
mais le write ne me donne rien
Thorgal
Messages : 913
Inscription : 16 août 2018, 20:02
Contact :

Re: deConz et Sinopé

Message par Thorgal »

Oui pas de problème. L'autre solution serait de lui fournir la bonne valeur au travers du DDF, mais lorsque je vais dns l'éditeur DDF de Phoscon, la configuration de l'attribut poser est exactement là même dans ZHAConsumption que dans ZHAPower.
Justement, si la puissance dans le cluster 0x0702 ne marche pas (rien qui s'affiche dans les attributs de ce cluster, a ne pas confondre avec la puissance dans le cluster 0x0b04), il te suffit de selectionner le state/consumption (dans le ZHAConsumption), de presser la touche "delete" et de sauver le DDF.
Apres le "hot reload" le champs devrait partir.

Code : Tout sélectionner

Dans les deux cas celà référence le même Cluster Id (0x0b04) et le même Attribute id (0x050b) (en Parse et Read) avec la même Expression 
Ca c'est pas normal, les sensors sont par cluster, donc tu devrais pas avoir les memes.
et cette valeur est bien différente de zéro dans un des cas mais pas l'autre !?
A verifier dans le GUI
Celle du ZHAConsumption est dans le cluster 0x0702 attribut 0x0400
Celle du ZHAPower est dans le cluster 0x0B04 attribut 0x050B

Pour le backlight, j'ai peut etre trouvé

Code : Tout sélectionner

		<!-- ELKO specific -->
		<attribute-set id="0x0400" description="ELKO specific" mfcode="0x1002">
			<attribute id="0x0401" name="Unknown" type="u16" access="rw" required="m"></attribute>
			<attribute id="0x0402" name="Unknown name field" type="cstring" access="rw" required="m"></attribute>
			<attribute id="0x0403" name="Temperature measurement" type="enum8" access="rw" required="m">
				<value name="Air sensor" value="0x00"></value>
				<value name="Floor sensor" value="0x01"></value>
				<value name="Floor protection" value="0x03"></value>
			</attribute>
Il y a 2 fois l'attribut 0x0402, et lui n'utilise pas mfcode="XXXX" du coup ca doit by-passer le tiens.
mercusot
Messages : 116
Inscription : 05 janv. 2017, 14:05

Re: deConz et Sinopé

Message par mercusot »

Pour le backlight, j'ai peut etre trouvé
Merci pour ton aide précieuse, en effet c'est bien la definition du ELKO qui "prend le dessus" car le mfcode est absent.
En "remontant" la définition de Sinope avant celle du ELKO dans le fichier general.xml comme tu me l'a suggéré par ailleurs cela fonctionne correctement. ;)

La gestion du mfcode par deConz semble se faire comme si le fichier xml était un bête fichier texte lu en séquence.

J'imagine que ce doit être le même problème pour tout thermostats qui utiliseraient ces mêmes attributs.
Ca c'est pas normal, les sensors sont par cluster, donc tu devrais pas avoir les memes.
C'est exactement le même genre de configuration pour la temperature qui remonte dans ZHATemperature et ZHAThermostat tout en pointant vers le même cluster et le même attribut. Et elle est bien mise à jour aux deux endroits. :?:
mercusot
Messages : 116
Inscription : 05 janv. 2017, 14:05

Re: deConz et Sinopé

Message par mercusot »

Je ne sais pas si c'est a dernière version beta du plugin ou le fait que le DDF corrigé fasse maintenant remonter la puissance sur ZHAComsumption mais le senseur dans Domoticz reste vide, même si la date de mise à jour indique qu'il est renseigné !?
Thorgal
Messages : 913
Inscription : 16 août 2018, 20:02
Contact :

Re: deConz et Sinopé

Message par Thorgal »

Lol, ha c'etait ca dont tu voulais parler ^^.
Il va me falloir un recapitulatif, tu pourrais me refaire passer les 2 json pour le ZHAconsumption et le ZHAPower avec le DDF ?

Il y a eu des modif recemment, suite a un bug https://github.com/Smanar/Domoticz-deCONZ/issues/131
Je dois peut etre rajouter ton appareil dans la whitelist ou faut peut etre changer le wigdet.

Le DDF "officiel" supprime le state/power sur le capteur ZHAConsumption, ou il utilise la bidouille pour voir les infos de l'autre cluster ?

Je peux faire en fonction de la presence ou pas de "power" dans le ZHAConsumption, mais ton appareil n'est pas le seul a avoir le probleme, d'ou l'utilisation d'une whitelist.
mercusot
Messages : 116
Inscription : 05 janv. 2017, 14:05

Re: deConz et Sinopé

Message par mercusot »

Oui c'était ça ! ;-)
Voilà le json pour ZHAConsumption

Code : Tout sélectionner

{
  "config": {
    "on": true,
    "reachable": true
  },
  "ep": 1,
  "etag": "b5aa4229145099dac8be3a05a066e01e",
  "lastannounced": null,
  "lastseen": "2022-04-18T11:53Z",
  "manufacturername": "Sinope",
  "modelid": "TH1124ZB",
  "name": "Conso Therm Salon",
  "state": {
    "consumption": 360728,
    "lastupdated": "2022-04-18T11:53:25.748",
    "power": 768
  },
  "swversion": "2007",
  "type": "ZHAConsumption",
  "uniqueid": "50:0b:91:40:00:02:ca:1c-01-0702",
  "id": "16",
  "deviceclass": "sensors"
Et le ZHAPower

Code : Tout sélectionner

{
  "config": {
    "on": true,
    "reachable": true
  },
  "ep": 1,
  "etag": "cc900b7655965e7b1ba3de20d7608f87",
  "lastannounced": null,
  "lastseen": "2022-04-18T11:53Z",
  "manufacturername": "Sinope",
  "modelid": "TH1124ZB",
  "name": "Puissance Therm Salon",
  "state": {
    "current": 3458,
    "lastupdated": "2022-04-18T11:50:29.269",
    "power": 768,
    "voltage": 239
  },
  "swversion": "2007",
  "type": "ZHAPower",
  "uniqueid": "50:0b:91:40:00:02:ca:1c-01-0b04",
  "id": "17",
  "deviceclass": "sensors"
}
Pour le DDF le voici, c'est celui que j'ai posté sur https://github.com/dresden-elektronik/d ... 1100868921 suite à tes conseils. Et le DDF officiel ne supprime pas le power, il restait juste à zéro.

Code : Tout sélectionner

{
  "schema": "devcap1.schema.json",
  "manufacturername": "Sinope",
  "modelid": "TH1124ZB",
  "product": "TH1124ZB",
  "sleeper": false,
  "status": "Silver",
  "path": "/devices/th1124zb.json",
  "subdevices": [
    {
      "type": "$TYPE_THERMOSTAT",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0201"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0201",
          "0x0204",
          "0x0B05"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/heatsetpoint",
          "description": "Target temperature of a thermostat.",
          "default": 0
        },
        {
          "name": "config/mode",
          "description": "Mode of the device."
        },
        {
          "name": "config/offset",
          "description": "Relative offset to the main measured value.",
          "default": 0
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "config/schedule",
          "description": "On-device heating schedules."
        },
        {
          "name": "config/schedule_on",
          "description": "Determines if on-device schedules for setting the heatsetpoint are currently used or if the thermostat is operated manually."
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/on",
          "description": "True when device is on; false when off.",
          "refresh.interval": 5
        },
        {
          "name": "state/temperature",
          "description": "The current temperature in °C &times; 100.",
          "default": 0
        }
      ]
    },
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0b04"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0B04"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/current",
          "refresh.interval": 300
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 300
        },
        {
          "name": "state/voltage",
          "refresh.interval": 300,
          "parse": {
            "at": "0x0505",
            "cl": "0x0b04",
            "ep": 0,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val / 10 ; }"
          }
        }
      ]
    },
    {
      "type": "$TYPE_CONSUMPTION_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0702"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0702"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/consumption",
          "refresh.interval": 300
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 300
        }
      ]
    },
    {
      "type": "$TYPE_TEMPERATURE_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0402"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0402"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/offset",
          "description": "Relative offset to the main measured value.",
          "default": 0
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/temperature",
          "default": 0
        }
      ]
    }
  ],
    "bindings": [
    {
      "bind": "unicast",
      "src.ep": 1,
      "dst.ep": 1,
      "cl": "0x0204"
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "dst.ep": 1,
      "cl": "0x0B04",
      "report": [
        {
          "at": "0x050B",
          "dt": "0x29",
          "min": 1,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0505",
          "dt": "0x21",
          "min": 1,
          "max": 300,
          "change": "0x0000000A"
        },
        {
          "at": "0x0508",
          "dt": "0x21",
          "min": 1,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    }
  ]
}
Update: Je viens de rajouter les "bindings" qui manquaient dans le DDF initial.
Dernière modification par mercusot le 19 avr. 2022, 18:44, modifié 2 fois.
Thorgal
Messages : 913
Inscription : 16 août 2018, 20:02
Contact :

Re: deConz et Sinopé

Message par Thorgal »

Ben avant le tien, y avait pas de DDF officiel.

Donc c'etait deconz lui meme qui deconnait et qui affichait un state/power alors qu'il n y avait pas la valeur, pas qu'elle etait a zero.

Le code est corrigé, tu peux mettre a jour la branche beta, normalement tu as deja le bon widget, donc pas besoin de le supprimer pour qu'il soit remplacé.
Répondre