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 })); }
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"); }
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")); }
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)); }
public static string GetAttributesTopic(this HassMqttTopicBuilder topicBuilder, string deviceId, string entityId) { // <prefix>/<my_device>/<my_entity>/attributes return(topicBuilder.GetServiceTopic(deviceId, entityId, "attributes")); }