-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoutlet.go
61 lines (48 loc) · 1.15 KB
/
outlet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package hkuvr
import (
"github.com/brutella/hc/characteristic"
"github.com/brutella/hc/service"
"github.com/brutella/uvr"
"fmt"
)
type Outlet struct {
*service.Switch
Name *characteristic.Name
subIndex uint8
}
func NewOutlet(idx uint8) *Outlet {
svc := Outlet{}
svc.subIndex = idx
svc.Switch = service.NewSwitch()
svc.Switch.On.Perms = characteristic.PermsReadOnly()
svc.Name = characteristic.NewName()
svc.Name.SetValue("Unbenannt")
svc.AddCharacteristic(svc.Name.Characteristic)
return &svc
}
func (svc *Outlet) SubIndex() uint8 {
return svc.subIndex
}
func (svc *Outlet) Service() *service.Service {
return svc.Switch.Service
}
func (svc *Outlet) Update(c *uvr.Client) error {
outlet := uvr.NewOutlet(svc.subIndex)
if value, err := c.Read(outlet.State); err == nil {
if str, ok := value.(string); ok == true {
switch str {
case uvr.OutletStateOn:
svc.On.SetValue(true)
case uvr.OutletStateOff:
svc.On.SetValue(false)
default:
return fmt.Errorf("Outlet state of unknown value %v (%X)", str, str)
}
} else {
return fmt.Errorf("Outlet state of unknown type %v", value)
}
} else {
return err
}
return nil
}