Put a full Message in ReceivedZigbeeEvent
We'll need the topic later.
This commit is contained in:
parent
10e26a4866
commit
27c6646237
3 changed files with 9 additions and 7 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 _ =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue