internal static IrrigationSystemStatusReport Parse(byte[] message)
        {
            var systemStatus = new IrrigationSystemStatusReport
            {
                SystemVoltage = message[2],
                SensorStatus  = (IrrigationSystemSensorStatusMask)message[3]
            };
            var flowValueOffset = 4;
            var flowValue       = ZWaveValue.ExtractValueFromBytes(message, flowValueOffset + 1);

            systemStatus.Flow = flowValue.Value;

            var pressureValueOffset = flowValueOffset + 1 + flowValue.Size;
            var pressureValue       = ZWaveValue.ExtractValueFromBytes(message, pressureValueOffset + 1);

            systemStatus.Pressure = pressureValue.Value;

            var shutOffDurationOffset = pressureValueOffset + 1 + pressureValue.Size;

            systemStatus.ShutoffDuration   = message[shutOffDurationOffset];
            systemStatus.SystemErrorStatus = (IrrigationSystemErrorMask)message[shutOffDurationOffset + 1];
            systemStatus.IsMasterValveOpen = message[shutOffDurationOffset + 2] == 1;
            systemStatus.ValveId           = message[shutOffDurationOffset + 3];

            return(systemStatus);
        }
Ejemplo n.º 2
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);
        }