Пример #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);
        }
 /// <summary>
 /// Gets and observable sequence of the "ios.action_fired" event.
 /// </summary>
 /// <param name="wsApi">The Home-Assistant hub.</param>
 /// <returns>An observable sequence which produces a values each time the event ios.action_fired is raised by Home-Assistant.</returns>
 public static IObservable <Timestamped <IosAction> > ObserveIosActions(this HomeAssistantWebSocketApi wsApi)
 => wsApi.Observe("ios.action_fired").Select(evt => new Timestamped <IosAction>(evt.GetData <IosAction>(), evt.Time));