public HomeAssistantHub( IScheduler scheduler, string apiHostName, string apiToken, MqttClient mqtt, string homeTopic = DefaultHomeTopic, string hassTopic = DefaultTopic) { homeTopic = homeTopic.Trim('/', '#', '*'); hassTopic = hassTopic.Trim('/', '#', '*'); var api = new HomeAssistantHttpApi(apiHostName, apiToken); _mqttStateStream = new HomeAssistantDeviceHost(mqtt, hassTopic, api, scheduler); Devices = new HomeDevicesManager(_mqttStateStream); Scenes = new MqttSceneHost(mqtt, homeTopic, scheduler); Automations = new MqttAutomationHost(mqtt, homeTopic, scheduler); Api = api; _ws = new HomeAssistantWebSocketApi(new Uri($"ws://{apiHostName}"), apiToken); }
/// <summary> /// Creates a new instance /// </summary> /// <param name="mqtt">A client to an MQTT broker</param> /// <param name="baseTopic">The base topic used by the Home Assistant installation</param> /// <param name="scheduler">The scheduler that is used by devices which uses this host</param> public HomeAssistantDeviceHost(MqttClient mqtt, string baseTopic, HomeAssistantHttpApi api, IScheduler scheduler) : base(mqtt, device => GetId(device).ToMqttTopic(baseTopic), topic => topic.Values, scheduler) { _api = api; }