Turn Message into a record type

This commit is contained in:
Sven van Heugten 2026-01-03 19:34:33 +01:00
parent ab6e123efc
commit 10e26a4866
4 changed files with 10 additions and 14 deletions

View file

@ -18,7 +18,7 @@ let internal generateZigbeeCommandToFixLight partOfDay light =
generateZigbeeCommand light.FriendlyName color brightness
let onEventReceived (state: State) (event: Event) : Result<State * ZigbeeCommand seq, ParseEventError> =
let onEventReceived (state: State) (event: Event) : Result<State * Message seq, ParseEventError> =
result {
let partOfDay = getPartOfDay state.Time

View file

@ -8,7 +8,7 @@ type Event =
| ReceivedZigbeeEvent of payload: string
| TimeChanged of DateTime
type Message = Message of Topic: string * Payload: string
type Message = { Topic: string; Payload: string }
type ParseZigbeeEventError =
| InvalidJson

View file

@ -22,4 +22,4 @@ let generateZigbeeCommand friendlyName targetColor targetBrightness =
let topic = $"zigbee2mqtt/{friendlyName}/set"
let payload = commandObj.ToJsonString()
Message(topic, payload)
{ Topic = topic; Payload = payload }

View file

@ -9,21 +9,17 @@ open NightLight.Models
open NightLight.Core
let private generateMqttMessage zigbeeCommand =
match zigbeeCommand with
| Message(topic, payload) ->
MqttApplicationMessageBuilder()
.WithTopic(topic)
.WithPayload(payload)
.WithTopic(zigbeeCommand.Topic)
.WithPayload(zigbeeCommand.Payload)
.WithQualityOfServiceLevel(MqttQualityOfServiceLevel.AtLeastOnce)
.Build()
let private publishZigbeeCommands (mqttClient: IMqttClient) (logger: ILogger) (commands: ZigbeeCommand seq) =
let private publishZigbeeCommands (mqttClient: IMqttClient) (logger: ILogger) (commands: Message seq) =
async {
commands
|> Seq.iter (fun command ->
match command with
| Message(topic, payload) ->
logger.LogInformation("Publishing message {Payload} to topic {Topic}...", payload, topic))
logger.LogInformation("Publishing message {Payload} to topic {Topic}...", command.Payload, command.Topic))
return!
commands