This is the basic on/off control flow. Note that I've tweak the location in the CRON+ node. Also, I use the root MQTT topic shellies for the Shelly devices - not sure if that is the default. The 2 MQTT in nodes "Rmt n, Btn b:2" are indirect outputs via my RFXtrx433 dongle listening to LightwaveRF remotes. The mini-flow bottom-right simply refactors the on/off setting to a different MQTT topic structure.
[{"id":"dc1d9eacf2527970","type":"group","z":"7274c13e.dddcc","name":"Office (06/B2) \\n ","style":{"label":true,"fill":"#e3f3d3","color":"#000000"},"nodes":["fa6f876be8fdb6ed","27acead8afccfada","52cf4fc101f69e12","0cbb04eb84b4e172","9995a98b7e38bd7e","3378b7e43506acd0","de29a08ac7cdfa75","7f72e7db2f02151f","0677407524d79180","cc0b3e58f538a8f5","9f18b536c0d9ab96","0d6303b5e5c2df2c","c14d12667bd8f15b","c2e1e806f6862828"],"x":594,"y":203,"w":662,"h":358},{"id":"fa6f876be8fdb6ed","type":"mqtt in","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"","topic":"shellies/shelly_rgbw2_01/color/0/command","qos":"2","datatype":"auto-detect","broker":"3784c9f0.57bab6","nl":false,"rap":true,"rh":0,"inputs":0,"x":945,"y":520,"wires":[["27acead8afccfada"]],"l":false},{"id":"27acead8afccfada","type":"change","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"1","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1005,"y":520,"wires":[["52cf4fc101f69e12"]],"l":false},{"id":"52cf4fc101f69e12","type":"mqtt out","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"environment/light/...","topic":"environment/light/Office/switch","qos":"","retain":"true","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"3784c9f0.57bab6","x":1140,"y":520,"wires":[]},{"id":"0cbb04eb84b4e172","type":"mqtt in","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Rmt 2, Btn b:2","topic":"RFX/known/LIGHTWAVERF-0xF30F69/switches/6","qos":"2","datatype":"auto","broker":"3784c9f0.57bab6","nl":false,"rap":true,"rh":0,"inputs":0,"x":710,"y":400,"wires":[["3378b7e43506acd0"]]},{"id":"9995a98b7e38bd7e","type":"mqtt in","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Rmt 3, Btn b:2","topic":"RFX/known/LIGHTWAVERF-0xF55E26/switches/6","qos":"2","datatype":"auto","broker":"3784c9f0.57bab6","nl":false,"rap":true,"rh":0,"inputs":0,"x":710,"y":440,"wires":[["3378b7e43506acd0"]]},{"id":"3378b7e43506acd0","type":"change","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$lowercase(payload)\t","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"shellies/shelly_rgbw2_01/color/0/command","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":935,"y":420,"wires":[["0d6303b5e5c2df2c"]],"l":false},{"id":"de29a08ac7cdfa75","type":"mqtt in","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Plug State","topic":"shellies/shelly_rgbw2_01/color/0","qos":"2","datatype":"auto","broker":"3784c9f0.57bab6","nl":false,"rap":true,"rh":0,"inputs":0,"x":700,"y":520,"wires":[["7f72e7db2f02151f"]]},{"id":"7f72e7db2f02151f","type":"change","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"","rules":[{"t":"set","p":"#:(file)::lights.ShellyRGB01.state","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":795,"y":520,"wires":[["0677407524d79180"]],"l":false},{"id":"0677407524d79180","type":"debug","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"msg","x":855,"y":520,"wires":[],"l":false},{"id":"cc0b3e58f538a8f5","type":"cronplus","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Shelly RGB - Solar on, time off","outputField":"payload","timeZone":"","storeName":"file","commandResponseMsgOutput":"output2","defaultLocation":"","defaultLocationType":"default","outputs":2,"options":[{"name":"PM On","topic":"shellies/shelly_rgbw2_01/color/0/command","payloadType":"str","payload":"on","expressionType":"solar","expression":"0 30 15 * * * *","location":"53, -1","offset":"0","solarType":"selected","solarEvents":"eveningGoldenHourStart","lunarType":"all","lunarEvents":"rise,set"},{"name":"PM Off","topic":"shellies/shelly_rgbw2_01/color/0/command","payloadType":"str","payload":"off","expressionType":"cron","expression":"0 0 0 * * * *","location":"","offset":"0","solarType":"all","solarEvents":"sunrise,sunset","lunarType":"all","lunarEvents":"rise,set"}],"x":770,"y":340,"wires":[["0d6303b5e5c2df2c"],["9f18b536c0d9ab96"]]},{"id":"9f18b536c0d9ab96","type":"debug","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":935,"y":360,"wires":[],"l":false},{"id":"0d6303b5e5c2df2c","type":"link out","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Switch01 out to mqtt local (retained)","links":["cf6709e6.95a6e8"],"x":1095,"y":260,"wires":[]},{"id":"c14d12667bd8f15b","type":"inject","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Shelly RGB On","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"shellies/shelly_rgbw2_01/color/0/command","payload":"on","payloadType":"str","x":740,"y":260,"wires":[["0d6303b5e5c2df2c"]]},{"id":"c2e1e806f6862828","type":"inject","z":"7274c13e.dddcc","g":"dc1d9eacf2527970","name":"Shelly RGB Off","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"shellies/shelly_rgbw2_01/color/0/command","payload":"off","payloadType":"str","x":740,"y":300,"wires":[["0d6303b5e5c2df2c"]]},{"id":"3784c9f0.57bab6","type":"mqtt-broker","name":"nrmain-local (v5)","broker":"localhost","port":"1883","clientid":"nrmain-local","autoConnect":true,"usetls":false,"compatmode":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"services/nrmain","birthQos":"0","birthRetain":"true","birthPayload":"Online","birthMsg":{},"closeTopic":"services/nrmain","closeQos":"0","closeRetain":"true","closePayload":"Offline","closeMsg":{},"willTopic":"services/nrmain","willQos":"0","willRetain":"true","willPayload":"Offline","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"4e307483d3659ff2","type":"global-config","env":[],"modules":{"node-red-contrib-cron-plus":"3.0.0"}}]
Here is the Dashboard flow that was my prototype - remember, this is D1 not the newer FlowFuse D2.
This is just the Office part of that flow:
[{"id":"2a0a6741d8dae665","type":"group","z":"7274c13e.dddcc","g":"4e1b6aa6d69a735d","name":"Office","style":{"label":true},"nodes":["38dd47468de7d8ae","bcbd6a47e40bc20f","d9dd6d819c79bba1","b5703adf0e0fc901","b07d003b3b4098d9","ac5992d343edff96","570909da18b39da9","bde3fad7168473b0","74a28cd5acc01032","97d835e2c5e26269","386f0e44dfc36b1c","75fd4083c38410d2","07df8f3b4b8b5119"],"x":588,"y":3139,"w":582,"h":202},{"id":"38dd47468de7d8ae","type":"ui_switch","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","label":"Shelly RGB (B:2)","tooltip":"Shelly RGB (Office)","group":"7dcffc5514ad8145","order":1,"width":0,"height":0,"passthru":false,"decouple":"true","topic":"topic","topicType":"msg","style":"","onvalue":"on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"off","offvalueType":"str","officon":"","offcolor":"","animate":false,"className":"","x":1004,"y":3180,"wires":[["d9dd6d819c79bba1"]]},{"id":"bcbd6a47e40bc20f","type":"mqtt in","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"Shelly RGB State","topic":"shellies/shelly_rgbw2_01/color/0","qos":"2","datatype":"auto","broker":"3784c9f0.57bab6","nl":false,"rap":true,"rh":0,"inputs":0,"x":694,"y":3180,"wires":[["38dd47468de7d8ae"]]},{"id":"d9dd6d819c79bba1","type":"mqtt out","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","topic":"shellies/shelly_rgbw2_01/color/0/command","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"3784c9f0.57bab6","x":1129,"y":3180,"wires":[],"l":false},{"id":"b5703adf0e0fc901","type":"mqtt in","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"Shelly RGB Status","topic":"shellies/shelly_rgbw2_01/color/0/status","qos":"2","datatype":"auto","broker":"3784c9f0.57bab6","nl":false,"rap":true,"rh":0,"inputs":0,"x":704,"y":3240,"wires":[["ac5992d343edff96"]]},{"id":"b07d003b3b4098d9","type":"change","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"\"rgb(\" & payload.red & \",\" & payload.green & \",\" & payload.blue & \")\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":889,"y":3240,"wires":[["07df8f3b4b8b5119"]],"l":false},{"id":"ac5992d343edff96","type":"json","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","property":"payload","action":"","pretty":false,"x":829,"y":3240,"wires":[["b07d003b3b4098d9","386f0e44dfc36b1c"]],"l":false},{"id":"570909da18b39da9","type":"change","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"red\": payload.r, \t \"green\": payload.g, \t \"blue\": payload.b\t}\t","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"shellies/shelly_rgbw2_01/color/0/set","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1069,"y":3240,"wires":[["bde3fad7168473b0"]],"l":false},{"id":"bde3fad7168473b0","type":"mqtt out","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","topic":"shellies/shelly_rgbw2_01/color/0/set","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"3784c9f0.57bab6","x":1129,"y":3240,"wires":[],"l":false},{"id":"74a28cd5acc01032","type":"ui_slider","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","label":"Gain","tooltip":"Bulb 02","group":"7dcffc5514ad8145","order":2,"width":0,"height":0,"passthru":false,"outs":"end","topic":"topic","topicType":"msg","min":0,"max":"255","step":1,"className":"","x":984,"y":3300,"wires":[["75fd4083c38410d2"]]},{"id":"97d835e2c5e26269","type":"mqtt out","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","topic":"","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"3784c9f0.57bab6","x":1129,"y":3300,"wires":[],"l":false},{"id":"386f0e44dfc36b1c","type":"change","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.gain","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":889,"y":3300,"wires":[["74a28cd5acc01032"]],"l":false},{"id":"75fd4083c38410d2","type":"change","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"gain\": payload\t}\t","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"shellies/shelly_rgbw2_01/color/0/set","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1069,"y":3300,"wires":[["97d835e2c5e26269"]],"l":false},{"id":"07df8f3b4b8b5119","type":"ui_colour_picker","z":"7274c13e.dddcc","g":"2a0a6741d8dae665","name":"","label":"Colour","group":"7dcffc5514ad8145","format":"rgb","outformat":"object","showSwatch":true,"showPicker":true,"showValue":true,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":2,"width":0,"height":0,"passthru":false,"topic":"topic","topicType":"msg","className":"","x":984,"y":3240,"wires":[["570909da18b39da9"]]},{"id":"7dcffc5514ad8145","type":"ui_group","name":"Office","tab":"1571ec3755fe98e4","order":5,"disp":true,"width":"6","collapse":false,"className":""},{"id":"3784c9f0.57bab6","type":"mqtt-broker","name":"nrmain-local (v5)","broker":"localhost","port":"1883","clientid":"nrmain-local","autoConnect":true,"usetls":false,"compatmode":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"services/nrmain","birthQos":"0","birthRetain":"true","birthPayload":"Online","birthMsg":{},"closeTopic":"services/nrmain","closeQos":"0","closeRetain":"true","closePayload":"Offline","closeMsg":{},"willTopic":"services/nrmain","willQos":"0","willRetain":"true","willPayload":"Offline","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"1571ec3755fe98e4","type":"ui_tab","name":"Lighting","icon":"lightbulb_outline","order":1,"disabled":false,"hidden":false},{"id":"fea77fa667b10d22","type":"global-config","env":[],"modules":{"node-red-dashboard":"3.6.6"}}]
This is what it looks like:
As I mentioned, I don't really use either of the Dashboards. Unfortunately, my live home dashboards lighting page is currently due for a facelift and nothing is currently connected, but here is a preview:
Imagine each of the named room cards containing controls for the lighting not dissimilar to the Dashboard example.
Honestly, I so rarely use the lighting page that I've not a lot of incentive to finish it right now, too many other draws on my time. My lighting is entirely automated where it needs to be so very little reason to muck about with a web page. ![]()



