public static SensorAlarmValue ParseSensorAlarmValue(byte[] message) { SensorAlarmValue sensorValue = new SensorAlarmValue(); // byte cmdClass = message[7]; // sensorValue.Parameter = ZWaveSensorAlarmParameter.GENERIC; sensorValue.Value = message[10]; // CommandClass.COMMAND_CLASS_ALARM // if (cmdClass == (byte)CommandClass.COMMAND_CLASS_SENSOR_ALARM) { sensorValue.Parameter = (ZWaveSensorAlarmParameter)Enum.Parse( typeof(ZWaveSensorAlarmParameter), message[10].ToString() ); sensorValue.Value = message[11]; } // switch (sensorValue.Parameter) { case ZWaveSensorAlarmParameter.CARBONDIOXIDE: sensorValue.EventType = ParameterType.PARAMETER_ALARM_CARBONDIOXIDE; break; case ZWaveSensorAlarmParameter.CARBONMONOXIDE: sensorValue.EventType = ParameterType.PARAMETER_ALARM_CARBONMONOXIDE; break; case ZWaveSensorAlarmParameter.SMOKE: sensorValue.EventType = ParameterType.PARAMETER_ALARM_SMOKE; break; case ZWaveSensorAlarmParameter.HEAT: sensorValue.EventType = ParameterType.PARAMETER_ALARM_HEAT; break; case ZWaveSensorAlarmParameter.FLOOD: sensorValue.EventType = ParameterType.PARAMETER_ALARM_FLOOD; break; //case ZWaveSensorAlarmParameter.GENERIC: default: sensorValue.EventType = ParameterType.PARAMETER_ALARM_GENERIC; break; } // return(sensorValue); }
// // 01 0D 00 04 00 1C 07 9C 02 00 05 FF 00 00 89 // | | | | | | | | | | | | | | | // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // // 01 0F 00 04 00 18 09 71 05 07 00 00 FF 07 02 00 // 01 0F 00 04 00 18 09 71 05 07 FF 00 FF 07 02 00 // public virtual bool HandleBasicReport(byte[] message) { bool handled = false; // byte cmd_length = message[6]; byte cmd_class = message[7]; byte cmd_type = message[8]; // if (cmd_class == (byte)CommandClass.COMMAND_CLASS_BASIC && (cmd_type == 0x03 || cmd_type == 0x01)) { _nodehost._raiseUpdateParameterEvent(_nodehost, 0, ParameterType.PARAMETER_BASIC, (double)message [9]); handled = true; } else if (cmd_class == (byte)CommandClass.COMMAND_CLASS_SCENE_ACTIVATION && cmd_type == 0x01) { _nodehost._raiseUpdateParameterEvent(_nodehost, 0, ParameterType.PARAMETER_GENERIC, (double)message[9]); handled = true; } else if (cmd_class == (byte)CommandClass.COMMAND_CLASS_SENSOR_BINARY && cmd_type == 0x03) { _nodehost._raiseUpdateParameterEvent(_nodehost, 0, ParameterType.PARAMETER_GENERIC, message[9]); handled = true; } else if (cmd_class == (byte)CommandClass.COMMAND_CLASS_SENSOR_MULTILEVEL && cmd_type == 0x05) { SensorValue sensorval = Sensor.ParseSensorValue(message); if (sensorval.Parameter == ZWaveSensorParameter.UNKNOWN) { byte key = message[9]; _nodehost._raiseUpdateParameterEvent(_nodehost, 0, ParameterType.PARAMETER_GENERIC, sensorval.Value); Console.WriteLine("\nUNHANDLED SENSOR PARAMETER TYPE => " + key + "\n"); } else { _nodehost._raiseUpdateParameterEvent(_nodehost, 0, sensorval.EventType, sensorval.Value); handled = true; } } else if ((cmd_class == (byte)CommandClass.COMMAND_CLASS_SENSOR_ALARM && cmd_type == 0x02) || (cmd_class == (byte)CommandClass.COMMAND_CLASS_ALARM && cmd_type == 0x05)) { SensorAlarmValue sensoralarmval = Sensor.ParseSensorAlarmValue(message); _nodehost._raiseUpdateParameterEvent(_nodehost, 0, sensoralarmval.EventType, sensoralarmval.Value); handled = true; } return(handled); }
public static SensorAlarmValue ParseSensorAlarmValue(byte[] message) { SensorAlarmValue sensorValue = new SensorAlarmValue(); // byte cmdClass = message[7]; // sensorValue.Parameter = ZWaveSensorAlarmParameter.GENERIC; sensorValue.Value = message[10]; // CommandClass.COMMAND_CLASS_ALARM // if (cmdClass == (byte)CommandClass.COMMAND_CLASS_SENSOR_ALARM) { sensorValue.Parameter = (ZWaveSensorAlarmParameter)Enum.Parse(typeof(ZWaveSensorAlarmParameter), message[10].ToString()); sensorValue.Value = message[11]; } // switch (sensorValue.Parameter) { case ZWaveSensorAlarmParameter.CARBONDIOXIDE: sensorValue.EventType = ParameterType.PARAMETER_ALARM_CARBONDIOXIDE; break; case ZWaveSensorAlarmParameter.CARBONMONOXIDE: sensorValue.EventType = ParameterType.PARAMETER_ALARM_CARBONMONOXIDE; break; case ZWaveSensorAlarmParameter.SMOKE: sensorValue.EventType = ParameterType.PARAMETER_ALARM_SMOKE; break; case ZWaveSensorAlarmParameter.HEAT: sensorValue.EventType = ParameterType.PARAMETER_ALARM_HEAT; break; case ZWaveSensorAlarmParameter.FLOOD: sensorValue.EventType = ParameterType.PARAMETER_ALARM_FLOOD; break; //case ZWaveSensorAlarmParameter.GENERIC: default: sensorValue.EventType = ParameterType.PARAMETER_ALARM_GENERIC; break; } // return sensorValue; }