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

Use Expose.Name instead of hardcoded property

The Lamp still use hardcoded properties names. It will need some work to
fix this.. which doesn't seems to be used anyways.
parent fb3d44f6
No related branches found
No related tags found
No related merge requests found
......@@ -82,7 +82,7 @@ func NewContact(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterfac
}
func (dev *Contact) update(payload map[string]interface{}) {
value, exists := payload["contact"].(bool)
value, exists := payload[dev.Expose.Name].(bool)
if exists {
dev.GetAttribute("detected").SetValue(!value)
}
......@@ -98,7 +98,7 @@ func NewThermometer(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInte
}
func (dev *Thermometer) update(payload map[string]interface{}) {
value, exists := payload["temperature"].(float64)
value, exists := payload[dev.Expose.Name].(float64)
if exists {
dev.GetAttribute("temperature").SetValue(value)
}
......@@ -114,7 +114,7 @@ func NewHygrometer(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInter
}
func (dev *Hygrometer) update(payload map[string]interface{}) {
value, exists := payload["humidity"].(float64)
value, exists := payload[dev.Expose.Name].(float64)
if exists {
dev.GetAttribute("humidity").SetValue(value)
}
......@@ -132,7 +132,7 @@ func NewLinkQuality(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInte
}
func (dev *LinkQuality) update(payload map[string]interface{}) {
value, exists := payload["linkquality"].(float64)
value, exists := payload[dev.Expose.Name].(float64)
if exists {
value = math.Round(value / 255 * 100)
dev.GetAttribute("level").SetValue(value)
......@@ -151,7 +151,7 @@ func NewBattery(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterfac
}
func (dev *Battery) update(payload map[string]interface{}) {
value, exists := payload["battery"].(float64)
value, exists := payload[dev.Expose.Name].(float64)
if exists {
dev.GetAttribute("level").SetValue(value)
}
......@@ -162,9 +162,9 @@ func (dev *Battery) update(payload map[string]interface{}) {
// =============================================================================
func NewPowerRelay(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface {
dev := &PowerRelay{XAALDevice{schemas.NewPowerrelayToggle(addr), zDev, exp}}
dev.SetMethod("turn_on", dev.On)
dev.SetMethod("turn_off", dev.Off)
dev.SetMethod("toggle", dev.Toggle)
dev.SetMethod("turn_on", dev.turnOn)
dev.SetMethod("turn_off", dev.turnOff)
dev.SetMethod("toggle", dev.toggle)
dev.setup()
return dev
}
......@@ -184,24 +184,24 @@ func (dev *PowerRelay) update(payload map[string]interface{}) {
}
}
func (dev *PowerRelay) SetProperty(value string) {
func (dev *PowerRelay) SetState(value string) {
state := dev.Expose.GetFeature("state")
body := fmt.Sprintf(`{"%s": "%s"}`, state.Property, value)
dev.Z2MDevice.Set(body)
}
func (dev *PowerRelay) On(xaal.MessageBody) *xaal.MessageBody {
dev.SetProperty("ON")
func (dev *PowerRelay) turnOn(xaal.MessageBody) *xaal.MessageBody {
dev.SetState("ON")
return nil
}
func (dev *PowerRelay) Off(xaal.MessageBody) *xaal.MessageBody {
dev.SetProperty("OFF")
func (dev *PowerRelay) turnOff(xaal.MessageBody) *xaal.MessageBody {
dev.SetState("OFF")
return nil
}
func (dev *PowerRelay) Toggle(xaal.MessageBody) *xaal.MessageBody {
dev.SetProperty("TOGGLE")
func (dev *PowerRelay) toggle(xaal.MessageBody) *xaal.MessageBody {
dev.SetState("TOGGLE")
return nil
}
......@@ -218,7 +218,7 @@ func NewPowerMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInter
func (dev *PowerMeter) update(payload map[string]interface{}) {
// power
value, exists := payload["power"].(float64)
value, exists := payload[dev.Expose.Name].(float64)
if exists {
dev.GetAttribute("power").SetValue(value)
}
......@@ -232,6 +232,8 @@ func (dev *PowerMeter) update(payload map[string]interface{}) {
// =============================================================================
// Lamp
// =============================================================================
// The Lamp don't use the Expose.Names right now. Perhaps in future, if we find
// some lamps w/ different exposes. This will make the code more complex.
func NewLamp(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface {
// This is the default lamp device, we will change it's devType if needed
dev := &Lamp{XAALDevice{schemas.NewLamp(addr), zDev, exp}}
......@@ -332,18 +334,24 @@ func (dev *Lamp) update(payload map[string]interface{}) {
}
}
func (dev *Lamp) setState(value string) {
state := dev.Expose.GetFeature("state")
body := fmt.Sprintf(`{"%s": "%s"}`, state.Property, value)
dev.Z2MDevice.Set(body)
}
func (dev *Lamp) turnOn(xaal.MessageBody) *xaal.MessageBody {
dev.Z2MDevice.Set(`{"state": "ON"}`)
dev.setState("ON")
return nil
}
func (dev *Lamp) turnOff(xaal.MessageBody) *xaal.MessageBody {
dev.Z2MDevice.Set(`{"state": "OFF"}`)
dev.setState("OFF")
return nil
}
func (dev *Lamp) toggle(xaal.MessageBody) *xaal.MessageBody {
dev.Z2MDevice.Set(`{"state": "TOGGLE"}`)
dev.setState("TOGGLE")
return nil
}
......@@ -417,7 +425,7 @@ func NewButtonRemote(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInt
}
func (dev *ButtonRemote) update(payload map[string]interface{}) {
value, exists := payload["action"].(string)
value, exists := payload[dev.Expose.Name].(string)
if exists {
body := make(xaal.MessageBody)
body["action"] = 0
......@@ -427,7 +435,6 @@ func (dev *ButtonRemote) update(payload map[string]interface{}) {
}
func (dev *ButtonRemote) GetButtons(xaal.MessageBody) *xaal.MessageBody {
slog.Info("defaultGetButtons method: get_buttons")
body := make(xaal.MessageBody)
action := dev.Z2MDevice.GetExpose("action")
if action != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment