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); }
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); }