public NodeEvent GetEvent(ZWaveNode node, byte[] message) { NodeEvent nodeEvent = null; byte cmdType = message[1]; switch (cmdType) { case (byte)Command.WakeUpIntervalReport: if (message.Length > 4) { uint interval = ((uint)message[2]) << 16; interval |= (((uint)message[3]) << 8); interval |= (uint)message[4]; nodeEvent = new NodeEvent(node, EventParameter.WakeUpInterval, interval, 0); } break; case (byte)Command.WakeUpNotification: // Resend queued messages while node was asleep var wakeUpResendQueue = GetResendQueueData(node); for (int m = 0; m < wakeUpResendQueue.Count; m++) { node.SendMessage(wakeUpResendQueue[m]); } wakeUpResendQueue.Clear(); nodeEvent = new NodeEvent(node, EventParameter.WakeUpNotify, 1, 0); break; } return(nodeEvent); }
public static ZWaveEvent GetEvent(ZWaveNode node, byte[] message) { ZWaveEvent nodeEvent = null; byte cmdType = message[8]; switch (cmdType) { case (byte)Command.WakeUpIntervalReport: if (message.Length > 11) { uint interval = ((uint)message[9]) << 16; interval |= (((uint)message[10]) << 8); interval |= (uint)message[11]; nodeEvent = new ZWaveEvent(node, EventParameter.WakeUpInterval, interval, 0); } break; case (byte)Command.WakeUpNotification: // Resend queued messages while node was asleep var wakeUpResendQueue = GetResendQueueData(node); for (int m = 0; m < wakeUpResendQueue.Count; m++) { node.SendMessage(wakeUpResendQueue[m]); } wakeUpResendQueue.Clear(); nodeEvent = new ZWaveEvent(node, EventParameter.WakeUpNotify, 1, 0); break; } return nodeEvent; }
public static void Get(ZWaveNode node) { byte[] message = new byte[] { (byte)MessageHeader.SOF, /* Start Of Frame */ 0x09 /*packet len */, (byte)MessageType.Request, (byte)Function.SendData, node.Id, 0x02, (byte)CommandClass.ManufacturerSpecific, (byte)Command.ManufacturerSpecificGet, 0x05 /* report ?!? */, 0x01 | 0x04, 0x00 }; node.SendMessage(message); }
public static void Get(ZWaveNode node) { byte[] message = new byte[] { (byte)MessageHeader.SOF, /* Start Of Frame */ 0x09 /*packet len */, (byte)MessageType.Request, /* Type of message */ 0x13 /* func send data */, node.NodeId, 0x02, (byte)CommandClass.ManufacturerSpecific, (byte)Command.ManufacturerSpecificGet, 0x05 /* report ?!? */, 0x01 | 0x04, 0x00 }; node.SendMessage(message); }
public static void WakeUpNode(ZWaveNode node) { // If node was marked as sleeping, reset the flag var wakeUpStatus = node.GetData("WakeUpStatus"); if (wakeUpStatus != null && wakeUpStatus.Value != null && ((WakeUpStatus)wakeUpStatus.Value).IsSleeping) { ((WakeUpStatus)wakeUpStatus.Value).IsSleeping = false; var wakeEvent = new NodeEvent(node, EventParameter.WakeUpSleepingStatus, 0 /* 1 = sleeping, 0 = awake */, 0); node.OnNodeUpdated(wakeEvent); // Resend queued messages while node was asleep var wakeUpResendQueue = GetResendQueueData(node); for (int m = 0; m < wakeUpResendQueue.Count; m++) { Utility.logger.Trace("Sending message {0} {1}", m, BitConverter.ToString(wakeUpResendQueue[m])); node.SendMessage(wakeUpResendQueue[m]); } wakeUpResendQueue.Clear(); } }
public NodeEvent GetEvent(ZWaveNode node, byte[] message) { NodeEvent nodeEvent = null; byte cmdType = message[1]; switch (cmdType) { case (byte)Command.WakeUpIntervalReport: if (message.Length > 4) { uint interval = ((uint)message[2]) << 16; interval |= (((uint)message[3]) << 8); interval |= (uint)message[4]; nodeEvent = new NodeEvent(node, EventParameter.WakeUpInterval, interval, 0); } break; case (byte)Command.WakeUpNotification: // If node was marked as sleeping, reset the flag var wakeUpStatus = node.GetData("WakeUpStatus"); if (wakeUpStatus != null && wakeUpStatus.Value != null && ((WakeUpStatus)wakeUpStatus.Value).IsSleeping) { ((WakeUpStatus)wakeUpStatus.Value).IsSleeping = false; var wakeEvent = new NodeEvent(node, EventParameter.WakeUpSleepingStatus, 0 /* 1 = sleeping, 0 = awake */, 0); node.OnNodeUpdated(wakeEvent); } // Resend queued messages while node was asleep var wakeUpResendQueue = GetResendQueueData(node); for (int m = 0; m < wakeUpResendQueue.Count; m++) { Utility.logger.Trace("Sending message {0} {1}", m, BitConverter.ToString(wakeUpResendQueue[m])); node.SendMessage(wakeUpResendQueue[m]); } wakeUpResendQueue.Clear(); nodeEvent = new NodeEvent(node, EventParameter.WakeUpNotify, 1, 0); break; } return nodeEvent; }