public RollerShutter( ActuatorId id, IBinaryOutput powerOutput, IBinaryOutput directionOutput, IHttpRequestController httpApiController, ILogger logger, IHomeAutomationTimer timer) : base(id, httpApiController, logger) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (powerOutput == null) { throw new ArgumentNullException(nameof(powerOutput)); } if (directionOutput == null) { throw new ArgumentNullException(nameof(directionOutput)); } _powerGpioPin = powerOutput; _directionGpioPin = directionOutput; _timer = timer; timer.Tick += (s, e) => UpdatePosition(e); base.Settings = new RollerShutterSettings(id, logger); }
public ActuatorHistoryEntry(DateTime timestamp, ActuatorId actuatorId, string newState) { Timestamp = timestamp; ActuatorId = actuatorId; NewState = newState; }
private IActuator ParseStateMachine(XElement element) { var id = new ActuatorId(element.GetMandatoryStringFromAttribute("id")); var stateMachine = new StateMachine(id, Controller.HttpApiController, Controller.Logger); foreach (var stateElement in element.Element("States").Elements("State")) { var stateId = stateElement.GetMandatoryStringFromAttribute("id"); var state = stateMachine.AddState(stateId); foreach (var lowPortElement in stateElement.Element("LowPorts").Elements()) { state.WithPort(Parser.ParseBinaryOutput(lowPortElement), BinaryState.Low); } foreach (var highPortElement in stateElement.Element("LowPorts").Elements()) { state.WithPort(Parser.ParseBinaryOutput(highPortElement), BinaryState.High); } foreach (var actuatorElement in stateElement.Element("Actuators").Elements()) { var targetState = actuatorElement.GetMandatoryEnumFromAttribute <BinaryActuatorState>("targetState"); var actuatorId = new ActuatorId(actuatorElement.GetMandatoryStringFromAttribute("id")); var actuator = Controller.Actuator <IBinaryStateOutputActuator>(actuatorId); state.WithActuator(actuator, targetState); } } return(stateMachine); }
public ActuatorSettings(ActuatorId actuatorId, ILogger logger) : base(GenerateFilename(actuatorId), logger) { ActuatorId = actuatorId; IsEnabled = new Setting <bool>(true); AppSettings = new Setting <JsonObject>(new JsonObject()); }
private JsonObject CreateDataPackage(ActuatorId actuatorId, EventType eventType) { JsonObject data = new JsonObject(); data.SetNamedValue("timestamp", JsonValue.CreateStringValue(DateTime.Now.ToString("O"))); data.SetNamedValue("type", JsonValue.CreateStringValue(eventType.ToString())); data.SetNamedValue("actuator", actuatorId.ExportToJsonObject()); return(data); }
protected BinaryStateOutputActuator(ActuatorId id, IBinaryOutput output, IHttpRequestController httpApiController, ILogger logger) : base(id, httpApiController, logger) { if (output == null) { throw new ArgumentNullException(nameof(output)); } _output = output; }
public TemperatureSensor(ActuatorId id, ISingleValueSensor sensor, IHttpRequestController api, ILogger logger) : base(id, api, logger) { if (sensor == null) { throw new ArgumentNullException(nameof(sensor)); } sensor.ValueChanged += (s, e) => SetValueInternal(e.NewValue); // TODO: Add delta to settings. Settings = new ActuatorSettings(id, logger); }
public LogicalBinaryStateOutputActuator(ActuatorId id, IHttpRequestController apiController, ILogger logger, IHomeAutomationTimer timer) : base( id, apiController, logger) { if (timer == null) { throw new ArgumentNullException(nameof(timer)); } _timer = timer; Settings = new ActuatorSettings(id, logger); }
public TestSensor(ActuatorId id, ILogger logger) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } Id = Id; Settings = new ActuatorSettings(id, logger); }
public TestRollerShutter(ActuatorId id, ILogger logger) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } Id = id; Settings = new RollerShutterSettings(id, logger); }
public Button(ActuatorId id, IBinaryInput input, IHttpRequestController api, ILogger logger, IHomeAutomationTimer timer) : base(id, api, logger) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (input == null) { throw new ArgumentNullException(nameof(input)); } timer.Tick += CheckForTimeout; input.StateChanged += HandleInputStateChanged; }
public MotionDetector(ActuatorId id, IBinaryInput input, IHomeAutomationTimer timer, IHttpRequestController api, ILogger logger) : base(id, api, logger) { if (input == null) { throw new ArgumentNullException(nameof(input)); } input.StateChanged += (s, e) => HandleInputStateChanged(e); base.Settings = new ActuatorSettings(id, logger); Settings.IsEnabled.ValueChanged += (s, e) => { HandleIsEnabledStateChanged(timer, logger); }; }
public RollerShutterButtons(ActuatorId id, IBinaryInput upInput, IBinaryInput downInput, IHttpRequestController httpApiController, ILogger logger, IHomeAutomationTimer timer) : base(id, httpApiController, logger) { if (upInput == null) { throw new ArgumentNullException(nameof(upInput)); } if (downInput == null) { throw new ArgumentNullException(nameof(downInput)); } Up = new Button(new ActuatorId(id + "-up"), upInput, httpApiController, logger, timer); Down = new Button(new ActuatorId(id + "-down"), downInput, httpApiController, logger, timer); Settings = new ActuatorSettings(id, logger); }
public WeatherStationSituationSensor(ActuatorId id, IHttpRequestController httpApiController, ILogger logger) : base(id, httpApiController, logger) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (httpApiController == null) { throw new ArgumentNullException(nameof(httpApiController)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } Settings = new ActuatorSettings(id, logger); }
protected ActuatorBase(ActuatorId id, IHttpRequestController httpApiController, ILogger logger) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (httpApiController == null) { throw new ArgumentNullException(nameof(httpApiController)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } Id = id; Logger = logger; HttpApiController = httpApiController; }
public VirtualButtonGroup WithButton(ActuatorId id, Action <VirtualButton> initializer) { if (initializer == null) { throw new ArgumentNullException(nameof(initializer)); } if (_buttons.ContainsKey(id)) { throw new InvalidOperationException("Button with id " + id + " already part of the button group."); } var virtualButton = new VirtualButton(id, HttpApiController, Logger); initializer(virtualButton); _buttons.Add(id, virtualButton); return(this); }
public TestTemperatureSensor(ActuatorId id, ILogger logger) : base(id, logger) { }
protected BinaryStateOutputActuatorBase(ActuatorId id, IHttpRequestController httpApiController, ILogger logger) : base(id, httpApiController, logger) { }
public VirtualButtonGroup(ActuatorId id, IHttpRequestController httpApiController, ILogger logger) : base(id, httpApiController, logger) { Settings = new ActuatorSettings(id, logger); }
public WeatherStationTemperatureSensor(ActuatorId id, IHttpRequestController api, ILogger logger) : base(id, api, logger) { Settings = new ActuatorSettings(id, logger); }
public TActuator Actuator <TActuator>(ActuatorId id) where TActuator : IActuator { return(_actuators.Get <TActuator>(id)); }
public StateMachine(ActuatorId id, IHttpRequestController api, ILogger logger) : base(id, api, logger) { Settings = new ActuatorSettings(id, logger); }
public Lamp(ActuatorId id, IBinaryOutput output, IHttpRequestController request, ILogger logger) : base(id, output, request, logger) { Settings = new ActuatorSettings(id, logger); }
public Socket(ActuatorId id, IBinaryOutput output, IHttpRequestController httpApiController, ILogger logger) : base(id, output, httpApiController, logger) { Settings = new ActuatorSettings(id, logger); }
public TestHumiditySensor(ActuatorId id, ILogger logger) : base(id, logger) { }
private static string GenerateFilename(ActuatorId actuatorId) { return(StoragePath.WithFilename("Actuators", actuatorId.Value, "Configuration.json")); }
public VirtualButton(ActuatorId id, IHttpRequestController api, ILogger logger) : base(id, api, logger) { }
protected ButtonBase(ActuatorId id, IHttpRequestController httpApiController, ILogger logger) : base(id, httpApiController, logger) { Settings = new ActuatorSettings(id, logger); }
public Window(ActuatorId id, IHttpRequestController api, ILogger logger) : base(id, api, logger) { Settings = new ActuatorSettings(id, logger); }
public RollerShutterSettings(ActuatorId actuatorId, ILogger logger) : base(actuatorId, logger) { MaxPosition = new Setting <int>(20000); AutoOffTimeout = new Setting <TimeSpan>(TimeSpan.FromSeconds(22)); }