private void SetupStairwayLamps(IArea room) { _automationFactory.RegisterTurnOnAndOffAutomation(room, Floor.CombinedStairwayLampAutomation) .WithTrigger(room.GetMotionDetector(Floor.StairwayMotionDetector)) .WithTrigger(room.GetButton(Floor.ButtonStairway).PressedShortTrigger) .WithTarget(room.GetComponent(Floor.CombinedStairwayLamp)) .WithEnabledAtNight(); }
private void SetupStairwayLamps(IArea room) { room.SetupTurnOnAndOffAutomation() .WithTrigger(room.GetMotionDetector(Floor.StairwayMotionDetector)) .WithTrigger(room.GetButton(Floor.ButtonStairway).GetPressedShortlyTrigger()) .WithTarget(room.GetActuator(Floor.CombinedStairwayLamp)) .WithEnabledAtNight(Controller.ServiceLocator.GetService <IDaylightService>()) .WithOnDuration(TimeSpan.FromSeconds(30)); }
private void SetupStairsCeilingLamps(IArea floor, HSPE8OutputOnly hspe8UpperFloor) { var output = new LogicalBinaryOutput() .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO4]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO5]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO7]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO6]) .WithInvertedState(); floor.WithLamp(Floor.LampStairsCeiling, output); floor.SetupTurnOnAndOffAutomation() .WithTrigger(floor.GetMotionDetector(Floor.StairsLowerMotionDetector)) .WithTrigger(floor.GetMotionDetector(Floor.StairsUpperMotionDetector)) //.WithTrigger(floor.GetButton(Floor.ButtonStairsUpper).GetPressedShortlyTrigger()) .WithTarget(floor.GetStateMachine(Floor.LampStairsCeiling)) .WithOnDuration(TimeSpan.FromSeconds(10)); var lamp = floor.GetLamp(Floor.LampStairsCeiling); floor.GetButton(Floor.ButtonStairsUpper).GetPressedShortlyTrigger().Triggered += (s, e) => { if (lamp.GetState().Equals(BinaryStateId.On)) { lamp.SetState(BinaryStateId.Off, new AnimateParameter().WithReversedOrder()); } else { lamp.SetState(BinaryStateId.On, new AnimateParameter()); } }; floor.GetButton(Floor.ButtonStairsLowerUpper).GetPressedShortlyTrigger().Triggered += (s, e) => { if (lamp.GetState().Equals(BinaryStateId.On)) { lamp.SetState(BinaryStateId.Off, new AnimateParameter()); } else { lamp.SetState(BinaryStateId.On, new AnimateParameter().WithReversedOrder()); } }; }
private void SetupStairsCeilingLamps(IArea room, HSPE8OutputOnly hspe8UpperFloor) { var output = new LogicalBinaryOutput() .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO4]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO5]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO7]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO6]) .WithInvertedState(); _actuatorFactory.RegisterLamp(room, Floor.LampStairsCeiling, output); _automationFactory.RegisterTurnOnAndOffAutomation(room, Floor.LampStairsCeilingAutomation) .WithTrigger(room.GetMotionDetector(Floor.StairsLowerMotionDetector)) .WithTrigger(room.GetMotionDetector(Floor.StairsUpperMotionDetector)) //.WithTrigger(floor.GetButton(Floor.ButtonStairsUpper).GetPressedShortlyTrigger()) .WithTarget(room.GetStateMachine(Floor.LampStairsCeiling)); var lamp = room.GetLamp(Floor.LampStairsCeiling); room.GetButton(Floor.ButtonStairsUpper).GetPressedShortlyTrigger().Triggered += (s, e) => { if (lamp.GetState().Equals(BinaryStateId.On)) { lamp.SetState(BinaryStateId.Off, new AnimateParameter().WithReversedOrder()); } else { lamp.SetState(BinaryStateId.On, new AnimateParameter()); } }; room.GetButton(Floor.ButtonStairsLowerUpper).GetPressedShortlyTrigger().Triggered += (s, e) => { if (lamp.GetState().Equals(BinaryStateId.On)) { lamp.SetState(BinaryStateId.Off, new AnimateParameter()); } else { lamp.SetState(BinaryStateId.On, new AnimateParameter().WithReversedOrder()); } }; }
private void SetupStairsCeilingLamps(IArea room, HSPE8OutputOnly hspe8UpperFloor) { var output = new LogicalBinaryOutput() .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO4]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO5]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO7]) .WithOutput(hspe8UpperFloor[HSPE8Pin.GPIO6]) .WithInvertedState(); _actuatorFactory.RegisterLamp(room, Floor.LampStairsCeiling, output); _automationFactory.RegisterTurnOnAndOffAutomation(room, Floor.LampStairsCeilingAutomation) .WithTrigger(room.GetMotionDetector(Floor.StairsLowerMotionDetector)) .WithTrigger(room.GetMotionDetector(Floor.StairsUpperMotionDetector)) //.WithTrigger(floor.GetButton(Floor.ButtonStairsUpper).GetPressedShortlyTrigger()) .WithTarget(room.GetLamp(Floor.LampStairsCeiling)); var lamp = room.GetLamp(Floor.LampStairsCeiling); room.GetButton(Floor.ButtonStairsUpper).PressedShortTrigger.Attach(() => lamp.TryTogglePowerState()); room.GetButton(Floor.ButtonStairsLowerUpper).PressedShortTrigger.Attach(() => lamp.TryTogglePowerState()); }
private void SetupDemo() { // Get the area from the controller. IArea area = this.GetArea(Room.ExampleRoom); // Get the single motion detector from the controller. IMotionDetector motionDetector = GetComponent <IMotionDetector>(); ITrigger motionDetectedTrigger = motionDetector.GetMotionDetectedTrigger(); // Get the single temperature and humidity sensor from the controller. ITemperatureSensor temperatureSensor = GetComponent <ITemperatureSensor>(); IHumiditySensor humiditySensor = GetComponent <IHumiditySensor>(); // Get the button with the specified ID from the area (not globally). IButton button = area.GetButton(ExampleRoom.Button1); ITrigger buttonTrigger = button.GetPressedShortlyTrigger(); // Get a test lamp from the area (not globally). ILamp lamp2 = area.GetLamp(ExampleRoom.Lamp2); ILamp lamp3 = area.GetLamp(ExampleRoom.Lamp3); // Integrate the twitter client if the configuration file is available. TwitterClient twitterClient; if (TwitterClientFactory.TryCreateFromDefaultConfigurationFile(out twitterClient)) { RegisterService(new TwitterClient()); IAction tweetAction = twitterClient.GetTweetAction($"Someone is here ({DateTime.Now})... @chkratky"); motionDetectedTrigger.Attach(tweetAction); buttonTrigger.Attach(tweetAction); } // An automation is "Fulfilled" per default. ////var automation = new Automation(new AutomationId("DemoAutomation")) //// .WithTrigger(motionDetectedTrigger) //// .WithActionIfConditionsFulfilled(lamp3.GetTurnOnAction()) //// .WithCondition(ConditionRelation.And, new ComponentIsInStateCondition(lamp2, BinaryStateId.Off)) //// .WithCondition(ConditionRelation.And, new NumericValueSensorHasValueGreaterThanCondition(humiditySensor, 80)); //AddAutomation(automation); SetupTelegramBot(); new PersonalAgentToApiDispatcher(this).ExposeToApi(ApiController); }
private void SetupFan(StateMachine fan, IArea room, HSREL8 hsrel8) { var fanRelay1 = hsrel8[HSREL8Pin.Relay0]; var fanRelay2 = hsrel8[HSREL8Pin.Relay1]; var fanRelay3 = hsrel8[HSREL8Pin.Relay2]; fan.AddOffState() .WithLowOutput(fanRelay1) .WithLowOutput(fanRelay2) .WithLowOutput(fanRelay3); fan.AddState(new ComponentState("1")).WithHighOutput(fanRelay1).WithLowOutput(fanRelay2).WithHighOutput(fanRelay3); fan.AddState(new ComponentState("2")).WithHighOutput(fanRelay1).WithHighOutput(fanRelay2).WithLowOutput(fanRelay3); fan.AddState(new ComponentState("3")).WithHighOutput(fanRelay1).WithHighOutput(fanRelay2).WithHighOutput(fanRelay3); fan.TryTurnOff(); fan.ConnectMoveNextAndToggleOffWith(room.GetButton(Bedroom.ButtonWindowLower)); }
private void SetupStairwayLamps(IArea room) { _automationFactory.RegisterTurnOnAndOffAutomation(room, Floor.CombinedStairwayLampAutomation) .WithTrigger(room.GetMotionDetector(Floor.StairwayMotionDetector)) .WithTrigger(room.GetButton(Floor.ButtonStairway).GetPressedShortlyTrigger()) .WithTarget(room.GetActuator(Floor.CombinedStairwayLamp)) .WithEnabledAtNight(); }
private void SetupLight(StateMachine light, HSREL8 hsrel8, HSPE8OutputOnly hspe8, IArea room) { // Front lights (left, middle, right) var fl = hspe8[HSPE8Pin.GPIO0].WithInvertedState(); var fm = hspe8[HSPE8Pin.GPIO2].WithInvertedState(); var fr = hsrel8[HSREL8Pin.GPIO0].WithInvertedState(); // Middle lights (left, middle, right) var ml = hspe8[HSPE8Pin.GPIO1].WithInvertedState(); var mm = hspe8[HSPE8Pin.GPIO3].WithInvertedState(); var mr = hsrel8[HSREL8Pin.GPIO1].WithInvertedState(); // Rear lights (left, right) // Two mechanical relays. var rl = hsrel8[HSREL8Pin.GPIO5]; var rr = hsrel8[HSREL8Pin.GPIO4]; light.AddOffState() .WithLowOutput(fl) .WithLowOutput(fm) .WithLowOutput(fr) .WithLowOutput(ml) .WithLowOutput(mm) .WithLowOutput(mr) .WithLowOutput(rl) .WithLowOutput(rr); light.AddOnState() .WithHighOutput(fl) .WithHighOutput(fm) .WithHighOutput(fr) .WithHighOutput(ml) .WithHighOutput(mm) .WithHighOutput(mr) .WithHighOutput(rl) .WithHighOutput(rr); var deskOnlyStateId = new ComponentState("DeskOnly"); light.AddState(deskOnlyStateId) .WithHighOutput(fl) .WithHighOutput(fm) .WithLowOutput(fr) .WithHighOutput(ml) .WithLowOutput(mm) .WithLowOutput(mr) .WithLowOutput(rl) .WithLowOutput(rr); var couchOnlyStateId = new ComponentState("CouchOnly"); light.AddState(couchOnlyStateId) .WithLowOutput(fl) .WithLowOutput(fm) .WithLowOutput(fr) .WithLowOutput(ml) .WithLowOutput(mm) .WithLowOutput(mr) .WithLowOutput(rl) .WithHighOutput(rr); light.WithTurnOffIfStateIsAppliedTwice(); room.GetButton(Office.ButtonLowerRight) .GetPressedShortlyTrigger() .Attach(light.GetSetStateAction(couchOnlyStateId)); room.GetButton(Office.ButtonLowerLeft) .GetPressedShortlyTrigger() .Attach(light.GetSetStateAction(deskOnlyStateId)); room.GetButton(Office.ButtonUpperLeft) .GetPressedShortlyTrigger() .Attach(light.GetSetStateAction(BinaryStateId.On)); _synonymService.AddSynonymsForArea(Room.Office, "Büro", "Arbeitszimmer"); _synonymService.AddSynonymsForComponent(Room.Office, Office.CombinedCeilingLights, "Licht"); _synonymService.AddSynonymsForComponent(Room.Office, Office.SocketRearLeftEdge, "Rotlicht", "Pufflicht", "Rot"); _synonymService.AddSynonymsForComponentState(deskOnlyStateId, "Schreibtisch"); _synonymService.AddSynonymsForComponentState(couchOnlyStateId, "Couch"); }