diff --git a/xaal.go b/xaal.go index a3bc43770290bc001b7bf6a72365faecd053b36f..c45cf4dfa6bf219ee94e5fdd8f68da5e91fc67c3 100644 --- a/xaal.go +++ b/xaal.go @@ -61,6 +61,10 @@ type LuxMeter struct { XAALDevice } +type DebugDevice struct { + XAALDevice +} + type XAALDeviceInterface interface { update(map[string]interface{}) GetXAALDevice() *xaal.Device @@ -481,8 +485,22 @@ func NewLuxMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterfa } func (dev *LuxMeter) update(payload map[string]interface{}) { + slog.Info("update", "payload", payload) lux, err := convertToInt(payload[dev.Expose.Name]) if err == nil { dev.GetAttribute("illuminance").SetValue(lux) } } + +// ============================================================================= +// Debug Device +// ============================================================================= +func NewDebugDevice(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { + dev := &DebugDevice{XAALDevice{schemas.NewBasic(addr), zDev, exp}} + dev.setup() + return dev +} + +func (dev *DebugDevice) update(payload map[string]interface{}) { + slog.Info("Debug Device update", "payload", payload) +} diff --git a/z2m.go b/z2m.go index 7fcbb3aaca384ba86a332005e75ce2c7af457021..68d058c035457754f096e7b007aa8f4194832803 100644 --- a/z2m.go +++ b/z2m.go @@ -113,6 +113,7 @@ func (zDev *Z2MDevice) FindXAALDevices(gw *Gateway) { "light": NewLamp, "occupancy": NewMotion, "illuminance": NewLuxMeter, + "voltage": NewDebugDevice, } // Search a matching expose name