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 SetupFan(StateMachine stateMachine, HSREL5 hsrel5) { var fanPort0 = hsrel5.GetOutput(4); var fanPort1 = hsrel5.GetOutput(5); stateMachine.AddOffState().WithOutput(fanPort0, BinaryState.Low).WithOutput(fanPort1, BinaryState.Low); stateMachine.AddState(new ComponentState("1")).WithOutput(fanPort0, BinaryState.High).WithOutput(fanPort1, BinaryState.Low); stateMachine.AddState(new ComponentState("2")).WithOutput(fanPort0, BinaryState.High).WithOutput(fanPort1, BinaryState.High); stateMachine.TryTurnOff(); }
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"); }
private void InitializeStateMachine(StateMachine stateMachine, IArea garden) { stateMachine.AddOffState() .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("Te")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("G")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("W")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("D")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("Ti")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.On); stateMachine.AddState(new ComponentState("G+W")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("Te+G+W")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.Off) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.Off); stateMachine.AddState(new ComponentState("Te+G+W+D+Ti")) .WithActuator(garden.GetLamp(Garden.LampTerrace), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampGarage), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampTap), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.SpotlightRoof), BinaryStateId.On) .WithActuator(garden.GetLamp(Garden.LampRearArea), BinaryStateId.On); }