Ejemplo n.º 1
0
        /// <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()));
        }
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);
        }
Ejemplo n.º 3
0
        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);
        }