diff --git a/README.md b/README.md index c955242..9f6c85d 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Currently only supports the types of Zigbee devices I have: - Climate sensors (temp, humidity) - Contact sensors +- Motion sensors - Wall switch If you do use this software, note that it's in development and may contains bugs, diff --git a/s_motion_sensor.go b/s_motion_sensor.go new file mode 100644 index 0000000..47ad4cf --- /dev/null +++ b/s_motion_sensor.go @@ -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) +}