diff --git a/xaal.go b/xaal.go index 953336bd67cd5bc8df43df54f881e32ed12ec18a..b209ef7d48e13f4a65e6f2c9a774684a679d8121 100644 --- a/xaal.go +++ b/xaal.go @@ -76,6 +76,7 @@ type DebugDevice struct { type XAALDeviceInterface interface { update(map[string]interface{}) GetXAALDevice() *xaal.Device + setup() } func (dev *XAALDevice) setup() { @@ -95,9 +96,7 @@ func (dev *XAALDevice) GetXAALDevice() *xaal.Device { // Contact // ============================================================================= func NewContact(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Contact{XAALDevice{schemas.NewContact(addr), zDev, exp}} - dev.setup() - return dev + return &Contact{XAALDevice{schemas.NewContact(addr), zDev, exp}} } func (dev *Contact) update(payload map[string]interface{}) { @@ -111,9 +110,7 @@ func (dev *Contact) update(payload map[string]interface{}) { // Thermometer // ============================================================================= func NewThermometer(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Thermometer{XAALDevice{schemas.NewThermometer(addr), zDev, exp}} - dev.setup() - return dev + return &Thermometer{XAALDevice{schemas.NewThermometer(addr), zDev, exp}} } func (dev *Thermometer) update(payload map[string]interface{}) { @@ -127,9 +124,7 @@ func (dev *Thermometer) update(payload map[string]interface{}) { // Hygrometer // ============================================================================= func NewHygrometer(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Hygrometer{XAALDevice{schemas.NewHygrometer(addr), zDev, exp}} - dev.setup() - return dev + return &Hygrometer{XAALDevice{schemas.NewHygrometer(addr), zDev, exp}} } func (dev *Hygrometer) update(payload map[string]interface{}) { @@ -145,7 +140,6 @@ func (dev *Hygrometer) update(payload map[string]interface{}) { func NewLinkQuality(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &LinkQuality{XAALDevice{schemas.NewLinkquality(addr), zDev, exp}} dev.GetAttribute("level").Value = 0 // override type to int - dev.setup() dev.RemoveAttribute("devices") dev.UnsupportedAttributes = []string{"devices"} return dev @@ -167,7 +161,6 @@ func (dev *LinkQuality) update(payload map[string]interface{}) { // ============================================================================= func NewBattery(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &Battery{XAALDevice{schemas.NewBattery(addr), zDev, exp}} - dev.setup() dev.RemoveAttribute("devices") dev.UnsupportedAttributes = []string{"devices"} return dev @@ -188,7 +181,6 @@ func NewPowerRelay(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInter dev.SetMethod("turn_on", dev.turnOn) dev.SetMethod("turn_off", dev.turnOff) dev.SetMethod("toggle", dev.toggle) - dev.setup() return dev } @@ -233,7 +225,6 @@ func (dev *PowerRelay) toggle(xaal.MessageBody) *xaal.MessageBody { // ============================================================================= func NewPowerMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &PowerMeter{XAALDevice{schemas.NewPowermeter(addr), zDev, exp}} - dev.setup() dev.RemoveAttribute("devices") dev.UnsupportedAttributes = []string{"devices"} return dev @@ -281,7 +272,6 @@ func NewLamp(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev.AddMethod("set_hsv", dev.setHSV) dev.AddMethod("set_mode", dev.setMode) } - dev.setup() return dev } @@ -442,7 +432,6 @@ func (dev *Lamp) setMode(body xaal.MessageBody) *xaal.MessageBody { // ============================================================================= func NewButtonRemote(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &ButtonRemote{XAALDevice{schemas.NewButtonRemote(addr), zDev, exp}} - dev.setup() dev.SetMethod("get_buttons", dev.getButtons) return dev } @@ -470,9 +459,7 @@ func (dev *ButtonRemote) getButtons(xaal.MessageBody) *xaal.MessageBody { // Motion // ============================================================================= func NewMotion(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Motion{XAALDevice{schemas.NewMotion(addr), zDev, exp}} - dev.setup() - return dev + return &Motion{XAALDevice{schemas.NewMotion(addr), zDev, exp}} } func (dev *Motion) update(payload map[string]interface{}) { @@ -488,7 +475,6 @@ func (dev *Motion) update(payload map[string]interface{}) { func NewLuxMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &LuxMeter{XAALDevice{schemas.NewLuxmeter(addr), zDev, exp}} dev.GetAttribute("illuminance").Value = 0 // override - dev.setup() return dev } @@ -507,7 +493,6 @@ func NewVoltMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterf dev := &VoltMeter{XAALDevice{schemas.NewBasic(addr), zDev, exp}} dev.DevType = "voltmeter.any" dev.AddAttribute("voltage", 0.0) - dev.setup() return dev } @@ -525,7 +510,6 @@ func NewAmpMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterfa dev := &AmpMeter{XAALDevice{schemas.NewBasic(addr), zDev, exp}} dev.DevType = "ampmeter.any" dev.AddAttribute("current", 0.0) - dev.setup() return dev } @@ -540,9 +524,7 @@ func (dev *AmpMeter) update(payload map[string]interface{}) { // Debug Device // ============================================================================= func NewDebugDevice(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &DebugDevice{XAALDevice{schemas.NewBasic(addr), zDev, exp}} - dev.setup() - return dev + return &DebugDevice{XAALDevice{schemas.NewBasic(addr), zDev, exp}} } func (dev *DebugDevice) update(payload map[string]interface{}) { diff --git a/z2m.go b/z2m.go index 27486bcb637ea13f5971b4aa2370c4420c081c29..5a5789a85b70e7b3dd6fccdbf889f3ab4a21e8ae 100644 --- a/z2m.go +++ b/z2m.go @@ -127,6 +127,7 @@ func (zDev *Z2MDevice) FindXAALDevices(gw *Gateway) { } if dev != nil { + dev.setup() zDev.XAALDevices = append(zDev.XAALDevices, dev) xaalDev := dev.GetXAALDevice() xaalDev.GroupID = grpAdd