Exemple #1
0
        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);
        }
Exemple #2
0
        public ActuatorHistoryEntry(DateTime timestamp, ActuatorId actuatorId, string newState)
        {
            Timestamp  = timestamp;
            ActuatorId = actuatorId;

            NewState = newState;
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #8
0
        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;
        }
Exemple #12
0
        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);
        }
Exemple #14
0
        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;
        }
Exemple #16
0
        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);
        }
Exemple #17
0
 public TestTemperatureSensor(ActuatorId id, ILogger logger) : base(id, logger)
 {
 }
 protected BinaryStateOutputActuatorBase(ActuatorId id, IHttpRequestController httpApiController, ILogger logger)
     : base(id, httpApiController, logger)
 {
 }
Exemple #19
0
 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)
 {
 }
Exemple #26
0
 private static string GenerateFilename(ActuatorId actuatorId)
 {
     return(StoragePath.WithFilename("Actuators", actuatorId.Value, "Configuration.json"));
 }
Exemple #27
0
 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);
 }
Exemple #29
0
 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));
 }