[{"id":"2cb74d97.706002","type":"tab","label":"CM25","disabled":false,"info":""},{"id":"36a9ce8c.c265e2","type":"tab","label":"Luci","disabled":false,"info":""},{"id":"f78dba7.c067548","type":"tab","label":"Cancello","disabled":false,"info":""},{"id":"d2e8f7dc.35e8f8","type":"tab","label":"Consumi","disabled":false,"info":""},{"id":"a7153dc.07134c","type":"subflow","name":"Sergio","info":"","category":"","in":[{"x":50,"y":30,"wires":[{"id":"3cfd1bb8.7d1da4"}]}],"out":[{"x":340,"y":300,"wires":[]},{"x":340,"y":220,"wires":[{"id":"a7153dc.07134c","port":0}]},{"x":340,"y":140,"wires":[{"id":"3cfd1bb8.7d1da4","port":0}]}],"env":[],"color":"#DDAA99"},{"id":"b8e19e2e.78504","type":"ui_base","theme":{"name":"theme-custom","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":true,"reset":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"Verdana,Verdana,Geneva,sans-serif","edited":true,"reset":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","reset":false},"themeState":{"base-color":{"default":"#4B7930","value":"#4B7930","edited":false},"page-titlebar-backgroundColor":{"value":"#4B7930","edited":false},"page-backgroundColor":{"value":"#000000","edited":true},"page-sidebar-backgroundColor":{"value":"#333333","edited":false},"group-textColor":{"value":"#6db046","edited":false},"group-borderColor":{"value":"#000000","edited":true},"group-backgroundColor":{"value":"#000000","edited":true},"widget-textColor":{"value":"#eeeeee","edited":false},"widget-backgroundColor":{"value":"#4b7930","edited":false},"widget-borderColor":{"value":"#000000","edited":true},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey"}},"site":{"name":"CM14","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"5058d5a3.24fedc","type":"ui_tab","name":"Acme Automation","icon":"home","order":1,"disabled":false,"hidden":false},{"id":"5ff6276f.3e3b28","type":"mqtt-broker","name":"toa","broker":"toa.local","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"963e1205.ed3f4","type":"ui_group","name":"Group 1","tab":"5058d5a3.24fedc","order":1,"disp":false,"width":5,"collapse":false},{"id":"f61f678d.5008a8","type":"ui_tab","name":"System (25)","icon":"memory","order":6,"disabled":false,"hidden":false},{"id":"6c1e0879.9a5ed8","type":"ui_group","name":"Group 1","tab":"f61f678d.5008a8","order":1,"disp":false,"width":4,"collapse":false},{"id":"acae726d.b1f29","type":"ui_group","name":"Group 2","tab":"f61f678d.5008a8","order":2,"disp":false,"width":4,"collapse":false},{"id":"480109d4.081a88","type":"ui_group","name":"Group 3","tab":"5058d5a3.24fedc","order":3,"disp":false,"width":4,"collapse":false},{"id":"ce7e1ea8.54211","type":"ui_spacer","name":"spacer","group":"","order":2,"width":4,"height":1},{"id":"95520826.c56698","type":"ui_spacer","name":"spacer","group":"","order":2,"width":1,"height":1},{"id":"72eb01c7.2ae41","type":"ui_spacer","name":"spacer","group":"6c1e0879.9a5ed8","order":2,"width":4,"height":1},{"id":"23461cab.91bb64","type":"ui_spacer","name":"spacer","group":"acae726d.b1f29","order":2,"width":4,"height":1},{"id":"a8af7df2.5be1","type":"ui_group","name":"Group 4","tab":"5058d5a3.24fedc","order":4,"disp":false,"width":"3","collapse":false},{"id":"58492234.01c12c","type":"ui_group","name":"Group 1","tab":"760717c0.54bb48","order":1,"disp":false,"width":4,"collapse":false},{"id":"2523f35f.dfa3ec","type":"ui_group","name":"Group 3","tab":"760717c0.54bb48","order":3,"disp":false,"width":4,"collapse":false},{"id":"c22c437e.cb2d1","type":"ui_group","name":"Group 2","tab":"760717c0.54bb48","order":2,"disp":false,"width":4,"collapse":false},{"id":"6bce611a.1776b","type":"mqtt-broker","name":"toa","broker":"toa.local","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"760717c0.54bb48","type":"ui_tab","name":"Consumi","icon":"power","order":3,"disabled":false,"hidden":false},{"id":"ed7de0ee.61f31","type":"ui_spacer","name":"spacer","group":"480109d4.081a88","order":2,"width":4,"height":1},{"id":"3cfd1bb8.7d1da4","type":"function","z":"a7153dc.07134c","name":"","func":"\nreturn msg;","outputs":1,"noerr":0,"x":220,"y":80,"wires":[[]]},{"id":"eecc7f82.b4d7a","type":"exec","z":"2cb74d97.706002","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":510,"y":140,"wires":[[],[],[]]},{"id":"dcda581d.f9cfb8","type":"ping","z":"2cb74d97.706002","name":"Ping","host":"toa.local","timer":"10","inputs":0,"x":990,"y":120,"wires":[["7b6da6c.3a12b58"]]},{"id":"7b6da6c.3a12b58","type":"switch","z":"2cb74d97.706002","name":"","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"number","vt":"number"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1160,"y":120,"wires":[["da3cd101.27e98"],["72157dc2.25ad44"]]},{"id":"5d0b350d.72aa5c","type":"function","z":"2cb74d97.706002","name":"Check ping counter","func":"var count = global.get(\"count\")||0;\n\ncount++;\n\nif (count>10) {\n    msg.payload=\"sudo reboot\";\n    return msg;\n} else {\n    global.set(\"count\",count)\n    return null;\n}\n","outputs":1,"noerr":0,"x":1370,"y":220,"wires":[["a4375c46.5dc06"]]},{"id":"da3cd101.27e98","type":"function","z":"2cb74d97.706002","name":"Ok","func":"global.set(\"count\",0);\nmsg.payload=\"Ok\";\nreturn msg;","outputs":1,"noerr":0,"x":1310,"y":80,"wires":[[]]},{"id":"a4375c46.5dc06","type":"exec","z":"2cb74d97.706002","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":1550,"y":220,"wires":[[],[],[]]},{"id":"91b9ebdf.d2f978","type":"comment","z":"2cb74d97.706002","name":"LAN TEST","info":"","x":1000,"y":80,"wires":[]},{"id":"57f7ecc5.9a8b84","type":"mqtt in","z":"2cb74d97.706002","name":"","topic":"toa/cm3shell","qos":"2","broker":"5ff6276f.3e3b28","x":190,"y":380,"wires":[["30980bee.7c4774"]]},{"id":"30980bee.7c4774","type":"exec","z":"2cb74d97.706002","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":390,"y":380,"wires":[[],[],[]]},{"id":"ff93df31.f8836","type":"inject","z":"2cb74d97.706002","name":"Restart chromium","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"sudo systemctl restart chromium","payloadType":"str","x":170,"y":440,"wires":[["30980bee.7c4774"]]},{"id":"71def57e.38ad3c","type":"inject","z":"2cb74d97.706002","name":"Reboot","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"sudo reboot","payloadType":"str","x":210,"y":300,"wires":[["30980bee.7c4774"]]},{"id":"6cf923c5.fba43c","type":"inject","z":"2cb74d97.706002","name":"Halt","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"sudo halt","payloadType":"str","x":210,"y":340,"wires":[["30980bee.7c4774"]]},{"id":"6f6d78e5.25d428","type":"inject","z":"2cb74d97.706002","name":"Restart nodered","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"sudo systemctl restart nodered","payloadType":"str","x":180,"y":480,"wires":[["30980bee.7c4774"]]},{"id":"c718a789.52e248","type":"function","z":"2cb74d97.706002","name":"watchdog","func":"var count = context.get('count')||0;\nvar timeout=60;\n\nif (msg.payload===\"touchstart\") {\n    count=0;\n    context.set('count',count);\n    msg.payload=0;\n    return msg;\n}\n\nif (msg.payload===\"tick\") {\n    if (count<timeout) {\n        count=count+1;\n        context.set('count',count);\n    }\n    node.status({fill:\"green\",shape:\"ring\",text:count});\n    \n    if (count>=timeout) {\n        //Luminosita da impostare\n        msg.payload=50;\n        return msg;\n    }\n}\n","outputs":1,"noerr":0,"x":1260,"y":880,"wires":[["832432d1.783e4"]]},{"id":"648c1b9a.8e95d4","type":"inject","z":"2cb74d97.706002","name":"","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"tick","payloadType":"str","x":1050,"y":840,"wires":[["c718a789.52e248"]]},{"id":"4f04f3d9.d1373c","type":"inject","z":"2cb74d97.706002","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":1170,"y":680,"wires":[["832432d1.783e4"]]},{"id":"42c048d3.4eaa38","type":"inject","z":"2cb74d97.706002","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"60","payloadType":"num","x":1170,"y":720,"wires":[["832432d1.783e4"]]},{"id":"f80421eb.8934","type":"inject","z":"2cb74d97.706002","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"100","payloadType":"num","x":1170,"y":760,"wires":[["832432d1.783e4"]]},{"id":"9c05004d.e6635","type":"mqtt out","z":"2cb74d97.706002","name":"","topic":"toa/cm25/tcpu","qos":"","retain":"","broker":"5ff6276f.3e3b28","x":1540,"y":440,"wires":[]},{"id":"8c4d3bd1.0c0368","type":"inject","z":"2cb74d97.706002","name":"Read temp","repeat":"15","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"cat /sys/class/thermal/thermal_zone0/temp","payloadType":"str","x":1030,"y":440,"wires":[["1e93ee1e.992712"]]},{"id":"1e93ee1e.992712","type":"exec","z":"2cb74d97.706002","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":1210,"y":460,"wires":[["60531281.c3c63c"],[],[]]},{"id":"72157dc2.25ad44","type":"debug","z":"2cb74d97.706002","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1350,"y":180,"wires":[]},{"id":"73fa0c1c.d04f14","type":"ui_button","z":"2cb74d97.706002","name":"","group":"acae726d.b1f29","order":1,"width":0,"height":0,"passthru":true,"label":"Chromium","tooltip":"","color":"","bgcolor":"","icon":"","payload":"sudo systemctl restart chromium.service","payloadType":"str","topic":"","x":310,"y":140,"wires":[["eecc7f82.b4d7a"]]},{"id":"533b0246.7d4afc","type":"ui_gauge","z":"2cb74d97.706002","name":"","group":"6c1e0879.9a5ed8","order":1,"width":0,"height":0,"gtype":"gage","title":"CPU Temp","label":"°C","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1530,"y":400,"wires":[]},{"id":"60531281.c3c63c","type":"function","z":"2cb74d97.706002","name":"parseFloat","func":"msg.payload=(parseFloat(msg.payload)/1000).toFixed(1);\nreturn msg;","outputs":1,"noerr":0,"x":1350,"y":400,"wires":[["533b0246.7d4afc","9c05004d.e6635"]]},{"id":"c01dc024.4cd24","type":"ui_button","z":"36a9ce8c.c265e2","name":"","group":"480109d4.081a88","order":1,"width":0,"height":0,"passthru":false,"label":"Scala","tooltip":"","color":"","bgcolor":" {{msg.background}}","icon":"","payload":"","payloadType":"str","topic":"","x":530,"y":380,"wires":[["c4352768.54efa8"]]},{"id":"e64aa45b.f28948","type":"mqtt in","z":"36a9ce8c.c265e2","name":"","topic":"toa/lights/3/current_value","qos":"2","datatype":"auto","broker":"5ff6276f.3e3b28","x":150,"y":380,"wires":[["96732960.b248e8"]]},{"id":"96732960.b248e8","type":"function","z":"36a9ce8c.c265e2","name":"setBackground","func":"flow.set(\"3\",msg.payload);\nif (msg.payload===\"0\") {\n    msg.background=\"\";    \n} else {\n    msg.background=\"red\";    \n}\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":380,"wires":[["c01dc024.4cd24"]]},{"id":"c4352768.54efa8","type":"function","z":"36a9ce8c.c265e2","name":"set_value","func":"if (flow.get(\"3\")===\"0\") {\n    msg.payload=\"255\";\n} else {\n    msg.payload=\"0\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":380,"wires":[["d3b6c904.0e2568"]]},{"id":"d3b6c904.0e2568","type":"mqtt out","z":"36a9ce8c.c265e2","name":"","topic":"toa/lights/3/set_value","qos":"","retain":"","broker":"5ff6276f.3e3b28","x":1140,"y":380,"wires":[]},{"id":"b55a9bde.71e898","type":"comment","z":"2cb74d97.706002","name":"GPIO22 Display backlight","info":"","x":1450,"y":700,"wires":[]},{"id":"7fc1dcda.aecd04","type":"comment","z":"2cb74d97.706002","name":"CPU temp check","info":"","x":1020,"y":380,"wires":[]},{"id":"94982abc.7179a8","type":"comment","z":"2cb74d97.706002","name":"Backlight control","info":"","x":1060,"y":580,"wires":[]},{"id":"832432d1.783e4","type":"pi-gpiod out","z":"2cb74d97.706002","name":"","host":"localhost","port":8888,"pin":"22","set":"","level":"0","out":"pwm","sermin":"1000","sermax":"2000","x":1400,"y":740,"wires":[]},{"id":"5eb6c892.b6ff38","type":"ui_template","z":"2cb74d97.706002","group":"963e1205.ed3f4","name":"","order":1,"width":5,"height":5,"format":"<script>\n    var theScope = scope;\n    \n    $(\"body\").on(\"touchstart\", function(){\n       theScope.send({payload: 'touchstart'});\n    });\n</script>\n\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":1040,"y":900,"wires":[["c718a789.52e248"]]},{"id":"841c40b3.998c1","type":"ui_slider","z":"2cb74d97.706002","name":"","label":"Luminosità","tooltip":"","group":"acae726d.b1f29","order":3,"width":0,"height":0,"passthru":true,"outs":"all","topic":"","min":"100","max":"0","step":1,"x":1170,"y":620,"wires":[["832432d1.783e4"]]},{"id":"430f3734.089588","type":"exec","z":"2cb74d97.706002","command":"cat /proc/net/wireless  | awk 'NR==3 {print $3 \"00\"}'''","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"Get Wifi Strength","x":290,"y":640,"wires":[["dc27be3.0d3e54"],[],[]]},{"id":"bfc0b2f1.e78d2","type":"inject","z":"2cb74d97.706002","name":"tick","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":640,"wires":[["430f3734.089588"]]},{"id":"dc27be3.0d3e54","type":"function","z":"2cb74d97.706002","name":"parseFloat","func":"msg.payload=(parseFloat(msg.payload)/1000).toFixed(1);\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":640,"wires":[["745b7d8d.3f7fb4"]]},{"id":"745b7d8d.3f7fb4","type":"ui_gauge","z":"2cb74d97.706002","name":"","group":"6c1e0879.9a5ed8","order":3,"width":0,"height":0,"gtype":"gage","title":"WiFi","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":610,"y":640,"wires":[]},{"id":"e04e5733.ce8cb8","type":"comment","z":"2cb74d97.706002","name":"WiFi signal check","info":"","x":140,"y":580,"wires":[]},{"id":"7fd54303.596fac","type":"comment","z":"36a9ce8c.c265e2","name":"Ingresso piano terra","info":"","x":130,"y":80,"wires":[]},{"id":"d8967f73.90f55","type":"ui_template","z":"2cb74d97.706002","group":"","name":"Background","order":1,"width":0,"height":0,"format":"<style>\n    body {\n        background-image: url(\"/bgacme.jpg\");\n    }\n</style>","storeOutMessages":true,"fwdInMessages":true,"templateScope":"global","x":670,"y":300,"wires":[[]]},{"id":"ada1fe16.1781e","type":"ui_button","z":"2cb74d97.706002","name":"","group":"acae726d.b1f29","order":1,"width":0,"height":0,"passthru":true,"label":"Reboot","tooltip":"","color":"","bgcolor":"","icon":"","payload":"sudo reboot","payloadType":"str","topic":"","x":300,"y":100,"wires":[["eecc7f82.b4d7a"]]},{"id":"355e965e.d32a7a","type":"ui_template","z":"2cb74d97.706002","group":"","name":"Weather","order":1,"width":9,"height":4,"format":"<!-- weather widget start --><div id=\"m-booked-weather-bl250-20003\"> <div class=\"booked-wzs-250-175 weather-customize\" style=\"background-color:#a215e8;width:430px;\" id=\"width3\"> <div class=\"booked-wzs-250-175_in\"> <div class=\"booked-wzs-250-175-data\"> <div class=\"booked-wzs-250-175-left-img wrz-03\"> <a target=\"_blank\" href=\"https://www.booked.net/\"> <img src=\"//s.bookcdn.com/images/letter/logo.gif\" alt=\"booked.net\" /> </a> </div> <div class=\"booked-wzs-250-175-right\"> <div class=\"booked-wzs-day-deck\"> <div class=\"booked-wzs-day-val\"> <div class=\"booked-wzs-day-number\"><span class=\"plus\">+</span>12</div> <div class=\"booked-wzs-day-dergee\"> <div class=\"booked-wzs-day-dergee-val\">&deg;</div> <div class=\"booked-wzs-day-dergee-name\">C</div> </div> </div> <div class=\"booked-wzs-day\"> <div class=\"booked-wzs-day-d\">H: <span class=\"plus\">+</span>12&deg;</div> <div class=\"booked-wzs-day-n\">L: <span class=\"plus\">+</span>11&deg;</div> </div> </div> <div class=\"booked-wzs-250-175-info\"> <div class=\"booked-wzs-250-175-city\">Ladispoli </div> <div class=\"booked-wzs-250-175-date\">Venerdì, 13 Marzo</div> <div class=\"booked-wzs-left\"> <span class=\"booked-wzs-bottom-l\">Previsioni a 7 giorni</span> </div> </div> </div> </div> <a target=\"_blank\" href=\"https://hotelmix.it/weather/ladispoli-19527\"> <table cellpadding=\"0\" cellspacing=\"0\" class=\"booked-wzs-table-250\"> <tr> <td>Sab</td> <td>Dom</td> <td>Lun</td> <td>Mar</td> <td>Mer</td> <td>Gio</td> </tr> <tr> <td class=\"week-day-ico\"><div class=\"wrz-sml wrzs-03\"></div></td> <td class=\"week-day-ico\"><div class=\"wrz-sml wrzs-01\"></div></td> <td class=\"week-day-ico\"><div class=\"wrz-sml wrzs-01\"></div></td> <td class=\"week-day-ico\"><div class=\"wrz-sml wrzs-01\"></div></td> <td class=\"week-day-ico\"><div class=\"wrz-sml wrzs-01\"></div></td> <td class=\"week-day-ico\"><div class=\"wrz-sml wrzs-01\"></div></td> </tr> <tr> <td class=\"week-day-val\"><span class=\"plus\">+</span>15&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>17&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>15&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>15&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>17&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>16&deg;</td> </tr> <tr> <td class=\"week-day-val\"><span class=\"plus\">+</span>8&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>8&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>8&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>8&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>8&deg;</td> <td class=\"week-day-val\"><span class=\"plus\">+</span>8&deg;</td> </tr> </table> </a> </div></div> </div><script type=\"text/javascript\"> var css_file=document.createElement(\"link\"); css_file.setAttribute(\"rel\",\"stylesheet\"); css_file.setAttribute(\"type\",\"text/css\"); css_file.setAttribute(\"href\",'https://s.bookcdn.com/css/w/booked-wzs-widget-275.css?v=0.0.1'); document.getElementsByTagName(\"head\")[0].appendChild(css_file); function setWidgetData(data) { if(typeof(data) != 'undefined' && data.results.length > 0) { for(var i = 0; i < data.results.length; ++i) { var objMainBlock = document.getElementById('m-booked-weather-bl250-20003'); if(objMainBlock !== null) { var copyBlock = document.getElementById('m-bookew-weather-copy-'+data.results[i].widget_type); objMainBlock.innerHTML = data.results[i].html_code; if(copyBlock !== null) objMainBlock.appendChild(copyBlock); } } } else { alert('data=undefined||data.results is empty'); } } </script> <script type=\"text/javascript\" charset=\"UTF-8\" src=\"https://widgets.booked.net/weather/info?action=get_weather_info&ver=6&cityID=19527&type=3&scode=124&ltid=3458&domid=&anc_id=24883&cmetric=1&wlangID=5&color=a215e8&wwidth=430&header_color=ffffff&text_color=333333&link_color=08488D&border_form=1&footer_color=ffffff&footer_text_color=333333&transparent=0\"></script><!-- weather widget end -->","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":660,"y":360,"wires":[[]]},{"id":"22ef2a0b.9cc546","type":"inject","z":"2cb74d97.706002","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":100,"wires":[["ada1fe16.1781e"]]},{"id":"b5a46d44.76111","type":"inject","z":"2cb74d97.706002","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":140,"wires":[["73fa0c1c.d04f14"]]},{"id":"2da81a17.85ffe6","type":"ui_button","z":"f78dba7.c067548","name":"","group":"480109d4.081a88","order":3,"width":0,"height":0,"passthru":false,"label":"Cancello","tooltip":"","color":"","bgcolor":"grey","icon":"local_shipping","payload":"go","payloadType":"str","topic":"","topicType":"str","x":250,"y":180,"wires":[["adbd0426.d42588"]]},{"id":"adbd0426.d42588","type":"mqtt out","z":"f78dba7.c067548","name":"","topic":"toa/gate","qos":"","retain":"","broker":"5ff6276f.3e3b28","x":440,"y":180,"wires":[]},{"id":"8aa8dea5.94048","type":"ui_button","z":"36a9ce8c.c265e2","name":"","group":"a8af7df2.5be1","order":1,"width":0,"height":0,"passthru":false,"label":"Piantana 1","tooltip":"","color":"","bgcolor":" {{msg.background}}","icon":"","payload":"","payloadType":"str","topic":"","x":550,"y":440,"wires":[["3baa227d.3019ce"]]},{"id":"26387c5e.644504","type":"mqtt in","z":"36a9ce8c.c265e2","name":"","topic":"toa/lights/23/current_value","qos":"2","datatype":"auto","broker":"5ff6276f.3e3b28","x":150,"y":440,"wires":[["23a7bd1f.4aeb82"]]},{"id":"23a7bd1f.4aeb82","type":"function","z":"36a9ce8c.c265e2","name":"setBackground","func":"flow.set(\"23\",msg.payload);\nif (msg.payload===\"0\") {\n    msg.background=\"\";    \n} else {\n    msg.background=\"red\";    \n}\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":440,"wires":[["8aa8dea5.94048"]]},{"id":"3baa227d.3019ce","type":"function","z":"36a9ce8c.c265e2","name":"set_value","func":"if (flow.get(\"23\")===\"0\") {\n    msg.payload=\"255\";\n} else {\n    msg.payload=\"0\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":440,"wires":[["e1d125f3.d79c08"]]},{"id":"e1d125f3.d79c08","type":"mqtt out","z":"36a9ce8c.c265e2","name":"","topic":"toa/lights/23/set_value","qos":"","retain":"","broker":"5ff6276f.3e3b28","x":1140,"y":440,"wires":[]},{"id":"32b17bd2.617134","type":"ui_button","z":"36a9ce8c.c265e2","name":"","group":"a8af7df2.5be1","order":2,"width":0,"height":0,"passthru":false,"label":"Piantana 2","tooltip":"","color":"","bgcolor":" {{msg.background}}","icon":"","payload":"","payloadType":"str","topic":"","x":550,"y":480,"wires":[["7c53062f.af4e88"]]},{"id":"93639880.73fa98","type":"mqtt in","z":"36a9ce8c.c265e2","name":"","topic":"toa/lights/24/current_value","qos":"2","datatype":"auto","broker":"5ff6276f.3e3b28","x":150,"y":480,"wires":[["a2f7dff4.a2913"]]},{"id":"a2f7dff4.a2913","type":"function","z":"36a9ce8c.c265e2","name":"setBackground","func":"flow.set(\"24\",msg.payload);\nif (msg.payload===\"0\") {\n    msg.background=\"\";    \n} else {\n    msg.background=\"red\";    \n}\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":480,"wires":[["32b17bd2.617134"]]},{"id":"7c53062f.af4e88","type":"function","z":"36a9ce8c.c265e2","name":"set_value","func":"if (flow.get(\"24\")===\"0\") {\n    msg.payload=\"255\";\n} else {\n    msg.payload=\"0\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":480,"wires":[["12e92799.8838e8"]]},{"id":"12e92799.8838e8","type":"mqtt out","z":"36a9ce8c.c265e2","name":"","topic":"toa/lights/24/set_value","qos":"","retain":"","broker":"5ff6276f.3e3b28","x":1140,"y":480,"wires":[]},{"id":"873069cc.613fc8","type":"ui_template","z":"2cb74d97.706002","group":"963e1205.ed3f4","name":"Clock","order":2,"width":0,"height":0,"format":"<style>\n    #clock_layer {\n        position: fixed;\n        top: 70px;\n        left: 80px;\n        display: block;\n        z-index: 4;\n    }\n\n    #date_layer {\n        position: fixed;\n        top: 340px;\n        left: 120px;\n        font-size: 20px;\n        display: block;\n        z-index: 4;\n    }\n</style>\n\n<!-- Orologio -->\n<div id=\"clock_layer\"></div>\n\n<!-- Date e ora -->\n<div id=\"date_layer\"></div>\n\n<script>\n    $(document).ready(function() {\n        var days = [\"Domenica\",\"Lunedi\",\"Martedi\",\"Mercoledi\",\"Giovedi\",\"Venerdi\",\"Sabato\"];\n        var months = [\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"];\n    \n    \tfunction updateDate() {\n    \t\tvar d = new Date();\n    \t\t$(\"#date_layer\").html(days[d.getDay()] + \" \" +  d.getDate() + \" \" + months[d.getMonth()] + \" \" + d.getFullYear())\n    \t}\n    \n        $('#clock_layer').thooClock({\n    \t\t\tsize: 250,\n    \t\t\tshowNumerals:true,\n    \t\t\tbrandText: \"ACME SYSTEMS\",\n    \t\t\tbrandText2: \"Clock\"\n    \t});\n    \n    \tupdateDate();\n    \tsetInterval(updateDate,1000);\n    });\n</script>\n\n<script>\n// thooClock, a jQuery Clock with alarm function\n// by Thomas Haaf aka thooyork, http://www.smart-sign.com\n// Twitter: @thooyork\n// Version 0.9.20\n// Copyright (c) 2013 thooyork\n\n// MIT License, http://opensource.org/licenses/MIT\n\n\n(function( $ ) {\n\n    $.fn.thooClock = function(options) {\n        \n        this.each(function() {\n\n        var cnv,\n                ctx,\n                el,\n                defaults,\n                settings,\n                radius,\n                dialColor,\n                dialBackgroundColor,\n                secondHandColor,\n                minuteHandColor,\n                hourHandColor,\n                alarmHandColor,\n                alarmHandTipColor,\n                hourCorrection,\n                x,\n                y;\n\n       defaults = {\n                size:250,\n                dialColor:'white',\n                dialBackgroundColor:'transparent',\n                secondHandColor:'#F3A829',\n                minuteHandColor:'yellow',\n                hourHandColor:'yellow',\n                alarmHandColor:'#FFFFFF',\n                alarmHandTipColor:'#026729',\n                hourCorrection:'+0',\n                alarmCount:1,\n                showNumerals:true\n            };\n\n            settings = $.extend({}, defaults, options);\n\n            el = this;\n\n            el.size = settings.size;\n            el.dialColor = settings.dialColor;\n            el.dialBackgroundColor = settings.dialBackgroundColor;\n            el.secondHandColor = settings.secondHandColor;\n            el.minuteHandColor = settings.minuteHandColor;\n            el.hourHandColor = settings.hourHandColor;\n            el.alarmHandColor = settings.alarmHandColor;\n            el.alarmHandTipColor = settings.alarmHandTipColor;\n            el.hourCorrection = settings.hourCorrection;\n            el.showNumerals = settings.showNumerals;\n\n            el.brandText = settings.brandText;\n            el.brandText2 = settings.brandText2;\n            \n            el.alarmCount = settings.alarmCount;\n            el.alarmTime = settings.alarmTime;\n            el.onAlarm = settings.onAlarm;\n            el.offAlarm = settings.offAlarm;\n\n            el.onEverySecond = settings.onEverySecond;\n\n            x=0; //loopCounter for Alarm\n            \n            cnv = document.createElement('canvas');\n            ctx = cnv.getContext('2d');\n\n            cnv.width = this.size;\n            cnv.height = this.size;\n            //append canvas to element\n            $(cnv).appendTo(el);\n\n            radius = parseInt(el.size/2, 10);\n            //translate 0,0 to center of circle:\n            ctx.translate(radius, radius); \n\n            //set alarmtime from outside:\n            \n            $.fn.thooClock.setAlarm = function(newtime){\n                    var thedate;\n                    if(newtime instanceof Date){\n                    \t//keep date object\n                    \tthedate=newtime;\n                    }\n                    else{\n\t\t\t\t\t\t//convert from string formatted like hh[:mm[:ss]]]\n\t\t\t\t\t\tvar arr = newtime.split(':');\n\t\t\t\t\t\tthedate=new Date();\n\t\t\t\t\t\tfor(var i= 0; i <3 ; i++){\n\t\t\t\t\t\t\t//force to int\n\t\t\t\t\t\t\tarr[i]=Math.floor(arr[i]);\n\t\t\t\t\t\t\t//check if NaN or invalid min/sec\n\t\t\t\t\t\t\tif( arr[i] !==arr[i] || arr[i] > 59) arr[i]=0 ;\n\t\t\t\t\t\t\t//no more than 24h\n\t\t\t\t\t\t\tif( i==0 && arr[i] > 23) arr[i]=0 ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthedate.setHours(arr[0],arr[1],arr[2]);\n                    }\n                    //alert(el.id);\n                    el.alarmTime = thedate;   \n            };\n\n            $.fn.thooClock.clearAlarm = function(){\n                    el.alarmTime = undefined;\n                    startClock(0,0);\n                    $(el).trigger('offAlarm');\n            };\n        \n\n            function toRadians(deg){\n                return ( Math.PI / 180 ) * deg;\n            }     \n\n            function drawDial(color, bgcolor){\n                var dialRadius,\n                    dialBackRadius,\n                    i,\n                    ang,\n                    sang,\n                    cang,\n                    sx,\n                    sy,\n                    ex,\n                    ey,\n                    nx,\n                    ny,\n                    text,\n                    textSize,\n                    textWidth,\n                    brandtextWidth,\n                    brandtextWidth2;\n\n                dialRadius = parseInt(radius-(el.size/50), 10);\n                dialBackRadius = radius-(el.size/400);\n\n                ctx.beginPath();\n                ctx.arc(0,0,dialBackRadius,0,360,false);\n                ctx.fillStyle = bgcolor;\n                ctx.fill();\n\n                 \n                for (i=1; i<=60; i+=1) {\n                    ang=Math.PI/30*i;\n                    sang=Math.sin(ang);\n                    cang=Math.cos(ang);\n                    //hour marker/numeral\n                    if (i % 5 === 0) {\n                        ctx.lineWidth = parseInt(el.size/50,10);\n                        sx = sang * (dialRadius - dialRadius/9);\n                        sy = cang * -(dialRadius - dialRadius/9);\n                        ex = sang * dialRadius;\n                        ey = cang * - dialRadius;\n                        nx = sang * (dialRadius - dialRadius/4.2);\n                        ny = cang * -(dialRadius - dialRadius/4.2);\n                        text = i/5;\n                        ctx.textBaseline = 'middle';\n                        textSize = parseInt(el.size/13,10);\n                        ctx.font = '100 ' + textSize + 'px helvetica';\n                        textWidth = ctx.measureText (text).width;\n                        ctx.beginPath();\n                        ctx.fillStyle = color;\n\n                        if(el.showNumerals){\n                            ctx.fillText(text,nx-(textWidth/2),ny);\n                        }\n                    //minute marker\n                    } else {\n                       ctx.lineWidth = parseInt(el.size/100,10);\n                        sx = sang * (dialRadius - dialRadius/20);\n                        sy = cang * -(dialRadius - dialRadius/20);\n                        ex = sang * dialRadius;\n                        ey = cang * - dialRadius;\n                    }\n\n                    ctx.beginPath();\n                    ctx.strokeStyle = color;\n                    ctx.lineCap = \"round\";\n                    ctx.moveTo(sx,sy);\n                    ctx.lineTo(ex,ey);\n                    ctx.stroke();\n                } \n\n                if(el.brandText !== undefined){\n                    ctx.font = '100 ' + parseInt(el.size/28,10) + 'px helvetica';\n                    brandtextWidth = ctx.measureText (el.brandText).width;\n                    ctx.fillText(el.brandText,-(brandtextWidth/2),(el.size/6)); \n                }\n\n                if(el.brandText2 !== undefined){\n                    ctx.textBaseline = 'middle';\n                    ctx.font = '100 ' + parseInt(el.size/44,10) + 'px helvetica';\n                    brandtextWidth2 = ctx.measureText (el.brandText2).width;\n                    ctx.fillText(el.brandText2,-(brandtextWidth2/2),(el.size/5)); \n                }\n\n            }\n\n\n            function twelvebased(hour){\n                if(hour >= 12){\n                    hour = hour - 12;\n                }\n                return hour;\n            }\n\n\n\n            function drawHand(length){\n               ctx.beginPath();\n               ctx.moveTo(0,0);\n               ctx.lineTo(0, length * -1);\n               ctx.stroke();\n            }\n            \n\n            function drawSecondHand(seconds, color){\n                var shlength = (radius)-(el.size/40);\n                \n                ctx.save();\n                ctx.lineWidth = parseInt(el.size/150,10);\n                ctx.lineCap = \"round\";\n                ctx.strokeStyle = color;\n                ctx.rotate( toRadians(seconds * 6));\n\n                ctx.shadowColor = 'rgba(0,0,0,.5)';\n                ctx.shadowBlur = parseInt(el.size/80,10);\n                ctx.shadowOffsetX = parseInt(el.size/200,10);\n                ctx.shadowOffsetY = parseInt(el.size/200,10);\n\n                drawHand(shlength);\n\n                //tail of secondhand\n                ctx.beginPath();\n                ctx.moveTo(0,0);\n                ctx.lineTo(0, shlength/15);\n                ctx.lineWidth = parseInt(el.size/30,10);\n                ctx.stroke();\n\n                //round center\n                ctx.beginPath();\n                ctx.arc(0, 0, parseInt(el.size/30,10), 0, 360, false);\n                ctx.fillStyle = color;\n\n                ctx.fill();\n                ctx.restore();\n            }\n\n            function drawMinuteHand(minutes, color){\n                var mhlength = el.size/2.2;\n                ctx.save();\n                ctx.lineWidth = parseInt(el.size/50,10);\n                ctx.lineCap = \"round\";\n                ctx.strokeStyle = color;\n                ctx.rotate( toRadians(minutes * 6));\n\n                ctx.shadowColor = 'rgba(0,0,0,.5)';\n                ctx.shadowBlur = parseInt(el.size/50,10);\n                ctx.shadowOffsetX = parseInt(el.size/250,10);\n                ctx.shadowOffsetY = parseInt(el.size/250,10);\n\n                drawHand(mhlength);\n                ctx.restore();\n            }\n\n            function drawHourHand(hours, color){\n                var hhlength = el.size/3;\n                ctx.save();\n                ctx.lineWidth = parseInt(el.size/25, 10);\n                ctx.lineCap = \"round\";\n                ctx.strokeStyle = color;\n                ctx.rotate( toRadians(hours * 30));\n\n                ctx.shadowColor = 'rgba(0,0,0,.5)';\n                ctx.shadowBlur = parseInt(el.size/50, 10);\n                ctx.shadowOffsetX = parseInt(el.size/300, 10);\n                ctx.shadowOffsetY = parseInt(el.size/300, 10);\n\n                drawHand(hhlength);\n                ctx.restore();\n            }\n\n            function timeToDecimal(time){\n                var h,\n                    m;\n                if(time !== undefined){\n                    h = twelvebased(time.getHours());\n                    m = time.getMinutes();\n                }\n                return parseInt(h,10) + (m/60);\n            }\n\n            function drawAlarmHand(alarm, color, tipcolor){\n\n                var ahlength = el.size/2.4;\n                \n                ctx.save();\n                ctx.lineWidth = parseInt(el.size/30, 10);\n                ctx.lineCap = \"butt\";\n                ctx.strokeStyle = color;\n\n                //decimal equivalent to hh:mm\n                alarm = timeToDecimal(alarm);\n                ctx.rotate( toRadians(alarm * 30));\n\n                ctx.shadowColor = 'rgba(0,0,0,.5)';\n                ctx.shadowBlur = parseInt(el.size/55, 10);\n                ctx.shadowOffsetX = parseInt(el.size/300, 10);\n                ctx.shadowOffsetY = parseInt(el.size/300, 10);\n\n                //drawHand(ahlength);\n\n                ctx.beginPath();\n                ctx.moveTo(0,0);\n                ctx.lineTo(0, (ahlength-(el.size/10)) * -1);\n                ctx.stroke();\n\n                ctx.beginPath();\n                ctx.strokeStyle = tipcolor;\n                ctx.moveTo(0, (ahlength-(el.size/10)) * -1);\n                ctx.lineTo(0, (ahlength) * -1);\n                ctx.stroke();\n\n                //round center\n                ctx.beginPath();\n                ctx.arc(0, 0, parseInt(el.size/24, 10), 0, 360, false);\n                ctx.fillStyle = color;\n                ctx.fill();\n                ctx.restore();\n            }\n\n            function numberCorrection(num){\n                if(num !== '+0' && num !== ''){\n                    if(num.charAt(0) === '+'){\n                        //addNum\n                        return + num.charAt(1);\n                    }\n                    else{\n                        //subNum\n                        return - num.charAt(1);\n                    }\n                }\n                else{\n                    return 0;\n                }\n            }\n\n            //listener\n            if(el.onAlarm !== undefined){\n            \t$(el).on('onAlarm', function(e){\n                \tel.onAlarm();\n                \te.preventDefault();\n                \te.stopPropagation();\n            \t});\n            }\n\n            if(el.onEverySecond !== undefined){\n                $(el).on('onEverySecond', function(e){\n                    el.onEverySecond();\n                    e.preventDefault();\n                });\n            }\n\n            if(el.offAlarm !== undefined){\n\t            $(el).on('offAlarm', function(e){\n    \t            el.offAlarm();\n        \t        e.stopPropagation();\n            \t    e.preventDefault();\n           \t\t});\n\t\t\t}\n\n            y=0;\n\n            function startClock(x,y){\n                var theDate,\n                    s,\n                    m,\n                    hours,\n                    mins,\n                    h,\n                    exth,\n                    extm,\n                    allExtM,\n                    allAlarmM,\n                    atime;\n\n                theDate = new Date();\n                s = theDate.getSeconds();\n                mins = theDate.getMinutes();\n                m = mins + (s/60);\n                hours = theDate.getHours();\n                h = twelvebased(hours + numberCorrection(el.hourCorrection)) + (m/60);\n\n                ctx.clearRect(-radius,-radius,el.size,el.size);\n\n                drawDial(el.dialColor, el.dialBackgroundColor);\n\n                if(el.alarmTime !== undefined){\n                    drawAlarmHand(el.alarmTime, el.alarmHandColor, el.alarmHandTipColor);\n                }\n                drawHourHand(h, el.hourHandColor);\n                drawMinuteHand(m, el.minuteHandColor);\n                drawSecondHand(s, el.secondHandColor);\n\n                //trigger every second custom event\n                y+=1;\n                if(y===1){\n                    $(el).trigger('onEverySecond');\n                    y=0;\n                }\n               \n                if(el.alarmTime !== undefined){\n                    allExtM = (el.alarmTime.getHours()*60*60) + (el.alarmTime.getMinutes() *60) + el.alarmTime.getSeconds();\n                }\n\n                allAlarmM = (hours*60*60) + (mins*60) + s;\n\n                //set alarm loop counter\n                //if(h >= timeToDecimal(twelvebased(el.alarmTime)){\n\n                //alarmMinutes greater than passed Minutes;\n                if(allAlarmM >= allExtM){\n                    x+=1; \n                }\n                //trigger alarm for as many times as i < alarmCount\n                if(x <= el.alarmCount && x !== 0){\n                   $(el).trigger('onAlarm');\n                }\n                var synced_delay= 1000 - ((new Date().getTime()) % 1000);\n                setTimeout(function(){startClock(x,y);},synced_delay);\n            }\n\n            startClock(x,y);\n\n   });//return each this;\n  };     \n\n}(jQuery));\n\n    \n    \n</script>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","x":650,"y":420,"wires":[[]]},{"id":"79344eca.8138d","type":"ui_gauge","z":"d2e8f7dc.35e8f8","name":"","group":"58492234.01c12c","order":1,"width":0,"height":0,"gtype":"gage","title":"Solare","label":"Kwatt","format":"{{value}}","min":0,"max":"30","colors":["#adb299","#e6e600","#ca3838"],"seg1":"3","seg2":"14","x":470,"y":140,"wires":[]},{"id":"73dc3cfa.6ae7d4","type":"ui_gauge","z":"d2e8f7dc.35e8f8","name":"","group":"2523f35f.dfa3ec","order":1,"width":0,"height":0,"gtype":"gage","title":"Enel","label":"Kwatt","format":"{{value}}","min":"-30","max":"30","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":470,"y":260,"wires":[]},{"id":"3b41f264.17c87e","type":"ui_gauge","z":"d2e8f7dc.35e8f8","name":"","group":"c22c437e.cb2d1","order":2,"width":0,"height":0,"gtype":"gage","title":"Piano terra","label":"Kwatt","format":"{{value}}","min":0,"max":"30","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":490,"y":200,"wires":[]},{"id":"cf3cc50f.7322d8","type":"ui_gauge","z":"d2e8f7dc.35e8f8","name":"","group":"c22c437e.cb2d1","order":1,"width":0,"height":0,"gtype":"gage","title":"Primo piano","label":"Kwatt","format":"{{value}}","min":0,"max":"30","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":490,"y":80,"wires":[]},{"id":"4c076771.a84cb8","type":"ui_gauge","z":"d2e8f7dc.35e8f8","name":"","group":"2523f35f.dfa3ec","order":2,"width":0,"height":0,"gtype":"gage","title":"Generale","label":"Kwatt","format":"{{value}}","min":"-30","max":"30","colors":["#00b500","#e6e600","#ca3838"],"seg1":"0","seg2":"15","x":480,"y":320,"wires":[]},{"id":"c661f68a.edc8f8","type":"mqtt in","z":"d2e8f7dc.35e8f8","name":"","topic":"toa/consumi_primo_piano","qos":"2","datatype":"auto","broker":"6bce611a.1776b","x":170,"y":80,"wires":[["cf3cc50f.7322d8"]]},{"id":"3de42b6f.c81af4","type":"mqtt in","z":"d2e8f7dc.35e8f8","name":"","topic":"toa/consumi_solare","qos":"2","datatype":"auto","broker":"6bce611a.1776b","x":150,"y":140,"wires":[["79344eca.8138d"]]},{"id":"2c4205b0.6308fa","type":"mqtt in","z":"d2e8f7dc.35e8f8","name":"","topic":"toa/consumi_piano_terra","qos":"2","datatype":"auto","broker":"6bce611a.1776b","x":170,"y":200,"wires":[["3b41f264.17c87e"]]},{"id":"5e2d7a9f.b88b84","type":"mqtt in","z":"d2e8f7dc.35e8f8","name":"","topic":"toa/consumi_enel","qos":"2","datatype":"auto","broker":"6bce611a.1776b","x":150,"y":260,"wires":[["73dc3cfa.6ae7d4"]]},{"id":"45f6546f.ec2e9c","type":"mqtt in","z":"d2e8f7dc.35e8f8","name":"","topic":"toa/consumi_generali","qos":"2","datatype":"auto","broker":"6bce611a.1776b","x":160,"y":320,"wires":[["4c076771.a84cb8"]]}]