protected override void Initialize() { InitializeHealthMonitor(22); var pi2PortController = new Pi2PortController(); var i2CBus = new I2cBusAccessor(NotificationHandler); IWeatherStation weatherStation = CreateWeatherStation(); var i2CHardwareBridge = new I2CHardwareBridge(50, i2CBus); var sensorBridgeDriver = new DHT22Accessor(i2CHardwareBridge, Timer); var ioBoardManager = new IOBoardManager(HttpApiController, NotificationHandler); var ccToolsBoardController = new CCToolsBoardController(i2CBus, ioBoardManager, NotificationHandler); ccToolsBoardController.CreateHSPE16InputOnly(Device.Input0, 42); ccToolsBoardController.CreateHSPE16InputOnly(Device.Input1, 43); ccToolsBoardController.CreateHSPE16InputOnly(Device.Input2, 47); ccToolsBoardController.CreateHSPE16InputOnly(Device.Input3, 45); ccToolsBoardController.CreateHSPE16InputOnly(Device.Input4, 46); ccToolsBoardController.CreateHSPE16InputOnly(Device.Input5, 44); RemoteSwitchController remoteSwitchController = SetupRemoteSwitchController(i2CHardwareBridge); var home = new Home(Timer, HealthMonitor, weatherStation, HttpApiController, NotificationHandler); new BedroomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new OfficeConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver, remoteSwitchController); new UpperBathroomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new ReadingRoomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new ChildrensRoomRoomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new KitchenConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new FloorConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new LowerBathroomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new StoreroomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); new LivingRoomConfiguration().Setup(home, ccToolsBoardController, ioBoardManager, sensorBridgeDriver); home.PublishStatisticsNotification(); AttachAzureEventHubPublisher(home); var localCsvFileWriter = new LocalCsvFileWriter(NotificationHandler); localCsvFileWriter.ConnectActuators(home); var ioBoardsInterruptMonitor = new InterruptMonitor(pi2PortController.GetInput(4)); Timer.Tick += (s, e) => ioBoardsInterruptMonitor.Poll(); ioBoardsInterruptMonitor.InterruptDetected += (s, e) => ioBoardManager.PollInputBoardStates(); }
protected override void Initialize() { InitializeHealthMonitor(22); var pi2PortController = new Pi2PortController(); IWeatherStation weatherStation = CreateWeatherStation(); var i2CBus = new I2cBusAccessor(NotificationHandler); var ioBoardManager = new IOBoardManager(HttpApiController, NotificationHandler); var ccToolsFactory = new CCToolsBoardController(i2CBus, ioBoardManager, NotificationHandler); var hsrt16 = ccToolsFactory.CreateHSRT16(Device.CellarHSRT16, 32); var home = new Home(Timer, HealthMonitor, weatherStation, HttpApiController, NotificationHandler); var garden = home.AddRoom(Room.Garden) .WithLamp(Garden.LampTerrace, hsrt16.GetOutput(15)) .WithLamp(Garden.LampGarage, hsrt16.GetOutput(14)) .WithLamp(Garden.LampTap, hsrt16.GetOutput(13)) .WithLamp(Garden.SpotlightRoof, hsrt16.GetOutput(12)) .WithLamp(Garden.LampRearArea, hsrt16.GetOutput(11)) .WithSocket(Garden.SocketPavillion, hsrt16.GetOutput(10)) // 9 = free .WithLamp(Garden.LampParkingLot1, hsrt16.GetOutput(8)) .WithLamp(Garden.LampParkingLot2, hsrt16.GetOutput(6)) .WithLamp(Garden.LampParkingLot3, hsrt16.GetOutput(7)) .WithButton(Garden.Button, pi2PortController.GetInput(4).WithInvertedState()); var stateMachine = garden.AddStateMachine(Garden.StateMachine); stateMachine.AddOffState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.On); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.Off) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.Off); stateMachine.AddState() .WithActuator(garden.Lamp(Garden.LampTerrace), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampGarage), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampTap), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.SpotlightRoof), BinaryActuatorState.On) .WithActuator(garden.Lamp(Garden.LampRearArea), BinaryActuatorState.On); garden.StateMachine(Garden.StateMachine).ConnectMoveNextAndToggleOffWith(garden.Button(Garden.Button)); garden.CombineActuators(Garden.CombinedParkingLotLamps) .WithActuator(garden.Lamp(Garden.LampParkingLot1)) .WithActuator(garden.Lamp(Garden.LampParkingLot2)) // Mitte .WithActuator(garden.Lamp(Garden.LampParkingLot3)); garden.SetupAlwaysOn() .WithActuator(garden.BinaryStateOutput(Garden.CombinedParkingLotLamps)) .WithOnlyAtNightRange(home.WeatherStation) .WithOffBetweenRange(TimeSpan.FromHours(22).Add(TimeSpan.FromMinutes(30)), TimeSpan.FromHours(5)); home.PublishStatisticsNotification(); Timer.Tick += (s, e) => { pi2PortController.PollOpenInputPorts(); }; }