So you can try this DDF
{
"schema": "devcap1.schema.json",
"manufacturername": ["eWeLink","SONOFF"],
"modelid": ["TH01","SNZB-02D"],
"vendor": "SONOFF",
"product": "SNZB-02",
"sleeper": true,
"status": "Gold",
"subdevices": [
{
"type": "$TYPE_TEMPERATURE_SENSOR",
"restapi": "/sensors",
"uuid": [
"$address.ext",
"0x01",
"0x0402"
],
"fingerprint": {
"profile": "0x0104",
"device": "0x0302",
"endpoint": "0x01",
"in": [
"0x0000",
"0x0001",
"0x0402"
]
},
"items": [
{
"name": "attr/id"
},
{
"name": "attr/lastannounced"
},
{
"name": "attr/lastseen"
},
{
"name": "attr/manufacturername"
},
{
"name": "attr/modelid"
},
{
"name": "attr/name"
},
{
"name": "attr/swversion"
},
{
"name": "attr/type"
},
{
"name": "attr/uniqueid"
},
{
"name": "config/battery",
"awake": true,
"refresh.interval": 9000,
"read": {
"at": "0x0021",
"cl": "0x0001",
"ep": 1,
"fn": "zcl"
},
"parse": {
"at": "0x0021",
"cl": "0x0001",
"ep": 1,
"eval": "Item.val = Attr.val / 2"
},
"default": 0
},
{
"name": "config/offset",
"default": 0
},
{
"name": "config/on"
},
{
"name": "config/reachable"
},
{
"name": "state/lastupdated"
},
{
"name": "state/temperature",
"awake": true,
"parse": {
"at": "0x0000",
"cl": "0x0402",
"ep": 1,
"eval": "Item.val = Attr.val + R.item('config/offset').val",
"fn": "zcl"
},
"default": 0
}
]
},
{
"type": "$TYPE_HUMIDITY_SENSOR",
"restapi": "/sensors",
"uuid": [
"$address.ext",
"0x01",
"0x0405"
],
"fingerprint": {
"profile": "0x0104",
"device": "0x0302",
"endpoint": "0x01",
"in": [
"0x0000",
"0x0001",
"0x0405"
]
},
"items": [
{
"name": "attr/id"
},
{
"name": "attr/lastannounced"
},
{
"name": "attr/lastseen"
},
{
"name": "attr/manufacturername"
},
{
"name": "attr/modelid"
},
{
"name": "attr/name"
},
{
"name": "attr/swversion"
},
{
"name": "attr/type"
},
{
"name": "attr/uniqueid"
},
{
"name": "config/battery",
"awake": true,
"refresh.interval": 9000,
"read": {
"at": "0x0021",
"cl": "0x0001",
"ep": 1,
"fn": "zcl"
},
"parse": {
"at": "0x0021",
"cl": "0x0001",
"ep": 1,
"eval": "Item.val = Attr.val / 2"
},
"default": 0
},
{
"name": "config/offset",
"default": 0
},
{
"name": "config/on"
},
{
"name": "config/reachable"
},
{
"name": "state/humidity",
"awake": true,
"parse": {
"at": "0x0000",
"cl": "0x0405",
"ep": 1,
"eval": "Item.val = Attr.val + R.item('config/offset').val",
"fn": "zcl"
},
"default": 0
},
{
"name": "state/lastupdated"
}
]
}
],
"bindings": [
{
"bind": "unicast",
"src.ep": 1,
"dst.ep": 1,
"cl": "0x0001",
"report": [
{
"at": "0x0021",
"dt": "0x20",
"min": 3600,
"max": 7200
}
]
},
{
"bind": "unicast",
"src.ep": 1,
"cl": "0x0405",
"report": [
{
"at": "0x0000",
"dt": "0x21",
"min": 10,
"max": 3600,
"change": "0x00000064"
}
]
},
{
"bind": "unicast",
"src.ep": 1,
"cl": "0x0402",
"report": [
{
"at": "0x0000",
"dt": "0x29",
"min": 5,
"max": 1800,
"change": "0x00000014"
}
]
}
]
}
On raspbian itâs easy, you can put the DDF on (only 1 solution, the one you prefer):
-
/home/<DECONZUSER>/.local/share/dresden-elektronik/deCONZ/devices/sonoff
this file will be prioritary and persistent on the official one
-
/usr/share/deCONZ/devices/sonoff
here you need to edit the official one, there is already a DDF for this device called snzb-02-multisensor.json
, at next deconz update the file will be replaced again.
After DDF replacement/modification, need to restart deconz, reset the device and re-include it.