doudz / homeassistant-zigate

zigate component for Home Assistant
MIT License
48 stars 15 forks source link

Options supplémentaire Legrand Netatmo #82

Closed maximushugus closed 4 years ago

maximushugus commented 4 years ago

Bonjour et merci @doudz pour le travail fait sur ce module pour hassio J'ai réussi à appairer un interrupteur filaire et un autre interrupteur sans fil avec ma pizigate sur un raspberry pi 3B+ tournant avec hassio.

Seulement je souhaiterais avoir accès à quelques options qui sont disponibles avec la gateway Legrand de base :

Je peux fournir des log si nécessaire, il faut juste me dire où les trouver (je débute tout juste avec home assistant)

Ces options sont disponibles sur d'autres systèmes, par exemple sur Domoticz : https://github.com/pipiche38/Domoticz-Zigate-Wiki/blob/master/en-eng/Compatible-Devices.md https://github.com/pipiche38/Domoticz-Zigate-Wiki/blob/master/en-eng/Legrand-corner.md

Il doit bien y avoir possibilité d'activer ces options en jouant sur des valeurs des entités ?

Merci

doudz commented 4 years ago
  • activer et désactiver l'option variateur de lumière (avec les ampoules dimmables)

Je ne suis pas sûr de bien comprendre, quel est le fonctionnement attendu ?

  • Gérer la LED : possibilité de l'activer lorsque l'interrupteur est allumé ou éteint.

Si c'est une option gérée par l'interrupteur lui même alors oui c'est sans doute possible mais il me faudrait plus d'explication sur le fonctionnement

J'ai regardé le code de domoticz et je ne vois pas comment ces options sont utilisées

maximushugus commented 4 years ago
  • activer et désactiver l'option variateur de lumière (avec les ampoules dimmables)

Je ne suis pas sûr de bien comprendre, quel est le fonctionnement attendu ?

