Accept TimeChanged events instead of PartOfDayChanged events

This commit is contained in:
Sven van Heugten 2026-01-03 19:03:17 +01:00
parent e226d092d8
commit 506cf0c848
2 changed files with 21 additions and 20 deletions

View file

@ -1,5 +1,6 @@
module NightLight.Core
open System
open NightLight.PartsOfDay
open NightLight.ZigbeeEvents
open NightLight.ZigbeeCommands
@ -19,13 +20,13 @@ let internal generateZigbeeCommandToFixLight partOfDay light =
type Event =
| ReceivedZigbeeEvent of payload: string
| PartOfDayChanged of newPartOfDay: PartOfDay
| TimeChanged of DateTime
type State = { PartOfDay: PartOfDay }
type State = { Time: DateTime }
let onEventReceived (state: State) (event: Event) =
result {
let partOfDay = state.PartOfDay
let partOfDay = getPartOfDay state.Time
match event with
| ReceivedZigbeeEvent payload ->
@ -40,6 +41,14 @@ let onEventReceived (state: State) (event: Event) =
match maybeLight with
| Some light -> generateZigbeeCommandToFixLight partOfDay light |> Seq.singleton
| None -> Seq.empty
| PartOfDayChanged newPartOfDay ->
return { PartOfDay = newPartOfDay }, lights |> Seq.map (generateZigbeeCommandToFixLight partOfDay)
| TimeChanged time ->
let newState = { Time = time }
let newPartOfDay = getPartOfDay time
return
newState,
if partOfDay <> newPartOfDay then
lights |> Seq.map (generateZigbeeCommandToFixLight newPartOfDay)
else
Seq.empty
}