Exemplo n.º 1
0
        internal static IrrigationValveConfig Parse(byte[] message)
        {
            var valveConfig = new IrrigationValveConfig
            {
                UseMasterValve = message[2] == 1,
                ValveId        = message[3],
                NominalCurrentHighThreshold = message[4],
                NominalCurrentLowThreshold  = message[5]
            };

            var maximumFlowValueOffset = 6;
            var maximumFlowValue       = ZWaveValue.ExtractValueFromBytes(message, maximumFlowValueOffset + 1);

            valveConfig.MaximumFlow = maximumFlowValue.Value;

            var flowHighThresholdValueOffset = maximumFlowValueOffset + 1 + maximumFlowValue.Size;
            var flowHighThresholdValue       = ZWaveValue.ExtractValueFromBytes(message, flowHighThresholdValueOffset + 1);

            valveConfig.FlowHighThreshold = flowHighThresholdValue.Value;

            var flowLowThresholdValueOffset = flowHighThresholdValueOffset + 1 + flowHighThresholdValue.Size;
            var flowLowThresholdValue       = ZWaveValue.ExtractValueFromBytes(message, flowLowThresholdValueOffset + 1);

            valveConfig.FlowLowThreshold = flowLowThresholdValue.Value;

            var sensorUsageOffset = flowLowThresholdValueOffset + 1 + flowLowThresholdValue.Size;
            var sensors           = message[sensorUsageOffset];

            valveConfig.UseRainSensor     = (sensors & 0x01) == 1;
            valveConfig.UseMoistureSensor = (sensors & 0x02) == 2;

            return(valveConfig);
        }
Exemplo n.º 2
0
        /// <summary>
        /// This command allows an irrigation valve to be configured accordingly.
        /// </summary>
        /// <param name="node"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        /// <remarks>SDS13781 4.42.13 Irrigation Valve Config Set Command</remarks>
        public static ZWaveMessage ValveConfigSet(ZWaveNode node, IrrigationValveConfig config)
        {
            var commandBytes = new List <byte>
            {
                (byte)CommandClass.Irrigation,
                (byte)Command.IrrigationValveConfigSet
            };

            commandBytes.AddRange(config.ToByteArray());

            return(node.SendDataRequest(commandBytes.ToArray()));
        }
Exemplo n.º 3
0
        public NodeEvent GetEvent(ZWaveNode node, byte[] message)
        {
            NodeEvent nodeEvent = null;
            var       cmdType   = message[1];

            switch (cmdType)
            {
            case (byte)Command.IrrigationSystemInfoReport:
                var value = new IrrigationSystemInfoReport
                {
                    IsMasterValueSupported   = message[2] == 1,
                    TotalNumberOfValves      = message[3],
                    TotalNumberOfValveTables = message[4],
                    ValveTableMaxSize        = message[5]
                };
                nodeEvent = new NodeEvent(node, EventParameter.IrrigationSystemInfoReport, value, 0);
                break;

            case (byte)Command.IrrigationSystemStatusReport:
                var systemStatus = IrrigationSystemStatusReport.Parse(message);
                nodeEvent = new NodeEvent(node, EventParameter.IrrigationSystemStatusReport, systemStatus, 0);
                break;

            case (byte)Command.IrrigationSystemConfigReport:
                var systemConfig = IrrigationSystemConfig.Parse(message);
                nodeEvent = new NodeEvent(node, EventParameter.IrrigationSystemConfigReport, systemConfig, 0);
                break;

            case (byte)Command.IrrigationValveInfoReport:
                var valveInfo = IrrigationValveInfo.Parse(message);
                nodeEvent = new NodeEvent(node, EventParameter.IrrigationValveInfoReport, valveInfo, 0);
                break;

            case (byte)Command.IrrigationValveConfigReport:
                var valveConfig = IrrigationValveConfig.Parse(message);
                nodeEvent = new NodeEvent(node, EventParameter.IrrigationValveConfigReport, valveConfig, 0);
                break;

            case (byte)Command.IrrigationValveTableReport:
                var valveTable = IrrigationValveTable.Parse(message);
                nodeEvent = new NodeEvent(node, EventParameter.IrrigationValveTableReport, valveTable, 0);
                break;
            }
            return(nodeEvent);
        }