Skip to content
Snippets Groups Projects
Commit b47ebb92 authored by KERDREUX Jerome's avatar KERDREUX Jerome
Browse files

Added simple light

parent 95906a00
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,8 @@ func newDevices(gw *Gateway, zDev *Z2MDevice) { ...@@ -31,6 +31,8 @@ func newDevices(gw *Gateway, zDev *Z2MDevice) {
createFunc(addr, zDev) createFunc(addr, zDev)
} else if expose.Type == "switch" { } else if expose.Type == "switch" {
NewPowerRelay(addr, zDev) NewPowerRelay(addr, zDev)
} else if expose.Type == "light" {
NewLamp(addr, zDev)
} }
// if dev != nil { // if dev != nil {
......
...@@ -37,6 +37,11 @@ type PowerRelay struct { ...@@ -37,6 +37,11 @@ type PowerRelay struct {
Z2MDevice Z2MDevice
} }
type Lamp struct {
XAALDevice
Z2MDevice
}
type XAALDeviceInterface interface { type XAALDeviceInterface interface {
update(map[string]interface{}) update(map[string]interface{})
} }
...@@ -165,3 +170,47 @@ func (dev *PowerRelay) Toggle(xaal.MessageBody) *xaal.MessageBody { ...@@ -165,3 +170,47 @@ func (dev *PowerRelay) Toggle(xaal.MessageBody) *xaal.MessageBody {
dev.setState("TOGGLE") dev.setState("TOGGLE")
return nil return nil
} }
// ----------------------------------------------------------------------------
// Lamp
// ----------------------------------------------------------------------------
func NewLamp(addr uuid.UUID, zDev *Z2MDevice) {
dev := &Lamp{XAALDevice{schemas.NewLamp(addr)}, *zDev}
dev.SetMethod("turn_on", dev.On)
dev.SetMethod("turn_off", dev.Off)
dev.SetMethod("toggle", dev.Toggle)
dev.setup(zDev)
zDev.XAALDevices = append(zDev.XAALDevices, dev)
}
func (dev *Lamp) update(payload map[string]interface{}) {
value := payload["state"].(string)
if value == "ON" {
dev.GetAttribute("light").SetValue(true)
} else {
dev.GetAttribute("light").SetValue(false)
}
}
func (dev *Lamp) setState(value string) {
// TODO: put this in Z2MDevice
topic := dev.Z2MDevice.SetTopic()
client := GetGW().client
body := `{"state": "` + value + `"}`
client.Publish(topic, 0, false, body)
}
func (dev *Lamp) On(xaal.MessageBody) *xaal.MessageBody {
dev.setState("ON")
return nil
}
func (dev *Lamp) Off(xaal.MessageBody) *xaal.MessageBody {
dev.setState("OFF")
return nil
}
func (dev *Lamp) Toggle(xaal.MessageBody) *xaal.MessageBody {
dev.setState("TOGGLE")
return nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment