This may help. Here is an example of how i might go about adding a cooldown on ip. It auto removes old ip's and add new if a colour is selected. currently set for 30 second cooldown, set in change node after join.
[{"id":"5f6f367cd433660f","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"lamp","pt":"msg","to":"$number($$.topic)","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"colour","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":300,"wires":[["17e589fd.e75d36"]]},{"id":"056be2766a40a5e3","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 1","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":4,"width":1,"height":1,"passthru":true,"topic":"1","topicType":"str","className":"","x":180,"y":140,"wires":[["5f6f367cd433660f"]]},{"id":"0afb873ba45f5071","type":"inject","z":"e67b04df66bd0437","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":40,"wires":[["5f6f367cd433660f"]]},{"id":"b646ad6a6e3856af","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 2","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":5,"width":1,"height":1,"passthru":true,"topic":"2","topicType":"str","className":"","x":180,"y":180,"wires":[["5f6f367cd433660f"]]},{"id":"d21b3ec88611f6a0","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 3","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":6,"width":1,"height":1,"passthru":true,"topic":"3","topicType":"str","className":"","x":180,"y":220,"wires":[["5f6f367cd433660f"]]},{"id":"0f0732ff4a5ae296","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 4","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":7,"width":1,"height":1,"passthru":true,"topic":"4","topicType":"str","className":"","x":180,"y":260,"wires":[["5f6f367cd433660f"]]},{"id":"e1f4f7f62fc1e44c","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 5","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":10,"width":1,"height":1,"passthru":true,"topic":"5","topicType":"str","className":"","x":180,"y":300,"wires":[["5f6f367cd433660f"]]},{"id":"01b64690bd21ad12","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 6","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":11,"width":1,"height":1,"passthru":true,"topic":"6","topicType":"str","className":"","x":180,"y":340,"wires":[["5f6f367cd433660f"]]},{"id":"146973610d263b9f","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 7","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":12,"width":1,"height":1,"passthru":true,"topic":"7","topicType":"str","className":"","x":180,"y":380,"wires":[["5f6f367cd433660f"]]},{"id":"6b09f254e090851a","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 8","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":13,"width":1,"height":1,"passthru":true,"topic":"8","topicType":"str","className":"","x":180,"y":420,"wires":[["5f6f367cd433660f"]]},{"id":"3dced2b0a31744cf","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 9","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":16,"width":1,"height":1,"passthru":true,"topic":"9","topicType":"str","className":"","x":180,"y":460,"wires":[["5f6f367cd433660f"]]},{"id":"71e4e6026302243b","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 10","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":17,"width":1,"height":1,"passthru":true,"topic":"10","topicType":"str","className":"","x":190,"y":500,"wires":[["5f6f367cd433660f"]]},{"id":"948697976718e14a","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 11","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":18,"width":1,"height":1,"passthru":true,"topic":"11","topicType":"str","className":"","x":180,"y":540,"wires":[["5f6f367cd433660f"]]},{"id":"c3b9ba40fb278c8a","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 12","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":19,"width":1,"height":1,"passthru":true,"topic":"12","topicType":"str","className":"","x":180,"y":580,"wires":[["5f6f367cd433660f"]]},{"id":"17e589fd.e75d36","type":"join","z":"e67b04df66bd0437","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":550,"y":300,"wires":[["f45ed053.d33d3"]]},{"id":"4864da4e.d27664","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"ip","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"socketip","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":340,"wires":[["17e589fd.e75d36"]]},{"id":"f45ed053.d33d3","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"cooldown","pt":"flow","to":"[$flowContext(\"cooldown\")][time > ($millis() - 30000)]","tot":"jsonata"},{"t":"set","p":"cooldown","pt":"msg","to":"$count([$flowContext(\"cooldown\")[ip = $$.payload.ip]]) > 0","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":300,"wires":[["c7cb64b5.1fea18"]]},{"id":"f61562a9eea5ee0c","type":"ui_ui_control","z":"e67b04df66bd0437","name":"","events":"all","x":370,"y":380,"wires":[["4864da4e.d27664"]]},{"id":"c7cb64b5.1fea18","type":"switch","z":"e67b04df66bd0437","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"colour","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":900,"y":300,"wires":[["8f115a43.0b52f8"]]},{"id":"8f115a43.0b52f8","type":"switch","z":"e67b04df66bd0437","name":"","property":"cooldown","propertyType":"msg","rules":[{"t":"false"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":1060,"y":300,"wires":[["52ddcef8.73c2a"],["a585aca0.f186f"]]},{"id":"52ddcef8.73c2a","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"red","pt":"msg","to":"'01r' & $$.payload.colour.r","tot":"jsonata"},{"t":"set","p":"green","pt":"msg","to":"'01g' & $$.payload.colour.g","tot":"jsonata"},{"t":"set","p":"blue","pt":"msg","to":"'01b' & $$.payload.colour.b","tot":"jsonata"},{"t":"set","p":"cooldown","pt":"flow","to":"$append([$flowContext(\"cooldown\")],[{\"time\": $millis(),\"ip\": $$.payload.ip}])","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":300,"wires":[["ed03deb5.b6ce4"]]},{"id":"a585aca0.f186f","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"cooldown 5mins","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":380,"wires":[["1ca052f059cb3d71"]]},{"id":"ed03deb5.b6ce4","type":"debug","z":"e67b04df66bd0437","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1110,"y":240,"wires":[]},{"id":"1ca052f059cb3d71","type":"ui_toast","z":"e67b04df66bd0437","position":"top right","displayTime":"3","highlight":"","sendall":false,"outputs":0,"ok":"OK","cancel":"","raw":false,"className":"","topic":"","name":"","x":980,"y":440,"wires":[]},{"id":"c7c3d5493d5cf08a","type":"ui_group","name":"DTU PAVILLON LIGHT SHOW","tab":"d65502b1.ee517","order":2,"disp":true,"width":6,"collapse":false,"className":""},{"id":"d65502b1.ee517","type":"ui_tab","name":"Dashboard","icon":"dashboard","order":6}]
just add you mqtt node. You will need to add logging and your google books nodess
Not fully tested, not sure how multi user on dashboard will affect it.
Or this one which uses the browser socket from the window.location, which does not change on refresh.
[{"id":"056be2766a40a5e3","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 1","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":4,"width":1,"height":1,"passthru":true,"topic":"1","topicType":"str","className":"","x":180,"y":140,"wires":[["5f6f367cd433660f"]]},{"id":"5f6f367cd433660f","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"template","pt":"msg","to":"\"<script>\\n var value = window.location.hash.split(/=/)[1];\\n\" &\t\"var colour = \" & $string($$.payload) & \";\\n\" &\t\"this.scope.send ( { socket: value, red: ('01r' + colour.r), green: ('01g' + colour.g), blue: ('01b' + colour.b), lamp: \" & $$.topic & \"} ) </script>\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":300,"wires":[["be62527c.4ab88"]]},{"id":"b646ad6a6e3856af","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 2","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":5,"width":1,"height":1,"passthru":true,"topic":"2","topicType":"str","className":"","x":180,"y":180,"wires":[["5f6f367cd433660f"]]},{"id":"d21b3ec88611f6a0","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 3","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":6,"width":1,"height":1,"passthru":true,"topic":"3","topicType":"str","className":"","x":180,"y":220,"wires":[["5f6f367cd433660f"]]},{"id":"0f0732ff4a5ae296","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 4","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":7,"width":1,"height":1,"passthru":true,"topic":"4","topicType":"str","className":"","x":180,"y":260,"wires":[["5f6f367cd433660f"]]},{"id":"e1f4f7f62fc1e44c","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 5","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":10,"width":1,"height":1,"passthru":true,"topic":"5","topicType":"str","className":"","x":180,"y":300,"wires":[["5f6f367cd433660f"]]},{"id":"01b64690bd21ad12","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 6","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":11,"width":1,"height":1,"passthru":true,"topic":"6","topicType":"str","className":"","x":180,"y":340,"wires":[["5f6f367cd433660f"]]},{"id":"146973610d263b9f","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 7","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":12,"width":1,"height":1,"passthru":true,"topic":"7","topicType":"str","className":"","x":180,"y":380,"wires":[["5f6f367cd433660f"]]},{"id":"6b09f254e090851a","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 8","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":13,"width":1,"height":1,"passthru":true,"topic":"8","topicType":"str","className":"","x":180,"y":420,"wires":[["5f6f367cd433660f"]]},{"id":"3dced2b0a31744cf","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 9","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":16,"width":1,"height":1,"passthru":true,"topic":"9","topicType":"str","className":"","x":180,"y":460,"wires":[["5f6f367cd433660f"]]},{"id":"71e4e6026302243b","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 10","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":17,"width":1,"height":1,"passthru":true,"topic":"10","topicType":"str","className":"","x":190,"y":500,"wires":[["5f6f367cd433660f"]]},{"id":"948697976718e14a","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 11","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":18,"width":1,"height":1,"passthru":true,"topic":"11","topicType":"str","className":"","x":180,"y":540,"wires":[["5f6f367cd433660f"]]},{"id":"c3b9ba40fb278c8a","type":"ui_colour_picker","z":"e67b04df66bd0437","name":"","label":"Lamp 12","group":"c7c3d5493d5cf08a","format":"rgb","outformat":"object","showSwatch":true,"showPicker":false,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","dynOutput":"false","order":19,"width":1,"height":1,"passthru":true,"topic":"12","topicType":"str","className":"","x":180,"y":580,"wires":[["5f6f367cd433660f"]]},{"id":"be62527c.4ab88","type":"ui_template","z":"e67b04df66bd0437","group":"c7c3d5493d5cf08a","name":"","order":9,"width":0,"height":0,"format":"","storeOutMessages":true,"fwdInMessages":false,"resendOnRefresh":false,"templateScope":"local","className":"","x":570,"y":260,"wires":[["f45ed053.d33d3"]]},{"id":"f45ed053.d33d3","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"cooldown","pt":"flow","to":"[$flowContext(\"cooldown\")][time > ($millis() - 30000)]","tot":"jsonata"},{"t":"set","p":"cooldown","pt":"msg","to":"$count([$flowContext(\"cooldown\")[socket = $$.socket]]) > 0","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":300,"wires":[["8f115a43.0b52f8"]]},{"id":"8f115a43.0b52f8","type":"switch","z":"e67b04df66bd0437","name":"","property":"cooldown","propertyType":"msg","rules":[{"t":"false"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":920,"y":300,"wires":[["52ddcef8.73c2a"],["a585aca0.f186f"]]},{"id":"52ddcef8.73c2a","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"cooldown","pt":"flow","to":"$append([$flowContext(\"cooldown\")],[{\"time\": $millis(),\"socket\": $$.socket}])","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1130,"y":300,"wires":[["ed03deb5.b6ce4"]]},{"id":"a585aca0.f186f","type":"change","z":"e67b04df66bd0437","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"cooldown 5mins","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":380,"wires":[["1ca052f059cb3d71"]]},{"id":"ed03deb5.b6ce4","type":"debug","z":"e67b04df66bd0437","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1110,"y":240,"wires":[]},{"id":"1ca052f059cb3d71","type":"ui_toast","z":"e67b04df66bd0437","position":"top right","displayTime":"3","highlight":"","sendall":false,"outputs":0,"ok":"OK","cancel":"","raw":false,"className":"","topic":"","name":"","x":980,"y":440,"wires":[]},{"id":"c7c3d5493d5cf08a","type":"ui_group","name":"DTU PAVILLON LIGHT SHOW","tab":"d65502b1.ee517","order":2,"disp":true,"width":6,"collapse":false,"className":""},{"id":"d65502b1.ee517","type":"ui_tab","name":"Dashboard","icon":"dashboard","order":6}]