Multisensor PST02A is not working

Dear Openhab Community,

The Multisensor PST02A got detected by Openhab as PST02A Slim Multi-Sensor (PIR/Door/Temperature/Illumination). The items are linked, but are not updated apart from the temperature sensor.

The most important sensor information for me would be the door/window sensor, but in Paper UI no update is shown although when opening the door events are written in the events.log file:

2017-08-04 05:31:37.186 [ItemStateChangedEvent ] - zwave_serial_zstick_63e729d1_serial_sof changed from 7019 to 7020
2017-08-04 05:31:37.210 [ItemStateChangedEvent ] - zwave_serial_zstick_63e729d1_serial_sof changed from 7020 to 7021

Thank you in advance.

Please add the following info:

  1. Upload the device xml file (from /var/lib/openhab2/zwave/nodeX.xml). You can drag and drop the xml file in your post.
  2. OH version running (2.1.0 Stable Release or 2.2.0 Snapshot Build #xyz). And how it was installed (Linux apt or manual, Windows, other platform)
  3. Z-Wave binding version used (see: here for help to identify it)
  4. Z-Wave binding debug level logs from openhab.log (use code fences). You can use also: http://www.cd-jackson.com/index.php/openhab/zwave-log-viewer

The device seems to be included in Chris’ Z-Wave database: http://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-list/devicesummary/168

Did you use Simple Mode for Item Linking in PaperUI or you have manually defined your items that link to the Thing channels?

Thank you very much for your quick answer.

  1. node8.xml (14.4 KB)
  2. dpkg --list | grep openhab -> shows version 2.1.0-1
    (it was installed with:
    a) echo ‘deb https://dl.bintray.com/openhab/apt-repo2 stable main’ | sudo tee /etc/apt/sources.list.d/openhab2.list
    b) sudo apt-get install openhab2
  3. In the Openhab console the command: bundle:list -s |grep -i zwave -> shows version 2.1.0 for the Z-Wave binding.
  4. I enabled debugging of Z-Wave and in the log files I can see many exceptions and that the sensor reports values…
    a) I can see many exceptions in the log file: Probably a few of them are because I tried to delete the items in Paper UI, which was not possible. I am not using the simple mode. After I included the sensor and it was not working I deleted the items and created them again. I realized that I need to delete the link between the thing and the item in order to be able to delete the item afterwards. (probably this caused an exception) After I deleted all items of the sensor I created them new… Shall I upload the log file somehow?

Thank you very much!

Yes - please upload the log. As a minimum, we need to see the received messages being received when the door state changes.

2017-08-04 12:16:54.498 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 8: Application Command Request (ALIVE:DONE)
2017-08-04 12:16:54.500 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 8: Starting initialisation from DONE
2017-08-04 12:16:54.501 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@33e932 already registered
2017-08-04 12:16:54.503 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 8: Incoming command class ALARM
2017-08-04 12:16:54.504 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 8: Received ALARM command V4
2017-08-04 12:16:54.505 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 8: Process NOTIFICATION_REPORT V4
2017-08-04 12:16:54.506 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 8: NOTIFICATION report - 0 = 0, event=22, status=255
2017-08-04 12:16:54.508 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 8: Alarm Type = ACCESS_CONTROL (0)
2017-08-04 12:16:54.509 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveAlarmValueEvent
2017-08-04 12:16:54.510 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 6: Transaction not completed: node address inconsistent.  lastSent=6, incoming=255
2017-08-04 12:16:54.562 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 0B 00 04 00 08 05 31 05 03 01 1E D5 
2017-08-04 12:16:54.565 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-08-04 12:16:54.567 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0B 00 04 00 08 05 31 05 03 01 1E D5 
2017-08-04 12:16:54.569 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 0B 00 04 00 08 05 31 05 03 01 1E D5 
2017-08-04 12:16:54.572 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 08 05 31 05 03 01 1E 
2017-08-04 12:16:54.573 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 8: Application Command Request (ALIVE:DONE)
2017-08-04 12:16:54.575 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 8: Starting initialisation from DONE
2017-08-04 12:16:54.576 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@33e932 already registered
2017-08-04 12:16:54.578 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 8: Incoming command class SENSOR_MULTILEVEL
2017-08-04 12:16:54.579 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 8: Received COMMAND_CLASS_SENSOR_MULTILEVEL command V5
2017-08-04 12:16:54.581 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 8: Sensor Multi Level REPORT received
2017-08-04 12:16:54.582 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 8: Sensor Type = Luminance(3), Scale = 0
2017-08-04 12:16:54.583 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 8: Sensor Value = 3E+1
2017-08-04 12:16:54.585 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveMultiLevelSensorValueEvent
2017-08-04 12:16:54.586 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 6: Transaction not completed: node address inconsistent.  lastSent=6, incoming=255
2017-08-04 12:16:54.623 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 0C 00 04 00 08 06 31 05 01 0A 00 4E 88 
2017-08-04 12:16:54.626 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-08-04 12:16:54.628 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0C 00 04 00 08 06 31 05 01 0A 00 4E 88 
2017-08-04 12:16:54.630 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 0C 00 04 00 08 06 31 05 01 0A 00 4E 88 
2017-08-04 12:16:54.632 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 08 06 31 05 01 0A 00 4E

The database is currently configured to use the SENSOR_BINARY command class, and your device is using the NOTIFICATION command class. Either the database is wrongly configured, or there is likely a configuration setting in the device configuration to change this.

Ideally, I would prefer to use the NOTIFICATION class since this is the more ‘modern’ class, but at the moment it would be better not to change the database if possible.

From the manual:

In default the device will using Notification Report to represent the
trigger event, it can be changed to Sensor Binary Report by setting the
configuration NO. 7 Bit 4 to 1.

2 Likes

Dear @dim, @chris and @sihui,

Sorry for my late reply and thank you very much for your help.
Your answers helped me to get the device working. Now it works perfectly.

With the following steps I could achieve this:

  1. In order to change the configuration parameter of the device I installed HABmin - see Help to install HABmin - a graphical user interface for openHAB 2
  2. The manual of the sensor is really good and as @sihui said, configuration 7 Bit 4 needs to be changed. In HABmin under Configuration > Things > Z-Wave Node X> PST02A Slim Multi-Sensor > Configuration Parameters > 7: Customer Function
  3. The default Value of “7: Customer Function” was 4 and needs to be changed to 20. Here is the explanation:
    • The default value 4 means that bit 2 is set (counting bits starts with 0 therefore the binary code of 4 is 100)
    • Therefore setting bit 4 to 1 requires a binary value of 10100 and this value converted to the decimal results in a value of 20
    • To convert between binary and decimal under Linux execute the following in the terminal:
      • from decimal to binary: echo 'obase=2;20' | bc
      • from binary to decimal: echo 'ibase=2;10100' | bc
  4. After changing the configuration I had the problem that the parameter was not sent to the device as battery devices sleep most of the time to save battery. In order to wake up the sensor you need to press the tamper key on the back side of the device. After pressing the tamper key the new configuration setting was set correctly and the device started to work as expected…
5 Likes

I have also some problems with this sensor.
Sensor data is received, but a missing callback exception is thrown afterwards…
I already set the customer function to 20 in habmin.
And I have the same openhanded version as @Harald (2.1.0)

017-10-01 14:15:41.711 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-10-01 14:15:41.714 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0C 00 04 00 0A 06 31 05 01 0A 00 4B 8F 
2017-10-01 14:15:41.717 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 0C 00 04 00 0A 06 31 05 01 0A 00 4B 8F 
2017-10-01 14:15:41.721 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 0A 06 31 05 01 0A 00 4B 
2017-10-01 14:15:41.723 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 10: Application Command Request (ALIVE:DONE)
2017-10-01 14:15:41.725 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 10: Starting initialisation from DONE
2017-10-01 14:15:41.727 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@1d4b448 already registered
2017-10-01 14:15:41.738 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 10: Incoming command class SENSOR_MULTILEVEL
2017-10-01 14:15:41.740 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 10: Received COMMAND_CLASS_SENSOR_MULTILEVEL command V5
2017-10-01 14:15:41.742 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 10: Sensor Multi Level REPORT received
2017-10-01 14:15:41.757 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 10: Sensor Type = Temperature(1), Scale = 1
2017-10-01 14:15:41.759 [DEBUG] [ss.ZWaveMultiLevelSensorCommandClass] - NODE 10: Sensor Value = 75
2017-10-01 14:15:41.760 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveMultiLevelSensorValueEvent
2017-10-01 14:15:41.761 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 10: Got an event from Z-Wave network: ZWaveMultiLevelSensorValueEvent
2017-10-01 14:15:41.763 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 10: Got a value event from Z-Wave network, endpoint = 0, command class = SENSOR_MULTILEVEL, value = 75
2017-10-01 14:15:41.764 [DEBUG] [erter.ZWaveMultiLevelSensorConverter] - NODE 10: Sensor is reporting scale 1, requiring conversion to 0. Value is now 75.
2017-10-01 14:15:41.766 [DEBUG] [converter.ZWaveCommandClassConverter] - Converted temperature from 75F to 23.9C
2017-10-01 14:15:41.767 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 10: Updating channel state zwave:device:15a670b08a0:node10:sensor_temperature to 23.9 [DecimalType]
2017-10-01 14:15:41.768 [ERROR] [ve.internal.protocol.ZWaveController] - Exception during ZWave thread: Input 2. {}
java.lang.IllegalStateException: Could not update state, because callback is missing
	at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.updateState(BaseThingHandler.java:267)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.openhab.binding.zwave.handler.ZWaveThingHandler.ZWaveIncomingEvent(ZWaveThingHandler.java:1104)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.ZWaveController.notifyEventListeners(ZWaveController.java:567)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.commandclass.ZWaveMultiLevelSensorCommandClass.handleApplicationCommandRequest(ZWaveMultiLevelSensorCommandClass.java:150)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.serialmessage.ApplicationCommandMessageClass.handleRequest(ApplicationCommandMessageClass.java:119)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.ZWaveController.handleIncomingRequestMessage(ZWaveController.java:248)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.ZWaveController.handleIncomingMessage(ZWaveController.java:214)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.ZWaveController.access$7(ZWaveController.java:208)[189:org.openhab.binding.zwave:2.1.0]
	at org.openhab.binding.zwave.internal.protocol.ZWaveController$ZWaveInputThread.run(ZWaveController.java:1324)[189:org.openhab.binding.zwave:2.1.0]