import CoreUnitTypes import Logging import Foundation import Models import NIO import Psychrometrics public struct Client { /// Add the publish listeners to the MQTT Broker, to be notified of published changes. public var addListeners: () -> Void /// Connect to the MQTT Broker. public var connect: () -> EventLoopFuture public var publishSensor: (SensorPublishRequest) -> EventLoopFuture /// Subscribe to appropriate topics / events. public var subscribe: () -> EventLoopFuture /// Disconnect and close the connection to the MQTT Broker. public var shutdown: () -> EventLoopFuture public init( addListeners: @escaping () -> Void, connect: @escaping () -> EventLoopFuture, publishSensor: @escaping (SensorPublishRequest) -> EventLoopFuture, shutdown: @escaping () -> EventLoopFuture, subscribe: @escaping () -> EventLoopFuture ) { self.addListeners = addListeners self.connect = connect self.publishSensor = publishSensor self.shutdown = shutdown self.subscribe = subscribe } public enum SensorPublishRequest { case mixed(State.Sensors.TemperatureHumiditySensor) case postCoil(State.Sensors.TemperatureHumiditySensor) case `return`(State.Sensors.TemperatureHumiditySensor) case supply(State.Sensors.TemperatureHumiditySensor) } }