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