Sensor successfully paired to deconz but only partial information updated in openhab2

  • Platform information:
    • Hardware: Raspberry Pi 4
    • Buster
    • Java Runtime Environment:1.8.0.222
    • openHAB version:2.5.0.1
    • deconz firmware :0x264a0700

i have successfully installed rpi4, openhab and a deconz stick attached with newest firmware. there are two actors connected, an open/close sensor and a smoke detector.

  • open/close connecter works fine in deconz and openhab
  • smoke detector is initialised with “time of last update” ( easy to test, as it changes whenever a test sound is issued on the smoke detector) and “temperature” (tested with positioning of sensor inside/outside) - the “alarm” state is initialised as “off” (testing difficult).
  • smoke detector “time of last update” is updated in openhab baisc UI anytime the test button is pressed on smoke detector.

my problem however is, that even when the fire state and the temperatur info of the smoke detector will no updat ein openhab . I have verified the correct state using Rest Api of deconz. here all updates are shown.

GET 192.168.1.146/api/1D14A87469/sensors/3
“3”: {
“config”: {
“battery”: 100,
“on”: true,
“reachable”: true,
“temperature”: 600
},
“ep”: 1,
“etag”: “e063bfbd3dd82b0194175553541677f1”,
“manufacturername”: “LUMI”,
“modelid”: “lumi.sensor_smoke”,
“name”: “lumi.sensor_smoke”,
“state”: {
“fire”: false,
“lastupdated”: “2019-12-30T08:59:43”,
“lowbattery”: false,
“tampered”: false
},
“swversion”: “20170314”,
“type”: “ZHAFire”,
“uniqueid”: “00:15:8d:00:04:11:f4:e5-01-0500”
}

The “last Update” is immediatley updated in openhab , the temperature value only when deCONZ is restarted. The alarm starte “fire:true” is never updated in openhab.
(i verified the alarm state with rest Api in deconz reports fire:true, when smoke is detected).

debuggind deCONZ tells me (when pressing the test button)
09:21:18:583 Update Sensor 0x00158D000411F4E5 Basic Cluster
09:21:18:583 no button map for: lumi.sensor_smoke ep: 0x01 cl: 0x0000 cmd: 0x0A pl[0]: 001
09:21:18:583 ZCL attribute report 0x00158D000411F4E5 for cluster 0x0000, ep 0x01
09:21:18:583 payload: 01ff42280121710c0328110421a81305211600062403000000000a21000008210410642001962300000000
09:21:18:583 0x00158D000411F4E5 extract Xiaomi special attribute 0xFF01
09:21:18:583 01 battery 3185 (0x0C71)
09:21:18:583 03 temperature 17 °C
09:21:18:583 04 unknown 5032 (0x13A8)
09:21:18:583 05 RSSI dB (?) 22 (0x0016)
09:21:18:583 06 LQI (?) 12884901888 (0x0300000000)
09:21:18:583 0a unknown 0 (0x0000)
09:21:18:583 08 unknown 4100 (0x1004)
09:21:18:583 64 current position lift 1%
09:21:18:584 96 unsupported tag (data type 0x23)
09:21:18:584 discard sensor state push for 3: state/lowbattery (already pushed)
09:21:18:585 discard sensor state push for 3: state/tampered (already pushed)
09:21:18:587 discard sensor config push for config/battery (already pushed)
09:21:18:588 discard sensor config push for config/temperature (already pushed)
09:21:18:646 void deCONZ::zmNode::setFetched(deCONZ::RequestId, bool) fetched item: 8, node: 0x0000

I have not idea, where my problem is in the transfer to openhab and how to analyse it further. Can anyone give me a hint?

Hi Martin,

Unfortunately the ZHAFire sensor is not yet supported by deCONZ binding. See also:

Thanks fo your reply, i did not see this topic.
actually i stopped further analysis but used an alternative:
The sensors creates a event when the testkey is pressed : AlarmSensor_LastUpdated is thrown in openhab. This i use to directly question the state of the sensor using the REST API and extract the state.
So - either the sensor creates as LastUpdated when the fire:state changes , so i trap this with the rule,
or i use a time-based rule to check the sensor state every minute to raise the central alarm.
Both should work, but i have not testet it with the fire state.
P.S:

Rule “Check Fire Alarm Status”
when
Item AlarmSensor_LastUpdated changed
then
val String myString = sendHttpGetRequest(“http://192.168.1.146:80/api//sensors/”)

val String isFire =  transform("JSONPATH", "$.state.fire", myString)
//sendTelegram("myMobile", "Fire Alarm of Test Smoke Detector is " + isFire)
logInfo("Smoker", "Status of smoke ist " + isFire )

end

Tested again with a real fire alarm. It is working as expected. The sensor produces a LastUpdated Change which is caught by the rule. The rulereads then status fire=true and can handle it.

not a good solution as i would expect deconz/conhab binding to understand the smoke sonsor correctly, but the solution is ok for me.
P.S. i could mark this as solved, but do not know how to do so.

I now have submited a PR for adding it: