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));