-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlight.go
89 lines (66 loc) · 1.46 KB
/
light.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main
import (
"fmt"
"github.com/brutella/hc/accessory"
)
type Light struct {
CluObject
State bool
hk *accessory.Lightbulb `json:"-"`
}
func (gl *Light) LoadReqObject(obj ReqObject) error {
if obj.Kind != "Light" {
return fmt.Errorf("Light LoadReqObject: wrong object kind (%s)", obj.Kind)
}
if obj.Light == nil {
return fmt.Errorf("Light LoadReqObject: missing Light object")
}
gl.State = obj.Light.State
gl.Sync()
return nil
}
func (gl *Light) InitAll() {
gl.Req = ReqObject{
Kind: "Light",
Clu: gl.clu.Id,
Id: gl.GetMixedId(),
// Light: gl,
}
gl.AppendHk()
}
func (gl *Light) AppendHk() *accessory.Lightbulb {
info := accessory.Info{
Name: gl.Name,
SerialNumber: fmt.Sprintf("%d", gl.Id),
Manufacturer: "Grenton",
Model: gl.Kind,
ID: gl.GetLongId(),
}
gl.hk = accessory.NewLightbulb(info)
gl.hk.Lightbulb.On.OnValueRemoteUpdate(gl.Set)
gl.hk.Lightbulb.On.OnValueRemoteGet(gl.Get)
gl.clu.set.Logf("HK Lightbulb added (id: %x, type: %d", gl.hk.Accessory.ID, gl.hk.Accessory.Type)
return gl.hk
}
func (gl *Light) Sync() {
gl.hk.Lightbulb.On.SetValue(gl.State)
}
func (gl *Light) Get() bool {
// if gl.clu.set.CheckFreshness() {
// return gl.State
// }
err := gl.Update()
if err != nil {
gl.clu.set.Error(err)
}
return gl.State
}
func (gl *Light) Set(state bool) {
gl.State = state
req := gl.Req
req.Light = gl
_, err := gl.SendReq(req)
if err != nil {
gl.clu.set.Error(err)
}
}