Avec la gateway Legrand on a la possibilité (via l'application Home+Control) d'activer l'option varieuteur de puissance de l'ampoule (pour pouvoir faire varier à X % la puissance par exemple) ou bien de la désactiver si les ampoules ne sont pas compatibles. Lorsque l'on appaire un interrupteur avec la pizigate, cette option n'est pas activer et je peu seulement allumer ou éteindre mes lumières mais pas spécifier de luminosité.

maximushugus commented 4 years ago
  • Gérer la LED : possibilité de l'activer lorsque l'interrupteur est allumé ou éteint.

Si c'est une option gérée par l'interrupteur lui même alors oui c'est sans doute possible mais il me faudrait plus d'explication sur le fonctionnement

Pour ce qui est de l'option de gestion des LED, on peut (toujours via home+Control et la gateway de Legrand), spécifier plusieurs modes de fonctionnement de la LED des interrupteurs filaires :

maximushugus commented 4 years ago

Screenshot_20191119-170435 Voici une capture d'écran de l'appli de base sur la page pour gérer ces options

doudz commented 4 years ago

ok je comprends mieux. Effectivement il s'agit probablement de paramètre à modifier Il faudrait savoir quels sont ces paramètres, typiquement nous avons besoin du endpoint id, du cluster id, du attribute id et éventuellement du manufacturer code

Si le point a été traité dans Domoticz alors il est possible de faire la même chose mais je n'en vois aucune trace. L'autre option serait de sniffer le traffic zigbee pour voir comment fait la gateway Legrand

maximushugus commented 4 years ago

Pour ce qui est de sniffer le trafic, je n'ai malheureusement pas le matériel nécessaire pour ça.

Je suis entrain de regarder le code de Domoticz et moi ne plus je ne trouve rien qui correspond, pourtant dans la documentation citée sur le premier post on voit qu'ils ont réussi à activer ces options

Peut être qu'avec les traces citées sur le site de zigate il serait possible d'activer ces options, j'ai personnelement ne pas savoir quoi en faire :

maximushugus commented 4 years ago

@pipiche38 pourrait peut être nous renseigner sur comment est intégré l'activation/désactivation de ces options sur Domoticz apparament le "up" et "down" est géré avec les messages 0x8095 et 0x8085 : https://github.com/fairecasoimeme/ZiGate/issues/196#issuecomment-539963525

Quelques lins interessants qui se complètent et se référencent :

doudz commented 4 years ago

Effectivement les informations sont ici : https://github.com/dresden-elektronik/deconz-rest-plugin/issues/883 c'est donc l'endpoint 1, le cluster 0xfc01 et les attributs 0 et 1 Il faut utiliser le service HA zigate.write_attribute pour modifier les valeurs pour le dimmer c'est l'attribute 0x0000 Data 0101 > Enable dimmer Data 0100 > Disable dimmer Service : zigate.write_attribute Données yaml (ajuster value):

entity_id: zigate.0123456789abcdef
endpoint: 1
cluster: 0xfc01
attribute_id: 0x0000
attribute_type: 0x09
value: '0101'

Pour la led c'est l'attribute 0x0001 Data 0x01 > enable led in dark Data 0x00 > disable led in dark Service : zigate.write_attribute Données yaml (ajuster value):

entity_id: zigate.0123456789abcdef
endpoint: 1
cluster: 0xfc01
attribute_id: 0x0001
attribute_type: 0x10
value: 0x01
doudz commented 4 years ago

Malheureusement le type 0x09 n'est pas supporté par ma lib pour le moment... la solution temporaire est d'utiliser le service zigate.raw_command pour envoyer en brut la commande zigate Si l'addr est abcd par exemple ça donnerai

cmd: 0x0110
data: '02 abcd 01 01 fc01 00 00 0000 01 0000 09 0101'

la valeur à changer étant à la fin 0101 pour Enable dimmer

On peut utiliser la même technique pour la led si on veut:

cmd: 0x0110
data: '02 abcd 01 01 fc01 00 00 0000 01 0001 10 01'
pipiche38 commented 4 years ago

https://github.com/fairecasoimeme/ZiGate/issues/244

pipiche38 commented 4 years ago

Tout est documenté ici: https://github.com/pipiche38/Domoticz-Zigate-Wiki/blob/master/en-eng/Legrand-corner.md

Il faut effectivement le firmware 3.1b de la Zigate pour avoir le DataType 09

doudz commented 4 years ago

Tout est documenté ici: https://github.com/pipiche38/Domoticz-Zigate-Wiki/blob/master/en-eng/Legrand-corner.md

A vrai dire, la partie technique n'est pas documenté justement ;) il n'est pas indiqué qu'il s'agit des attributs 0x0000 et 0x0001 du cluster 0xfc01, ni les valeurs à transmettre. Mais comme tu peux le voir j'ai trouvé les informations ailleurs. Merci

maximushugus commented 4 years ago

Merci à tous les deux pour ces recherches et développements 👍 Je suis au travail mais j'essayerai ça ce soir.

pipiche38 commented 4 years ago

Le wiki est ouvert, je l’ajouterai, mais n’hésites pas à en faire autant

On 20 Nov 2019, at 11:41, Sébastien RAMAGE notifications@github.com wrote:

Tout est documenté ici: https://github.com/pipiche38/Domoticz-Zigate-Wiki/blob/master/en-eng/Legrand-corner.md https://github.com/pipiche38/Domoticz-Zigate-Wiki/blob/master/en-eng/Legrand-corner.md A vrai dire, la partie technique n'est pas documenté justement ;) il n'est pas indiqué qu'il s'agit des attributs 0x0000 et 0x0001 du cluster 0xfc01, ni les valeurs à transmettre. Mais comme tu peux le voir j'ai trouvé les informations ailleurs. Merci

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/doudz/homeassistant-zigate/issues/82?email_source=notifications&email_token=AB7IKWS5WJI5RC7642UPXZLQUUH7DA5CNFSM4JPFL52KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEERRDVI#issuecomment-555946453, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7IKWQWEGM6QIARC4V47LTQUUH7DANCNFSM4JPFL52A.

maximushugus commented 4 years ago

J'ai utilisé les commandes données ci dessus et j'ai réussi à contrôler la LED de mon interrupteur (que ce soit avec le service "zigate.write_attribute" ou "zigate.raw_command" celà fonctionne pour l'activer ou la désactiver).

En revanche impossible d'activer la fonction dimmer, j'ai essayé avec les 2 services cela ne fonctionne pas. @doudz disait que le plugin n'est pas compatible avec le type 0x09, donc cela me parait normal de ne pas pouvoir utiliser le service "zigate.write_attribute" pour cette commande. Mais même avec "zigate.raw_command" cela ne fonctionne pas.

Ma pizigate est en firmware 3.1a, le problème vient peut être de là. Je n'arrive pas à trouver le firmware 3.1b pour pizigate pour essayer de la mettre à jour. Sur le Github de zigate, la dernière branche master c'est 3.1a.

pipiche38 commented 4 years ago

Le firmware 3.1b n’est pas encore sorti. Il est en cours de finalisation. Et effectuant c’est durant l’intégration de Dimmer W/O neutral qu’on a trouvé la nécessité d’un data type qui n’était pas implémenté au niveau de la Zigate

On 22 Nov 2019, at 21:06, maximushugus notifications@github.com wrote:

J'ai utilisé les commandes données ci dessus et j'ai réussi à contrôler la LED de mon interrupteur (que ce soit avec le service "zigate.write_attribute" ou "zigate.raw_command" celà fonctionne pour l'activer ou la désactiver).

En revanche impossible d'activer la fonction dimmer, j'ai essayé avec les 2 services cela ne fonctionne pas. @doudz https://github.com/doudz disait que le plugin n'est pas compatible avec le type 0x09, donc cela me parait normal de ne pas pouvoir utiliser le service "zigate.write_attribute" pour cette commande. Mais même avec "zigate.raw_command" cela ne fonctionne pas.

Ma pizigate est en firmware 3.1a, le problème vient peut être de là. Je n'arrive pas à trouver le firmware 3.1b pour pizigate pour essayer de la mettre à jour. Sur le Github de zigate, la dernière branche master c'est 3.1a.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/doudz/homeassistant-zigate/issues/82?email_source=notifications&email_token=AB7IKWSY5FLKFBCLF7FJT7TQVA3UNA5CNFSM4JPFL52KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEE6XHPY#issuecomment-557675455, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7IKWWRMTW2Z6VFQLMYPSLQVA3UNANCNFSM4JPFL52A.

doudz commented 4 years ago

Effectivement zigate.write_attribute ne fonctionne pas car le type 0x09 n'est pas implémenté dans cette version du plugin zigate.raw_command permet d'appeler n'importe quelle fonction de la zigate manuellement mais dans l'exemple que j'ai indiqué j'utilise la fonction zigate write attribute request, mais comme le type 0x09 n'est pas supporté non plus par la zigate, ça ne fonctionne pas.

Il existe enfin une dernière solution, envoyé directement une trame zigbee via la commande 0x0530

cmd: 0x0530
data: '02 abcd 01 01 fc01 0104 00 00 08 00 01 02 0000 09 0101 f1'

attention, je ne suis pas certains de la fin car honnêtement je n'ai jamais écris de trame zigbee à la main donc si ça ne fonctionne pas c'est sans doute une erreur de ma part

maximushugus commented 4 years ago

Cette commande fonctionne ! Super ! Je peux contrôler la luminosité directement depuis l'interrupteur (en restant appuyé vers le haut ou le bas). Je peux lire le % de luminosité depuis la carte lumière de l'interface Home Assistant, mais par contre lorsque je modifie la luminosité avec cette carte, cela ne s'applique pas. Il doit y avoir une configuration à effectuer. Une idée ?

Merci :)

maximushugus commented 4 years ago

En fait après plusieurs tests, j'arrive à contrôler la luminosité de l'interrupteur mais de façon étrange lorsque j'augmente la luminosité via le slider de la carte lumière dans Home Assistant, cela n'augmente que d'une unité la luminosité réelle. Si je clique plusieurs fois sur le slider à une luminosité identique, la luminosité de mes ampoules augmente ou diminue progressivement par paliers (à chaque fois que j'appuie sur le slider), jusqu'à ce qu'elle atteigne la valeur sélectionnée sur le slider. Je ne sais pas si ce que je viens d'expliquer est très clair, mais en gros le slider de la carte "lumière" de Home Assistant agit comme un bouton "up" ou "down" de luminosité.

doudz commented 4 years ago

effectivement c'est assez étrange ça voudrait dire que l'inter de supporte pas le réglage de la luminosité, uniquement up et down Si tel est vraiment le cas, il faudrait qu'on fasse apparaitre les boutons up et down à place d'un slider, mais je ne sais pas si cette option existe sur la gestion des light dans HA.

maximushugus commented 4 years ago

pourtant avec l'application de base on peut régler la luminosité avec un slidder, j'avais ne pas trop comprendre ce comportement.

maximushugus commented 4 years ago

ça y est j'ai réussi à contrôler avec Home Assistant la luminosité : en appelant le service "ligh.turn_on" avec ces données : entity_id: light.zigate_nomdel'interrupteur transition: 1 brightness_pct: 0 Avec "brightness_pct" qui est le poucentage de luminosité, 0 équivalent à éteint, et jusqu'à 100 (%). L'astuce c'était de mettre "transition: 1" qui permet d'éviter les appuis successifs

doudz commented 4 years ago

Bien joué ! Je vais corriger

maximushugus commented 4 years ago

Il reste encore des petits trucs à régler : 1) alors que je contrôle avec cette méthode (cf ci dessus) la luminosité de l'interrupteur, l'attribut "brightness" (visible dans outils de développement > état > entité light.zigate_nomdel'nterrupteur) ne change pas alors que si je modifie la luminosité directement depuis l'interrupteur (en restant appuyé sur le bouton haut ou bas), celle ci varie de 0 à 255. Du coup je n'ai pas moyen de monitorer ni de récuperer la luminosité actuelle. Est ce qu'il est possible de lire la valeur brightness_pct ? Parce qu'elle n'apparait pas dans la page "états".

2) De même lorsque l'on fait varier la luminosité, le slider sur la carte lumière ne varie pas en fonction. Il n'affiche pas la luminosité actuelle. Il ne fonctionne d’ailleurs toujours pas pour modifier la luminosité.

