mirror of
https://github.com/nikdoof/hapz2m.git
synced 2026-01-30 11:38:22 +00:00
Add support for motion sensors
There doesn't seem to be any distinction in Z2M between occupancy and motion sensors, but HomeKit has separate types. Most of the sensors are PIR, so they are technically motion sensors instead of occupancy sensors. There are of course _real_ occupancy sensors like mmWave, but we'll deal with those when we get there.
This commit is contained in:
36
s_motion_sensor.go
Normal file
36
s_motion_sensor.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package hapz2m
|
||||
|
||||
import (
|
||||
"github.com/brutella/hap/accessory"
|
||||
"github.com/brutella/hap/service"
|
||||
)
|
||||
|
||||
// there isn't a distinction between motion and occupancy sensors in z2m,
|
||||
// but most sensors are PIR, so they are technically motion sensors
|
||||
|
||||
func createMotionServices(dev *Device) (byte, []*service.S, []*ExposeMapping, error) {
|
||||
var svcs []*service.S
|
||||
var exposes []*ExposeMapping
|
||||
|
||||
for _, exp := range dev.Definition.Exposes {
|
||||
if exp.Ignored() {
|
||||
continue
|
||||
}
|
||||
|
||||
switch {
|
||||
case exp.Type == "binary" && exp.Name == "occupancy":
|
||||
exp := exp // create a copy
|
||||
|
||||
s := service.NewMotionSensor()
|
||||
|
||||
svcs = append(svcs, s.S)
|
||||
exposes = append(exposes, &ExposeMapping{&exp, s.MotionDetected.C, nil})
|
||||
}
|
||||
}
|
||||
|
||||
return accessory.TypeSensor, svcs, exposes, nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
RegisterCreateServiceHandler(createMotionServices)
|
||||
}
|
||||
Reference in New Issue
Block a user