Skip to content

Instantly share code, notes, and snippets.

@Dirnei
Last active March 9, 2020 11:56
Show Gist options
  • Save Dirnei/1f8754d8cf07e12670f41affc3a543df to your computer and use it in GitHub Desktop.
Save Dirnei/1f8754d8cf07e12670f41affc3a543df to your computer and use it in GitHub Desktop.
This is a node red dashboard for managing your zigbee2mqtt devices
[{"id":"ca8815f5.212628","type":"mqtt in","z":"b5116eeb.4bea","name":"log received","topic":"zigbee2mqtt/bridge/log","qos":"2","datatype":"auto","broker":"123ff5c9.e4b70a","x":110,"y":100,"wires":[["ae24a2c9.6a378"]]},{"id":"ae24a2c9.6a378","type":"json","z":"b5116eeb.4bea","name":"","property":"payload","action":"","pretty":false,"x":250,"y":100,"wires":[["35613c8.d939bc4"]]},{"id":"66f65e3f.34fc7","type":"comment","z":"b5116eeb.4bea","name":"log received","info":"","x":110,"y":60,"wires":[]},{"id":"5e4bda27.c8d114","type":"ui_toast","z":"b5116eeb.4bea","position":"top right","displayTime":"5","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"topic":"","name":"","x":970,"y":140,"wires":[]},{"id":"20150c0e.3bb614","type":"ui_template","z":"b5116eeb.4bea","group":"f28c8c2f.f53d9","name":"","order":1,"width":16,"height":12,"format":"<style>\n /* Tooltip container */\n .md-button.tooltip {\n position: relative;\n display: inline-block;\n border-bottom: 1px dotted black; \n overflow: visible;\n }\n \n /* Tooltip text */\n .md-button.tooltip .tooltiptext {\n visibility: hidden;\n width: 120px;\n background-color: #555;\n color: #fff;\n text-align: center;\n padding: 5px 0;\n border-radius: 6px;\n \n /* Position the tooltip text */\n position: absolute;\n z-index: 1;\n top: 125%;\n left: 50%;\n margin-left: -60px;\n \n /* Fade in tooltip */\n opacity: 0;\n transition: opacity 0.3s;\n }\n \n /* Tooltip arrow */\n .md-button.tooltip .tooltiptext::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: #555 transparent transparent transparent;\n transform: rotate(180deg);\n }\n \n /* Show the tooltip text when you mouse over the tooltip container */\n .md-button.tooltip:hover .tooltiptext {\n visibility: visible;\n opacity: 1;\n }\n \n .md-button.tooltip:hover .tooltiptext:hover {\n visibility: hidden;\n opacity: 0;\n }\n \n tr:hover {\n background: #555;\n }\n</style>\n<table>\n <tr>\n <td><B>Name:</B></td>\n <td><B>Model:</B></td>\n <td><B>Type:</B></td>\n <td><B>Address:</B></td>\n <td><B>Actions:</B></td>\n </tr>\n <tr ng-repeat=\"obj in msg.payload\" ng-class=\"myVar='{{ obj.myClass }}'\">\n <td>{{ obj.friendly_name }}</td>\n <td>{{ obj.model }}</td>\n <td>{{ obj.type }}</td>\n <td>{{ obj.ieeeAddr }}</td>\n <td>\n <md-button class=\"tooltip\" style=\"background-color: #333; border: 1px solid #555;color: #fff;padding: 5px 10px;margin: 0px;\" ng-click=\"send({topic:'rename', payload: obj.friendly_name })\">📝\n <span class=\"tooltiptext\">rename</span>\n </md-button>\n <md-button class=\"tooltip\" style=\"background-color: #333; border: 1px solid #555;color: #fff;padding: 5px 10px;margin: 0px;\" ng-click=\"send({topic:'delete', payload: obj.friendly_name })\">✖\n <span class=\"tooltiptext\">delete</span>\n </md-button>\n <md-button class=\"tooltip\" style=\"background-color: #333; border: 1px solid #555;color: #fff;padding: 5px 10px;margin: 0px;\" ng-click=\"send({topic:'select', payload: obj.friendly_name })\">🔗\n <span class=\"tooltiptext\">add to group</span>\n </md-button>\n </td>\n </tr>\n</table>\n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":860,"y":280,"wires":[["dab1d6b9.a9e5e8"]]},{"id":"be9844ec.e883d8","type":"mqtt out","z":"b5116eeb.4bea","name":"get device list","topic":"zigbee2mqtt/bridge/config/devices","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":940,"y":180,"wires":[]},{"id":"ed148f77.84465","type":"comment","z":"b5116eeb.4bea","name":"new device list received","info":"","x":140,"y":280,"wires":[]},{"id":"59a4c0e7.cd279","type":"ui_button","z":"b5116eeb.4bea","name":"","group":"f28c8c2f.f53d9","order":2,"width":0,"height":0,"passthru":false,"label":"refresh devices","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":400,"y":180,"wires":[["a3bb405c.d07b7"]]},{"id":"a3bb405c.d07b7","type":"function","z":"b5116eeb.4bea","name":"reset message","func":"msg.payload = {};\nreturn msg;","outputs":1,"noerr":0,"x":760,"y":180,"wires":[["be9844ec.e883d8"]]},{"id":"8a6d6acb.826a28","type":"ui_ui_control","z":"b5116eeb.4bea","name":"","events":"connect","x":240,"y":180,"wires":[["59a4c0e7.cd279"]]},{"id":"aad31ccd.afb7","type":"comment","z":"b5116eeb.4bea","name":"remove device","info":"","x":120,"y":600,"wires":[]},{"id":"f4d5c15d.5601","type":"ui_toast","z":"b5116eeb.4bea","position":"dialog","displayTime":"5","highlight":"","sendall":true,"outputs":1,"ok":"cancel","cancel":"ok","raw":false,"topic":"Remove device","name":"","x":410,"y":640,"wires":[["90a9b4f3.37bdc8"]]},{"id":"3bd70d47.85f6e2","type":"ui_toast","z":"b5116eeb.4bea","position":"top right","displayTime":"5","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"topic":"Invalid device name","name":"","x":990,"y":560,"wires":[]},{"id":"bf27c4.329b584","type":"comment","z":"b5116eeb.4bea","name":"rename device","info":"","x":120,"y":500,"wires":[]},{"id":"ece84679.938eb8","type":"comment","z":"b5116eeb.4bea","name":"connected","info":"","x":100,"y":180,"wires":[]},{"id":"8c369445.6b4658","type":"switch","z":"b5116eeb.4bea","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"device_renamed","vt":"str"},{"t":"eq","v":"devices","vt":"str"},{"t":"eq","v":"groups","vt":"str"},{"t":"eq","v":"device_group_add","vt":"str"},{"t":"eq","v":"device_group_remove","vt":"str"},{"t":"eq","v":"device_connected","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":7,"x":550,"y":100,"wires":[["1d64473.6c7f1b9","a3bb405c.d07b7"],["57c916e6.8cf9f8"],["e4d3615f.4a8ef"],["f4bb9068.e2c3a"],["f4bb9068.e2c3a"],["a3bb405c.d07b7"],["5e4bda27.c8d114"]]},{"id":"1d64473.6c7f1b9","type":"function","z":"b5116eeb.4bea","name":"Device renamed","func":"var from = msg.payload.from;\nvar to = msg.payload.to;\nmsg.topic = \"Device renamed\";\nmsg.payload = \"Renamed \" + from + \"to \" + to;\nreturn msg;","outputs":1,"noerr":0,"x":720,"y":20,"wires":[["5e4bda27.c8d114"]]},{"id":"35613c8.d939bc4","type":"change","z":"b5116eeb.4bea","name":"prepare data","rules":[{"t":"move","p":"payload.type","pt":"msg","to":"topic","tot":"msg"},{"t":"move","p":"payload.message","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":100,"wires":[["8c369445.6b4658"]]},{"id":"4e21c274.f13cfc","type":"sort","z":"b5116eeb.4bea","name":"","order":"ascending","as_num":false,"target":"payload","targetType":"msg","msgKey":"friendly_name","msgKeyType":"jsonata","seqKey":"payload","seqKeyType":"msg","x":380,"y":280,"wires":[["cd0d85d1.a00bc8"]]},{"id":"c7cee250.103d2","type":"function","z":"b5116eeb.4bea","name":"","func":"var device = msg.selectedDevice;\n\nmsg.payload = msg.payload.filter(function(n){\n n.isSelected= n.friendly_name === device;\n n.myClass = n.isSelected ? \"highlight\" : \"\";\n return n.friendly_name !== \"Coordinator\";\n});\n \nreturn msg;","outputs":1,"noerr":0,"x":730,"y":280,"wires":[["20150c0e.3bb614"]]},{"id":"622f222e.62a26c","type":"ui_button","z":"b5116eeb.4bea","name":"add group","group":"6cbab99e.137158","order":2,"width":5,"height":1,"passthru":false,"label":"Add group","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":100,"y":740,"wires":[["1fd757b8.3787e8"]]},{"id":"f426fe23.d137f","type":"ui_template","z":"b5116eeb.4bea","group":"6cbab99e.137158","name":"","order":1,"width":11,"height":12,"format":"<style>\n .highlight {\n background-color: #666;\n }\n</style>\n<table>\n <tr>\n <td><B>ID</B></td>\n <td><B>Name</B></td>\n <td><B>Optimistic</B></td>\n <td><B>Devices</B></td>\n </tr>\n <tr ng-repeat=\"obj in msg.payload\" ng-class=\"myVar='{{ obj.myClass }}'\">\n <td>\n {{ obj.ID }}\n </td>\n <td>{{ obj.friendly_name }}</td>\n <td>{{ obj.optimistic }}</td>\n <td>\n <md-button ng-If=\"obj.showRemoveGroup\" class=\"vibrate filled touched bigfont rounded\" style=\"background-color: #333; border: 1px solid #555;color: #fff;padding: 5px 10px;\" ng-click=\"send({topic:'deleteGroup', payload: obj.friendly_name})\">remove group</md-button>\n <table>\n <tr ng-repeat=\"device in obj.devices\">\n <td>{{ device }}</td>\n <td>\n <md-button class=\"vibrate filled touched bigfont rounded\" style=\"background-color: #333; border: 1px solid #555;color: #fff;padding: 5px 10px;\" ng-click=\"send({topic:'delete', payload: device, group: obj.friendly_name })\">✖</md-button>\n </td>\n </tr>\n </table>\n </td>\n <td>\n <md-button class=\"vibrate filled touched bigfont rounded\" style=\"background-color: #333; border: 1px solid #555;color: #fff;padding: 5px 10px;\" ng-click=\"send({topic:'select', payload: obj.friendly_name })\">🔗</md-button>\n </td>\n </tr>\n</table>\n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":860,"y":400,"wires":[["93d168ef.9f0dd8"]]},{"id":"1ebe14a6.8c25bb","type":"sort","z":"b5116eeb.4bea","name":"","order":"ascending","as_num":false,"target":"payload","targetType":"msg","msgKey":"friendly_name","msgKeyType":"jsonata","seqKey":"payload","seqKeyType":"msg","x":380,"y":400,"wires":[["38513444.abe59c"]]},{"id":"bf0530ab.7c599","type":"function","z":"b5116eeb.4bea","name":"","func":"var devices = flow.get(\"devicelist\");\nvar selectedGroup = msg.selectedGroup;\n\nmsg.payload.forEach(function(element){\n var temp = [];\n element.showRemoveGroup = element.devices.length === 0;\n element.isSelected = element.friendly_name == selectedGroup;\n element.myClass = element.isSelected ? \"highlight\" : \"\";\n element.devices.forEach(function(address){\n \n if(address.substring(0, 2) !== \"0x\")\n {\n temp.push(address);\n return;\n }\n \n address = address.substring(address.length-2, 0);\n var device = devices.find(function(d){\n return d.ieeeAddr == address;\n });\n if(device !== undefined)\n {\n temp.push(device.friendly_name);\n }\n else\n {\n temp.push(address);\n }\n });\n element.devices = temp;\n});\n\nreturn msg;","outputs":1,"noerr":0,"x":730,"y":400,"wires":[["f426fe23.d137f"]]},{"id":"be215d9.a7813a","type":"mqtt out","z":"b5116eeb.4bea","name":"group list","topic":"zigbee2mqtt/bridge/config/groups","qos":"","retain":"","broker":"123ff5c9.e4b70a","x":920,"y":220,"wires":[]},{"id":"54aefe7d.b1d7d","type":"function","z":"b5116eeb.4bea","name":"reset message","func":"msg.payload = {};\nreturn msg;","outputs":1,"noerr":0,"x":760,"y":220,"wires":[["be215d9.a7813a"]]},{"id":"c056ca7.874bf38","type":"ui_button","z":"b5116eeb.4bea","name":"","group":"6cbab99e.137158","order":4,"width":5,"height":1,"passthru":false,"label":"refresh groups","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":420,"y":220,"wires":[["54aefe7d.b1d7d"]]},{"id":"90c65b91.4b03d8","type":"ui_ui_control","z":"b5116eeb.4bea","name":"","events":"change","x":260,"y":220,"wires":[["c056ca7.874bf38"]]},{"id":"3968080a.327518","type":"comment","z":"b5116eeb.4bea","name":"Get group list","info":"","x":110,"y":220,"wires":[]},{"id":"a7b599ee.6f34c8","type":"comment","z":"b5116eeb.4bea","name":"add group","info":"","x":100,"y":700,"wires":[]},{"id":"ad452cc2.8874a","type":"mqtt out","z":"b5116eeb.4bea","name":"remove_group","topic":"zigbee2mqtt/bridge/config/remove_group","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":1080,"y":840,"wires":[]},{"id":"2488f036.b52b5","type":"ui_toast","z":"b5116eeb.4bea","position":"dialog","displayTime":"5","highlight":"","sendall":true,"outputs":1,"ok":"OK","cancel":"Cancel","raw":false,"topic":"Delete group","name":"","x":590,"y":840,"wires":[["9847a032.6848a"]]},{"id":"d320dcc9.3fbce","type":"function","z":"b5116eeb.4bea","name":"prepare notification","func":"msg.topic = \"Deleting group\";\nmsg.payload = \"Do you really want to delete group '\" + msg.groupname + \"'?\";\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":840,"wires":[["2488f036.b52b5"]]},{"id":"5037bf4f.ef98e","type":"comment","z":"b5116eeb.4bea","name":"remove group","info":"","x":110,"y":800,"wires":[]},{"id":"aa524771.7f1628","type":"mqtt out","z":"b5116eeb.4bea","name":"add device to group","topic":"","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":1390,"y":1020,"wires":[]},{"id":"e41023c0.fd66e","type":"function","z":"b5116eeb.4bea","name":"prepare mqtt message","func":"msg.topic = \"zigbee2mqtt/bridge/group/\"+msg.group+\"/add\";\nmsg.payload = msg.device;\nreturn msg;","outputs":1,"noerr":0,"x":1100,"y":1000,"wires":[["aa524771.7f1628","53640ef6.a9373","df98588b.d1aff8"]]},{"id":"a50ebb3a.4aed38","type":"comment","z":"b5116eeb.4bea","name":"device selected","info":"","x":120,"y":900,"wires":[]},{"id":"5af99ac3.dc4c44","type":"function","z":"b5116eeb.4bea","name":"store device list","func":"flow.set('devicelist', msg.payload);","outputs":0,"noerr":0,"x":1260,"y":260,"wires":[]},{"id":"977a74df.65e058","type":"function","z":"b5116eeb.4bea","name":"store group list","func":"flow.set('grouplist', msg.payload);","outputs":0,"noerr":0,"x":1220,"y":380,"wires":[]},{"id":"be6dbba5.f25558","type":"function","z":"b5116eeb.4bea","name":"prepare mqtt message","func":"msg.topic = \"zigbee2mqtt/bridge/group/\"+msg.group+\"/remove\";\n\nreturn msg;","outputs":1,"noerr":0,"x":200,"y":1160,"wires":[["f2acca53.d25538"]]},{"id":"f2acca53.d25538","type":"mqtt out","z":"b5116eeb.4bea","name":"remove device from group","topic":"","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":430,"y":1160,"wires":[]},{"id":"ba0d9128.be286","type":"link in","z":"b5116eeb.4bea","name":"refresh group delayed","links":["cad5ef67.2b2b8","6a8b4028.e8ca6","bcee4e08.d7b72","63fa3a71.d33394","d909bcbc.7bc15","f6fb6ce9.19a4b"],"x":595,"y":200,"wires":[["54aefe7d.b1d7d"]]},{"id":"cad5ef67.2b2b8","type":"link out","z":"b5116eeb.4bea","name":"","links":["ba0d9128.be286"],"x":1055,"y":680,"wires":[]},{"id":"9847a032.6848a","type":"switch","z":"b5116eeb.4bea","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"OK","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":730,"y":840,"wires":[["7833440a.6e3b3c"]]},{"id":"7833440a.6e3b3c","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"groupname","pt":"msg","to":"payload","tot":"msg"},{"t":"delete","p":"groupname","pt":"msg"},{"t":"delete","p":"topic","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":880,"y":840,"wires":[["ad452cc2.8874a","e825230f.c2516"]]},{"id":"81b42905.c94488","type":"ui_toast","z":"b5116eeb.4bea","position":"prompt","displayTime":"5","highlight":"","sendall":true,"outputs":1,"ok":"rename","cancel":"cancel","raw":false,"topic":"","name":"","x":410,"y":540,"wires":[["c0c83837.ac9828"]]},{"id":"c0c83837.ac9828","type":"switch","z":"b5116eeb.4bea","name":"!cancel","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"cancel","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":560,"y":540,"wires":[["71a750e8.0f965"]]},{"id":"71a750e8.0f965","type":"switch","z":"b5116eeb.4bea","name":"!empty","property":"payload","propertyType":"msg","rules":[{"t":"nempty"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":690,"y":540,"wires":[["bb9a86f6.aa9848"],["8ecb3207.1bb98"]]},{"id":"69ff0947.215178","type":"change","z":"b5116eeb.4bea","name":"prepare notification","rules":[{"t":"move","p":"payload","pt":"msg","to":"device","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"Enter new devicename","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"Rename {device}","tot":"str"},{"t":"change","p":"topic","pt":"msg","from":"{device}","fromt":"str","to":"device","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":190,"y":540,"wires":[["81b42905.c94488"]]},{"id":"8ecb3207.1bb98","type":"template","z":"b5116eeb.4bea","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"'{{payload}}' is an invalid device name!","output":"str","x":820,"y":560,"wires":[["3bd70d47.85f6e2"]]},{"id":"1e109473.c5dcec","type":"mqtt out","z":"b5116eeb.4bea","name":"rename","topic":"zigbee2mqtt/bridge/config/rename","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":1000,"y":520,"wires":[]},{"id":"bb9a86f6.aa9848","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.new","tot":"msg"},{"t":"move","p":"device","pt":"msg","to":"payload.old","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":520,"wires":[["1e109473.c5dcec"]]},{"id":"6f242adc.1787b4","type":"ui_switch","z":"b5116eeb.4bea","name":"","label":"Permit join","tooltip":"","group":"aa623bc9.bf7ff8","order":1,"width":0,"height":0,"passthru":false,"decouple":"true","topic":"","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","x":530,"y":1300,"wires":[["227e4e6c.bd9182"]]},{"id":"9f13cc43.5071f","type":"ui_toast","z":"b5116eeb.4bea","position":"prompt","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Add","cancel":"Cancel","raw":false,"topic":"Add new group","name":"","x":410,"y":740,"wires":[["818fed16.4d375"]]},{"id":"1fd757b8.3787e8","type":"change","z":"b5116eeb.4bea","name":"set payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"Enter new group name","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":740,"wires":[["9f13cc43.5071f"]]},{"id":"818fed16.4d375","type":"switch","z":"b5116eeb.4bea","name":"!cancel","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"cancel","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":560,"y":740,"wires":[["206f7eb6.9b92b2"]]},{"id":"206f7eb6.9b92b2","type":"switch","z":"b5116eeb.4bea","name":"!empty","property":"payload","propertyType":"msg","rules":[{"t":"nempty"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":690,"y":740,"wires":[["11721769.f07649"],["76fced71.bb23f4"]]},{"id":"76fced71.bb23f4","type":"function","z":"b5116eeb.4bea","name":"prepare notification","func":"msg.topic = \"Groupname is empty!\";\nmsg.payload = \"Enter a group name and try it again\";\nreturn msg;","outputs":1,"noerr":0,"x":930,"y":760,"wires":[["dd98b325.35b1e"]]},{"id":"dd98b325.35b1e","type":"ui_toast","z":"b5116eeb.4bea","position":"top right","displayTime":"5","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"topic":"System Notification","name":"","x":1130,"y":760,"wires":[]},{"id":"56c73f9a.0444a","type":"mqtt out","z":"b5116eeb.4bea","name":"add group","topic":"zigbee2mqtt/bridge/config/add_group","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":1100,"y":720,"wires":[]},{"id":"11721769.f07649","type":"change","z":"b5116eeb.4bea","name":"set payload","rules":[{"t":"delete","p":"socketid","pt":"msg"},{"t":"delete","p":"topic","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":720,"wires":[["56c73f9a.0444a","cad5ef67.2b2b8"]]},{"id":"611a8045.b7509","type":"ui_dropdown","z":"b5116eeb.4bea","name":"logging level","label":"Tracelevel","tooltip":"","place":"Select option","group":"aa623bc9.bf7ff8","order":2,"width":0,"height":0,"passthru":false,"options":[{"label":"Info","value":"info","type":"str"},{"label":"Debug","value":"debug","type":"str"},{"label":"Warn","value":"warn","type":"str"},{"label":"Error","value":"error","type":"str"}],"payload":"","topic":"","x":530,"y":1220,"wires":[["54e78008.b1848"]]},{"id":"54e78008.b1848","type":"mqtt out","z":"b5116eeb.4bea","name":"loggin level","topic":"zigbee2mqtt/bridge/config/log_level","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":710,"y":1220,"wires":[]},{"id":"77bc4085.0af8","type":"comment","z":"b5116eeb.4bea","name":"bridge config","info":"","x":110,"y":1260,"wires":[]},{"id":"a8d97fd0.d7f0f","type":"mqtt out","z":"b5116eeb.4bea","name":"permit join","topic":"zigbee2mqtt/bridge/config/permit_join","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":1010,"y":1300,"wires":[]},{"id":"edfb20e4.20da7","type":"ui_toast","z":"b5116eeb.4bea","position":"top right","displayTime":"5","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"topic":"System Notification","name":"","x":1030,"y":1260,"wires":[]},{"id":"a72b31c4.6b6d8","type":"function","z":"b5116eeb.4bea","name":"prepare notification","func":"if (msg.payload){\n msg.payload = \"Permit join: Allow\";\n} else {\n msg.payload = \"Permit join: Deny\";\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":830,"y":1260,"wires":[["edfb20e4.20da7"]]},{"id":"90a9b4f3.37bdc8","type":"switch","z":"b5116eeb.4bea","name":"!cancel","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"cancel","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":560,"y":640,"wires":[["a9f3babd.fa5a78"]]},{"id":"991a427f.73da3","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"device","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"Do you really wont to delete '{device}' !","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"{device}","fromt":"str","to":"device","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":640,"wires":[["f4d5c15d.5601"]]},{"id":"a9f3babd.fa5a78","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"device","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"zigbee2mqtt/bridge/config/remove","tot":"str"},{"t":"delete","p":"socketid","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":720,"y":640,"wires":[["b6ecf6d8.b4df68"]]},{"id":"b6ecf6d8.b4df68","type":"mqtt out","z":"b5116eeb.4bea","name":"remove device","topic":"","qos":"0","retain":"false","broker":"123ff5c9.e4b70a","x":900,"y":640,"wires":[]},{"id":"63fa3a71.d33394","type":"link out","z":"b5116eeb.4bea","name":"","links":["ba0d9128.be286"],"x":815,"y":80,"wires":[]},{"id":"f4bb9068.e2c3a","type":"function","z":"b5116eeb.4bea","name":"","func":"msg.topic = \"Groups updated!\";\nmsg.payload = msg.payload.group + \" - \" + msg.payload.friendly_name;\nreturn msg;","outputs":1,"noerr":0,"x":710,"y":120,"wires":[["63fa3a71.d33394","5e4bda27.c8d114"]]},{"id":"a476cd74.aec8b","type":"link in","z":"b5116eeb.4bea","name":"new device list","links":["57c916e6.8cf9f8","ae9bf9cf.8e6948","f6c187bd.82a948"],"x":275,"y":280,"wires":[["4e21c274.f13cfc"]]},{"id":"c506d00a.b5099","type":"link in","z":"b5116eeb.4bea","name":"new group list","links":["e4d3615f.4a8ef","792debd4.4a83d4"],"x":275,"y":400,"wires":[["1ebe14a6.8c25bb"]]},{"id":"57c916e6.8cf9f8","type":"link out","z":"b5116eeb.4bea","name":"","links":["a476cd74.aec8b"],"x":675,"y":60,"wires":[]},{"id":"e4d3615f.4a8ef","type":"link out","z":"b5116eeb.4bea","name":"","links":["c506d00a.b5099"],"x":735,"y":80,"wires":[]},{"id":"ec0681dc.4078e","type":"comment","z":"b5116eeb.4bea","name":"new group list received","info":"","x":140,"y":400,"wires":[]},{"id":"d909bcbc.7bc15","type":"link out","z":"b5116eeb.4bea","name":"","links":["ba0d9128.be286"],"x":1235,"y":800,"wires":[]},{"id":"ec68602f.55706","type":"mqtt in","z":"b5116eeb.4bea","name":"config received","topic":"zigbee2mqtt/bridge/config","qos":"2","datatype":"json","broker":"123ff5c9.e4b70a","x":120,"y":1300,"wires":[["16b579d2.045126","eecb992b.fcbe78","381a59f1.77aac6","472671db.340b9","3d93a5a9.e7f95a","270e7e9d.68d4c2"]]},{"id":"eecb992b.fcbe78","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload.permit_join","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"feedback","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":1300,"wires":[["6f242adc.1787b4"]]},{"id":"227e4e6c.bd9182","type":"switch","z":"b5116eeb.4bea","name":"","property":"feedback","propertyType":"msg","rules":[{"t":"true"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":670,"y":1300,"wires":[["a72b31c4.6b6d8"],["58babd34.4d3784"]]},{"id":"58babd34.4d3784","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"true","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"false","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1300,"wires":[["a8d97fd0.d7f0f"]]},{"id":"16b579d2.045126","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload.log_level","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"feedback","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":1220,"wires":[["611a8045.b7509"]]},{"id":"381a59f1.77aac6","type":"ui_text","z":"b5116eeb.4bea","group":"aa623bc9.bf7ff8","order":3,"width":0,"height":0,"name":"","label":"Version: ","format":"{{msg.payload.version}}","layout":"row-spread","x":340,"y":1260,"wires":[]},{"id":"472671db.340b9","type":"ui_text","z":"b5116eeb.4bea","group":"aa623bc9.bf7ff8","order":4,"width":0,"height":0,"name":"","label":"Commit: ","format":"{{msg.payload.commit}}","layout":"row-spread","x":340,"y":1340,"wires":[]},{"id":"3d93a5a9.e7f95a","type":"ui_text","z":"b5116eeb.4bea","group":"aa623bc9.bf7ff8","order":5,"width":0,"height":0,"name":"","label":"Coordinator: ","format":"{{msg.payload.coordinator.type}}","layout":"row-spread","x":350,"y":1380,"wires":[]},{"id":"270e7e9d.68d4c2","type":"ui_text","z":"b5116eeb.4bea","group":"aa623bc9.bf7ff8","order":6,"width":0,"height":0,"name":"","label":"Revision: ","format":"{{msg.payload.coordinator.meta.revision}}","layout":"row-spread","x":340,"y":1420,"wires":[]},{"id":"ac63e028.d2116","type":"function","z":"b5116eeb.4bea","name":"both are set","func":"if(msg.device !== undefined &&\n msg.device !== null &&\n msg.device !== \"\" &&\n msg.group !== undefined &&\n msg.group !== null &&\n msg.group !== \"\") {\n \n msg.topic = \"Add device to group\";\n msg.payload = \"Do you want to add '\";\n msg.payload += msg.device + \"' to group '\";\n msg.payload += msg.group + \"'?\";\n return msg;\n}","outputs":1,"noerr":0,"x":550,"y":980,"wires":[["d5b9148b.3a1d78"]]},{"id":"d5b9148b.3a1d78","type":"ui_toast","z":"b5116eeb.4bea","position":"dialog","displayTime":"5","highlight":"","sendall":true,"outputs":1,"ok":"cancel","cancel":"yes","raw":false,"topic":"","name":"","x":710,"y":980,"wires":[["f7a3abfa.5f18f8"]]},{"id":"f7a3abfa.5f18f8","type":"switch","z":"b5116eeb.4bea","name":"switch button press","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"cancel","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":890,"y":980,"wires":[["507bf7f2.26e0c8"],["e41023c0.fd66e"]]},{"id":"507bf7f2.26e0c8","type":"switch","z":"b5116eeb.4bea","name":"","property":"selected","propertyType":"msg","rules":[{"t":"eq","v":"group","vt":"str"},{"t":"eq","v":"device","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":1050,"y":960,"wires":[["53640ef6.a9373"],["df98588b.d1aff8"]]},{"id":"dab1d6b9.a9e5e8","type":"switch","z":"b5116eeb.4bea","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"devices","vt":"str"},{"t":"eq","v":"select","vt":"str"},{"t":"eq","v":"delete","vt":"str"},{"t":"eq","v":"rename","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":990,"y":280,"wires":[["5af99ac3.dc4c44"],["8548faf8.f93768"],["59529317.4aa9fc"],["85ca610b.330c3"]]},{"id":"93d168ef.9f0dd8","type":"switch","z":"b5116eeb.4bea","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"groups","vt":"str"},{"t":"eq","v":"select","vt":"str"},{"t":"eq","v":"delete","vt":"str"},{"t":"eq","v":"deleteGroup","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":990,"y":400,"wires":[["977a74df.65e058"],["c3e92cd0.1d355"],["59f19e83.5f07b"],["465b7d0e.df53e4"]]},{"id":"c815abf6.247608","type":"link in","z":"b5116eeb.4bea","name":"rename device","links":["85ca610b.330c3"],"x":55,"y":540,"wires":[["69ff0947.215178"]]},{"id":"9bf37ef0.ffcc5","type":"link in","z":"b5116eeb.4bea","name":"delete device","links":["59529317.4aa9fc"],"x":55,"y":640,"wires":[["991a427f.73da3"]]},{"id":"59529317.4aa9fc","type":"link out","z":"b5116eeb.4bea","name":"","links":["9bf37ef0.ffcc5"],"x":1195,"y":300,"wires":[]},{"id":"8548faf8.f93768","type":"link out","z":"b5116eeb.4bea","name":"","links":["14fd3ed3.6673b1"],"x":1155,"y":280,"wires":[]},{"id":"85ca610b.330c3","type":"link out","z":"b5116eeb.4bea","name":"","links":["c815abf6.247608"],"x":1155,"y":320,"wires":[]},{"id":"14fd3ed3.6673b1","type":"link in","z":"b5116eeb.4bea","name":"select device","links":["8548faf8.f93768"],"x":55,"y":940,"wires":[["960355ad.cd1868"]]},{"id":"b4b146a.44127b8","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"device","tot":"msg"},{"t":"set","p":"selectedDevice","pt":"flow","to":"device","tot":"msg"},{"t":"set","p":"group","pt":"msg","to":"selectedGroup","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":940,"wires":[["ac63e028.d2116","ea020577.d84c58"]]},{"id":"53640ef6.a9373","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"set","p":"selectedGroup","pt":"flow","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1410,"y":940,"wires":[[]]},{"id":"df98588b.d1aff8","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"set","p":"selectedDevice","pt":"flow","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1410,"y":980,"wires":[[]]},{"id":"cd0d85d1.a00bc8","type":"change","z":"b5116eeb.4bea","name":"load selected device","rules":[{"t":"set","p":"selectedDevice","pt":"msg","to":"selectedDevice","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":280,"wires":[["c7cee250.103d2"]]},{"id":"c3084acc.7e7bd8","type":"link in","z":"b5116eeb.4bea","name":"refresh device template","links":["ea020577.d84c58"],"x":235,"y":320,"wires":[["57fa582c.41a2c8"]]},{"id":"57fa582c.41a2c8","type":"function","z":"b5116eeb.4bea","name":"load device list","func":"msg.topic = \"devices\";\nmsg.payload = flow.get('devicelist');\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":320,"wires":[["cd0d85d1.a00bc8"]]},{"id":"711abdcc.60afc4","type":"comment","z":"b5116eeb.4bea","name":"refresh template","info":"","x":120,"y":320,"wires":[]},{"id":"ea020577.d84c58","type":"link out","z":"b5116eeb.4bea","name":"","links":["c3084acc.7e7bd8"],"x":495,"y":940,"wires":[]},{"id":"960355ad.cd1868","type":"switch","z":"b5116eeb.4bea","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"selectedDevice","vt":"flow"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":150,"y":940,"wires":[["e4000e35.645d4"],["b4b146a.44127b8"]]},{"id":"e4000e35.645d4","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"set","p":"selectedDevice","pt":"flow","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":900,"wires":[["ea020577.d84c58"]]},{"id":"7bea2854.de8328","type":"function","z":"b5116eeb.4bea","name":"load grouplist","func":"msg.topic = \"groups\";\nmsg.payload = flow.get('grouplist');\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":440,"wires":[["38513444.abe59c"]]},{"id":"e52f8cc9.e2ff","type":"link in","z":"b5116eeb.4bea","name":"refresh group template","links":["fbf778a8.a00388"],"x":235,"y":440,"wires":[["7bea2854.de8328"]]},{"id":"57140603.88ef78","type":"comment","z":"b5116eeb.4bea","name":"refresh template","info":"","x":120,"y":440,"wires":[]},{"id":"38513444.abe59c","type":"change","z":"b5116eeb.4bea","name":"load selected device","rules":[{"t":"set","p":"selectedGroup","pt":"msg","to":"selectedGroup","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":400,"wires":[["bf0530ab.7c599"]]},{"id":"43ffcf57.290c9","type":"switch","z":"b5116eeb.4bea","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"selectedGroup","vt":"flow"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":150,"y":1020,"wires":[["6d1205a0.c21fac"],["fefa0c91.2109d"]]},{"id":"fefa0c91.2109d","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"group","tot":"msg"},{"t":"set","p":"selectedGroup","pt":"flow","to":"group","tot":"msg"},{"t":"set","p":"device","pt":"msg","to":"selectedDevice","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":1020,"wires":[["fbf778a8.a00388","ac63e028.d2116"]]},{"id":"6d1205a0.c21fac","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"set","p":"selectedGroup","pt":"flow","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1060,"wires":[["fbf778a8.a00388"]]},{"id":"fd332edd.b9a8d","type":"comment","z":"b5116eeb.4bea","name":"group selected","info":"","x":120,"y":1060,"wires":[]},{"id":"e7ac307f.c8405","type":"link in","z":"b5116eeb.4bea","name":"select group","links":["c3e92cd0.1d355"],"x":55,"y":1020,"wires":[["43ffcf57.290c9"]]},{"id":"fbf778a8.a00388","type":"link out","z":"b5116eeb.4bea","name":"","links":["e52f8cc9.e2ff"],"x":495,"y":1020,"wires":[]},{"id":"b94c9c16.b20fa","type":"comment","z":"b5116eeb.4bea","name":"refresh template","info":"","x":600,"y":1020,"wires":[]},{"id":"5ea932f9.8e29fc","type":"comment","z":"b5116eeb.4bea","name":"refresh template","info":"","x":600,"y":940,"wires":[]},{"id":"c3e92cd0.1d355","type":"link out","z":"b5116eeb.4bea","name":"","links":["e7ac307f.c8405"],"x":1115,"y":400,"wires":[]},{"id":"1ad5c492.1d24ab","type":"link in","z":"b5116eeb.4bea","name":"remove group","links":["465b7d0e.df53e4"],"x":55,"y":840,"wires":[["f5b844fb.8b7d18"]]},{"id":"f5b844fb.8b7d18","type":"change","z":"b5116eeb.4bea","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"groupname","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":840,"wires":[["d320dcc9.3fbce"]]},{"id":"e825230f.c2516","type":"delay","z":"b5116eeb.4bea","name":"","pauseType":"delay","timeout":"400","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1100,"y":800,"wires":[["d909bcbc.7bc15"]]},{"id":"84402cdb.5f188","type":"link in","z":"b5116eeb.4bea","name":"remove from group","links":["59f19e83.5f07b"],"x":55,"y":1160,"wires":[["be6dbba5.f25558"]]},{"id":"b8b12ed6.6d353","type":"comment","z":"b5116eeb.4bea","name":"remove device from group","info":"","x":150,"y":1120,"wires":[]},{"id":"59f19e83.5f07b","type":"link out","z":"b5116eeb.4bea","name":"","links":["84402cdb.5f188"],"x":1155,"y":420,"wires":[]},{"id":"465b7d0e.df53e4","type":"link out","z":"b5116eeb.4bea","name":"","links":["1ad5c492.1d24ab"],"x":1115,"y":440,"wires":[]},{"id":"123ff5c9.e4b70a","type":"mqtt-broker","z":"","name":"","broker":"192.168.0.225","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"f28c8c2f.f53d9","type":"ui_group","z":"","name":"Devices","tab":"e7c040aa.e7863","order":1,"disp":true,"width":"16","collapse":false},{"id":"6cbab99e.137158","type":"ui_group","z":"","name":"Groups","tab":"e7c040aa.e7863","order":2,"disp":true,"width":11,"collapse":false},{"id":"aa623bc9.bf7ff8","type":"ui_group","z":"","name":"Bridge Config","tab":"e7c040aa.e7863","order":6,"disp":true,"width":"5","collapse":false},{"id":"e7c040aa.e7863","type":"ui_tab","z":"","name":"Zigbee2Mqtt","icon":"dashboard","disabled":false,"hidden":false}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment