Skip to content
View Dirnei's full-sized avatar
Block or Report

Block or report Dirnei

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse

Pinned

  1. node-red-contrib-zigbee2mqtt-devices node-red-contrib-zigbee2mqtt-devices Public

    Node-red nodes for controlling and managing zigbee devices managed by zigbee2mqtt

    HTML 28 7

  2. ikea_bulb_reset ikea_bulb_reset Public

    Resetting an Ikea Trådfri bulb can be quite frustrating. To solve this issue, I wrote this firmware for the Sonoff S20 I had lying around. It should also work for other sonoffs, but I have not test…

    C++ 1 1

  3. ESP32_OTAUpdateClient ESP32_OTAUpdateClient Public

    OTAUpdateClient is used for OTA updates via a webserver. It supports the ESP32

    C++ 2 1

  4. This is a node red dashboard for man... This is a node red dashboard for managing your zigbee2mqtt devices
    1
    [{"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}]
  5. Bavaria-Black/node-red-ext-bavaria-black Bavaria-Black/node-red-ext-bavaria-black Public

    JavaScript 1

  6. MQTTSonoff MQTTSonoff Public

    A small and simple firmware for the Sonoff Devices to add MQTT functionallity to it

    C++