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);
        });
    }
Example #2
0
 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)));
 }
Example #3
0
        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;
        }
Example #4
0
    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);
            }
        });
    }
Example #5
0
    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;
            }
        }
                   );
    }