diff --git a/app.go b/app.go index 6aef05d..58f8f0e 100644 --- a/app.go +++ b/app.go @@ -26,9 +26,9 @@ type App struct { schedules pq.PriorityQueue intervals pq.PriorityQueue - entityListeners map[string][]EntityListener + entityListeners map[string][]*EntityListener entityListenersId int64 - eventListeners map[string][]EventListener + eventListeners map[string][]*EventListener } /* @@ -97,8 +97,8 @@ func NewApp(request NewAppRequest) *App { state: state, schedules: pq.New(), intervals: pq.New(), - entityListeners: map[string][]EntityListener{}, - eventListeners: map[string][]EventListener{}, + entityListeners: map[string][]*EntityListener{}, + eventListeners: map[string][]*EventListener{}, } } @@ -147,15 +147,16 @@ func (a *App) RegisterIntervals(intervals ...Interval) { func (a *App) RegisterEntityListeners(etls ...EntityListener) { for _, etl := range etls { + etl := etl if etl.delay != 0 && etl.toState == "" { log.Fatalln("EntityListener error: you have to use ToState() when using Duration()") } for _, entity := range etl.entityIds { if elList, ok := a.entityListeners[entity]; ok { - a.entityListeners[entity] = append(elList, etl) + a.entityListeners[entity] = append(elList, &etl) } else { - a.entityListeners[entity] = []EntityListener{etl} + a.entityListeners[entity] = []*EntityListener{&etl} } } } @@ -163,12 +164,13 @@ func (a *App) RegisterEntityListeners(etls ...EntityListener) { func (a *App) RegisterEventListeners(evls ...EventListener) { for _, evl := range evls { + evl := evl for _, eventType := range evl.eventTypes { if elList, ok := a.eventListeners[eventType]; ok { - a.eventListeners[eventType] = append(elList, evl) + a.eventListeners[eventType] = append(elList, &evl) } else { ws.SubscribeToEventType(eventType, a.conn, a.ctx) - a.eventListeners[eventType] = []EventListener{evl} + a.eventListeners[eventType] = []*EventListener{&evl} } } } diff --git a/schedule.go b/schedule.go index 1024f60..3716511 100644 --- a/schedule.go +++ b/schedule.go @@ -2,6 +2,7 @@ package gomeassistant import ( "fmt" + "log" "time" "github.com/golang-module/carbon" @@ -130,7 +131,7 @@ func runSchedules(a *App) { sched = popSchedule(a) } - fmt.Println("Next schedule:", sched.nextRunTime) + log.Println("Next schedule:", sched.nextRunTime) time.Sleep(time.Until(sched.nextRunTime)) sched.maybeRunCallback(a) requeueSchedule(a, sched)