A neat flow with buttons and LED indicators.

This is a little panel I made with 6 buttons and 6 LEDs. The LED indicates which button was last pressed and the active state. The colour of the OFF/ON can be edited in the big function node in the middle. Just pick some of the standard colours like: red, scarlet, blue, cyan, green, lime, white, black, and so on. The message to get the job done is sent to the debug node at this point. (Output 7 of the big node)

[{"id":"ce8c5500.7efa38","type":"comment","z":"97a50a2e.90f4e","name":"Doors","info":"Options:\n1 - Normal\n2 - Busy\n3 - Coded entry\n4 - One Time Open\n5 - DND","x":830,"y":250,"wires":[]},{"id":"1237ece.991ee13","type":"ui_template","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","name":"Normal","order":13,"width":"2","height":"1","format":"\n<md-button class=\"vibrate filled touched smallfont rounded\" style=\"background-color:#16a085\"   ng-click=\"send({payload: 'NORMAL'})\"> \n    Normal\n</md-button> \n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":700,"y":340,"wires":[["178879f0.b2a8de"]]},{"id":"3389e57a.d4a60a","type":"ui_template","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","name":"Busy","order":15,"width":"2","height":"1","format":"\n<md-button class=\"vibrate filled touched smallfont rounded\" style=\"background-color:#c0392b\" ng-click=\"send({payload: 'BUSY'})\"> \n    Busy\n</md-button> \n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":690,"y":380,"wires":[["178879f0.b2a8de"]]},{"id":"9c78d4b3.75d998","type":"ui_template","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","name":"One Time Open","order":17,"width":"2","height":"1","format":"\n<md-button class=\"vibrate filled touched smallfont rounded\" style=\"background-color:#e67e22\"   ng-click=\"send({payload: 'OTO'})\"> \n    One<br/>Time<br/>Open\n</md-button> \n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":720,"y":420,"wires":[["178879f0.b2a8de"]]},{"id":"a47fc7c4.86d898","type":"ui_template","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","name":"Coded entry","order":19,"width":"2","height":"1","format":"\n<md-button class=\"vibrate filled touched smallfont rounded\" style=\"background-color:#c0392b\" ng-click=\"send({payload: 'CODED'})\"> \n    Coded<br/>Entry\n</md-button> \n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":710,"y":460,"wires":[["178879f0.b2a8de"]]},{"id":"5f58bab9.17a784","type":"ui_template","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","name":"","order":21,"width":"2","height":"1","format":"\n<md-button class=\"vibrate filled touched smallfont rounded\" style=\"background-color:#16a085\"   ng-click=\"send({payload: 'Hello World'})\"> \n    Blue<br/>button\n</md-button> \n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":700,"y":500,"wires":[["178879f0.b2a8de"]]},{"id":"1af4c451.8fdce4","type":"ui_template","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","name":"DND","order":23,"width":"2","height":"1","format":"\n<md-button class=\"vibrate filled touched smallfont rounded\" style=\"background-color:#c0392b\" ng-click=\"send({payload: 'DND'})\"> \n    DND\n</md-button> \n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":690,"y":540,"wires":[["178879f0.b2a8de"]]},{"id":"56848319.f9270c","type":"ui_text","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","order":14,"width":"1","height":"1","name":"LED n","label":"","format":"<font color={{msg.payload}} ><i class=\"fa fa-circle\" style=\"font-size:24px;\"></i></font>","layout":"col-center","x":1230,"y":340,"wires":[]},{"id":"232677ad.11dfb","type":"ui_text","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","order":16,"width":"1","height":"1","name":"LED b","label":"","format":"<font color={{msg.payload}} ><i class=\"fa fa-circle\" style=\"font-size:24px;\"></i></font>","layout":"col-center","x":1230,"y":380,"wires":[]},{"id":"594cd775.0a8a3","type":"ui_text","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","order":20,"width":"1","height":"1","name":"LED c","label":"","format":"<font color={{msg.payload}} ><i class=\"fa fa-circle\" style=\"font-size:24px;\"></i></font>","layout":"col-center","x":1230,"y":460,"wires":[]},{"id":"8c67fd12.cd4d","type":"ui_text","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","order":18,"width":"1","height":"1","name":"LED o","label":"","format":"<font color={{msg.payload}} ><i class=\"fa fa-circle\" style=\"font-size:24px;\"></i></font>","layout":"col-center","x":1230,"y":420,"wires":[]},{"id":"7095262a.bdc78","type":"ui_text","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","order":22,"width":"1","height":"1","name":"LED","label":"","format":"<font color={{msg.payload}} ><i class=\"fa fa-circle\" style=\"font-size:24px;\"></i></font>","layout":"col-center","x":1230,"y":500,"wires":[]},{"id":"79207d7e.f0ee54","type":"ui_text","z":"97a50a2e.90f4e","group":"3ed40c4d.7ae17c","order":24,"width":"1","height":"1","name":"LED d","label":"","format":"<font color={{msg.payload}} ><i class=\"fa fa-circle\" style=\"font-size:24px;\"></i></font>","layout":"col-center","x":1230,"y":540,"wires":[]},{"id":"ff5b290f.b7a5a8","type":"comment","z":"97a50a2e.90f4e","name":"My","info":"Options:\n1 - Normal\n2 - Busy\n3 - Coded entry\n4 - One Time Open\n5 - DND","x":700,"y":300,"wires":[]},{"id":"178879f0.b2a8de","type":"function","z":"97a50a2e.90f4e","name":"","func":"//  Set LEDs depending on which button is pressed.\n//  1 input, 7 outputs.\n//  Outputs 1 - 6 are for LED.  Output 7 = function output.\n//  Send 'xx' to turn off all LEDs.\nvar mode = msg.payload;\nvar on = \"lime\";\nvar off = \"red\";\nnode.status({fill:\"yellow\",shape:\"dot\",text:mode});\nif (mode == \"NORMAL\")\n{\n    //  Normal button pressed\n    var msg7 = {payload:mode};\n    var msg1 = {payload:on};\n    var msg2 = {payload:off};\n    var msg3 = {payload:off};\n    var msg4 = {payload:off};\n    var msg5 = {payload:off};\n    var msg6 = {payload:off};\n}else\nif (mode == \"BUSY\")\n{\n    //  Busy button pressed\n    var msg7 = {payload:mode};\n    var msg1 = {payload:off};\n    var msg2 = {payload:on};\n    var msg3 = {payload:off};\n    var msg4 = {payload:off};\n    var msg5 = {payload:off};\n    var msg6 = {payload:off};\n}else\nif (mode == \"OTO\")\n{\n    // OTO button pressed\n    var msg7 = {payload:mode};\n    var msg1 = {payload:off};\n    var msg2 = {payload:off};\n    var msg3 = {payload:on};\n    var msg4 = {payload:off};\n    var msg5 = {payload:off};\n    var msg6 = {payload:off};\n}else\nif (mode == \"CODED\")\n{\n    //  Coded Entry button pressed\n    var msg7 = {payload:mode};\n    var msg1 = {payload:off};\n    var msg2 = {payload:off};\n    var msg3 = {payload:off};\n    var msg4 = {payload:on};\n    var msg5 = {payload:off};\n    var msg6 = {payload:off};\n}else\nif (mode == \"zz\")\n{\n    //\tFor now not used./////////////////////////////\n    var msg7 = {payload:mode};\n    var msg1 = {payload:off};\n    var msg2 = {payload:off};\n    var msg3 = {payload:off};\n    var msg4 = {payload:off};\n    var msg5 = {payload:on};\n    var msg6 = {payload:off};\n}else\nif (mode == \"DND\")\n{\n    //  DND button pressed\n    var msg7 = {payload:mode};\n    var msg1 = {payload:off};\n    var msg2 = {payload:off};\n    var msg3 = {payload:off};\n    var msg4 = {payload:off};\n    var msg5 = {payload:off};\n    var msg6 = {payload:on};\n}\nif (mode == \"xx\")\n{\n    //  DND button pressed\n    var msg7 = {payload:\"\"};\n    var msg1 = {payload:off};\n    var msg2 = {payload:off};\n    var msg3 = {payload:off};\n    var msg4 = {payload:off};\n    var msg5 = {payload:off};\n    var msg6 = {payload:off};\n}\nreturn [msg1, msg2, msg3, msg4, msg5, msg6, msg7];\n","outputs":7,"noerr":0,"x":950,"y":390,"wires":[["56848319.f9270c"],["232677ad.11dfb"],["8c67fd12.cd4d"],["594cd775.0a8a3"],["7095262a.bdc78"],["79207d7e.f0ee54"],["a7c9e7ef.820cb8","60c7d601.26a4a"]]},{"id":"2ee46fc7.3431a","type":"comment","z":"97a50a2e.90f4e","name":"LED indicators","info":"msg.payload = colour","x":1230,"y":300,"wires":[]},{"id":"a7c9e7ef.820cb8","type":"debug","z":"97a50a2e.90f4e","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1250,"y":580,"wires":[]},{"id":"a6971d5c.56445","type":"inject","z":"97a50a2e.90f4e","name":"Set default","topic":"","payload":"NORMAL","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":"5","x":850,"y":300,"wires":[["178879f0.b2a8de"]]},{"id":"3ed40c4d.7ae17c","type":"ui_group","z":"","name":"MyDoor_Notification_Status","tab":"d5237612.7a909","order":4,"disp":true,"width":"6","collapse":false},{"id":"d5237612.7a909","type":"ui_tab","z":"","name":"Button Control","icon":"dashboard","order":11}]

Collection Info

next

Flow Info

Created 6 years, 9 months ago
Updated 6 years, 4 months ago
Rating: not yet rated

Actions

Rate:

Node Types

Core
  • comment (x3)
  • debug (x1)
  • function (x1)
  • inject (x1)
Other
  • ui_group (x1)
  • ui_tab (x1)
  • ui_template (x6)
  • ui_text (x6)

Tags

  • buttons
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option