public override void Initialize() { RunDaily( "06:45:00", () => AskToSchedule()); RunDaily( "10:00:00", () => AskToVacuum()); RunDaily( "14:00:00", () => AskToVacuum()); Entity(Isa.PersonEntity) .StateChanges .Where( e => e.New?.State?.ToString().ToLower() == "just left") .Subscribe(s => VacuumOnSchedule()); Entity(Stefan.PersonEntity) .StateChanges .Where( e => e.New?.State?.ToString().ToLower() == "just left") .Subscribe(s => VacuumOnSchedule()); Entity(Stefan.PersonEntity) .StateChanges .Where( e => e.New?.State?.ToString().ToLower() == "just arrived") .Subscribe(s => DockVacuum()); EventChanges .Where(e => e.Event == IosEvent.EventType) .Subscribe(s => { ScheduleCleaning(s.Data); }); }
private IObservable <HomematicKeypressEvent> MapKeypressEvents() { return(EventChanges.Where(@event => @event.Event == "homematic.keypress") .Select(@event => new HomematicKeypressEvent( @event.Data?.name, (int)@event.Data?.channel, @event.Data?.param))); }
private void ChangeEvents(EventChanges changeType) { var change = (changeType == EventChanges.Attach && !EventsAttached) || (changeType == EventChanges.Detach && EventsAttached); if (change) { _eventManager.ForEach(e => { if (changeType == EventChanges.Detach) { e.Detach(); } else { e.Attach(); } }); } EventsAttached = changeType == EventChanges.Attach; }
private void InitHouseStateSceneManagement() { EventChanges .Where(e => e.Domain == "scene" && e.Event == "turn_on") .Subscribe(e => { var sceneEntityId = (string?)e.Data?.entity_id; var houseState = sceneEntityId switch { "scene.dag" => HouseState.Day, "scene.kvall" => HouseState.Evening, "scene.natt" => HouseState.Night, "scene.morgon" => HouseState.Morning, "scene.stadning" => HouseState.Cleaning, _ => HouseState.Unknown }; if (houseState != HouseState.Unknown) { SetHouseState(houseState); } }); }
public override void Initialize() { // 00:15:8d:00:02:69:e8:63 EventChanges .Where( e => e.Event == "deconz_event" && e.Data?.id == "tvrum_cube") .Subscribe(s => { if (s.Data?.gesture == null) { return; // Should have some logging here dooh } double gesture = s.Data?.gesture; switch (gesture) { case 1: // Shake Entity(RemoteTVRummet !).Toggle(); break; case 3: // Flip PlayPauseMedia(); break; case 7: // Turn clockwise VolumeUp(); break; case 8: // Turn counter clockwise VolumeDown(); break; } } ); }