Réglage luminosité variateur

Bonjour,

@nebz tout d’abord, toutes mes félicitations pour cet excellent plugin que j’ai le plaisir d’utiliser depuis quelques mois déjà :grin:

Toutefois, un léger souci me tarabuste concernant le réglage de la luminosité dans HomeKit : chaque fois qu’on change la luminosité d’un produit, l’app maison envoie une double commande:

  • ON ([Jeedom] Setting Characteristic "On" to value 1)
  • Changement du niveau de luminosité ([Jeedom] Setting Characteristic "Brightness" to value XY)

J’imagine que les produits conçus pour HomeKit s’en accommodent très bien, mais dans mon cas (des variateurs à coupure de phase Legrand gérés via le plugin Boxio), ça produit un résultat assez moyen: chaque changement de luminosité fait que le variateur monte d’abord à 100% (le ON) avant de passer au niveau demandé (le setting brightness).

L’idéal - et le plus logique à mon avis - ce serait d’ignorer côté Homebridge la commande ON quand on change la luminosité. Y aurait-il un moyen de faire ça ?

Voici les commandes et types associés à l’un des variateurs en question:

Bien à toi.

Bonjour,

Qu’as-tu dans la commande statut ? C’est un binaire qui donne l’état allumé ou éteint ?

Si oui, tu dois lui donner le type génériques « Lumiere État Binaire (homebridge) »

Après ce changement, une sauvegarde et le redémarrage du demon, est-ce différent ?

Bonsoir,

Merci pour ta réponse !

C’est ça, sauf que c’est sous la forme ON/OFF (en direct du plugin Boxio).

Il ne me semble pas avoir celui-là, mais j’ai essayé avec Info / Lumière Etat (Binaire), et pas de différence au niveau du fonctionnement (sauf que sous l’app maison, la lampe affiche 0% au lieu d’être éteinte).

image

Ça doit être un vrai type binaire dans jeedom… passe par un virtuel avec un opérateur ternaire

Même résultat avec un virtuel ayant une info Statut de type binaire (0 = OFF, 1 = ON):

Non le log est forcément différent, tu peux mettre en info, redémarrer le demon et m’envoyer le log quand tu allumes, le log quand tu éteins et le log quand c’est eteint et que tu mets genre 45%

Et voilà:

ON:

