time constraints on listener are working

This commit is contained in:
Sam Lewis
2022-10-16 23:03:19 -04:00
parent 145c12dd25
commit 7ed5cbcf94
2 changed files with 15 additions and 6 deletions

View File

@@ -18,7 +18,7 @@ func main() {
simpleListener := ga.EntityListenerBuilder(). simpleListener := ga.EntityListenerBuilder().
EntityIds("group.office_ceiling_lights"). EntityIds("group.office_ceiling_lights").
Call(listenerCB). Call(listenerCB).
// OnlyBetween("07:00", "14:00"). OnlyAfter("23:03").
Build() Build()
app.RegisterEntityListener(simpleListener) app.RegisterEntityListener(simpleListener)

View File

@@ -125,6 +125,16 @@ func (b elBuilder3) OnlyBetween(start string, end string) elBuilder3 {
return b return b
} }
func (b elBuilder3) OnlyAfter(start string) elBuilder3 {
b.entityListener.betweenStart = start
return b
}
func (b elBuilder3) OnlyBefore(end string) elBuilder3 {
b.entityListener.betweenEnd = end
return b
}
func (b elBuilder3) FromState(s string) elBuilder3 { func (b elBuilder3) FromState(s string) elBuilder3 {
b.entityListener.fromState = s b.entityListener.fromState = s
return b return b
@@ -171,12 +181,11 @@ func callEntityListeners(app *app, msgBytes []byte) {
if !carbon.Now().BetweenIncludedStart(start, end) { if !carbon.Now().BetweenIncludedStart(start, end) {
return return
} }
}
// otherwise, just check if before/after the individual times // otherwise just check individual before/after
if l.betweenStart != "" && i.ParseTime(l.betweenStart).IsFuture() { } else if l.betweenStart != "" && i.ParseTime(l.betweenStart).IsFuture() {
return return
} } else if l.betweenEnd != "" && i.ParseTime(l.betweenEnd).IsPast() {
if l.betweenEnd != "" && i.ParseTime(l.betweenEnd).IsPast() {
return return
} }