コード例 #1
0
        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);
        }
コード例 #2
0
 /// <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;
 }