public static MqttClientOptionsBuilder ConfigureHassConnectedEntityServiceLastWill(this MqttClientOptionsBuilder builder, IServiceProvider provider)
    {
        HassMqttTopicBuilder             topicBuilder = provider.GetRequiredService <HassMqttTopicBuilder>();
        HassConnectedEntityServiceConfig config       = provider.GetRequiredService <IOptions <HassConnectedEntityServiceConfig> >().Value;

        return(builder.WithWillMessage(new MqttApplicationMessage
        {
            Topic = topicBuilder.GetServiceTopic(config.DeviceId, config.EntityId, "state"),
            Payload = Encoding.UTF8.GetBytes(config.ProblemMessage),
            Retain = true
        }));
    }
Ejemplo n.º 2
0
 public HassMqttManager(IServiceProvider serviceProvider, IOptions <HassMqttManagerConfiguration> config, IManagedMqttClient mqttClient, HassMqttTopicBuilder topicBuilder, ILogger <HassMqttManager> logger)
 {
     _serviceProvider    = serviceProvider;
     _config             = config.Value;
     _mqttClient         = mqttClient;
     TopicBuilder        = topicBuilder;
     _logger             = logger;
     _discoveryDocuments = new ConcurrentDictionary <string, IDiscoveryDocumentBuilder>(StringComparer.OrdinalIgnoreCase);
     _values             = new ConcurrentDictionary <string, MqttStateValueTopic>(StringComparer.OrdinalIgnoreCase);
     _attributes         = new ConcurrentDictionary <string, MqttAttributesTopic>(StringComparer.OrdinalIgnoreCase);
     _removeTopics       = new ConcurrentBag <string>();
 }
        public HassConnectedEntityService(IOptions <HassConnectedEntityServiceConfig> options,
                                          IManagedMqttClient mqttClient,
                                          MqttEvents mqttEvents,
                                          HassMqttManager hassMqttManager,
                                          HassMqttTopicBuilder topicBuilder)
        {
            _config          = options.Value;
            _mqttClient      = mqttClient;
            _mqttEvents      = mqttEvents;
            _hassMqttManager = hassMqttManager;

            StateTopic = topicBuilder.GetServiceTopic(_config.DeviceId, _config.EntityId, "state");
        }
Ejemplo n.º 4
0
 public static string GetDiscoveryTopic <TEntity>(this HassMqttTopicBuilder topicBuilder, string deviceId, string entityId) where TEntity : IHassDiscoveryDocument
 {
     // homeassistant/<sensor>/<my_device>/<my_entity>/config
     return(topicBuilder.GetDiscoveryTopic(DiscoveryHelper.GetDeviceType <TEntity>().AsString(EnumFormat.EnumMemberValue), deviceId, entityId, "config"));
 }
Ejemplo n.º 5
0
 public static string GetEntityTopic(this HassMqttTopicBuilder topicBuilder, string deviceId, string entityId, string kind)
 {
     // <prefix>/<my_device>/<my_entity>/<kind>
     return(topicBuilder.GetServiceTopic(deviceId, entityId, kind));
 }
Ejemplo n.º 6
0
 public static string GetAttributesTopic(this HassMqttTopicBuilder topicBuilder, string deviceId, string entityId)
 {
     // <prefix>/<my_device>/<my_entity>/attributes
     return(topicBuilder.GetServiceTopic(deviceId, entityId, "attributes"));
 }