Пример #1
0
        public override void Setup()
        {
            var hsrel5 = CCToolsBoardController.CreateHSREL5(InstalledDevice.ReadingRoomHSREL5, new I2CSlaveAddress(62));
            var input2 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input2);

            var i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();

            const int SensorPin = 9;

            var room = Controller.CreateArea(Room.ReadingRoom)
                       .WithTemperatureSensor(ReadingRoom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(ReadingRoom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithLamp(ReadingRoom.LightCeilingMiddle, hsrel5.GetOutput(6).WithInvertedState())
                       .WithRollerShutter(ReadingRoom.RollerShutter, hsrel5[HSREL5Pin.Relay4], hsrel5[HSREL5Pin.Relay3])
                       .WithSocket(ReadingRoom.SocketWindow, hsrel5[HSREL5Pin.Relay0])
                       .WithSocket(ReadingRoom.SocketWallLeft, hsrel5[HSREL5Pin.Relay1])
                       .WithSocket(ReadingRoom.SocketWallRight, hsrel5[HSREL5Pin.Relay2])
                       .WithButton(ReadingRoom.Button, input2.GetInput(13))
                       .WithWindow(ReadingRoom.Window, w => w.WithCenterCasement(input2.GetInput(8))) // Tilt = input2.GetInput(9) -- currently broken!
                       .WithRollerShutterButtons(ReadingRoom.RollerShutterButtonUp, input2.GetInput(12), ReadingRoom.RollerShutterButtonDown, input2.GetInput(11));

            room.GetLamp(ReadingRoom.LightCeilingMiddle).ConnectToggleActionWith(room.GetButton(ReadingRoom.Button));

            room.SetupRollerShutterAutomation().WithRollerShutters(room.GetRollerShutter(ReadingRoom.RollerShutter));
            room.GetRollerShutter(ReadingRoom.RollerShutter)
            .ConnectWith(room.GetButton(ReadingRoom.RollerShutterButtonUp), room.GetButton(ReadingRoom.RollerShutterButtonDown));

            Controller.ServiceLocator.GetService <SynonymService>().AddSynonymsForArea(Room.ReadingRoom, "Lesezimmer", "Gästezimmer", "ReadingRoom");
        }
        public override void Setup()
        {
            var hsrel5 = CCToolsBoardController.CreateHSREL5(InstalledDevice.ChildrensRoomHSREL5, new I2CSlaveAddress(63));
            var input0 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input0);

            var i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();

            const int SensorPin = 7;

            var room = Controller.CreateArea(Room.ChildrensRoom)
                       .WithTemperatureSensor(ChildrensRoom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(ChildrensRoom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithLamp(ChildrensRoom.LightCeilingMiddle, hsrel5[HSREL5Pin.GPIO1].WithInvertedState())
                       .WithRollerShutter(ChildrensRoom.RollerShutter, hsrel5[HSREL5Pin.Relay4], hsrel5[HSREL5Pin.Relay3])
                       .WithSocket(ChildrensRoom.SocketWindow, hsrel5[HSREL5Pin.Relay0])
                       .WithSocket(ChildrensRoom.SocketWallLeft, hsrel5[HSREL5Pin.Relay1])
                       .WithSocket(ChildrensRoom.SocketWallRight, hsrel5[HSREL5Pin.Relay2])
                       .WithButton(ChildrensRoom.Button, input0.GetInput(0))
                       .WithWindow(ChildrensRoom.Window, w => w.WithCenterCasement(input0.GetInput(5), input0.GetInput(4)))
                       .WithRollerShutterButtons(ChildrensRoom.RollerShutterButtonUp, input0.GetInput(1), ChildrensRoom.RollerShutterButtonDown, input0.GetInput(2));

            room.GetLamp(ChildrensRoom.LightCeilingMiddle).ConnectToggleActionWith(room.GetButton(ChildrensRoom.Button));

            room.SetupRollerShutterAutomation().WithRollerShutters(room.GetRollerShutter(ChildrensRoom.RollerShutter));
            room.GetRollerShutter(ChildrensRoom.RollerShutter)
            .ConnectWith(room.GetButton(ChildrensRoom.RollerShutterButtonUp), room.GetButton(ChildrensRoom.RollerShutterButtonDown));

            Controller.ServiceLocator.GetService <SynonymService>().AddSynonymsForArea(Room.ChildrensRoom, "Kinderzimmer", "ChildrensRoom");
        }
Пример #3
0
        public void Setup(Controller controller, CCToolsBoardController ccToolsController)
        {
            var hsrel5 = ccToolsController.CreateHSREL5(Device.ChildrensRoomHSREL5, new I2CSlaveAddress(63));
            var input0 = controller.Device <HSPE16InputOnly>(Device.Input0);

            var i2cHardwareBridge = controller.Device <I2CHardwareBridge>();

            const int SensorPin = 7;

            var childrensRoom = controller.CreateArea(Room.ChildrensRoom)
                                .WithTemperatureSensor(ChildrensRoom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                                .WithHumiditySensor(ChildrensRoom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                                .WithLamp(ChildrensRoom.LightCeilingMiddle, hsrel5[HSREL5Pin.GPIO1].WithInvertedState())
                                .WithRollerShutter(ChildrensRoom.RollerShutter, hsrel5[HSREL5Pin.Relay4], hsrel5[HSREL5Pin.Relay3])
                                .WithSocket(ChildrensRoom.SocketWindow, hsrel5[HSREL5Pin.Relay0])
                                .WithSocket(ChildrensRoom.SocketWallLeft, hsrel5[HSREL5Pin.Relay1])
                                .WithSocket(ChildrensRoom.SocketWallRight, hsrel5[HSREL5Pin.Relay2])
                                .WithButton(ChildrensRoom.Button, input0.GetInput(0))
                                .WithWindow(ChildrensRoom.Window, w => w.WithCenterCasement(input0.GetInput(5), input0.GetInput(4)))
                                .WithRollerShutterButtons(ChildrensRoom.RollerShutterButtons, input0.GetInput(1), input0.GetInput(2));

            childrensRoom.Lamp(ChildrensRoom.LightCeilingMiddle).ConnectToggleActionWith(childrensRoom.Button(ChildrensRoom.Button));

            childrensRoom.SetupRollerShutterAutomation().WithRollerShutters(childrensRoom.RollerShutter(ChildrensRoom.RollerShutter));
            childrensRoom.RollerShutter(ChildrensRoom.RollerShutter)
            .ConnectWith(childrensRoom.RollerShutterButtons(ChildrensRoom.RollerShutterButtons));
        }
Пример #4
0
        public void Setup(Controller controller, CCToolsBoardController ccToolsController)
        {
            var hsrel5 = ccToolsController.CreateHSREL5(Device.ReadingRoomHSREL5, new I2CSlaveAddress(62));
            var input2 = controller.Device <HSPE16InputOnly>(Device.Input2);

            var i2cHardwareBridge = controller.Device <I2CHardwareBridge>();

            const int SensorPin = 9;

            var readingRoom = controller.CreateArea(Room.ReadingRoom)
                              .WithTemperatureSensor(ReadingRoom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                              .WithHumiditySensor(ReadingRoom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                              .WithLamp(ReadingRoom.LightCeilingMiddle, hsrel5.GetOutput(6).WithInvertedState())
                              .WithRollerShutter(ReadingRoom.RollerShutter, hsrel5[HSREL5Pin.Relay4], hsrel5[HSREL5Pin.Relay3])
                              .WithSocket(ReadingRoom.SocketWindow, hsrel5[HSREL5Pin.Relay0])
                              .WithSocket(ReadingRoom.SocketWallLeft, hsrel5[HSREL5Pin.Relay1])
                              .WithSocket(ReadingRoom.SocketWallRight, hsrel5[HSREL5Pin.Relay2])
                              .WithButton(ReadingRoom.Button, input2.GetInput(13))
                              .WithWindow(ReadingRoom.Window, w => w.WithCenterCasement(input2.GetInput(8))) // Tilt = input2.GetInput(9) -- currently broken!
                              .WithRollerShutterButtons(ReadingRoom.RollerShutterButtons, input2.GetInput(12), input2.GetInput(11));

            readingRoom.Lamp(ReadingRoom.LightCeilingMiddle).ConnectToggleActionWith(readingRoom.Button(ReadingRoom.Button));

            readingRoom.SetupRollerShutterAutomation().WithRollerShutters(readingRoom.RollerShutter(ReadingRoom.RollerShutter));
            readingRoom.RollerShutter(ReadingRoom.RollerShutter)
            .ConnectWith(readingRoom.RollerShutterButtons(ReadingRoom.RollerShutterButtons));
        }
Пример #5
0
        public override void Setup()
        {
            var hsrel5 = CCToolsBoardController.CreateHSREL5(InstalledDevice.KitchenHSREL5, new I2CSlaveAddress(58));
            var hspe8  = CCToolsBoardController.CreateHSPE8OutputOnly(InstalledDevice.KitchenHSPE8, new I2CSlaveAddress(39));

            var input0 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input0);
            var input1 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input1);
            var input2 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input2);

            var i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();

            const int SensorPin = 11;

            var room = Controller.CreateArea(Room.Kitchen)
                       .WithTemperatureSensor(Kitchen.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(Kitchen.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithMotionDetector(Kitchen.MotionDetector, input1.GetInput(8))
                       .WithLamp(Kitchen.LightCeilingMiddle, hsrel5.GetOutput(5).WithInvertedState())
                       .WithLamp(Kitchen.LightCeilingWindow, hsrel5.GetOutput(6).WithInvertedState())
                       .WithLamp(Kitchen.LightCeilingWall, hsrel5.GetOutput(7).WithInvertedState())
                       .WithLamp(Kitchen.LightCeilingDoor, hspe8.GetOutput(0).WithInvertedState())
                       .WithLamp(Kitchen.LightCeilingPassageInner, hspe8.GetOutput(1).WithInvertedState())
                       .WithLamp(Kitchen.LightCeilingPassageOuter, hspe8.GetOutput(2).WithInvertedState())
                       .WithSocket(Kitchen.SocketWall, hsrel5.GetOutput(2))
                       .WithRollerShutter(Kitchen.RollerShutter, hsrel5.GetOutput(4), hsrel5.GetOutput(3))
                       .WithButton(Kitchen.ButtonKitchenette, input1.GetInput(11))
                       .WithButton(Kitchen.ButtonPassage, input1.GetInput(9))
                       .WithRollerShutterButtons(Kitchen.RollerShutterButtonUp, input2.GetInput(15), Kitchen.RollerShutterButtonDown, input2.GetInput(14))
                       .WithWindow(Kitchen.Window, w => w.WithCenterCasement(input0.GetInput(6), input0.GetInput(7)));

            room.GetLamp(Kitchen.LightCeilingMiddle).ConnectToggleActionWith(room.GetButton(Kitchen.ButtonKitchenette));
            room.GetLamp(Kitchen.LightCeilingMiddle).ConnectToggleActionWith(room.GetButton(Kitchen.ButtonPassage));

            room.SetupRollerShutterAutomation().WithRollerShutters(room.GetRollerShutter(Kitchen.RollerShutter));

            room.GetRollerShutter(Kitchen.RollerShutter).ConnectWith(
                room.GetButton(Kitchen.RollerShutterButtonUp), room.GetButton(Kitchen.RollerShutterButtonDown));

            room.CombineActuators(Kitchen.CombinedAutomaticLights)
            .WithActuator(room.GetLamp(Kitchen.LightCeilingWall))
            .WithActuator(room.GetLamp(Kitchen.LightCeilingDoor))
            .WithActuator(room.GetLamp(Kitchen.LightCeilingWindow));

            room.SetupTurnOnAndOffAutomation()
            .WithTrigger(room.GetMotionDetector(Kitchen.MotionDetector))
            .WithTarget(room.GetActuator(Kitchen.CombinedAutomaticLights))
            .WithEnabledAtNight(Controller.GetService <IDaylightService>());

            Controller.GetService <SynonymService>().AddSynonymsForArea(Room.Kitchen, "Küche", "Kitchen");
        }
Пример #6
0
        public override void Setup()
        {
            var hsrel8 = CCToolsBoardController.CreateHSREL8(InstalledDevice.LivingRoomHSREL8, new I2CSlaveAddress(18));
            var hsrel5 = CCToolsBoardController.CreateHSREL5(InstalledDevice.LivingRoomHSREL5, new I2CSlaveAddress(57));

            var input0 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input0);
            var input1 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input1);

            var i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();

            const int SensorPin = 12;

            var room = Controller.CreateArea(Room.LivingRoom)
                       .WithTemperatureSensor(LivingRoom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(LivingRoom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithLamp(LivingRoom.LampCouch, hsrel8.GetOutput(8).WithInvertedState())
                       .WithLamp(LivingRoom.LampDiningTable, hsrel8.GetOutput(9).WithInvertedState())
                       .WithSocket(LivingRoom.SocketWindowLeftLower, hsrel8.GetOutput(1))
                       .WithSocket(LivingRoom.SocketWindowMiddleLower, hsrel8.GetOutput(2))
                       .WithSocket(LivingRoom.SocketWindowRightLower, hsrel8.GetOutput(3))
                       .WithSocket(LivingRoom.SocketWindowLeftUpper, hsrel8.GetOutput(5))
                       .WithSocket(LivingRoom.SocketWindowRightUpper, hsrel8.GetOutput(7))

                       .WithSocket(LivingRoom.SocketWallRightEdgeRight, hsrel8.GetOutput(4))

                       .WithSocket(LivingRoom.SocketWallLeftEdgeLeft, hsrel8.GetOutput(0))

                       .WithButton(LivingRoom.ButtonUpper, input0.GetInput(15))
                       .WithButton(LivingRoom.ButtonMiddle, input0.GetInput(14))
                       .WithButton(LivingRoom.ButtonLower, input0.GetInput(13))
                       .WithButton(LivingRoom.ButtonPassage, input1.GetInput(10))
                       .WithWindow(LivingRoom.WindowLeft,
                                   w => w.WithLeftCasement(input0.GetInput(10), input0.GetInput(11)).WithRightCasement(input0.GetInput(9), input0.GetInput(8)))
                       .WithWindow(LivingRoom.WindowRight,
                                   w => w.WithLeftCasement(input1.GetInput(14), input1.GetInput(15)).WithRightCasement(input1.GetInput(13), input1.GetInput(12)));

            room.GetLamp(LivingRoom.LampDiningTable)
            .ConnectToggleActionWith(room.GetButton(LivingRoom.ButtonUpper))
            .ConnectToggleActionWith(room.GetButton(LivingRoom.ButtonPassage));

            room.GetLamp(LivingRoom.LampCouch).
            ConnectToggleActionWith(room.GetButton(LivingRoom.ButtonMiddle));

            room.Socket(LivingRoom.SocketWallRightEdgeRight).
            ConnectToggleActionWith(room.GetButton(LivingRoom.ButtonLower));

            Controller.ServiceLocator.GetService <SynonymService>().AddSynonymsForArea(Room.LivingRoom, "Wohnzimmer", "LivingRoom");
        }
        public UpperBathroomConfiguration(Controller controller, CCToolsBoardController ccToolsController)
        {
            if (controller == null)
            {
                throw new ArgumentNullException(nameof(controller));
            }
            if (ccToolsController == null)
            {
                throw new ArgumentNullException(nameof(ccToolsController));
            }

            _controller = controller;

            _hsrel5 = ccToolsController.CreateHSREL5(Device.UpperBathroomHSREL5, new I2CSlaveAddress(61));
            _input5 = controller.Device <HSPE16InputOnly>(Device.Input5);
        }
        public void Setup(Controller controller, CCToolsBoardController ccToolsController)
        {
            var hsrel5 = ccToolsController.CreateHSREL5(Device.KitchenHSREL5, new I2CSlaveAddress(58));
            var hspe8  = ccToolsController.CreateHSPE8OutputOnly(Device.KitchenHSPE8, new I2CSlaveAddress(39));

            var input0 = controller.Device <HSPE16InputOnly>(Device.Input0);
            var input1 = controller.Device <HSPE16InputOnly>(Device.Input1);
            var input2 = controller.Device <HSPE16InputOnly>(Device.Input2);

            var i2cHardwareBridge = controller.Device <I2CHardwareBridge>();

            const int SensorPin = 11;

            var kitchen = controller.CreateArea(Room.Kitchen)
                          .WithTemperatureSensor(Kitchen.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                          .WithHumiditySensor(Kitchen.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                          .WithMotionDetector(Kitchen.MotionDetector, input1.GetInput(8))
                          .WithLamp(Kitchen.LightCeilingMiddle, hsrel5.GetOutput(5).WithInvertedState())
                          .WithLamp(Kitchen.LightCeilingWindow, hsrel5.GetOutput(6).WithInvertedState())
                          .WithLamp(Kitchen.LightCeilingWall, hsrel5.GetOutput(7).WithInvertedState())
                          .WithLamp(Kitchen.LightCeilingDoor, hspe8.GetOutput(0).WithInvertedState())
                          .WithLamp(Kitchen.LightCeilingPassageInner, hspe8.GetOutput(1).WithInvertedState())
                          .WithLamp(Kitchen.LightCeilingPassageOuter, hspe8.GetOutput(2).WithInvertedState())
                          .WithSocket(Kitchen.SocketWall, hsrel5.GetOutput(2))
                          .WithRollerShutter(Kitchen.RollerShutter, hsrel5.GetOutput(4), hsrel5.GetOutput(3))
                          .WithButton(Kitchen.ButtonKitchenette, input1.GetInput(11))
                          .WithButton(Kitchen.ButtonPassage, input1.GetInput(9))
                          .WithRollerShutterButtons(Kitchen.RollerShutterButtons, input2.GetInput(15), input2.GetInput(14))
                          .WithWindow(Kitchen.Window, w => w.WithCenterCasement(input0.GetInput(6), input0.GetInput(7)));

            kitchen.Lamp(Kitchen.LightCeilingMiddle).ConnectToggleActionWith(kitchen.Button(Kitchen.ButtonKitchenette));
            kitchen.Lamp(Kitchen.LightCeilingMiddle).ConnectToggleActionWith(kitchen.Button(Kitchen.ButtonPassage));

            kitchen.SetupRollerShutterAutomation().WithRollerShutters(kitchen.RollerShutter(Kitchen.RollerShutter));
            kitchen.RollerShutter(Kitchen.RollerShutter).ConnectWith(kitchen.RollerShutterButtons(Kitchen.RollerShutterButtons));

            kitchen.CombineActuators(Kitchen.CombinedAutomaticLights)
            .WithActuator(kitchen.Lamp(Kitchen.LightCeilingWall))
            .WithActuator(kitchen.Lamp(Kitchen.LightCeilingDoor))
            .WithActuator(kitchen.Lamp(Kitchen.LightCeilingWindow));

            kitchen.SetupTurnOnAndOffAutomation()
            .WithTrigger(kitchen.MotionDetector(Kitchen.MotionDetector))
            .WithTarget(kitchen.BinaryStateOutput(Kitchen.CombinedAutomaticLights))
            .WithEnabledAtNight(controller.Device <IWeatherStation>());
        }
        public void Setup(Controller controller, CCToolsBoardController ccToolsController)
        {
            var hsrel8 = ccToolsController.CreateHSREL8(Device.LivingRoomHSREL8, new I2CSlaveAddress(18));
            var hsrel5 = ccToolsController.CreateHSREL5(Device.LivingRoomHSREL5, new I2CSlaveAddress(57));

            var input0 = controller.Device <HSPE16InputOnly>(Device.Input0);
            var input1 = controller.Device <HSPE16InputOnly>(Device.Input1);

            var i2cHardwareBridge = controller.Device <I2CHardwareBridge>();

            const int SensorPin = 12;

            var livingRoom = controller.CreateArea(Room.LivingRoom)
                             .WithTemperatureSensor(LivingRoom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                             .WithHumiditySensor(LivingRoom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                             .WithLamp(LivingRoom.LampCouch, hsrel8.GetOutput(8).WithInvertedState())
                             .WithLamp(LivingRoom.LampDiningTable, hsrel8.GetOutput(9).WithInvertedState())
                             .WithSocket(LivingRoom.SocketWindowLeftLower, hsrel8.GetOutput(1))
                             .WithSocket(LivingRoom.SocketWindowMiddleLower, hsrel8.GetOutput(2))
                             .WithSocket(LivingRoom.SocketWindowRightLower, hsrel8.GetOutput(3))
                             .WithSocket(LivingRoom.SocketWindowLeftUpper, hsrel8.GetOutput(5))
                             .WithSocket(LivingRoom.SocketWindowRightUpper, hsrel8.GetOutput(7))

                             .WithSocket(LivingRoom.SocketWallRightEdgeRight, hsrel8.GetOutput(4))

                             .WithSocket(LivingRoom.SocketWallLeftEdgeLeft, hsrel8.GetOutput(0))

                             .WithButton(LivingRoom.ButtonUpper, input0.GetInput(15))
                             .WithButton(LivingRoom.ButtonMiddle, input0.GetInput(14))
                             .WithButton(LivingRoom.ButtonLower, input0.GetInput(13))
                             .WithButton(LivingRoom.ButtonPassage, input1.GetInput(10))
                             .WithWindow(LivingRoom.WindowLeft,
                                         w => w.WithLeftCasement(input0.GetInput(10), input0.GetInput(11)).WithRightCasement(input0.GetInput(9), input0.GetInput(8)))
                             .WithWindow(LivingRoom.WindowRight,
                                         w => w.WithLeftCasement(input1.GetInput(14), input1.GetInput(15)).WithRightCasement(input1.GetInput(13), input1.GetInput(12)));

            livingRoom.Lamp(LivingRoom.LampDiningTable)
            .ConnectToggleActionWith(livingRoom.Button(LivingRoom.ButtonUpper))
            .ConnectToggleActionWith(livingRoom.Button(LivingRoom.ButtonPassage));

            livingRoom.Lamp(LivingRoom.LampCouch).
            ConnectToggleActionWith(livingRoom.Button(LivingRoom.ButtonMiddle));

            livingRoom.Socket(LivingRoom.SocketWallRightEdgeRight).
            ConnectToggleActionWith(livingRoom.Button(LivingRoom.ButtonLower));
        }
Пример #10
0
        public override void Setup()
        {
            var hsrel8LowerHeatingValves = CCToolsBoardController.CreateHSREL8(InstalledDevice.LowerHeatingValvesHSREL8, new I2CSlaveAddress(16));
            var hsrel5UpperHeatingValves = CCToolsBoardController.CreateHSREL5(InstalledDevice.UpperHeatingValvesHSREL5, new I2CSlaveAddress(56));

            var hsrel5Stairway = Controller.Device <HSREL5>(InstalledDevice.StairwayHSREL5);
            var input3         = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input3);

            var storeroom = Controller.CreateArea(Room.Storeroom)
                            .WithMotionDetector(Storeroom.MotionDetector, input3.GetInput(12))
                            .WithMotionDetector(Storeroom.MotionDetectorCatLitterBox, input3.GetInput(11).WithInvertedState())
                            .WithLamp(Storeroom.LightCeiling, hsrel5Stairway.GetOutput(7).WithInvertedState())
                            .WithSocket(Storeroom.CatLitterBoxFan, hsrel8LowerHeatingValves.GetOutput(15));

            storeroom.SetupTurnOnAndOffAutomation()
            .WithTrigger(storeroom.GetMotionDetector(Storeroom.MotionDetector))
            .WithTarget(storeroom.GetLamp(Storeroom.LightCeiling))
            .WithOnDuration(TimeSpan.FromMinutes(1));

            storeroom.SetupTurnOnAndOffAutomation()
            .WithTrigger(storeroom.GetMotionDetector(Storeroom.MotionDetectorCatLitterBox))
            .WithTarget(storeroom.Socket(Storeroom.CatLitterBoxFan))
            .WithOnDuration(TimeSpan.FromMinutes(2));

            storeroom.WithSocket(Storeroom.CirculatingPump, hsrel5UpperHeatingValves.GetOutput(3));

            // TODO: Create RoomIdFactory like ActuatorIdFactory.
            storeroom.SetupTurnOnAndOffAutomation()
            .WithTrigger(Controller.GetArea(new AreaId(Room.Kitchen.ToString())).GetMotionDetector(KitchenConfiguration.Kitchen.MotionDetector))
            .WithTrigger(Controller.GetArea(new AreaId(Room.LowerBathroom.ToString())).GetMotionDetector(LowerBathroomConfiguration.LowerBathroom.MotionDetector))
            .WithTarget(storeroom.Socket(Storeroom.CirculatingPump))
            .WithPauseAfterEveryTurnOn(TimeSpan.FromHours(1))
            .WithOnDuration(TimeSpan.FromMinutes(1))
            .WithEnabledAtDay(Controller.GetService <IDaylightService>());

            _catLitterBoxTwitterSender =
                new CatLitterBoxTwitterSender(Controller.Timer).WithTrigger(
                    storeroom.GetMotionDetector(Storeroom.MotionDetectorCatLitterBox));

            Controller.GetService <SynonymService>().AddSynonymsForArea(Room.Storeroom, "Abstellkammer", "Storeroom");
        }
        public override void Setup()
        {
            var hsrel5 = CCToolsBoardController.CreateHSREL5(InstalledDevice.UpperBathroomHSREL5, new I2CSlaveAddress(61));
            var input5 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input5);

            const int SensorPin = 4;

            var i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();

            var room = Controller.CreateArea(Room.UpperBathroom)
                       .WithTemperatureSensor(UpperBathroom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(UpperBathroom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithMotionDetector(UpperBathroom.MotionDetector, input5.GetInput(15))
                       .WithLamp(UpperBathroom.LightCeilingDoor, hsrel5.GetOutput(0))
                       .WithLamp(UpperBathroom.LightCeilingEdge, hsrel5.GetOutput(1))
                       .WithLamp(UpperBathroom.LightCeilingMirrorCabinet, hsrel5.GetOutput(2))
                       .WithLamp(UpperBathroom.LampMirrorCabinet, hsrel5.GetOutput(3))
                       .WithStateMachine(UpperBathroom.Fan, (s, r) => SetupFan(s, r, hsrel5));

            var combinedLights =
                room.CombineActuators(UpperBathroom.CombinedCeilingLights)
                .WithActuator(room.GetLamp(UpperBathroom.LightCeilingDoor))
                .WithActuator(room.GetLamp(UpperBathroom.LightCeilingEdge))
                .WithActuator(room.GetLamp(UpperBathroom.LightCeilingMirrorCabinet))
                .WithActuator(room.GetLamp(UpperBathroom.LampMirrorCabinet));

            room.SetupTurnOnAndOffAutomation()
            .WithTrigger(room.GetMotionDetector(UpperBathroom.MotionDetector))
            .WithTarget(combinedLights)
            .WithOnDuration(TimeSpan.FromMinutes(8));

            new BathroomFanAutomation(AutomationIdFactory.CreateIdFrom <BathroomFanAutomation>(room), Controller.Timer)
            .WithTrigger(room.GetMotionDetector(UpperBathroom.MotionDetector))
            .WithSlowDuration(TimeSpan.FromMinutes(8))
            .WithFastDuration(TimeSpan.FromMinutes(12))
            .WithActuator(room.GetStateMachine(UpperBathroom.Fan));

            Controller.GetService <SynonymService>().AddSynonymsForArea(Room.UpperBathroom, "BadOben", "UpperBathroom");
        }
Пример #12
0
        public override void Setup()
        {
            var hsrel5 = CCToolsBoardController.CreateHSREL5(InstalledDevice.BedroomHSREL5, new I2CSlaveAddress(38));
            var hsrel8 = CCToolsBoardController.CreateHSREL8(InstalledDevice.BedroomHSREL8, new I2CSlaveAddress(21));
            var input5 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input5);
            var input4 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input4);

            var       i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();
            const int SensorPin         = 6;

            var room = Controller.CreateArea(Room.Bedroom)
                       .WithTemperatureSensor(Bedroom.TemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(Bedroom.HumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithMotionDetector(Bedroom.MotionDetector, input5.GetInput(12))
                       .WithLamp(Bedroom.LightCeiling, hsrel5.GetOutput(5).WithInvertedState())
                       .WithLamp(Bedroom.LightCeilingWindow, hsrel5.GetOutput(6).WithInvertedState())
                       .WithLamp(Bedroom.LightCeilingWall, hsrel5.GetOutput(7).WithInvertedState())
                       .WithSocket(Bedroom.SocketWindowLeft, hsrel5.GetOutput(0))
                       .WithSocket(Bedroom.SocketWindowRight, hsrel5.GetOutput(1))
                       .WithSocket(Bedroom.SocketWall, hsrel5.GetOutput(2))
                       .WithSocket(Bedroom.SocketWallEdge, hsrel5.GetOutput(3))
                       .WithSocket(Bedroom.SocketBedLeft, hsrel8.GetOutput(7))
                       .WithSocket(Bedroom.SocketBedRight, hsrel8.GetOutput(9))
                       .WithLamp(Bedroom.LampBedLeft, hsrel5.GetOutput(4))
                       .WithLamp(Bedroom.LampBedRight, hsrel8.GetOutput(8).WithInvertedState())
                       .WithButton(Bedroom.ButtonDoor, input5.GetInput(11))
                       .WithButton(Bedroom.ButtonWindowUpper, input5.GetInput(10))
                       .WithButton(Bedroom.ButtonWindowLower, input5.GetInput(13))
                       .WithButton(Bedroom.ButtonBedLeftInner, input4.GetInput(2))
                       .WithButton(Bedroom.ButtonBedLeftOuter, input4.GetInput(0))
                       .WithButton(Bedroom.ButtonBedRightInner, input4.GetInput(1))
                       .WithButton(Bedroom.ButtonBedRightOuter, input4.GetInput(3))
                       .WithRollerShutter(Bedroom.RollerShutterLeft, hsrel8.GetOutput(6), hsrel8.GetOutput(5))
                       .WithRollerShutter(Bedroom.RollerShutterRight, hsrel8.GetOutput(3), hsrel8.GetOutput(4))
                       .WithRollerShutterButtons(Bedroom.RollerShutterButtonsUpperUp, input5.GetInput(6), Bedroom.RollerShutterButtonsUpperDown, input5.GetInput(7))
                       .WithRollerShutterButtons(Bedroom.RollerShutterButtonsLowerUp, input5.GetInput(4), Bedroom.RollerShutterButtonsLowerDown, input5.GetInput(5))
                       .WithWindow(Bedroom.WindowLeft, w => w.WithCenterCasement(input5.GetInput(2)))
                       .WithWindow(Bedroom.WindowRight, w => w.WithCenterCasement(input5.GetInput(3)));

            room.GetRollerShutter(Bedroom.RollerShutterLeft)
            .ConnectWith(room.GetButton(Bedroom.RollerShutterButtonsUpperUp), room.GetButton(Bedroom.RollerShutterButtonsUpperDown));

            room.GetRollerShutter(Bedroom.RollerShutterRight)
            .ConnectWith(room.GetButton(Bedroom.RollerShutterButtonsLowerUp), room.GetButton(Bedroom.RollerShutterButtonsLowerDown));

            room.CombineActuators(Bedroom.CombinedCeilingLights)
            .WithActuator(room.GetLamp(Bedroom.LightCeilingWall))
            .WithActuator(room.GetLamp(Bedroom.LightCeilingWindow))
            .ConnectToggleActionWith(room.GetButton(Bedroom.ButtonDoor))
            .ConnectToggleActionWith(room.GetButton(Bedroom.ButtonWindowUpper));

            room.GetButton(Bedroom.ButtonDoor).GetPressedLongTrigger().Attach(() =>
            {
                room.GetStateMachine(Bedroom.LampBedLeft).TryTurnOff();
                room.GetStateMachine(Bedroom.LampBedRight).TryTurnOff();
                room.GetStateMachine(Bedroom.CombinedCeilingLights).TryTurnOff();
            });

            room.SetupRollerShutterAutomation()
            .WithRollerShutters(room.GetRollerShutters())
            .WithDoNotOpenBefore(TimeSpan.FromHours(7).Add(TimeSpan.FromMinutes(15)))
            .WithCloseIfOutsideTemperatureIsGreaterThan(24)
            .WithDoNotOpenIfOutsideTemperatureIsBelowThan(3);

            room.SetupTurnOnAndOffAutomation()
            .WithTrigger(room.GetMotionDetector(Bedroom.MotionDetector))
            .WithTarget(room.GetStateMachine(Bedroom.LightCeiling))
            .WithOnDuration(TimeSpan.FromSeconds(15))
            .WithTurnOnIfAllRollerShuttersClosed(room.GetRollerShutter(Bedroom.RollerShutterLeft), room.GetRollerShutter(Bedroom.RollerShutterRight))
            .WithEnabledAtNight(Controller.ServiceLocator.GetService <IDaylightService>())
            .WithSkipIfAnyActuatorIsAlreadyOn(room.GetLamp(Bedroom.LampBedLeft), room.GetLamp(Bedroom.LampBedRight));

            room.WithStateMachine(Bedroom.Fan, (s, r) => SetupFan(s, r, hsrel8));

            room.GetButton(Bedroom.ButtonBedLeftInner).WithPressedShortlyAction(() => room.GetLamp(Bedroom.LampBedLeft).SetNextState());
            room.GetButton(Bedroom.ButtonBedLeftInner).WithPressedLongAction(() => room.GetStateMachine(Bedroom.CombinedCeilingLights).SetNextState());
            room.GetButton(Bedroom.ButtonBedLeftOuter).WithPressedShortlyAction(() => room.GetStateMachine(Bedroom.Fan).SetNextState());
            room.GetButton(Bedroom.ButtonBedLeftOuter).WithPressedLongAction(() => room.GetStateMachine(Bedroom.Fan).TryTurnOff());

            room.GetButton(Bedroom.ButtonBedRightInner).WithPressedShortlyAction(() => room.GetLamp(Bedroom.LampBedRight).SetNextState());
            room.GetButton(Bedroom.ButtonBedRightInner).WithPressedLongAction(() => room.GetStateMachine(Bedroom.CombinedCeilingLights).SetNextState());
            room.GetButton(Bedroom.ButtonBedRightOuter).WithPressedShortlyAction(() => room.GetStateMachine(Bedroom.Fan).SetNextState());
            room.GetButton(Bedroom.ButtonBedRightOuter).WithPressedLongAction(() => room.GetStateMachine(Bedroom.Fan).TryTurnOff());

            Controller.ServiceLocator.GetService <SynonymService>().AddSynonymsForArea(Room.Bedroom, "Schlafzimmer", "Bedroom");
        }
        public void Setup(Controller controller, CCToolsBoardController ccToolsController)
        {
            var hsrel5Stairway              = ccToolsController.CreateHSREL5(Device.StairwayHSREL5, new I2CSlaveAddress(60));
            var hspe8UpperFloor             = controller.Device <HSPE8OutputOnly>(Device.UpperFloorAndOfficeHSPE8);
            var hspe16FloorAndLowerBathroom = ccToolsController.CreateHSPE16OutputOnly(Device.LowerFloorAndLowerBathroomHSPE16, new I2CSlaveAddress(17));

            var input1 = controller.Device <HSPE16InputOnly>(Device.Input1);
            var input2 = controller.Device <HSPE16InputOnly>(Device.Input2);
            var input4 = controller.Device <HSPE16InputOnly>(Device.Input4);

            var i2cHardwareBridge = controller.Device <I2CHardwareBridge>();

            const int SensorPin = 5;

            var floor = controller.CreateArea(Room.Floor)
                        .WithMotionDetector(Floor.StairwayMotionDetector, input2.GetInput(1))
                        .WithMotionDetector(Floor.StairsLowerMotionDetector, input4.GetInput(7))
                        .WithMotionDetector(Floor.StairsUpperMotionDetector, input4.GetInput(6))
                        .WithMotionDetector(Floor.LowerFloorMotionDetector, input1.GetInput(4))
                        .WithTemperatureSensor(Floor.LowerFloorTemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                        .WithHumiditySensor(Floor.LowerFloorHumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                        .WithLamp(Floor.Lamp1, hspe16FloorAndLowerBathroom.GetOutput(5).WithInvertedState())
                        .WithLamp(Floor.Lamp2, hspe16FloorAndLowerBathroom.GetOutput(6).WithInvertedState())
                        .WithLamp(Floor.Lamp3, hspe16FloorAndLowerBathroom.GetOutput(7).WithInvertedState())
                        .WithLamp(Floor.StairwayLampCeiling, hsrel5Stairway.GetOutput(0))
                        .WithLamp(Floor.StairwayLampWall, hsrel5Stairway.GetOutput(1))
                        .WithRollerShutter(Floor.StairwayRollerShutter, hsrel5Stairway.GetOutput(4), hsrel5Stairway.GetOutput(3))
                        .WithButton(Floor.ButtonLowerFloorUpper, input1.GetInput(0))
                        .WithButton(Floor.ButtonLowerFloorLower, input1.GetInput(5))
                        .WithButton(Floor.ButtonLowerFloorAtBathroom, input1.GetInput(1))
                        .WithButton(Floor.ButtonLowerFloorAtKitchen, input1.GetInput(3))
                        .WithButton(Floor.ButtonStairsLowerUpper, input4.GetInput(5))
                        .WithButton(Floor.ButtonStairsLowerLower, input1.GetInput(2))
                        .WithButton(Floor.ButtonStairsUpper, input4.GetInput(4))
                        .WithButton(Floor.ButtonStairway, input1.GetInput(6));

            floor.CombineActuators(Floor.CombinedStairwayLamp)
            .WithActuator(floor.Lamp(Floor.StairwayLampCeiling))
            .WithActuator(floor.Lamp(Floor.StairwayLampWall));

            floor.SetupTurnOnAndOffAutomation()
            .WithTrigger(floor.MotionDetector(Floor.StairwayMotionDetector))
            .WithTrigger(floor.Button(Floor.ButtonStairway).GetPressedShortlyTrigger())
            .WithTarget(floor.BinaryStateOutput(Floor.CombinedStairwayLamp))
            .WithEnabledAtNight(controller.Device <IWeatherStation>())
            .WithOnDuration(TimeSpan.FromSeconds(30));

            floor.CombineActuators(Floor.CombinedLamps)
            .WithActuator(floor.Lamp(Floor.Lamp1))
            .WithActuator(floor.Lamp(Floor.Lamp2))
            .WithActuator(floor.Lamp(Floor.Lamp3));

            floor.SetupTurnOnAndOffAutomation()
            .WithTrigger(floor.MotionDetector(Floor.LowerFloorMotionDetector))
            .WithTrigger(floor.Button(Floor.ButtonLowerFloorUpper).GetPressedShortlyTrigger())
            .WithTrigger(floor.Button(Floor.ButtonLowerFloorAtBathroom).GetPressedShortlyTrigger())
            .WithTrigger(floor.Button(Floor.ButtonLowerFloorAtKitchen).GetPressedShortlyTrigger())
            .WithTarget(floor.BinaryStateOutput(Floor.CombinedLamps))
            .WithEnabledAtNight(controller.Device <IWeatherStation>())
            .WithTurnOffIfButtonPressedWhileAlreadyOn()
            .WithOnDuration(TimeSpan.FromSeconds(20));

            SetupStairsCeilingLamps(floor, hspe8UpperFloor);
            SetupStairsLamps(floor, controller.Device <IWeatherStation>(), hspe16FloorAndLowerBathroom);

            floor.SetupRollerShutterAutomation().WithRollerShutters(floor.RollerShutter(Floor.StairwayRollerShutter));
        }
Пример #14
0
        public override void Setup()
        {
            var hsrel5Stairway              = CCToolsBoardController.CreateHSREL5(InstalledDevice.StairwayHSREL5, new I2CSlaveAddress(60));
            var hspe8UpperFloor             = Controller.Device <HSPE8OutputOnly>(InstalledDevice.UpperFloorAndOfficeHSPE8);
            var hspe16FloorAndLowerBathroom = CCToolsBoardController.CreateHSPE16OutputOnly(InstalledDevice.LowerFloorAndLowerBathroomHSPE16, new I2CSlaveAddress(17));

            var input1 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input1);
            var input2 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input2);
            var input4 = Controller.Device <HSPE16InputOnly>(InstalledDevice.Input4);

            var i2cHardwareBridge = Controller.GetDevice <I2CHardwareBridge>();

            const int SensorPin = 5;

            var room = Controller.CreateArea(Room.Floor)
                       .WithMotionDetector(Floor.StairwayMotionDetector, input2.GetInput(1))
                       .WithMotionDetector(Floor.StairsLowerMotionDetector, input4.GetInput(7))
                       .WithMotionDetector(Floor.StairsUpperMotionDetector, input4.GetInput(6))
                       .WithMotionDetector(Floor.LowerFloorMotionDetector, input1.GetInput(4))
                       .WithTemperatureSensor(Floor.LowerFloorTemperatureSensor, i2cHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin))
                       .WithHumiditySensor(Floor.LowerFloorHumiditySensor, i2cHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin))
                       .WithLamp(Floor.Lamp1, hspe16FloorAndLowerBathroom.GetOutput(5).WithInvertedState())
                       .WithLamp(Floor.Lamp2, hspe16FloorAndLowerBathroom.GetOutput(6).WithInvertedState())
                       .WithLamp(Floor.Lamp3, hspe16FloorAndLowerBathroom.GetOutput(7).WithInvertedState())
                       .WithLamp(Floor.StairwayLampCeiling, hsrel5Stairway.GetOutput(0))
                       .WithLamp(Floor.StairwayLampWall, hsrel5Stairway.GetOutput(1))
                       .WithRollerShutter(Floor.StairwayRollerShutter, hsrel5Stairway.GetOutput(4), hsrel5Stairway.GetOutput(3))
                       .WithButton(Floor.ButtonLowerFloorUpper, input1.GetInput(0))
                       .WithButton(Floor.ButtonLowerFloorLower, input1.GetInput(5))
                       .WithButton(Floor.ButtonLowerFloorAtBathroom, input1.GetInput(1))
                       .WithButton(Floor.ButtonLowerFloorAtKitchen, input1.GetInput(3))
                       .WithButton(Floor.ButtonStairsLowerUpper, input4.GetInput(5))
                       .WithButton(Floor.ButtonStairsLowerLower, input1.GetInput(2))
                       .WithButton(Floor.ButtonStairsUpper, input4.GetInput(4))
                       .WithButton(Floor.ButtonStairway, input1.GetInput(6));

            room.CombineActuators(Floor.CombinedStairwayLamp)
            .WithActuator(room.GetLamp(Floor.StairwayLampCeiling))
            .WithActuator(room.GetLamp(Floor.StairwayLampWall));

            SetupStairwayLamps(room);

            room.CombineActuators(Floor.CombinedLamps)
            .WithActuator(room.GetLamp(Floor.Lamp1))
            .WithActuator(room.GetLamp(Floor.Lamp2))
            .WithActuator(room.GetLamp(Floor.Lamp3));

            room.SetupTurnOnAndOffAutomation()
            .WithTrigger(room.GetMotionDetector(Floor.LowerFloorMotionDetector))
            .WithTrigger(room.GetButton(Floor.ButtonLowerFloorUpper).GetPressedShortlyTrigger())
            .WithTrigger(room.GetButton(Floor.ButtonLowerFloorAtBathroom).GetPressedShortlyTrigger())
            .WithTrigger(room.GetButton(Floor.ButtonLowerFloorAtKitchen).GetPressedShortlyTrigger())
            .WithTarget(room.GetActuator(Floor.CombinedLamps))
            .WithEnabledAtNight(Controller.ServiceLocator.GetService <IDaylightService>())
            .WithTurnOffIfButtonPressedWhileAlreadyOn()
            .WithOnDuration(TimeSpan.FromSeconds(20));

            SetupStairsCeilingLamps(room, hspe8UpperFloor);
            SetupStairsLamps(room, hspe16FloorAndLowerBathroom);

            room.SetupRollerShutterAutomation().WithRollerShutters(room.GetRollerShutter(Floor.StairwayRollerShutter));

            Controller.ServiceLocator.GetService <SynonymService>().AddSynonymsForArea(Room.Floor, "Flur", "Floor");
        }
Пример #15
0
        protected override void Initialize()
        {
            // Setup the health monitor which tracks the average time and let an LED blink if everything is healthy.
            InitializeHealthMonitor(LedGpio);

            // Setup the controller which provides ports from the GPIOs of the Pi2.
            var pi2PortController = new Pi2PortController();

            // Setup the wrapper for I2C bus access.
            var i2CBus = new BuiltInI2CBus(Logger);

            // Setup the controller which creates ports for IO boards from CCTools (or based on PCF8574/MAX7311/PCA9555D).
            var ccToolsBoardController = new CCToolsBoardController(this, i2CBus, HttpApiController, Logger);
            var hspe16 = ccToolsBoardController.CreateHSPE16InputOnly(InstalledDevice.HSPE16, new I2CSlaveAddress(41));
            var hsrel8 = ccToolsBoardController.CreateHSREL8(InstalledDevice.HSRel8, new I2CSlaveAddress(40));
            var hsrel5 = ccToolsBoardController.CreateHSREL5(InstalledDevice.HSRel5, new I2CSlaveAddress(56));

            // Setup the remote switch 433Mhz sender which is attached to the I2C bus (Arduino Nano).
            var i2CHardwareBridge  = new I2CHardwareBridge(new DeviceId("HB"), new I2CSlaveAddress(50), i2CBus, Timer);
            var remoteSwitchSender = new LPD433MHzSignalSender(i2CHardwareBridge, I2CHardwareBridge433MHzSenderPin, HttpApiController);

            // Setup the controller which creates ports for wireless sockets (433Mhz).
            var ic = new IntertechnoCodeSequenceProvider();
            var remoteSwitchController = new RemoteSocketController(new DeviceId("RemoteSocketController"), remoteSwitchSender, Timer)
                                         .WithRemoteSocket(0, ic.GetSequence(IntertechnoSystemCode.A, IntertechnoUnitCode.Unit1, RemoteSocketCommand.TurnOn), ic.GetSequence(IntertechnoSystemCode.A, IntertechnoUnitCode.Unit1, RemoteSocketCommand.TurnOff));

            // Setup the weather station which provides sunrise and sunset information.
            AddDevice(new OpenWeatherMapWeatherStation(OpenWeatherMapWeatherStation.DefaultDeviceId, Timer, HttpApiController, Logger));

            // Add the example area with the example actuators.
            var area = this.CreateArea(Room.ExampleRoom)
                       .WithTemperatureSensor(ExampleRoom.TemperatureSensor, i2CHardwareBridge.DHT22Accessor.GetTemperatureSensor(5))
                       .WithHumiditySensor(ExampleRoom.HumiditySensor, i2CHardwareBridge.DHT22Accessor.GetHumiditySensor(5))
                       .WithMotionDetector(ExampleRoom.MotionDetector, hspe16.GetInput(8))
                       .WithWindow(ExampleRoom.Window, w => w.WithCenterCasement(hspe16.GetInput(0)))
                       .WithLamp(ExampleRoom.Lamp1, remoteSwitchController.GetOutput(0))
                       .WithSocket(ExampleRoom.Socket1, hsrel5.GetOutput(0))
                       .WithSocket(ExampleRoom.Socket2, hsrel5.GetOutput(4))
                       .WithSocket(ExampleRoom.BathroomFan, hsrel5.GetOutput(3))
                       .WithLamp(ExampleRoom.Lamp2, hsrel8.GetOutput(0))
                       .WithLamp(ExampleRoom.Lamp3, hsrel8.GetOutput(1))
                       .WithLamp(ExampleRoom.Lamp4, hsrel8.GetOutput(2))
                       .WithLamp(ExampleRoom.Lamp5, hsrel8.GetOutput(3))
                       .WithLamp(ExampleRoom.Lamp6, hsrel8.GetOutput(4))
                       .WithButton(ExampleRoom.Button1, hspe16.GetInput(1))
                       .WithButton(ExampleRoom.Button2, hspe16.GetInput(2))
                       .WithVirtualButtonGroup(ExampleRoom.LedStripRemote, g => SetupLEDStripRemote(i2CHardwareBridge, g))
                       .WithStateMachine(ExampleRoom.CeilingFan, (sm, r) => SetupCeilingFan(sm));

            area.Lamp(ExampleRoom.Lamp5).ConnectToggleActionWith(area.Button(ExampleRoom.Button1));
            area.Lamp(ExampleRoom.Lamp6).ConnectToggleActionWith(area.Button(ExampleRoom.Button1), ButtonPressedDuration.Long);
            area.StateMachine(ExampleRoom.CeilingFan).ConnectMoveNextAndToggleOffWith(area.Button(ExampleRoom.Button2));

            SetupHumidityDependingOutput(area.HumiditySensor(ExampleRoom.HumiditySensor), hsrel8.GetOutput(5));

            area.SetupTurnOnAndOffAutomation()
            .WithTrigger(area.MotionDetector(ExampleRoom.MotionDetector))
            .WithTarget(area.BinaryStateOutput(ExampleRoom.BathroomFan))
            .WithTarget(area.BinaryStateOutput(ExampleRoom.Lamp2))
            .WithOnDuration(TimeSpan.FromSeconds(10));

            Timer.Tick += (s, e) =>
            {
                pi2PortController.PollOpenInputPorts();
                ccToolsBoardController.PollInputBoardStates();
            };
        }