[4/12/2020, 4:24:42 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:Brightness(00000008-0000-1000-8000-0026BB765291):0->100 					|||characteristic:{"displayName":"Brightness","UUID":"00000008-0000-1000-8000-0026BB765291","iid":11,"value":0,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"int","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:24:42 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:On(00000025-0000-1000-8000-0026BB765291):false->true 					|||characteristic:{"displayName":"On","UUID":"00000025-0000-1000-8000-0026BB765291","iid":10,"value":false,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"bool","unit":null,"minValue":null,"maxValue":null,"minStep":null,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:24:42 PM] [Jeedom] [INFO] [Commande envoyée à Jeedom] cmdId:1251 action:turnOn value: null generic:LIGHT_ON response:[]
[4/12/2020, 4:24:42 PM] [Jeedom] [INFO] [Commande T envoyée à Jeedom] cmdId:1254 action:setValue value: 100 response:[]
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1249 value:1
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut(LIGHT_STATE_BOOL) de 0 vers 1 dans {"id":"1249","logicalId":null,"generic_type":"LIGHT_STATE_BOOL","eqType":"virtual","name":"Statut","order":"0","type":"info","subType":"binary","eqLogic_id":"118","value":"82","isVisible":1,"alert":[],"currentValue":0,"display":{"invertBinary":0},"configuration":{"phpType":"integer"}}
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut" (1249) Envoi valeur: true dans On
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut" (1249) Envoi valeur: 0 dans Brightness
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1250 value:100
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut numérique(LIGHT_STATE) de 0 vers 100 dans {"id":"1250","logicalId":null,"generic_type":"LIGHT_STATE","eqType":"virtual","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"118","value":"109","isVisible":0,"alert":[],"currentValue":0,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: true dans On
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: 100 dans Brightness
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:109 value:100
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots>Statut numérique(LIGHT_STATE) de 0 vers 100 dans {"id":"109","logicalId":"statusnum4","generic_type":"LIGHT_STATE","eqType":"boxio","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"21","isVisible":0,"alert":[],"currentValue":0,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: true dans On
[4/12/2020, 4:24:43 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: 100 dans Brightness

OFF:

[4/12/2020, 4:26:20 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:On(00000025-0000-1000-8000-0026BB765291):true->false 					|||characteristic:{"displayName":"On","UUID":"00000025-0000-1000-8000-0026BB765291","iid":10,"value":true,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"bool","unit":null,"minValue":null,"maxValue":null,"minStep":null,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:26:20 PM] [Jeedom] [INFO] [Commande envoyée à Jeedom] cmdId:1252 action:turnOff value: null generic:LIGHT_OFF response:[]
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1249 value:0
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut(LIGHT_STATE_BOOL) de 1 vers 0 dans {"id":"1249","logicalId":null,"generic_type":"LIGHT_STATE_BOOL","eqType":"virtual","name":"Statut","order":"0","type":"info","subType":"binary","eqLogic_id":"118","value":"82","isVisible":1,"alert":[],"currentValue":1,"display":{"invertBinary":0},"configuration":{"phpType":"integer"}}
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut" (1249) Envoi valeur: false dans On
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut" (1249) Envoi valeur: 100 dans Brightness
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1250 value:0
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut numérique(LIGHT_STATE) de 100 vers 0 dans {"id":"1250","logicalId":null,"generic_type":"LIGHT_STATE","eqType":"virtual","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"118","value":"109","isVisible":0,"alert":[],"currentValue":100,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: false dans On
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: 0 dans Brightness
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:109 value:0
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots>Statut numérique(LIGHT_STATE) de 100 vers 0 dans {"id":"109","logicalId":"statusnum4","generic_type":"LIGHT_STATE","eqType":"boxio","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"21","isVisible":0,"alert":[],"currentValue":100,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: false dans On
[4/12/2020, 4:26:21 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: 0 dans Brightness

Variation:

[4/12/2020, 4:29:36 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:Brightness(00000008-0000-1000-8000-0026BB765291):0->50 					|||characteristic:{"displayName":"Brightness","UUID":"00000008-0000-1000-8000-0026BB765291","iid":11,"value":0,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"int","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:29:36 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:On(00000025-0000-1000-8000-0026BB765291):false->true 					|||characteristic:{"displayName":"On","UUID":"00000025-0000-1000-8000-0026BB765291","iid":10,"value":false,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"bool","unit":null,"minValue":null,"maxValue":null,"minStep":null,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:29:36 PM] [Jeedom] [INFO] [Commande envoyée à Jeedom] cmdId:1251 action:turnOn value: null generic:LIGHT_ON response:[]
[4/12/2020, 4:29:36 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:Brightness(00000008-0000-1000-8000-0026BB765291):50->58 					|||characteristic:{"displayName":"Brightness","UUID":"00000008-0000-1000-8000-0026BB765291","iid":11,"value":50,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"int","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:29:36 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:On(00000025-0000-1000-8000-0026BB765291):true->true 					|||characteristic:{"displayName":"On","UUID":"00000025-0000-1000-8000-0026BB765291","iid":10,"value":true,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"bool","unit":null,"minValue":null,"maxValue":null,"minStep":null,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:29:36 PM] [Jeedom] [INFO] [Commande envoyée à Jeedom] cmdId:1251 action:turnOn value: null generic:LIGHT_ON response:[]
[4/12/2020, 4:29:37 PM] [Jeedom] [INFO] [Commande T envoyée à Jeedom] cmdId:1254 action:setValue value: 58 response:[]
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1249 value:1
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut(LIGHT_STATE_BOOL) de 0 vers 1 dans {"id":"1249","logicalId":null,"generic_type":"LIGHT_STATE_BOOL","eqType":"virtual","name":"Statut","order":"0","type":"info","subType":"binary","eqLogic_id":"118","value":"82","isVisible":1,"alert":[],"currentValue":0,"display":{"invertBinary":0},"configuration":{"phpType":"integer"}}
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut" (1249) Envoi valeur: true dans On
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut" (1249) Envoi valeur: 0 dans Brightness
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1250 value:57
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut numérique(LIGHT_STATE) de 0 vers 57 dans {"id":"1250","logicalId":null,"generic_type":"LIGHT_STATE","eqType":"virtual","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"118","value":"109","isVisible":0,"alert":[],"currentValue":0,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: true dans On
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: 57 dans Brightness
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:109 value:57
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots>Statut numérique(LIGHT_STATE) de 0 vers 57 dans {"id":"109","logicalId":"statusnum4","generic_type":"LIGHT_STATE","eqType":"boxio","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"21","isVisible":0,"alert":[],"currentValue":0,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: true dans On
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: 57 dans Brightness
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:Brightness(00000008-0000-1000-8000-0026BB765291):57->57 					|||characteristic:{"displayName":"Brightness","UUID":"00000008-0000-1000-8000-0026BB765291","iid":11,"value":57,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"int","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande d'Homekit] Nom:On(00000025-0000-1000-8000-0026BB765291):true->true 					|||characteristic:{"displayName":"On","UUID":"00000025-0000-1000-8000-0026BB765291","iid":10,"value":true,"status":null,"eventOnlyCharacteristic":false,"props":{"format":"bool","unit":null,"minValue":null,"maxValue":null,"minStep":null,"perms":["pr","pw","ev"],"needsBinding":true},"subscriptions":1,"_events":{},"_eventsCount":3}
[4/12/2020, 4:29:38 PM] [Jeedom] [INFO] [Commande envoyée à Jeedom] cmdId:1251 action:turnOn value: null generic:LIGHT_ON response:[]
[4/12/2020, 4:29:39 PM] [Jeedom] [INFO] [Commande T envoyée à Jeedom] cmdId:1254 action:setValue value: 57 response:[]
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:1250 value:57
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots (virtuel)>Statut numérique(LIGHT_STATE) de 57 vers 57 dans {"id":"1250","logicalId":null,"generic_type":"LIGHT_STATE","eqType":"virtual","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"118","value":"109","isVisible":0,"alert":[],"currentValue":57,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: true dans On
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (1250) Envoi valeur: 57 dans Brightness
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [Maj reçue de Jeedom] commande:109 value:57
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [[Modification Cache Jeedom: Spots>Statut numérique(LIGHT_STATE) de 57 vers 57 dans {"id":"109","logicalId":"statusnum4","generic_type":"LIGHT_STATE","eqType":"boxio","name":"Statut numérique","order":"1","type":"info","subType":"numeric","eqLogic_id":"21","isVisible":0,"alert":[],"currentValue":57,"display":{"invertBinary":0},"configuration":{"phpType":"double"}}
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: true dans On
[4/12/2020, 4:29:40 PM] [Jeedom] [INFO] [Commande envoyée à HomeKit] Cause de modif: "Statut numérique" (109) Envoi valeur: 57 dans Brightness

Et comment tu fais ? Dans Maison tu laisse appuyé sur la lampe et puis tu changes la luminosité ?

Tu as essayé de splitter les services dans Maison ?

Tu as essayé avec Eve ?

Oui. Le comportement est identique avec Siri.

Tu veux dire avoir deux « lampes » séparées, l’une avec ON/OFF, l’autre en variation ?

Eve fonctionne un peu différemment avec les lampes à luminosité variable:

  • Quand la lampe est éteinte, Eve fait comme l’app d’Apple: il définit la caractéristique HAP on à true et brightness au niveau demandé.

  • Quand la lampe est déjà allumée, il ne change que la caractéristique brightness.

Très franchement, je doute que ça vienne de la façon dont je l’utilise ou même des statuts utilisés pour la remontée d’infos. C’est un problème générique, vraisemblablement lié à la façon dont Homebridge fonctionne. Le sujet a été abordé en détails ici:

J’en reviens donc à ma question initiale: est-ce que côté homebridge-jeedom, il y aurait un hook permettant d’ignorer le set characteristic sur le on quand on reçoit une demande de changement du brightness quelques millisecondes avant ou après ?

Non il y a pas, mais de tous les dispositifs que j’ai vu, zwave etc c’est le premier qui pose problème… et tu es la seule personne qui s’en plaint… donc oui ça vient peut être de ton install/façon de faire/assemblages de services dans un équipement.

Pour le split, tu laisses appuyé sur la lampe, oui là tu cliques sur la roue en bas à droite, si tu regarde dans ce menu tu as la possibilité de séparer les services mais je ne me rappelle plus du libellé exact, j’ai tout supprimé comme je suis en déménagement…

Après, je ne suis pas sûr qu’il y ait énormément d’utilisateurs de Homebridge avec des variateurs domotisés (si on cherche « variateur » sur le forum, y a pas des masses de résultats). Quoi qu’il en soit, je ne suis certainement pas le seul, puisque si tu jettes un oeil aux tickets GitHub, tu verras que différents utilisateurs décrivent le même problème (et ils n’utilisent pas Jeedom).

J’ai suivi tes instructions à la lettre. Si j’avais eu un souci avec ma configuration, passer sur un virtuel l’aurait contourné.

J’ai rien de tout ça. La seule option qui s’en approche, c’est pour créer des groupes d’accessoires (typiquement, des groupes de lampes). Et c’est pas quelque chose que j’utilise.

Ma question se transforme donc en une feature request: sera-t-il possible d’ajouter dans une prochaine version un hook pour me permettre de faire fonctionner ça correctement ?

@nebz je passais par la par hasard et du coup j’ai testé sur mes Zwave FGD.

Je confirme que pour chaque variation j’ai bien un allé retour à 100% avant d’atteindre la consigne…

Si ça peut aider

1 « J'aime »

Super, merci d’avoir essayé ! :blush:

Edit: pour ce que ça vaut, home-assistant a réglé ce problème de manière très efficace en utilisant les « service callbacks » fournis par HAP-python, où on reçoit toutes les caractéristiques modifiées d’un coup (et pas des événements séparés): https://github.com/ikalchev/HAP-python#service-callbacks. Dommage qu’il n’existe pas d’équivalent dans HAP-NodeJS.

C’était pas le cas avant… ils ont du changer qqch, je testerai quand j’aurai à nouveau mes systèmes. Je peux faire un temporisateur (genre si je reçois on et puis si je reçois luminosité (ou l’inverse) dans les x ms, je traite que luminosité… mais ça va mettre un délai pour tous les autres…)

Edit : un autre dev homebridge propose un temporisateur de 20ms c’est acceptable comme délai, je ferai mes tests en ce sens

1 « J'aime »

Si tu cherches des beta testers, je me tiens évidemment à disposition :grin:

@nebz du nouveau ? Je renouvelle mon offre pour servir de beta tester :blush:

Ah oui j’ai levé quelques bêta testeurs depuis, je t’envoie l’invit

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.