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

Added support for powermeter

parent a2ddd329
Branches
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@ func newXAALDevices(gw *Gateway, zDev *Z2MDevice) {
"humidity": NewHygrometer,
"linkquality": NewLinkQuality,
"battery": NewBattery,
"power": NewPowerMeter,
}
if createFunc, ok := deviceMap[expose.Name]; ok {
......
......@@ -35,8 +35,12 @@ type Battery struct {
type PowerRelay struct {
XAALDevice
Z2MDevice Z2MDevice
Property string
Z2MDevice Z2MDevice
}
type PowerMeter struct {
XAALDevice
}
type Lamp struct {
......@@ -115,6 +119,8 @@ func (dev *Hygrometer) update(payload map[string]interface{}) {
func NewLinkQuality(addr uuid.UUID, zDev *Z2MDevice) XAALDeviceInterface {
dev := &LinkQuality{XAALDevice{schemas.NewLinkquality(addr)}}
dev.setup(zDev)
dev.RemoveAttribute("devices")
dev.UnsupportedAttributes = []string{"devices"}
return dev
}
......@@ -132,6 +138,8 @@ func (dev *LinkQuality) update(payload map[string]interface{}) {
func NewBattery(addr uuid.UUID, zDev *Z2MDevice) XAALDeviceInterface {
dev := &Battery{XAALDevice{schemas.NewBattery(addr)}}
dev.setup(zDev)
dev.RemoveAttribute("devices")
dev.UnsupportedAttributes = []string{"devices"}
return dev
}
......@@ -146,7 +154,7 @@ func (dev *Battery) update(payload map[string]interface{}) {
// PowerRelay
// ----------------------------------------------------------------------------
func NewPowerRelay(addr uuid.UUID, zDev *Z2MDevice, property string) XAALDeviceInterface {
dev := &PowerRelay{XAALDevice{schemas.NewPowerrelayToggle(addr)}, *zDev, property}
dev := &PowerRelay{XAALDevice{schemas.NewPowerrelayToggle(addr)}, property, *zDev}
dev.SetMethod("turn_on", dev.On)
dev.SetMethod("turn_off", dev.Off)
dev.SetMethod("toggle", dev.Toggle)
......@@ -186,6 +194,28 @@ func (dev *PowerRelay) Toggle(xaal.MessageBody) *xaal.MessageBody {
return nil
}
// ----------------------------------------------------------------------------
// PowerMeter
// ----------------------------------------------------------------------------
func NewPowerMeter(addr uuid.UUID, zDev *Z2MDevice) XAALDeviceInterface {
dev := &PowerMeter{XAALDevice{schemas.NewPowermeter(addr)}}
dev.setup(zDev)
dev.RemoveAttribute("devices")
dev.UnsupportedAttributes = []string{"devices"}
return dev
}
func (dev *PowerMeter) update(payload map[string]interface{}) {
value, exists := payload["power"].(float64)
if exists {
dev.GetAttribute("power").SetValue(value)
}
value, exists = payload["energy"].(float64)
if exists {
dev.GetAttribute("energy").SetValue(value)
}
}
// ----------------------------------------------------------------------------
// Lamp
// ----------------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment