Put a full Message in ReceivedZigbeeEvent

We'll need the topic later.
This commit is contained in:
Sven van Heugten 2026-01-03 19:36:25 +01:00
parent 10e26a4866
commit 27c6646237
3 changed files with 9 additions and 7 deletions

View file

@ -4,12 +4,12 @@ open System
type State = { Time: DateTime } type State = { Time: DateTime }
type Event =
| ReceivedZigbeeEvent of payload: string
| TimeChanged of DateTime
type Message = { Topic: string; Payload: string } type Message = { Topic: string; Payload: string }
type Event =
| ReceivedZigbeeEvent of Message
| TimeChanged of DateTime
type ParseZigbeeEventError = type ParseZigbeeEventError =
| InvalidJson | InvalidJson
| MissingTypeField | MissingTypeField

View file

@ -6,9 +6,9 @@ open FSharp.Data
type ZigbeeEvent = DeviceAnnounce of FriendlyName: string type ZigbeeEvent = DeviceAnnounce of FriendlyName: string
let parseZigbeeEvent str = let parseZigbeeEvent (message: Message) =
result { result {
let! jsonValue = JsonValue.TryParse str |> Result.requireSome InvalidJson let! jsonValue = JsonValue.TryParse message.Payload |> Result.requireSome InvalidJson
let! messageType = jsonValue.TryGetProperty "type" |> Result.requireSome MissingTypeField let! messageType = jsonValue.TryGetProperty "type" |> Result.requireSome MissingTypeField
let! messageData = jsonValue.TryGetProperty "data" |> Result.requireSome MissingDataField let! messageData = jsonValue.TryGetProperty "data" |> Result.requireSome MissingDataField

View file

@ -51,7 +51,9 @@ let private mqttMessageToReceivedZigbeeEvent (message: MqttApplicationMessage) =
let payload = message.Payload let payload = message.Payload
let decodedPayload = Encoding.UTF8.GetString(&payload) let decodedPayload = Encoding.UTF8.GetString(&payload)
ReceivedZigbeeEvent decodedPayload ReceivedZigbeeEvent
{ Topic = message.Topic
Payload = decodedPayload }
[<EntryPoint>] [<EntryPoint>]
let mainAsync _ = let mainAsync _ =