Beispiel #1
0
        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);
        }
Beispiel #2
0
        //
        // 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);
        }
Beispiel #3
0
 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;
 }