Merci @cicoub13 ça me semble bon ce que tu as fait. Par contre la PR déjà en cours optimise pas mal le processus Homekit et l’intégration de nouveaux appareils est beaucoup plus facile (1 ligne dans le fichier buildService, 1 ligne dans le fichier sendState + device mapping). Ce que je peux te proposer c’est qu’on essai de merger la première PR et ensuite tu t’occupes d’ajouter le capteur de mouvement de la nouvelle manière. Sinon tu peux merger ta PR je rebaserai la mienne et ferai les changements sur ce capteur en conséquence comme tu veux.
Ça me va si ta PR est bientôt prête à être intégrée
Salut @cicoub13 , la PR a été mergée tu peux t’occuper du capteur de mouvement. Si tu as besoin d’aide n’hésite pas je peux t’expliquer les changements qui ont eu lieu.
La PR est là feat(homekit): Add motion sensors by cicoub13 · Pull Request #1914 · GladysAssistant/Gladys · GitHub
L’image Docker ici (à partir de 23h ) : docker pull cicoub13/gladys:homekit-motion-sensor
Je fais un test avec devices réels demain
Bonjour à tous. Question peut-être bête, mais comment dois-je faire si je veux tester cette image ?
Je remonte un nouveau container docker ?
Ça ne risque pas rentrer en conflit avec les autres containers Zigbee déjà en place ?
Ou il vaut mieux essayer sur une nouvelle carte sd ?
Merci beaucoup je vais tester ça ce week-end je pense
Bon, j’ai testé et ça ne marche pas
J’ai essayé de convertir le last_value
en Boolean, de l’inverser, rien n’y fait.
Sur iPad, il n’y a aucun changement propagé (alors que sur Gladys et dans les logs oui).
J’ai mis des console.log
partout et je ne vois pas d’où vient le problème
Ton capteur est bien visible sur le réseau homekit ? C’est juste la valeur qui ne bouge pas ?
Ce weekend je récupèrerai ta PR et testerai avec des appareils virtuels pour t’aider
C’est ça. Visible mais aucun changement. J’ai réinitialisé homekit, pareil.
log(feature)
en entrée de sendState (https://github.com/cicoub13/Gladys/blob/feat-homekit-motion-sensor-2/server/services/homekit/lib/sendState.js#L17)
{
id: '8594204f-1251-4f38-9eba-cfebba5c3823',
device_id: 'ffeb673a-b765-480d-a785-6022df1411e2',
name: 'Détection mouvement Oui/Non',
selector: 'zigbee2mqtt-0x00158d0006f2500d-motion-sensor-binary-occupancy',
external_id: 'zigbee2mqtt:0x00158d0006f2500d:motion-sensor:binary:occupancy',
category: 'motion-sensor',
type: 'binary',
read_only: true,
keep_history: true,
has_feedback: false,
unit: null,
min: 0,
max: 1,
last_value: 1,
last_value_string: null,
last_value_changed: 2023-10-20T13:01:20.659Z,
last_hourly_aggregate: 2023-10-20T10:00:00.000Z,
last_daily_aggregate: 2023-10-19T22:00:00.000Z,
last_monthly_aggregate: 2023-09-30T22:00:00.000Z,
created_at: 2023-10-12T06:29:40.550Z,
updated_at: 2023-10-20T10:38:57.691Z
}
log(event)
en entrée du case Sensor (https://github.com/cicoub13/Gladys/blob/feat-homekit-motion-sensor-2/server/services/homekit/lib/sendState.js#L29)
{
type: 'device.new-state',
device_feature: 'zigbee2mqtt-0x00158d0006f2500d-motion-sensor-binary-occupancy',
previous_value: 1,
last_value: 1,
last_value_changed: 2023-10-20T13:01:20.659Z
}
log(Service[mappings[feature.category].service)
au même endroit
[Function: MotionSensor] {
UUID: '00000085-0000-1000-8000-0026BB765291'
}
log(Characteristic[mappings[feature.category].capabilities[feature.type].characteristics[0]])
au même endroit
[Function: MotionDetected] {
UUID: '00000022-0000-1000-8000-0026BB765291'
}
T’es sûr que pour les capteurs de mouvement il faut pas envoyer un boolean?
Sur des projets qui font pareil, ils envoient des boolean:
C’est ce que j’ai vu. J’ai essayé de deux manières (!!event.last_value
et Boolean(event.last_value)
).
Je vais réessayer
Le mieux selon moi:
event.last_value === 1
Je ne pense pas que ce soit nécessaire, la librairie le fait par elle même
D’ailleurs on voit bien que ça fonctionne pour les lampes/interrupteurs qui demandent aussi des booléens
J’ai essayé, ton code semble fonctionner.
Pour réduire au maximum tu peux faire comme ça
Bonjour. J’ai pris en compte les retours de @bertrandda et poussé une nouvelle version de l’image cicoub13/gladys:homekit-motion-sensor
Mais cela ne fonctionne pas sur mon iPad. Je ne sais pas si ça vient de mon capteur, de l’image, …
Est-ce que quelqu’un (avec de vrais capteurs) pourrait tester ?
Vrai capteur ça ne change rien dans Gladys Un capteur, qu’il soit MQTT ou autre c’est la même chose !
Après si tu as besoin d’un capteur de mouvement Zigbee je peux t’en envoyer un ?