doudz commented 4 years ago

En utilisant le service light.turn_on, est-ce que ça fonctionne aussi avec brightness ? Au lieu de brightness_pct

maximushugus commented 4 years ago

Oui cela fonctionne également (en mettant des valeurs de 0 à 255 ce que je trouve moins pratique qu'avec l'autre de 0 à 100), mais justement je n'ai pas le retour dans "état", avec l'attribut "brightness" qui reste à 0 malgré le fait que l'ampoule soit bien allumée (à 40% par exemple)

maximushugus commented 4 years ago

@doudz comment est ce que je peux customiser l'entité light.zigate_mon_interrupteur pour lui donner le bon service (cf si dessus) pour essayer de le faire fonctionner ? Merci

doudz commented 4 years ago

Si tu veux dire, faire en sorte que transition = 1, il suffit de mettre à jour le component, j'ai apporté la correction ;)

maximushugus commented 4 years ago

Ah oui ça fonctionne (j'ai mis à jour avec HACS mais je n'avais pas redémarré le serveur...). Par contre maintenant il y a des problème de synchronisation entre l'entité "light" et la lumière réelle : parfois le bouton est on alors que la lumière est off et inversement, et du coup en éteignant le bouton ça allume la lumière par exemple.

En gros il y a un problème de feedback : l'entité light n'arrive pas à savoir si l'interrupteur est on ou off et elle n'arrive pas à connaitre la valeur de brightness (qui reste à 0 lorsqu'on la fait varier depuis home asisstant).

Mais merci :)

maximushugus commented 4 years ago

et en gros il faudrait que lorsqu'on définit une valeur de brightness avec le slider de la carte "light", cette valeur soit écrite dans l'attribut brightness de "light" Merci encore pour le travail accompli

doudz commented 4 years ago

et en gros il faudrait que lorsqu'on définit une valeur de brightness avec le slider de la carte "light", cette valeur soit écrite dans l'attribut brightness de "light" Merci encore pour le travail accompli

Oui pourquoi pas, c'est ce que je fais pour l'état on/off, ça permet d'avoir un état sans attendre le feedback de l'inter, qui n'arrive pas toujours. Sinon le plugin demande l'état toutes les 2 min (c'est réglable) donc en théorie au bout de 2min maxi, la carte "light" devrait avoir le bon état on/off et la bonne valeur brightness

doudz commented 4 years ago

PS: Merci pour la contribution :)

maximushugus commented 4 years ago

Sinon le plugin demande l'état toutes les 2 min (c'est réglable) donc en théorie au bout de 2min maxi, la carte "light" devrait avoir le bon état on/off et la bonne valeur brightness

J'avais justement désactivé le polling en me disant que ça allait utiliser la batterie de mes interrupteurs sans fils. Est ce le cas ? Est ce qu'on peut l'activer uniquement pour certains appareils (les filaires) ?

