/// <summary> /// This command is used to set a valve table with a list of valves and durations. /// </summary> /// <param name="node"></param> /// <param name="valveTable"></param> /// <returns></returns> /// <remarks>SDS13781 4.42.17 Irrigation Valve Table Set Command</remarks> public static ZWaveMessage ValveTableSet(ZWaveNode node, IrrigationValveTable valveTable) { var commandBytes = new List <byte> { (byte)CommandClass.Irrigation, (byte)Command.IrrigationValveTableSet }; commandBytes.AddRange(valveTable.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); }
internal static IrrigationValveTable Parse(byte[] message) { var valveTable = new IrrigationValveTable { TableId = message[2], Items = new List <IrrigationValveTableItem>() }; int i = 3; while (message.Length > i) { var tableItem = new IrrigationValveTableItem { ValveId = message[i], Duration = BitExtensions.FromBigEndianBytes(new[] { message[i + 1], message[i + 2] }) }; valveTable.Items.Add(tableItem); i += 3; } return(valveTable); }