Aqara - capteur de mouvement

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.

1 « J'aime »

Ça me va si ta PR est bientôt prête à être intégrée :+1:

2 « J'aime »

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.

1 « J'aime »

La PR est là feat(homekit): Add motion sensors by cicoub13 · Pull Request #1914 · GladysAssistant/Gladys · GitHub

L’image Docker ici (à partir de 23h :snail:) : docker pull cicoub13/gladys:homekit-motion-sensor

Je fais un test avec devices réels demain

1 « J'aime »

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 ?

@pierre-gilles avait fait un tuto : Tutoriel: Lancer une image Docker de test

2 « J'aime »

Merci beaucoup je vais tester ça ce week-end je pense :wink:

Bon, j’ai testé et ça ne marche pas :frowning:
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 :thinking:

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

1 « J'aime »

C’est ça. Visible mais aucun changement. J’ai réinitialisé homekit, pareil.

@cicoub13 tu as les logs avec tous tes console.log?

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 :thinking:

Le mieux selon moi:

event.last_value === 1
1 « J'aime »

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

1 « J'aime »

J’ai essayé, ton code semble fonctionner.
Pour réduire au maximum tu peux faire comme ça

@cicoub13 tiens moi au courant quand tu veux une review!

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 :slight_smile: 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 ?