protected override void OnBinaryStateActuatorStateChanged(IBinaryStateOutputActuator actuator, TimeSpan previousStateDuration)
        {
            JsonObject startData = CreateDataPackage(actuator.Id, EventType.OutputActuatorStateChanged);
            startData.SetNamedValue("state", JsonValue.CreateStringValue(actuator.GetState().ToString()));
            startData.SetNamedValue("kind", JsonValue.CreateStringValue("Start"));
            Task.Run(() => SendToAzureEventHubAsync(startData));

            BinaryActuatorState previousState = actuator.GetState() == BinaryActuatorState.On ? BinaryActuatorState.Off : BinaryActuatorState.On;
            JsonObject endData = CreateDataPackage(actuator.Id, EventType.OutputActuatorStateChanged);
            endData.SetNamedValue("state", JsonValue.CreateStringValue(previousState.ToString()));
            endData.SetNamedValue("kind", JsonValue.CreateStringValue("End"));
            endData.SetNamedValue("duration", JsonValue.CreateNumberValue(previousStateDuration.TotalSeconds));
            Task.Run(() => SendToAzureEventHubAsync(endData));
        }
Exemplo n.º 2
0
        private void HandleBinaryStateOutputActuator(IBinaryStateOutputActuator binaryStateOutputActuator)
        {
            OnBinaryStateActuatorStateChanged(binaryStateOutputActuator, binaryStateOutputActuator.GetState());

            binaryStateOutputActuator.StateChanged += (s, e) =>
            {
                OnBinaryStateActuatorStateChanged(binaryStateOutputActuator, e.NewValue);
            };
        }
Exemplo n.º 3
0
        public static void Toggle(this IBinaryStateOutputActuator actuator, params IParameter[] parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            if (actuator.GetState() == BinaryActuatorState.Off)
            {
                actuator.TurnOn();
            }
            else
            {
                actuator.TurnOff();
            }
        }
 private void WriteToLocalCsvFile(IBinaryStateOutputActuator actuator)
 {
     lock (_filename)
     {
         try
         {
             // Template: {ISO_TIMESTAMP},{ACTUATOR_ID},{NEW_STATE}
             string newLine = DateTime.Now.ToString("O") + "," + actuator.Id + "," + actuator.GetState();
             File.AppendAllText(_filename, newLine + Environment.NewLine);
         }
         catch (Exception exception)
         {
             NotificationHandler.PublishFrom(this, NotificationType.Warning, "Error while write actuator state changes to CSV log. {0}",
                 exception.Message);
         }
     }
 }
Exemplo n.º 5
0
        public Automation WithBinaryStateOutputActuatorStateChangedTrigger(IBinaryStateOutputActuator actuator, BinaryActuatorState desiredState)
        {
            if (actuator == null) throw new ArgumentNullException(nameof(actuator));

            actuator.StateChanged += (s, e) =>
            {
                if (actuator.GetState() == desiredState)
                {
                    Trigger();
                }
            };

            return this;
        }