5 Commits
Author SHA1 Message Date
gisle 204f372be2 fix mill
continuous-integration/drone/push Build is failing
2024-11-08 22:55:23 +01:00
gisle 083df1749b fix mill
continuous-integration/drone/push Build is failing
2024-11-08 21:34:35 +01:00
gisle 511ef97616 fix mill
continuous-integration/drone/push Build is failing
2024-11-08 21:26:28 +01:00
gisle 3d2b4e7bfe add mill driver 2024-11-08 21:08:24 +01:00
gisle c2f3d3c4d1 add non-opaque error on hue connect failed. 2024-10-06 16:19:04 +02:00
4 changed files with 12 additions and 9 deletions
+2
View File
@@ -7,6 +7,7 @@ import (
"git.aiterp.net/lucifer3/server/services/effectenforcer" "git.aiterp.net/lucifer3/server/services/effectenforcer"
"git.aiterp.net/lucifer3/server/services/httpapiv1" "git.aiterp.net/lucifer3/server/services/httpapiv1"
"git.aiterp.net/lucifer3/server/services/hue" "git.aiterp.net/lucifer3/server/services/hue"
"git.aiterp.net/lucifer3/server/services/mill"
"git.aiterp.net/lucifer3/server/services/mysqldb" "git.aiterp.net/lucifer3/server/services/mysqldb"
"git.aiterp.net/lucifer3/server/services/nanoleaf" "git.aiterp.net/lucifer3/server/services/nanoleaf"
"git.aiterp.net/lucifer3/server/services/script" "git.aiterp.net/lucifer3/server/services/script"
@@ -47,6 +48,7 @@ func main() {
bus.Join(nanoleaf.NewService()) bus.Join(nanoleaf.NewService())
bus.Join(hue.NewService()) bus.Join(hue.NewService())
bus.Join(tradfri.NewService()) bus.Join(tradfri.NewService())
bus.Join(mill.NewService())
bus.Join(uistate.NewService()) bus.Join(uistate.NewService())
bus.Join(script.NewService(resolver, variables)) bus.Join(script.NewService(resolver, variables))
bus.Join(database) bus.Join(database)
Binary file not shown.
+1 -1
View File
@@ -348,7 +348,7 @@ func (b *Bridge) SetStates(patch map[string]device.State) {
func (b *Bridge) Run(ctx context.Context, bus *lucifer3.EventBus) interface{} { func (b *Bridge) Run(ctx context.Context, bus *lucifer3.EventBus) interface{} {
hwEvents, err := b.RefreshAll() hwEvents, err := b.RefreshAll()
if err != nil { if err != nil {
return errors.New("failed to connect to bridge") return fmt.Errorf("failed to connect to bridge: %s", err)
} }
bus.RunEvent(events.Log{ bus.RunEvent(events.Log{
+9 -8
View File
@@ -20,7 +20,8 @@ type WifiBridge struct {
ID string ID string
IP string IP string
state *device.State state *device.State
desiredState device.State
mx sync.Mutex mx sync.Mutex
started bool started bool
@@ -36,6 +37,8 @@ func (w *WifiBridge) SetState(id string, state device.State) bool {
return false return false
} }
w.desiredState = state
return true return true
} }
@@ -78,7 +81,7 @@ func (w *WifiBridge) refresh() error {
return err return err
} }
if w.state != nil { if w.state == nil {
w.state = &device.State{ w.state = &device.State{
Temperature: gentools.Ptr(temp), Temperature: gentools.Ptr(temp),
} }
@@ -93,14 +96,12 @@ func (w *WifiBridge) refresh() error {
}) })
} }
w.state.Temperature = gentools.Ptr(*w.state.Temperature - math.Mod(*w.state.Temperature, 0.5)) if w.desiredState.Temperature != nil && math.Abs(temp-*w.desiredState.Temperature) >= 0.1 {
if math.Abs(temp-*w.state.Temperature) >= 0.1 {
if err := w.writeTemperature(); err != nil { if err := w.writeTemperature(); err != nil {
return err return err
} }
} }
return nil return nil
} }
@@ -112,7 +113,7 @@ func (w *WifiBridge) getTemperature() (float64, error) {
req, err := http.NewRequest( req, err := http.NewRequest(
"GET", "GET",
"http://%s/set-temperature", fmt.Sprintf("http://%s/set-temperature", w.IP),
bytes.NewReader(body), bytes.NewReader(body),
) )
if err != nil { if err != nil {
@@ -144,7 +145,7 @@ func (w *WifiBridge) writeTemperature() error {
req, err := http.NewRequest( req, err := http.NewRequest(
"POST", "POST",
"http://%s/set-temperature", fmt.Sprintf("http://%s/set-temperature", w.IP),
bytes.NewReader(body), bytes.NewReader(body),
) )
if err != nil { if err != nil {