Files
hapz2m/s_motion_sensor.go
Darell Tan 7fbbec79d9 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.
2023-06-16 23:08:09 +08:00

37 lines
834 B
Go

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)
}