My finished version of getting data from 2 Xiaomi devices (PIR and Temp/Hum/Baro) into Domoticz.
Put in a function to get all the devices in the network to the log in domoticz.
And did some extra naming to the topics.
Code: Select all
[{"id":"74016149.f403","type":"mqtt in","z":"8188c534.77e7e8","name":"THB","topic":"zigbee2mqtt/ZolderTHB","qos":"2","broker":"54b04e64.e1422","x":110,"y":420,"wires":[["3bd30ad7.b12a16"]]},{"id":"705118a8.0cf9d8","type":"comment","z":"8188c534.77e7e8","name":"Xiaomi Mi Smart Home Temperature / Humidity Sensor","info":"https://xiaomi-mi.com/sockets-and-sensors/aqara-temperature-and-humidity-sensor/\n\nWSDCGQ11LM","x":260,"y":380,"wires":[]},{"id":"3bd30ad7.b12a16","type":"json","z":"8188c534.77e7e8","name":"","property":"payload","action":"","pretty":false,"x":270,"y":420,"wires":[["a4376d59.45fef","3b003f27.3ca0d"]]},{"id":"b50d2c76.b8846","type":"mqtt out","z":"8188c534.77e7e8","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"a61018b4.359498","x":910,"y":360,"wires":[]},{"id":"a4376d59.45fef","type":"function","z":"8188c534.77e7e8","name":"Convert Temp - Humi","func":"var temp = msg.payload.temperature;\nvar humi = msg.payload.humidity;\nvar batt = msg.payload.battery;\n//var humistat = \"0\";\n\ndelete msg.payload.temperature;\ndelete msg.payload.humidity;\ndelete msg.payload.pressure;\ndelete msg.payload.battery;\ndelete msg.payload.voltage;\n\nif (humi < 31) {\n humistat = \"2\";\n} else if (humi > 69) {\n humistat = \"3\";\n} else if (humi > 34 && humi < 66 && temp > 21 && temp < 27) {\n humistat = \"1\";\n} else {\n humistat = \"0\";\n}\n\n\nmsg.payload.idx = 552\n//msg.payload.humidity = humi.toString();\n//msg.payload.pressure = pres.toString()+\";\"+forecast;\nmsg.payload.nvalue = 0\nmsg.payload.svalue = temp.toString()+\";\"+humi.toString()+\";\"+humistat;\nmsg.payload.battery = Math.round(batt);\nreturn msg;","outputs":1,"noerr":0,"x":520,"y":420,"wires":[["b50d2c76.b8846","da1292d5.8d0d4"]]},{"id":"40149863.198668","type":"comment","z":"8188c534.77e7e8","name":"Xiaomi Mi Smart Home Occupancy Sensor","info":"https://xiaomi-mi.com/sockets-and-sensors/xiaomi-mi-occupancy-sensor/\n\nRTCGQ01LM","x":220,"y":500,"wires":[]},{"id":"614e4d93.e19474","type":"mqtt in","z":"8188c534.77e7e8","name":"PIR","topic":"zigbee2mqtt/ZolderPIR","qos":"2","broker":"54b04e64.e1422","x":110,"y":540,"wires":[["f673a083.e94cc"]]},{"id":"da1292d5.8d0d4","type":"debug","z":"8188c534.77e7e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":910,"y":300,"wires":[]},{"id":"f673a083.e94cc","type":"json","z":"8188c534.77e7e8","name":"","property":"payload","action":"","pretty":false,"x":270,"y":540,"wires":[["bb6c57b.96869a8"]]},{"id":"bb6c57b.96869a8","type":"function","z":"8188c534.77e7e8","name":"Convert PIR","func":"var occu = msg.payload.occupancy;\nvar batt = msg.payload.battery;\n\ndelete msg.payload.voltage;\ndelete msg.payload.battery;\ndelete msg.payload.occupancy;\nmsg.payload.command = \"switchlight\";\nmsg.payload.idx = 554;\nif (occu === true) {\n msg.payload.switchcmd = \"On\";\n} else {\n msg.payload.switchcmd = \"Off\";\n}\nmsg.payload.battery = Math.round(batt);\nreturn msg;","outputs":1,"noerr":0,"x":490,"y":540,"wires":[["da1292d5.8d0d4","b50d2c76.b8846"]]},{"id":"7d844a0a.645044","type":"mqtt in","z":"8188c534.77e7e8","name":"State","topic":"zigbee2mqtt/bridge/state","qos":"2","broker":"54b04e64.e1422","x":110,"y":100,"wires":[["1a6703ab.900e3c"]]},{"id":"1a6703ab.900e3c","type":"function","z":"8188c534.77e7e8","name":"Make JSON string","func":"var data = msg.payload;\n//console.log(\"payload data: length = \" + data.length);\ndata = data.trim();\n//console.log(\"trimmed data: length = \" + data.length);\ndata = '{\"command\" : \"addlogmessage\", \"message\" : '+'\"Zigbee bridge '+data+'\"'+'}'\nmsg.payload = JSON.parse(data);\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":100,"wires":[["66fd3235.3adafc"]]},{"id":"66fd3235.3adafc","type":"json","z":"8188c534.77e7e8","name":"","property":"payload","action":"","pretty":false,"x":470,"y":100,"wires":[["b50d2c76.b8846","da1292d5.8d0d4"]]},{"id":"3b003f27.3ca0d","type":"function","z":"8188c534.77e7e8","name":"Convert Barometer","func":"var temp = msg.payload.temperature;\nvar humi = msg.payload.humidity;\nvar pres = msg.payload.pressure;\nvar batt = msg.payload.battery;\n\ndelete msg.payload.temperature;\ndelete msg.payload.humidity;\ndelete msg.payload.pressure;\ndelete msg.payload.battery;\ndelete msg.payload.voltage;\ndelete msg.payload.pressure;\n\nif (pres < 966) {\n forecast = \"4\";\n} else if (pres < 993) {\n forecast = \"3\";\n} else if (pres < 1007) {\n forecast = \"2\";\n} else if (pres < 1013) {\n forecast = \"3\";\n} else if (pres < 1033) {\n forecast = \"0\";\n} else {\n forecast = \"1\";\n}\n\nmsg.payload.idx = 553\nmsg.payload.nvalue = 0\nmsg.payload.svalue = pres.toString()+\";\"+forecast;\nmsg.payload.battery = Math.round(batt);\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":460,"wires":[["b50d2c76.b8846","da1292d5.8d0d4"]]},{"id":"11eb6908.5eee17","type":"comment","z":"8188c534.77e7e8","name":"Status online/offline of the Zigbee coordinator.","info":"","x":230,"y":60,"wires":[]},{"id":"aef96916.b51028","type":"comment","z":"8188c534.77e7e8","name":"Logging from Zigbee coordinator","info":"","x":190,"y":180,"wires":[]},{"id":"cea2594c.e73858","type":"mqtt in","z":"8188c534.77e7e8","name":"Logging","topic":"zigbee2mqtt/bridge/log","qos":"2","broker":"54b04e64.e1422","x":110,"y":220,"wires":[["7c62a018.cddf7"]]},{"id":"235df1a2.464c5e","type":"mqtt out","z":"8188c534.77e7e8","name":"Devices","topic":"zigbee2mqtt/bridge/config/devices","qos":"","retain":"","broker":"54b04e64.e1422","x":280,"y":280,"wires":[]},{"id":"f2a95a42.1e1068","type":"inject","z":"8188c534.77e7e8","name":"","topic":"","payload":"Request","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":280,"wires":[["235df1a2.464c5e"]]},{"id":"7c62a018.cddf7","type":"json","z":"8188c534.77e7e8","name":"","property":"payload","action":"","pretty":false,"x":270,"y":220,"wires":[["1bbe5026.f52f8"]]},{"id":"1bbe5026.f52f8","type":"function","z":"8188c534.77e7e8","name":"Proces Devices","func":"var array = [];\nif (msg.payload.type == \"devices\") {\n var arr = [msg.payload.message];\n for (var i=0; i<arr.length;i++) {\n array.push({payload: arr[i]});\n }\n}\nreturn array;","outputs":1,"noerr":0,"x":440,"y":220,"wires":[["1fa51983.c02156"]]},{"id":"1fa51983.c02156","type":"split","z":"8188c534.77e7e8","name":"Split Devices","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":630,"y":220,"wires":[["da1292d5.8d0d4","b9ce8118.1abe3"]]},{"id":"b9ce8118.1abe3","type":"function","z":"8188c534.77e7e8","name":"Log to Domoticz","func":"var tmp = \"model \"+msg.payload.model+\" - ieeeAddr \"+msg.payload.ieeeAddr;\nvar data = '{\"command\" : \"addlogmessage\", \"message\" : '+'\"Zigbee device: '+tmp+'\"'+'}'\nmsg.payload = JSON.parse(data);\nreturn msg;\n","outputs":1,"noerr":0,"x":500,"y":280,"wires":[["b50d2c76.b8846"]]},{"id":"6a0ed29c.7083ac","type":"comment","z":"8188c534.77e7e8","name":"Documentation","info":"'friendly_name' should be an easy to remember name.\nThat friendly_name is also part of the incomming Topic.\n'Request' gives all the devices in the network in the debug window.\n\nChange:\nTopic in THB and PIR to the 'friendly_name'\nChange Domoticz IDX (msg.payload.idx) in the 3 Converters\n\n//configuration.yaml\n\nhomeassistant: false\npermit_join: true\nmqtt:\n base_topic: zigbee2mqtt\n server: 'mqtt://localhost'\nserial:\n port: /dev/ttyACM0\n disable_led: true\nadvanced:\n log_level: info\ndevices:\n '0x00158d0001b192fd':\n friendly_name: 'ZolderPIR'\n retain: false\n qos: 1\n '0x00158d00022cbcad':\n friendly_name: 'ZolderTHB'\n retain: false\n qos: 1\n","x":900,"y":60,"wires":[]},{"id":"54b04e64.e1422","type":"mqtt-broker","z":"","name":"Zigbee","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"domoticz/bridge/state","birthQos":"0","birthPayload":"online","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"a61018b4.359498","type":"mqtt-broker","z":"","name":"Domoticz","broker":"domoticz.local","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]