Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intégration zha #18

Open
max5962 opened this issue Nov 7, 2021 · 161 comments
Open

Intégration zha #18

max5962 opened this issue Nov 7, 2021 · 161 comments

Comments

@max5962
Copy link

max5962 commented Nov 7, 2021

Hello,

Plus un ticket de demande qu'un vrai bug. Mais c'est essentiel pour l'utilisation.
Qui s'occupe de l'intégration via ZHA de zlinky ?
Merci

@fairecasoimeme
Copy link
Owner

Bonjour,
Pour le moment personne à ma connaissance, je n'ai pas eu le temps de vraiment regarder comment faire la requête auprès des dev ZHA.
J'imagine qu'il n'y a pas grand chose à faire mais peut-être que cela requiert un zha-quirks.
J'essaie de regarder dans la semaine ...

@max5962
Copy link
Author

max5962 commented Nov 8, 2021

Bonjour,

merci beaucoup. Dans le doute, j'avais créé un ticket ici : zigpy/zigpy-zigate#103

@fairecasoimeme
Copy link
Owner

Bonjour,
Je pense que c'est plus sur ZHA qui faut faire la demande. Zigpy est capable de gérer l'appareil je pense. C'est plus l'intégration vers HA qui faut faire

@pdecat
Copy link

pdecat commented Nov 8, 2021

Cela semble s'intégrer nativement dans ZHA:

image

image
image

Mais il y a comme un problème d'unité ou de virgule.

@max5962
Copy link
Author

max5962 commented Nov 8, 2021

Etonnant chez moi, j'ai beaucoup moins d'informations .
Même en supprimant et relançant l'association ... :
image

EDIT : vous ne semblez pas utiliser de zigate. Cela est peut être la différence. (zigpy plus à jour chez vous)

@pdecat
Copy link

pdecat commented Nov 8, 2021

J'utilise effectivement une passerelle zzh avec firmware Z-Stack supportée par zigpy-znp, et il s'agit d'une version de développement de Home Assistant mise à jour le 31 octobre.

@MichaelBitard
Copy link

J'ai la même chose que @pdecat avec une zigate

2021-11-11_11-40-20_grim

J'imagine qu'il doit manquer quelques informations :)

Le fait que le module apparaisse comme "Router" semble indiquer qu'il faudra probablement un zha_quirks pour mieux le configurer non ?

@max5962
Copy link
Author

max5962 commented Nov 11, 2021

@MichaelBitard tu es sous quel version de hass ?
vraiment étonné de ne pas voir les mêmes fonctionnalités :S j'espère pas une version casé du zlinky :/

EDIT : tu as quoi dans "informations zigbee" ?
@fairecasoimeme une idée ce qui peut cause la non exposition de certaines fonctionnalités ?

merci :)

@MichaelBitard
Copy link

MichaelBitard commented Nov 11, 2021

La dernière à jour normalement:

System Health

version core-2021.11.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.7
os_name Linux
os_version 5.10.17-v7
arch armv7l
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 5000
Installed Version 1.15.2
Stage running
Available Repositories 904
Installed Repositories 7
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 6.6
update_channel stable
supervisor_version supervisor-2021.10.8
docker_version 20.10.8
disk_total 13.9 GB
disk_used 7.0 GB
healthy true
supported true
board rpi3
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.2.1), Syncthing (1.18.3), Signal (10.16.0), Z-Wave JS (0.1.47)
Lovelace
dashboards 2
resources 4
views 9
mode storage

Il est où le panel "informations zigbee" ?

@max5962
Copy link
Author

max5962 commented Nov 11, 2021

La dernière à jour normalement:

System Health

version core-2021.11.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.7
os_name Linux
os_version 5.10.17-v7
arch armv7l
timezone Europe/Paris
Home Assistant Community Store
Home Assistant Cloud
Home Assistant Supervisor
Lovelace
Il est où le panel "informations zigbee" ?

image
Just ici :)

@MichaelBitard
Copy link

MichaelBitard commented Nov 11, 2021

Ha ok, en anglais c'est zigbee device signature :)

{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0053",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x0702",
        "0x0b01",
        "0x0b04",
        "0xff66"
      ],
      "out_clusters": [
        "0x0019"
      ]
    },
    "242": {
      "profile_id": 41440,
      "device_type": "0x0061",
      "in_clusters": [
        "0x0021"
      ],
      "out_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "LiXee",
  "model": "ZLinky_TIC",
  "class": "zigpy.device.Device"
}

J'imagine que si quirk il y a, ça sera ici : https://github.com/zigpy/zha-device-handlers par contre mes compétences s'arrêtent là malheureusement.

@max5962
Copy link
Author

max5962 commented Nov 11, 2021

Ha ok, en anglais c'est zigbee device signature :)

{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0053",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x0702",
        "0x0b01",
        "0x0b04",
        "0xff66"
      ],
      "out_clusters": [
        "0x0019"
      ]
    },
    "242": {
      "profile_id": 41440,
      "device_type": "0x0061",
      "in_clusters": [
        "0x0021"
      ],
      "out_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "LiXee",
  "model": "ZLinky_TIC",
  "class": "zigpy.device.Device"
}

J'imagine que si quirk il y a, ça sera ici : https://github.com/zigpy/zha-device-handlers par contre mes compétences s'arrêtent là malheureusement.

La mise à jour a permit de remonter plus d'informations. (étonnant car il est noté nul part dans le changelog un upgrade de la lib zigpy )

Plus qu'à corriger l'unité/virgule et vérifier qu'il y ai bien une évolution des métriques :)

Après quelques jours de suivis, la remontée est hératique, parfois j'en ai tous les heures, parfois plusieurs heures sans rien. Espérons qu'une intégration ZHA réel corrige tout ça :)

@pdecat
Copy link

pdecat commented Nov 11, 2021

Pour info, j'ai ouvert une issue pour l'ajout du quirk : zigpy/zha-device-handlers#1146

@N0ciple
Copy link

N0ciple commented Nov 16, 2021

J'ai creusé un peu la question pour faire un quirk.
Il y a quelques subtilités sur comment remonter les infos qui ne fonctionnent pas encore.
La puissance par exemple: avec Zlinky c'est remonté sur le endpoint 1, Cluster 0x0B04, attribut 0x050F.
Si l'on regarde dans gérer les clusters, c'est l'attribut apparent_power.
image
Hors, celui qui est remonté par ZHA comme sensor, c'est active_power.
image
Ces deux valeurs proviennent du même cluster (0xB04, "ElectricalMeasurement") et il semblerait que ZHA ne permette qu'un sensor par cluster : zigpy/zha-device-handlers#605 (comment)
L'info n'est pas super récente. Je ne sais pas si c'est encore le cas. Si ça l'est, je pense qu'il faut écrire un quirks qui prend la valeur de "apparent_power" et la renvoie pour "active_power".

Pour ce qui est du voltage, je crois que le mode historique ne renvoit pas cette info, c'est seulement le mode standard. @fairecasoimeme pourra surement confirmer. Ayant mon linky en mode historique je ne peux pas tester.

Les info de courrant fonctionnent bien.

L'index de consommation fonctionne correctement mais il faut explicitement demander la valeur dans le menu "gérer les clusters" pour que ce soit mis à jour. Je ne sais pas pourquoi c'est comme ça, mais je ne suis pas le seul dans ce cas : #19 (comment)
Il faut peut être spécifier dans le quirk sur c'est une valeur à actualiser. C'est à creuser...

J'ai commencé à faire le quirk et pour l'instant j'en suis là :

from zigpy.quirks import CustomDevice
from zigpy.types import basic
from zhaquirks import Bus, LocalDataCluster
from zigpy.profiles import zha

from zhaquirks.const import (

   DEVICE_TYPE,
   ENDPOINTS,
   INPUT_CLUSTERS,
   MODELS_INFO,
   OUTPUT_CLUSTERS,
   PROFILE_ID,
)

from zigpy.zcl.clusters.general import (
   Basic,
   GreenPowerProxy,
   Identify,
   Ota,
)
from zigpy.zcl.clusters.smartenergy import Metering
from zigpy.zcl.clusters.homeautomation import (
   ElectricalMeasurement,
   MeterIdentification

)


LIXEE = "LiXee"

class ZLinkyTIC(CustomDevice):
   """ZLinky_TIC from LiXee"""
   signature = {
       MODELS_INFO: [(LIXEE, "ZLinky_TIC")],
       ENDPOINTS:{
           1: {
               PROFILE_ID: zha.PROFILE_ID,
               DEVICE_TYPE: zha.DeviceType.METER_INTERFACE,
               INPUT_CLUSTERS: [
                   Basic.cluster_id,
                   Identify.cluster_id,
                   Metering.cluster_id,
                   MeterIdentification.cluster_id,
                   ElectricalMeasurement.cluster_id,
                   0xff66, # Manufacturer Specific
               ],
               OUTPUT_CLUSTERS : [
                   Ota.cluster_id
               ]

           },
           242: {
               PROFILE_ID: 41440,
               DEVICE_TYPE: 0x0061,
               INPUT_CLUSTERS: [
                   GreenPowerProxy.cluster_id
               ],
               OUTPUT_CLUSTERS: [
                   GreenPowerProxy.cluster_id
               ]
               
           }
       }
   }
   replacement= {}

Pour le endpoint 242, je n'ai rien trouvé dans zigpy pour le PROFILE_ID et DEVICE_TYPE, donc j'ai hardcodé les valeurs.

Il faut maintenant remplir le dictionnaire replacement. Il faudra probablement créer un cluster ElectricalMeasurement custom pour faire ce que je décrivais plus haut (renvoyer la valeur de apparent_power pour active_power), et peut être d'autres choses, mais pour l'instant je ne sais pas encore bien comment faire ça.

@N0ciple
Copy link

N0ciple commented Nov 17, 2021

Je crois que développer un quirk n'est pas ce qu'il faudrait faire (ou en tout cas pas la seule chose à faire).
Le problème vient du fait que ZHA n'a pas de sensor pour apparent_power mais en a un pour active_power (pour la partie power). Visiblement c'est pas bien compliqué de rajouter un sensor pour un nouvel attribut. cf ici (et également les classes du dessous ElectricalMeasurementRMSCurrent, etc...)
Il faut juste spécifier correctement les attributs du cluster. L'unité Volt-Ampères existe déjà dans Home Asisstant, pas besoin de la céer.

Je crois que quelque chose comme ça devrait être suffisant :

@MULTI_MATCH(channel_names=CHANNEL_ELECTRICAL_MEASUREMENT)
class ElectricalMeasurementApparentPower(ElectricalMeasurement, id_suffix="apparent_power"): # pas sûr pour le id_suffix
    """Apparent Power measurement."""

    SENSOR_ATTR = "apparent_power"
    _device_class = DEVICE_CLASS_POWER
    _unit = POWER_VOLT_AMPERE
    _div_mul_prefix = "ac_power"

    @property
    def should_poll(self) -> bool:
        """Poll indirectly by ElectricalMeasurementSensor."""
        return False

Cependant ça va bloquer. En effet, les devices de la classe power ne supportent (pas encore) les Volt-Ampères comme unité : home-assistant/core#57236

On peut toujours dire qu'il s'agit de Watt en changeant POWER_VOLT_AMPERE par POWER_WATT. Puisqu'un Watt est homogène à une puissance et un Volt-Ampère aussi. Physiquement ce n'est pas faux mais c'est pas la bonne unité en pratique. (Pour les histoire d'homogénéité, voir ici spécifiquement la section Principes généraux d'homogénéité)

Je crois qu'il faudra quand même faire un quirk pour définir les ac_power_multiplier et ac_power_divisor (0X0604 et 0X0605 du cluster ElectricalMeasurement). Sinon le sensor va multiplier par None et on aura pas de valeur exploitable.

@N0ciple
Copy link

N0ciple commented Nov 17, 2021

Bonne nouvelle, il suffit "juste" de rajouter un nouveau sensor comme je le disais dans mon dernier post et ça fonctionne (enfin presque) :
image

J'ai testé en éditant le fichier homeassistant/components/zha/sensor.py. Dans une installation Docker il est situé dans /usr/src/homeassistant. Si vous faites la manip, attention à bien importer POWER_VOLT_AMPERE dans le from homeassistant.const import ...
Pas de problèmes avec l'unité en Volt-Ampères finalement. Il reste cependant le problème de l'actualisation. Tout comme l'indexe de consommation, il faut explicitement demander via l'interface "gérer les clusters" la valeur du champ pour qu'il soit mis à jour.
Peut-être est-ce lié à cette isssue #24 ?

@N0ciple
Copy link

N0ciple commented Nov 17, 2021

J'ai fait la PR qui est ici : home-assistant/core#59857

@pdecat
Copy link

pdecat commented Nov 17, 2021

Il reste cependant le problème de l'actualisation. Tout comme l'indexe de consommation, il faut explicitement demander via l'interface "gérer les clusters" la valeur du champ pour qu'il soit mis à jour.

La réponse semble avoir été apportée dans la PR: home-assistant/core#59857 (comment)

@N0ciple
Copy link

N0ciple commented Nov 18, 2021

Il reste cependant le problème de l'actualisation. Tout comme l'indexe de consommation, il faut explicitement demander via l'interface "gérer les clusters" la valeur du champ pour qu'il soit mis à jour.

La réponse semble avoir été apportée dans la PR: home-assistant/core#59857 (comment)

Oui effectivement je n'avais pas vu qu'il fallait rajouter l'attribut à cet endroit également !
Malheureusement ce n'était pas le seul soucis qui bloquait l'actualisation 😕. J'ai testé en faisant la correction en local et l'actualisation ne se fait toujours pas. Le problème ne vient peut-être pas de ZHA 🤔. Un autre indice qui va dans ce sens, c'est que l'indexe de consommation est déjà intégré dans ZHA ici (et également la partie reporting ici). L'actualisation fonctionne sur d'autres appareils Zigbee, mais pas pour le Zlinky_TIC.
Je corrigerai la PR en ajoutant la partie reporting et aussi les test qui sont manquants pour que la PR soit acceptée.
Il restera le quirk pour convertir les Wh en KWh pour l'indexe de consommation, mais ça, ça ne devrait pas être trop compliqué 🤞

@N0ciple
Copy link

N0ciple commented Nov 19, 2021

La Pull Request sur ZHA est mergée 🥳 !
Ici le lien de la pull request pour le quirk : zigpy/zha-device-handlers#1161
Le quirk sert juste à convertir les Wh en kWh pour pourvoir l'intégrer dans la partie Energie de home assistant.

Malheureusement, l'actualisation de l'index de consommation ne fonctionne pas. Cependant j'avais dit une bétise. J'ai une autre prise en zigbee qui rapport l'indexe et effectivement celui ci ne semple pas s'actualiser tout seul. Il doit falloir creuser du côté ZHA pour ça. Mais l'actualisation de la puissance en VA fonctionne elle !

@ralmn, est-ce que dans votre version du external_converters pour le ZLinky_TIC l'index de consommation s'actualise bien tout seul sans qu'il soit besoin d'aller requêter la valeur manuellement ?

@ralmn
Copy link

ralmn commented Nov 19, 2021

Non je suis obligé (comme pour pas mal de valeur) de lire la valeur périodiquement. Comme indiqué en #24 il faudra attendre une nouvelle version du firmware

@max5962
Copy link
Author

max5962 commented Nov 19, 2021

Hello,

Donc si je résume l'état des lieux :

  • soucis d'unité : corrigé via un Quirk merci @N0ciple !
  • soucis de valeur qui ne se met pas à jour (update à faire ou attendre la version du firmware qui corrige ça )
  • soucis des autres sensors qui ne remontent pas : corrigé via le Quirk.

J'ai tout bon ? ;)

D'autres choses avant d'avoir d'avoir une intégration au petits ognons ?

@N0ciple
Copy link

N0ciple commented Nov 19, 2021

@max5962 C'est presque ça. Pour ce qui est du troisième point, ce n'est pas via un quirk mais via une modification directement dans l’intégration zha.

Pour info les sensors dispo dans zha (avant la PR) étaient rms_voltage, rms_current, active_power et current_summ_delivered (index de consommation). active_power n'est pas dispo sur ZLinky_TIC, c'est pour ça que j'ai rajouté le sensor apparent_power lui fonctionne. (Il y a une petite difference physique entre les deux, apparent_power, c'est la grandeur en Volt-Ampères que l'on peut voir sur son linky quand on appuie sur les boutons et qui correspond à la puissance apparente soutirée).

Si on résume les sensors dispo, ça nous fait : voltage, courrant, puissance apparente et indexe de consommation. Ça me semlble être les sensors plus pertinent. A savoir: le voltage n'est disponnible que sur les Linky en mode standard, pas en mode historique.

Les autres sensors (comme au pif : l'option tarifaire et la puissance souscrite) ne sont pas rapportés dans ZHA. Pour les rajoutés il faudrait faire une autre modification. Et pour le coup, pas sûr que ça soit accepté puisque ça ne servirait que pour le Zlinky_TIC.

Voilà, j'espères que c'est plus clair 👌

EDIT :
Dans l'état actuel des choses, il y a 3 choses à attendre qui sont, dans l'ordre :

  • que la PR pour le quirk soit mergée + intégré dans une release
  • qu'il y ait une nouvelle release de Home assistant qui prenne ma PR + update la version des quirks
  • que le nouveau firmware du ZLinky_TIC soit dispo (pour la partie actualisation automatique)

@pdecat
Copy link

pdecat commented Nov 20, 2021

@N0ciple apparent_power remonte parfaitement et se met à jour tout seul, merci !
image

@pdecat
Copy link

pdecat commented Nov 20, 2021

La correction de l'unité Wh en kWh fonctionne aussi parfaitement et la mise à jour se fait toute seule également.

À noter, je vois ceci dans les logs :

2021-11-20 10:30:10 WARNING (Recorder) [homeassistant.components.sensor.recorder] sensor.lixee_zlinky_tic_electrical_measurement_apparent_power has unknown unit VA
2

@max5962
Copy link
Author

max5962 commented Nov 20, 2021

  • u ZLinky_TIC soit dispo (pour la partie actualisation automatique)

Une nouvelle version est disponible ou vous avez modifié votre instance locale ?

@pdecat
Copy link

pdecat commented Nov 20, 2021

Une nouvelle version est disponible ou vous avez modifié votre instance locale ?

Il s'agit d'un environnement de développement local.

@N0ciple
Copy link

N0ciple commented Nov 21, 2021

La correction de l'unité Wh en kWh fonctionne aussi parfaitement et la mise à jour se fait toute seule également.

À noter, je vois ceci dans les logs :

2021-11-20 10:30:10 WARNING (Recorder) [homeassistant.components.sensor.recorder] sensor.lixee_zlinky_tic_electrical_measurement_apparent_power has unknown unit VA
2

Oui effectivement, l'unité Volt-Ampère existe mais je crois qu'elle n'a pas été ajouté comme une unité de puissance, ce qui explique le warning. Mais ça n'empêche pas le bon fonctionnement je crois. La documentation ne donne que les Watts comme unité de puissance : https://developers.home-assistant.io/docs/core/entity/sensor/

@pdecat avec la modif du quirk en local, même l'index de conso en kWh est bien updaté automatiquement ? Pour ma part je croyais que c'était le cas mais en fait c'était juste mis à jour au redémarrage de HA ou en requêtant la valeur à la main.

@seblang
Copy link

seblang commented Nov 26, 2021

Bonjour
j'ai acheté un module ZLinky_TIC que j'ai recu recemment mais je n'arrive pas a avoir la conso !
Il a été reconnu comme le votre dans le module zigbee de HA mais après je n'ai pas vraiment compris comment vous avez pu avoir la conso instantannée!
dsl je suis pas un psecialiste....une petite explication ou tuto serait cool
merci d'avance a vous

@N0ciple
Copy link

N0ciple commented Nov 26, 2021

Bonjour @seblang,

Toutes les personnes ici (moi y compris) qui ont des infos que vous n'avez pas ont modifié les fichiers en local à la main pour avoir de nouvelles fonctionnalités.

La bonne nouvelle c'est que nous avons fait en sorte que ces modifications soient intégrées dans home assistant. Cependant, depuis que ces modifications ont été intégrées dans le code de home assistant, il n'y a pas eu de mise à jour de publiées.

Si tout va bien, dans la prochaine version de home assistant (2021.12.0 j'imagine), la puissance apparente soutirée sera disponible. Il y a également un quirk qui permettra entre autre de faire la conversion Wh vers kWh pour l'indexe de consommation; Cependant, je ne suis pas sûr que ce quirk sera intégré dans la prochaine version de home assistant, il faudra peut-être attendre encore un peu.

Et pour finir, l'indexe de consommation ne se met pas à jour tout seul. Je crois que ça sera réglé dans le prochain firmware sur ZLinky_TIC. Mais là encore, il faudra attendre encore peu qu'il soit publié.

@Ced-C
Copy link

Ced-C commented May 1, 2024

Hey all, I just purchased a Lixee Zlinky TIC module and paired it with my homeassistant instance.
I have found that some of the values are not reported :
Screenshot 2024-05-01 at 14-08-17 Aperçu – Home Assistant
In particular, the power and voltage which I found interesting (although, I guess I can get back to it using current and appearing power).
I wonder if it is a bug or if I received a faulty device. any issues with those value on your side ?

@fairecasoimeme
Copy link
Owner

Hey all, I just purchased a Lixee Zlinky TIC module and paired it with my homeassistant instance. I have found that some of the values are not reported : Screenshot 2024-05-01 at 14-08-17 Aperçu – Home Assistant In particular, the power and voltage which I found interesting (although, I guess I can get back to it using current and appearing power). I wonder if it is a bug or if I received a faulty device. any issues with those value on your side ?

It's not due to ZHA. You have a Linky in historic mode. If you want more informations, you have to change to standard mode.
You can find the procedure here : https://github.com/fairecasoimeme/Zlinky_TIC/blob/master/README.md#faq

@almostlunatic
Copy link

It's not due to ZHA. You have a Linky in historic mode. If you want more informations, you have to change to standard mode. You can find the procedure here : https://github.com/fairecasoimeme/Zlinky_TIC/blob/master/README.md#faq

I've passed to standard mode a long time ago but it seems that nothing has changed. Should I repair ZLinky TIC, should I update the FW?

@Nbird67
Copy link

Nbird67 commented Sep 15, 2024

Hello, since firmware upgrade from v13 to v14 and a "quirk" in Home Assistant (ZHA integration) I reappaired my Linxee and since my counters are all false.
Instead of retrieving kWh they retrieve Wh, but display kWh.
Example: 1 605 825,0 kWh instead of 1605 kWh
Linky in historical mode.
This made my energy panel all wrong...

Thank you for your help

@Hedda
Copy link

Hedda commented Sep 16, 2024

Hello, since firmware upgrade from v13 to v14 and a "quirk" in Home Assistant (ZHA integration) I reappaired my Linxee and since my counters are all false. Instead of retrieving kWh they retrieve Wh, but display kWh. Example: 1 605 825,0 kWh instead of 1605 kWh Linky in historical mode. This made my energy panel all wrong...

You should submit that as a new bug report to the "ZHA Device Handlers" (zha-quirks) repository on GitHub so that the ZHA community for that there can look at fixing the quirk for it so correct for all firmware versions (even if it is bug in v14 firmware), see:

https://github.com/zigpy/zha-device-handlers/issues

ZHA uses a "ZHA Device Handler" (also known as a "zha-quirk" or just "quirk") to translate/convert attribute values that are not shown correctly in the ZHA integration, (like for example multiply or devide a value for converting from kWh to Wh or vice versa), as well as having the possible or change or expose attributes that are exposed under other or non-standard Zigbee cluster. See:

https://www.home-assistant.io/integrations/zha#how-to-add-support-for-new-and-unsupported-devices

If you want to help contribute then best start by submitting a device support request or bug-report if one does not already exist. Or if you want to contribute by fixing "ZHA Device Handlers" (zha-quirks) yourself then check out their readme file:

https://github.com/zigpy/zha-device-handlers/blob/dev/README.md

@fairecasoimeme
Copy link
Owner

Hello, since firmware upgrade from v13 to v14 and a "quirk" in Home Assistant (ZHA integration) I reappaired my Linxee and since my counters are all false. Instead of retrieving kWh they retrieve Wh, but display kWh. Example: 1 605 825,0 kWh instead of 1605 kWh Linky in historical mode. This made my energy panel all wrong...

Thank you for your help

Hello, sorry but your issue have no link with the firmware. I think you have to review you script or others ...

@Nbird67
Copy link

Nbird67 commented Sep 16, 2024

Hello, since firmware upgrade from v13 to v14 and a "quirk" in Home Assistant (ZHA integration) I reappaired my Linxee and since my counters are all false. Instead of retrieving kWh they retrieve Wh, but display kWh. Example: 1 605 825,0 kWh instead of 1605 kWh Linky in historical mode. This made my energy panel all wrong...
Thank you for your help

Hello, sorry but your issue have no link with the firmware. I think you have to review you script or others ...

Yeah thanks for your reply, I will submit a bug to zha github.

current_tier1_summ_delivered (id: 0x0100) 1610442 values are Wh are we OK ?
I will create a sensor template that will divide the value by 1000

@fairecasoimeme
Copy link
Owner

yes all counters are in Wh. You have informations in README

@Hedda
Copy link

Hedda commented Sep 17, 2024

@fairecasoimeme can you maybe actively help enchancing and improving the ZHA Device Handler quirk for the ZHA integration?

Perhaps you or someone else here would be willing to convert the existing old ”quirks v1” for it to next-generation ”quirks v2”:

That new ”quirks v2” architecture for ZHA is a huge change since will allow quirk developers to add new entities to Home Assistant via quirks alone without having to modify ZHA code in HA core (which is/was a must with the existing quirks the way that the ZHA integration component worked before).

For more information about ”quirks v2” (next-generation quirk functionality for ZHA) please see all of these for reference:

(also see zigpy/zigpy#1350 and zigpy/zigpy#1362 for related quirks changes added to zigpy after the initial "quirks v2" pull request).

This ”quirks v2” was first added to Home Assistant 2023.3 release and significantly changes how ZHA makes use of the entity API in HA:

Anyway, that documentation PR above will initially add a separate quirks_v2.md file to difference v1 from quirks v2 how-tos -> zigpy/zha-device-handlers#3019

# Quirks v2

## Introduction

Quirks v2 use a fluent interface style. While this isn't common in python it was done to improve the readability of the source code and to make it human-friendly for non developers. The amount of boilerplate code has been significantly reduced and the need to specify a signature dictionary and a replacement dictionary has been removed. This should make it much easier for the community to contribute quirks.

## Goals

- Significantly reduce the amount of boilerplate code required to write a quirk
- Make it easier for the community to contribute quirks
- Make it easier to read and understand quirks
- Make it easier to maintain quirks
- Expose entities from a quirk
- Allow custom logic to determine if a quirk should be applied to a device
- Allow custom binding, reporting configuration or any sort of initialization logic without hacking the bind or configure_reporting methods

## Breakdown of a minimal example

...

So again note that for now the existing tutorial in the zha-device-handlers's README.md will only apply to old "quirks v1" funtionality.

PS: Also check out summarized back-story and more links here in the Home Assistant community forum which more targets end-users:

@superlevure
Copy link

superlevure commented Sep 17, 2024

Sous zha comment faire pour avoir un sensor qui m indiqué si je suis en heure pleine ou heure creuse.

Visiblement il y l info à cet emplacement PTEC 0x0702 0x0020 RO string 4char nulle

Merci

For all the people out there that want to add a new entity based on an attribute accessible but not exposed yet, I've finally managed to do it with the following quirk:

import zigpy.types as t
from zigpy.quirks.v2 import QuirkBuilder, EntityType, EntityPlatform

from zhaquirks.lixee.zlinky import ZLinkyTICManufacturerCluster

class Tarif(t.enum8):
    BLEU_HC = 0x01
    BLEU_HP = 0x02
    BLANC_HC = 0x03
    BLANC_HP = 0x04
    ROUGE_HC = 0x05
    ROUGE_HP = 0x06

# https://github.com/zigpy/zha-device-handlers/blob/a97ee3baa790b13b7e468f5489233d6b1ed558c1/quirks_v2.md
(
    QuirkBuilder("LiXee", "ZLinky_TIC")
    .replaces(ZLinkyTICManufacturerCluster)
    .enum('std_current_tariff_index_number', Tarif, ZLinkyTICManufacturerCluster.cluster_id, entity_type=EntityType.STANDARD, entity_platform=EntityPlatform.SENSOR, )
    .add_to_registry()
)

This will add a new sensor exposing the current price mode (in my case with TEMPO it will either be BLEU_HC, BLEU_HP, BLANC_HC, BLANC_HP, ROUGE_HC or ROUGE_HP, but it can easily be adapted to other contracts).

Just copy this in a file and add it to your custom quirks folder (custom_quirks_path in configuration.yml), restart HA and you're good to go:

image

edit: actually the sensor didn't get updated automatically, so I created the following automation to read the value every minute with zha toolkit (to be adapted to your device):

alias: Read Tarif
description: ""
trigger:
  - platform: time_pattern
    minutes: "*"
condition: []
action:
  - metadata: {}
    data:
      ieee: YOUR_DEVICE_IEEE_HERE
      cluster: 65382
      attribute: 513
    action: zha_toolkit.attr_read
mode: single

@Hedda
Copy link

Hedda commented Sep 17, 2024

For all the people out there that want to add a new entity based on an attribute accessible but not exposed yet, I've finally managed to do it with the following quirk

@superlevure if tested/verified OK make sure submit change as a pull request -> https://github.com/zigpy/zha-device-handlers

@Nbird67
Copy link

Nbird67 commented Sep 23, 2024

On my side I don't understand why zha doesn't divide the retourned Wh value by 1000 for my current_summ_delivered anymore, big mystery... (since OTA firmware upgrade)

Should I see the divisor value when I query the zlinky ??? (the divisor return "none")

If somebody could help

In the Zlinky python scrypt (https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/lixee/zlinky.py) the values should be divided ?

ZLinky_TIC reports current_summ_delivered in Wh

# Home Assistant expects kWh (1kWh = 1000 Wh)
MULTIPLIER = 0x0301
DIVISOR = 0x0302
_CONSTANT_ATTRIBUTES = {MULTIPLIER: 1, DIVISOR: 1000}

@blauret
Copy link

blauret commented Oct 24, 2024

HI All,

I did get the fix for the V14 merged. This is here

It was suggested to create a quirk v2. I started to have a look and it seems relatively easy. The first this I did is to add the PRN number in the sensor.

The question for the community is what would you like to see added in the Sensor list?

I'll try to make a PR for the quirks which satisfy as many people as possible.

@jarthod
Copy link

jarthod commented Oct 24, 2024

Thanks @blauret !

About your question, in my case the custom tariff (TEMPO) could be interesting, as explained in this earlier comment: #18 (comment) 😃

@blauret
Copy link

blauret commented Oct 24, 2024

Thanks @blauret !

About your question, in my case the custom tariff (TEMPO) could be interesting, as explained in this earlier comment: #18 (comment) 😃

Thanks. I tried to go through the history but too many comments to figure it out. I thought it would be de easier to ask here.

For reference I'm documenting progress and issues in zigpy/zha-device-handlers#3453

@Hedda
Copy link

Hedda commented Oct 24, 2024

It was suggested to create a quirk v2. I started to have a look and it seems relatively easy.

For reference I'm documenting progress and issues in zigpy/zha-device-handlers#3453

Might also be a good idea to post a new thread under discussions in zigpy's "zha-device-handlers" repo too for long-term discussions with ZHA community devs as unlike an issue an discussion thread will not be closed once a pull request gets merged.

Again, ”quirks v2” is a huge improvement since will allow quirk developers to add new entities to Home Assistant via quirks alone without having to modify ZHA code in HA core (which was a must with the existing quirks the way that the ZHA integration component worked before).

FYI, ”quirks v2” are newer ZHA Device Handlers that allow developers to expose attributes as entities under ZHA in Home Assistant to automatically create switches, sensors, etc. without having to modify the ZHA component code inside Home Assistant core. And, by the way, ”quirks v2” was first added to Home Assistant 2023.3 release and significantly changes how ZHA makes use of entity API in HA. Since then they also further enhanced and improved upon that newer ”quirks v2” architecture for newer ZHA Device Handlers.

ZHA/zigpy developers have now introduced initial support for what they call ”quirks v2 ” and dmulcahey begun documentation for quirk development in zha-device-handlers (zha-quirks) here:

For reference if anyone wondering what a "Quirk V2" is, it refers to ZHA Device Handlers format version 2, see more info here:

Note! If adding or changing a custom quirks v2 to ZHA then note that the ZHA integration can not just be reloaded for it to take affect, instead a full manual restart of the whole Home Assistant core is required to re-add it or changes to a quirk v2.

PS: Also posted info in Home Assistant's community forum but easy to miss for other projects/developers whos not using ZHA:

https://community.home-assistant.io/t/zha-device-handlers-version-2-zha-quirks-v2-architectural-design-developer-discussion/666460

@blauret
Copy link

blauret commented Oct 24, 2024

Might also be a good idea to post a new thread under discussions in zigpy's "zha-device-handlers" repo too for long-term discussions with ZHA community devs as unlike an issue an discussion thread will not be closed once a pull request gets merged.

Good suggestion, thanks!

Note! If adding or changing a custom quirks v2 to ZHA then note that the ZHA integration can not just be reloaded for it to take affect, instead a full manual restart of the whole Home Assistant core is required to re-add it or changes to a quirk v2.

Actually, I'm using the local quirks, as described here and I just need to delete the pycache folder and reload zha to see the changes. It's a lot more convenient.

@blauret
Copy link

blauret commented Oct 25, 2024

The PR for the qirks v2 is zigpy/zha-device-handlers#3456.

It's still work in progress and will need improvement but feedback in the PR are Welcome.

@Hedda
Copy link

Hedda commented Oct 25, 2024

It's still work in progress and will need improvement but feedback in the PR are Welcome.

Tip if it is still work-in-progress then it is usually a good idea if you set it as a draft until it is ready to be reviewed by ZHA devs.

https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests

You can select "Convert to draft" yourself (to the right) then later also change it back yourself by clicking on "Ready for review":

image

image

@steenlarsen
Copy link

The question for the community is what would you like to see added in the Sensor list?

To me the most important issue is to get access to the tariff information so that it becomes possible to make automations that save electricity when the ultra high red tariff is active - or just before it becomes active. (My plan is to make the entire house really warm during the hour before the tariff becomes active and then turn the heating down.)

From ZLinkyTICManufacturerCluster (Endpoint id: 1, Id: 0xff66, Type: in) I would like to see the following attributes:

  • hist_tariff_option_or_std_supplier_price_schedule_name (id: 0x0000) - This is the name of the contract. "TEMPO" in my case.
  • hist_tomorrow_color (id: 0x0001) - This gives the color for tomorrows tarif. A sort of ¨Tomorrows tariff name"
  • std_current_supplier_price_description (id: 0x0200) - "Current tariff name" - This is a string. Mine is currently "HP BLEU"
  • std_current_tariff_index_number (id: 0x0201) - "Tariff index", mine is currently 2 and I expect this will change with the tariff.
  • std_supplier_calendar_next_day_profile

Many thanks for your help!

@blauret
Copy link

blauret commented Oct 31, 2024

I'll try to get those in in the coming days!

@blauret
Copy link

blauret commented Oct 31, 2024

@steenlarsen. If you are willing to contribute, you can make a PR in this branch. I'll merge and it will go in the final PR in ZHA

@blauret
Copy link

blauret commented Oct 31, 2024

Hedda

I looked I Don't I have permission to make it a draft. It's been done for me.

@blauret
Copy link

blauret commented Oct 31, 2024

  • hist_tariff_option_or_std_supplier_price_schedule_name (id: 0x0000) - This is the name of the contract. "TEMPO" in my case.
  • hist_tomorrow_color (id: 0x0001) - This gives the color for tomorrows tarif. A sort of ¨Tomorrows tariff name"
  • std_current_supplier_price_description (id: 0x0200) - "Current tariff name" - This is a string. Mine is currently "HP BLEU"
  • std_current_tariff_index_number (id: 0x0201) - "Tariff index", mine is currently 2 and I expect this will change with the tariff.
  • std_supplier_calendar_next_day_profile

I just had a look and std_current_tariff_index_number is in the PR. The others are coming as a string and I don't know where the spec is for this one.

@steenlarsen
Copy link

@steenlarsen. If you are willing to contribute, you can make a PR in this branch. I'll merge and it will go in the final PR in ZHA

Sorry, I don´t know howto do that. But if there is something to test I can try to help.

@Hedda
Copy link

Hedda commented Nov 5, 2024

If you are willing to contribute, you can make a PR in this branch. I'll merge and it will go in the final PR in ZHA

Sorry, I don´t know howto do that. But if there is something to test I can try to help.

FYI, here you can are two step-by-step guides (one short and one long/detailed) on how-to use not yet merged custom ZHA Device Handlers (zha-quirks) and as such howto steps needed to test a custom ZHA Device Handler (quirk) in Home Assistant. See:

and

PS: What is missing is howto documentations on how to spot and remove custom quirks that users has manually added themselves if and when an official ZHA Device Handler quirk is added later:

@Gamester17
Copy link

Gamester17 commented Nov 20, 2024

If someone here is maybe skilled enough it would be great if you could add a LiXee ZLinky TIC Zigbee OTA Provider to zigpy(?):

That would enable option to update ZLinky TIC via Zigbee OTAU (Over-The-Air Updates) in Home Assistant's ZHA integration.

@steenlarsen
Copy link

steenlarsen commented Nov 20, 2024

Many thanks! I tested it and it looks great except for model being unavailable even though the information is present in the cluster if checked manually. I am still missing to see next days peak tariff but maybe it is not possible to extract this. If I get time I will have a look myself based on this quirk. Note: The tempo peak tariff starts every morning at 6am. I am looking to make an automation with sets our electric heating to max at 5am and then turn it off/down at 6am when the red peak tariff begins. For that I need to know the next tariff.
Lixee

@blauret
Copy link

blauret commented Nov 22, 2024

There are still things which are not working great. I did not have time to finish, but I will get back to it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests