diff --git a/NightLight.Core/Core.fs b/NightLight.Core/Core.fs index 742b43d..e8a4396 100644 --- a/NightLight.Core/Core.fs +++ b/NightLight.Core/Core.fs @@ -17,18 +17,22 @@ let internal generateZigbeeCommandToFixLight partOfDay light = generateZigbeeCommand light.FriendlyName color brightness -let onZigbeeEventReceived (partOfDay: PartOfDay) (decodedPayload: string) = +type Event = ReceivedZigbeeEvent of payload: string + +let onEventReceived (partOfDay: PartOfDay) (event: Event) = result { - let! zigbeeEvent = parseZigbeeEvent decodedPayload + match event with + | ReceivedZigbeeEvent payload -> + let! zigbeeEvent = parseZigbeeEvent payload - return - match zigbeeEvent with - | DeviceAnnounce friendlyName -> - let maybeLight = tryFindLight friendlyName + return + match zigbeeEvent with + | DeviceAnnounce friendlyName -> + let maybeLight = tryFindLight friendlyName - match maybeLight with - | Some light -> generateZigbeeCommandToFixLight partOfDay light |> Seq.singleton - | None -> Seq.empty + match maybeLight with + | Some light -> generateZigbeeCommandToFixLight partOfDay light |> Seq.singleton + | None -> Seq.empty } let onPartOfDayChanged (partOfDay: PartOfDay) = diff --git a/NightLight/Program.fs b/NightLight/Program.fs index 9d390d2..cc22b9d 100644 --- a/NightLight/Program.fs +++ b/NightLight/Program.fs @@ -42,7 +42,8 @@ let private onMqttMessageReceived (mqttClient: IMqttClient) (logger: ILogger) (m logger.LogInformation("Received message with payload {Payload}", decodedPayload) let commandsResult = - decodedPayload |> onZigbeeEventReceived (getPartOfDay DateTime.Now) + ReceivedZigbeeEvent decodedPayload + |> onEventReceived (getPartOfDay DateTime.Now) match commandsResult with | Ok commands -> publishZigbeeCommands mqttClient logger commands