doudz commented 4 years ago

Le polling ne concerne que les appareils sur secteur, les appareils sur batterie "dorment" la majorité du temps, on ne peut donc pas les interroger sans les réveiller manuellement Par ailleurs, normalement un interrupteur sur batterie devrait être affiché comme un sensor dans Home Assistant et non comme un switch ou un light

maximushugus commented 4 years ago

Ok c'est super ! Comment est ce qu'on peut paramétrer le polling ? J'ai mis polling: 10 mais pourtant, j'ai l'impression qu'il est resté sur 120 sec. Est ce qu'il faut mettre polling: 10s ou polling; 10sec ?

Il semble aussi y avoir un autre problème : lorsque l'on active la lumière via home assistant, (juste avec le switch de base, sans faire varier le slider de luminosité), alors la commande est faite avec une luminosité de 0, donc la lumière ne s'allume pas.

maximushugus commented 4 years ago

Il pourrait également être interressant de laisser la valeur de "brightness" lorsqu'on éteint l'interrupteur de façon à ce que lorsqu'on le rallume, il se rallume à la même luminosité que lorsqu'on l'a éteint (peut être que ça résoudrait le problème du message d'avant

doudz commented 4 years ago

Non polling est soit à true ou false pour activer ou non la fonctionnalité le polling est de base toutes les 120 sec, ce n'est pas paramétrable (pour le moment) Concernant la luminosité, en théorie ça conserve la dernière valeur connue donc si c'était 0, ça reste sur 0 (ce qui n'est pas très smart j'en conviens)

doudz commented 4 years ago

il est maintenant possible d'ajuster le polling via scan_interval dans configuration.yaml

doudz commented 4 years ago

J'ai été obligé de revenir en arrière concernant transition=1 car cela provoquait un autre bug #83

maximushugus commented 4 years ago

J'ai réussi à configurer (avec les anciennes mais aussi la dernière version du plugin) mes interrupteurs filaires. Voici le lien vers mon github pour la configuration si ça en intéresse certains : https://github.com/maximushugus/Zigate-Legrand-with-Netatmo-HA @doudz Je ne sais pas si ça t'interesse de publier ça sur ton repo pour orienter les futurs utiliateurs ?

Merci en tout cas :)

doudz commented 4 years ago

Tu peux faire un post ici si tu veu, ça peut servir https://community.home-assistant.io/t/another-component-for-zigate/58417