public ConditionalOnAutomation RegisterConditionalOnAutomation(IArea area, Enum id) { if (area == null) { throw new ArgumentNullException(nameof(area)); } var automation = new ConditionalOnAutomation( AutomationIdGenerator.Generate(area, id), _schedulerService, _dateTimeService, _daylightService); area.AddAutomation(automation); return(automation); }
public void Apply() { var hsrel5 = _ccToolsBoardService.RegisterHSREL5(InstalledDevice.UpperBathroomHSREL5, new I2CSlaveAddress(61)); var input5 = _deviceService.GetDevice <HSPE16InputOnly>(InstalledDevice.Input5); var i2CHardwareBridge = _deviceService.GetDevice <I2CHardwareBridge>(); const int SensorPin = 4; var room = _areaService.CreateArea(Room.UpperBathroom); _actuatorFactory.RegisterStateMachine(room, UpperBathroom.Fan, (s, r) => SetupFan(s, hsrel5)); _sensorFactory.RegisterTemperatureSensor(room, UpperBathroom.TemperatureSensor, i2CHardwareBridge.DHT22Accessor.GetTemperatureSensor(SensorPin)); _sensorFactory.RegisterHumiditySensor(room, UpperBathroom.HumiditySensor, i2CHardwareBridge.DHT22Accessor.GetHumiditySensor(SensorPin)); _sensorFactory.RegisterMotionDetector(room, UpperBathroom.MotionDetector, input5.GetInput(15)); _actuatorFactory.RegisterLamp(room, UpperBathroom.LightCeilingDoor, hsrel5.GetOutput(0)); _actuatorFactory.RegisterLamp(room, UpperBathroom.LightCeilingEdge, hsrel5.GetOutput(1)); _actuatorFactory.RegisterLamp(room, UpperBathroom.LightCeilingMirrorCabinet, hsrel5.GetOutput(2)); _actuatorFactory.RegisterLamp(room, UpperBathroom.LampMirrorCabinet, hsrel5.GetOutput(3)); var combinedLights = _actuatorFactory.RegisterLogicalActuator(room, UpperBathroom.CombinedCeilingLights) .WithActuator(room.GetLamp(UpperBathroom.LightCeilingDoor)) .WithActuator(room.GetLamp(UpperBathroom.LightCeilingEdge)) .WithActuator(room.GetLamp(UpperBathroom.LightCeilingMirrorCabinet)) .WithActuator(room.GetLamp(UpperBathroom.LampMirrorCabinet)); _automationFactory.RegisterTurnOnAndOffAutomation(room, UpperBathroom.CombinedCeilingLightsAutomation) .WithTrigger(room.GetMotionDetector(UpperBathroom.MotionDetector)) .WithTarget(combinedLights); new BathroomFanAutomation(AutomationIdGenerator.Generate(room, UpperBathroom.FanAutomation), _schedulerService, _settingsService) .WithTrigger(room.GetMotionDetector(UpperBathroom.MotionDetector)) .WithActuator(room.GetStateMachine(UpperBathroom.Fan)); _synonymService.AddSynonymsForArea(Room.UpperBathroom, "BadOben", "UpperBathroom"); }
public RollerShutterAutomation RegisterRollerShutterAutomation(IArea area, Enum id) { if (area == null) { throw new ArgumentNullException(nameof(area)); } var automation = new RollerShutterAutomation( AutomationIdGenerator.Generate(area, id), _notificationService, _schedulerService, _dateTimeService, _daylightService, _outdoorTemperatureService, _componentService, _settingsService, _resourceService); area.AddAutomation(automation); return(automation); }