Buggy code:
@ XStreamOmitField private boolean initialiseDone = false ; @ XStreamOmitField private boolean dynamicDone = false ; public ZWaveMultiLevelSensorCommandClass ( ZWaveNode node , ZWaveController controller , ZWaveEndpoint endpoint ) { } @ Override public CommandClass getCommandClass ( ) { } @ Override public int getMaxVersion ( ) { } @ Override public void handleApplicationCommandRequest ( SerialMessage serialMessage , int offset , int endpoint ) { ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Received<seq2seq4repair_space>Sensor<seq2seq4repair_space>Multi<seq2seq4repair_space>Level<seq2seq4repair_space>Request" , this . getNode ( ) . getNodeId ( ) ) ; int command = serialMessage . getMessagePayloadByte ( offset ) ; switch ( command ) { case ZWaveMultiLevelSensorCommandClass . SENSOR_MULTI_LEVEL_GET : case ZWaveMultiLevelSensorCommandClass . SENSOR_MULTI_LEVEL_SUPPORTED_GET : ZWaveMultiLevelSensorCommandClass . logger . warn ( "Command<seq2seq4repair_space>{}<seq2seq4repair_space>not<seq2seq4repair_space>implemented." , command ) ; return ; case ZWaveMultiLevelSensorCommandClass . SENSOR_MULTI_LEVEL_SUPPORTED_REPORT : ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Process<seq2seq4repair_space>Multi<seq2seq4repair_space>Level<seq2seq4repair_space>Supported<seq2seq4repair_space>Sensor<seq2seq4repair_space>Report" , this . getNode ( ) . getNodeId ( ) ) ; int payloadLength = serialMessage . getMessagePayload ( ) . length ; for ( int i = offset + 1 ; i < payloadLength ; ++ i ) { for ( int bit = 0 ; bit < 8 ; ++ bit ) { if ( ( ( serialMessage . getMessagePayloadByte ( i ) ) & ( 1 << bit ) ) == 0 ) continue ; int index = ( ( ( i - ( offset + 1 ) ) * 8 ) + bit ) + 1 ; if ( index >= ( ZWaveMultiLevelSensorCommandClass . SensorType . values ( ) . length ) ) continue ; ZWaveMultiLevelSensorCommandClass . SensorType sensorTypeToAdd = ZWaveMultiLevelSensorCommandClass . SensorType . getSensorType ( index ) ; ZWaveMultiLevelSensorCommandClass . Sensor newSensor = new ZWaveMultiLevelSensorCommandClass . Sensor ( sensorTypeToAdd ) ; this . sensors . put ( sensorTypeToAdd , newSensor ) ; ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Added<seq2seq4repair_space>sensor<seq2seq4repair_space>type<seq2seq4repair_space>{}<seq2seq4repair_space>({})" , this . getNode ( ) . getNodeId ( ) , sensorTypeToAdd . getLabel ( ) , index ) ; } } initialiseDone = true ; break ; case ZWaveMultiLevelSensorCommandClass . SENSOR_MULTI_LEVEL_REPORT : ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Sensor<seq2seq4repair_space>Multi<seq2seq4repair_space>Level<seq2seq4repair_space>REPORT<seq2seq4repair_space>received" , this . getNode ( ) . getNodeId ( ) ) ; int sensorTypeCode = serialMessage . getMessagePayloadByte ( ( offset + 1 ) ) ; int sensorScale = ( ( serialMessage . getMessagePayloadByte ( ( offset + 2 ) ) ) > > 3 ) & 3 ; ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Sensor<seq2seq4repair_space>Type<seq2seq4repair_space>=<seq2seq4repair_space>({}),<seq2seq4repair_space>Scale<seq2seq4repair_space>=<seq2seq4repair_space>{}" , this . getNode ( ) . getNodeId ( ) , sensorTypeCode , sensorScale ) ; ZWaveMultiLevelSensorCommandClass . SensorType sensorType = ZWaveMultiLevelSensorCommandClass . SensorType . getSensorType ( sensorTypeCode ) ; if ( sensorType == null ) { ZWaveMultiLevelSensorCommandClass . logger . error ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Unknown<seq2seq4repair_space>Sensor<seq2seq4repair_space>Type<seq2seq4repair_space>=<seq2seq4repair_space>{},<seq2seq4repair_space>ignoring<seq2seq4repair_space>report." , this . getNode ( ) . getNodeId ( ) , sensorTypeCode ) ; return ; } ZWaveMultiLevelSensorCommandClass . Sensor sensor = sensors . get ( sensorType ) ; if ( sensor == null ) { sensor = new ZWaveMultiLevelSensorCommandClass . Sensor ( sensorType ) ; this . sensors . put ( sensorType , sensor ) ; } sensor . setInitialised ( ) ; dynamicDone = true ; try { BigDecimal value = extractValue ( serialMessage . getMessagePayload ( ) , ( offset + 2 ) ) ; <START_BUG> ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>%d:<seq2seq4repair_space>Sensor<seq2seq4repair_space>Value<seq2seq4repair_space>=<seq2seq4repair_space>({})" , this . getNode ( ) . getNodeId ( ) , value ) ; <END_BUG> ZWaveMultiLevelSensorCommandClass . ZWaveMultiLevelSensorValueEvent zEvent = new ZWaveMultiLevelSensorCommandClass . ZWaveMultiLevelSensorValueEvent ( this . getNode ( ) . getNodeId ( ) , endpoint , sensorType , sensorScale , value ) ; this . getController ( ) . notifyEventListeners ( zEvent ) ; } catch ( NumberFormatException e ) { return ; } break ; default : ZWaveMultiLevelSensorCommandClass . logger . warn ( String . format ( "Unsupported<seq2seq4repair_space>Command<seq2seq4repair_space>0x%02X<seq2seq4repair_space>for<seq2seq4repair_space>command<seq2seq4repair_space>class<seq2seq4repair_space>%s<seq2seq4repair_space>(0x%02X)." , command , this . getCommandClass ( ) . getLabel ( ) , this . getCommandClass ( ) . getKey ( ) ) ) ; } } public SerialMessage getValueMessage ( ) { } public SerialMessage getSupportedValueMessage ( ) { } public SerialMessage getMessage ( ZWaveMultiLevelSensorCommandClass . SensorType sensorType ) { } public Collection < SerialMessage > initialize ( boolean refresh ) { } @ Override public Collection < SerialMessage > getDynamicValues ( boolean refresh ) { } @ XStreamAlias ( "sensorType" ) public enum SensorType { TEMPERATURE ( 1 , "Temperature" ) , GENERAL ( 2 , "General" ) , LUMINANCE ( 3 , "Luminance" ) , POWER ( 4 , "Power" ) , RELATIVE_HUMIDITY ( 5 , "RelativeHumidity" ) , VELOCITY ( 6 , "Velocity" ) , DIRECTION ( 7 , "Direction" ) , ATMOSPHERIC_PRESSURE ( 8 , "AtmosphericPressure" ) , BAROMETRIC_PRESSURE ( 9 , "BarometricPressure" ) , SOLAR_RADIATION ( 10 , "SolarRadiation" ) , DEW_POINT ( 11 , "DewPoint" ) , RAIN_RATE ( 12 , "RainRate" ) , TIDE_LEVEL ( 13 , "TideLevel" ) , WEIGHT ( 14 , "Weight" ) , VOLTAGE ( 15 , "Voltage" ) , CURRENT ( 16 , "Current" ) , CO2 ( 17 , "CO2" ) , AIR_FLOW ( 18 , "AirFlow" ) , TANK_CAPACITY ( 19 , "TankCapacity" ) , DISTANCE ( 20 , "Distance" ) , ANGLE_POSITION ( 21 , "AnglePosition" ) , ROTATION ( 22 , "Rotation" ) , WATER_TEMPERATURE ( 23 , "WaterTemperature" ) , SOIL_TEMPERATURE ( 24 , "SoilTemperature" ) , SEISMIC_INTENSITY ( 25 , "SeismicIntensity" ) , SEISMIC_MAGNITUDE ( 26 , "SeismicMagnitude" ) , ULTRAVIOLET ( 27 , "Ultraviolet" ) , ELECTRICAL_RESISTIVITY ( 28 , "ElectricalResistivity" ) , ELECTRICAL_CONDUCTIVITY ( 29 , "ElectricalConductivity" ) , LOUDNESS ( 30 , "Loudness" ) , MOISTURE ( 31 , "Moisture" ) , MAX_TYPE ( 32 , "MaxType" ) ; private static Map < Integer , ZWaveMultiLevelSensorCommandClass . SensorType > codeToSensorTypeMapping ; private int key ; private String label ; private SensorType ( int key , String label ) { } private static void initMapping ( ) { } public static ZWaveMultiLevelSensorCommandClass . SensorType getSensorType ( int i ) { }

Fix:
ZWaveMultiLevelSensorCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Sensor<seq2seq4repair_space>Value<seq2seq4repair_space>=<seq2seq4repair_space>{}" , this . getNode ( ) . getNodeId ( ) , value ) ;