-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathflows (2).json
More file actions
1 lines (1 loc) · 40.2 KB
/
Copy pathflows (2).json
File metadata and controls
1 lines (1 loc) · 40.2 KB
1
[{"id":"75575285.2d458c","type":"tab","label":"Flow 1"},{"id":"8e6ea4be.616f18","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('Nova','Temperatura',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":530,"y":120,"wires":[["c4dd50a1.ecf56"]]},{"id":"c4dd50a1.ecf56","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":780,"y":120,"wires":[[]]},{"id":"b7f061fa.cf70b","type":"comment","z":"75575285.2d458c","name":"Gumb za navigaciju","info":"This function node creates multiple INSERT INTO\ncommands for data points that are stored in \nattributes of the payload.","x":1470,"y":1200,"wires":[]},{"id":"999dd2a4.15c7e","type":"comment","z":"75575285.2d458c","name":"Spremanje vlažnosti u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":240,"y":240,"wires":[]},{"id":"d7545735.8fb318","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/Temperatura","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":320,"y":120,"wires":[["8e6ea4be.616f18","bc5dd175.d7bc1"]]},{"id":"7e581d7c.70ac64","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('Nova','Pritisak',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1430,"y":160,"wires":[["45c4b474.db4cfc"]]},{"id":"45c4b474.db4cfc","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":1680,"y":160,"wires":[[]]},{"id":"3cc7dc89.6aefc4","type":"comment","z":"75575285.2d458c","name":"Spremanje temperature u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":230,"y":60,"wires":[]},{"id":"5d7a3c2d.8e1824","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/Pritisak","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":1200,"y":160,"wires":[["7e581d7c.70ac64","e17672b1.3ffc8"]]},{"id":"283f06b9.b0084a","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('Nova','Vlaznost',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":510,"y":380,"wires":[["6a9b7f67.5537"]]},{"id":"6a9b7f67.5537","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":680,"y":420,"wires":[[]]},{"id":"cdac4fcb.0d9a2","type":"comment","z":"75575285.2d458c","name":"Spremanje pritiska u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":1070,"y":60,"wires":[]},{"id":"71ec4546.addf1c","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/Vlaznost","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":310,"y":320,"wires":[["283f06b9.b0084a","f90b17e7.aaa6c8"]]},{"id":"af7a5cce.57ace","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('Nova','Zracenje_sunca',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":530,"y":640,"wires":[["fe317699.000798"]]},{"id":"fe317699.000798","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":740,"y":640,"wires":[[]]},{"id":"aa54af3b.673d8","type":"comment","z":"75575285.2d458c","name":"Spremanje zračenja sunca u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":250,"y":500,"wires":[]},{"id":"a8a20939.e86678","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/Zracenje_sunca","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":280,"y":580,"wires":[["af7a5cce.57ace","98ea702f.acb38"]]},{"id":"f4b187e.0e05e78","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('Nova','CO2',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1310,"y":360,"wires":[["6290c4da.e1a37c"]]},{"id":"6290c4da.e1a37c","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":1560,"y":360,"wires":[[]]},{"id":"80cc5bee.4a26e8","type":"comment","z":"75575285.2d458c","name":"Spremanje CO2 u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":1040,"y":260,"wires":[]},{"id":"34dbac2b.abbc34","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/CO2","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":1070,"y":360,"wires":[["f4b187e.0e05e78","e0549000.0174e"]]},{"id":"2ee1324a.2e9d1e","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('Nova','VOC',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1270,"y":560,"wires":[["29a4392b.943fa6"]]},{"id":"29a4392b.943fa6","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":1540,"y":580,"wires":[[]]},{"id":"faf40062.75de4","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/VOC","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":1080,"y":520,"wires":[["2ee1324a.2e9d1e","46dd8452.7ba9cc"]]},{"id":"c424bd2f.9464c","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('ind101','Smjer_vjetra',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1330,"y":960,"wires":[["2448fc39.0c0c14"]]},{"id":"2448fc39.0c0c14","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":1380,"y":1080,"wires":[[]]},{"id":"44c9a6e1.85d578","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"ind/smjervitra","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":1070,"y":920,"wires":[["c424bd2f.9464c","83640327.bf56b"]]},{"id":"a81e8c3b.95624","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('ind101','Brzina_vjetra',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":510,"y":840,"wires":[["978b90bc.4aea4"]]},{"id":"978b90bc.4aea4","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":760,"y":840,"wires":[[]]},{"id":"ab43fabe.fd6f68","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"ind/brzinavitra","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":280,"y":840,"wires":[["a81e8c3b.95624","d6fbd1fb.3447c"]]},{"id":"c415558e.dd6328","type":"ui_template","z":"75575285.2d458c","group":"","name":"Naslov","order":0,"width":0,"height":0,"format":"<script id=\"clockScript1\" type=\"text/javascript\">\n var clockInterval;\n $(function () {\n if (clockInterval) return;\n\n //add logo\n var div1 = $('<div/>');\n \n var logo = new Image();\n\n logo.src = '/home/pi/Slike/ner.jpg'\n logo.height = 60;\n div1[0].style.margin = '10px auto';\n\n div1.append();\n\n //add clock\n var div2 = $('<div/>');\n var p = $('<p/>');\n\n div2.append(p);\n div2[0].style.margin = '10px';\n \n \n\n function displayTime() { \n \n p.text(\"DISTRIBUIRANI SUSTAV ZA MJERENJE PARAMETARA OKOLIŠA NEREŽIŠĆA \");\n }\n \n clockInterval = setInterval(displayTime, 1000);\n\n //add to toolbar when it's available\n var addToToolbarTimer;\n \n function addToToolbar() {\n var toolbar = $('.md-toolbar-tools');\n \n if(!toolbar.length) return;\n \n toolbar.append(div1);\n toolbar.append(div2);\n clearInterval(addToToolbarTimer);\n }\n addToToolbarTimer = setInterval(addToToolbar, 100);\n });\n</script>\n<style>\np {\n text-align: center;\n font-size:25px;\n}\n\n</style>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"global","x":1290,"y":1540,"wires":[[]]},{"id":"1724bc7f.63c1c4","type":"function","z":"75575285.2d458c","name":"Save to DB","func":"var sql = \"\";\nvar d = new Date();\nvar epoch = d.getTime();\nvar outputs = [];\n\nsql = \"INSERT INTO sensor_data (device,sensor,value,epoch) \" +\n \"VALUES ('ind101','CO',\"+msg.payload+\",\"+epoch+\")\";\noutputs.push({topic:sql}); \n\n \n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \"+dd + \".\" + mm + \".\" + yyyy + \" \" + hh + \":\" + mmm + \":\" + ss}); \n \nreturn [ outputs ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":510,"y":1040,"wires":[["ac9f183.ba8a7e8"]]},{"id":"ac9f183.ba8a7e8","type":"sqlite","z":"75575285.2d458c","mydb":"6b0a7b52.850244","sql":"","name":"Node Red DB","x":760,"y":1040,"wires":[[]]},{"id":"97f6ca0d.01add8","type":"comment","z":"75575285.2d458c","name":"Spremanje CO u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":200,"y":960,"wires":[]},{"id":"bdd7ea98.d5b4d8","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"ind/CO","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":260,"y":1040,"wires":[["1724bc7f.63c1c4","310ab527.f6093a"]]},{"id":"310ab527.f6093a","type":"ui_gauge","z":"75575285.2d458c","name":"","group":"c75d4663.3ebf28","order":2,"width":0,"height":0,"gtype":"donut","title":"Ugljikov monoksid CO","label":"ppm","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"7","seg2":"30","x":560,"y":980,"wires":[]},{"id":"bc5dd175.d7bc1","type":"ui_gauge","z":"75575285.2d458c","name":"","group":"68ab7c72.4f9764","order":1,"width":0,"height":0,"gtype":"gage","title":"Temperatura","label":"°C","format":"{{value}}","min":0,"max":"40","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":530,"y":200,"wires":[]},{"id":"f90b17e7.aaa6c8","type":"ui_gauge","z":"75575285.2d458c","name":"","group":"68ab7c72.4f9764","order":2,"width":0,"height":0,"gtype":"wave","title":"Vlažnost","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":620,"y":300,"wires":[]},{"id":"e17672b1.3ffc8","type":"ui_gauge","z":"75575285.2d458c","name":"","group":"68ab7c72.4f9764","order":3,"width":0,"height":0,"gtype":"donut","title":"Tlak","label":"hPa","format":"{{value}}","min":0,"max":"5000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1450,"y":80,"wires":[]},{"id":"98ea702f.acb38","type":"ui_gauge","z":"75575285.2d458c","name":"","group":"efc63623.420e88","order":2,"width":0,"height":0,"gtype":"donut","title":"Sunčevo zračenje","label":"W/m2","format":"{{value}}","min":0,"max":"1800","colors":["#00b500","#e6e600","#ca3838"],"seg1":"400","seg2":"700","x":590,"y":540,"wires":[]},{"id":"e0549000.0174e","type":"ui_gauge","z":"75575285.2d458c","d":true,"name":"","group":"c75d4663.3ebf28","order":1,"width":0,"height":0,"gtype":"donut","title":"Ugljikov dioksid CO2","label":"ppm","format":"{{value}}","min":0,"max":"10000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1400,"y":300,"wires":[]},{"id":"46dd8452.7ba9cc","type":"ui_gauge","z":"75575285.2d458c","d":true,"name":"","group":"efc63623.420e88","order":1,"width":0,"height":0,"gtype":"gage","title":"Kvaliteta zraka VOC","label":"ppb","format":"{{value}}","min":0,"max":"10000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1420,"y":480,"wires":[]},{"id":"f8984156.03039","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/co2_base","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":820,"y":1220,"wires":[["237cb33c.b6fc1c","adf990dc.269a8"]]},{"id":"4609915f.df25","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"nova/voc_base","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":800,"y":1380,"wires":[["7865183a.a7acb8","6c678d82.cdfd74"]]},{"id":"237cb33c.b6fc1c","type":"ui_text","z":"75575285.2d458c","d":true,"group":"c75d4663.3ebf28","order":3,"width":0,"height":0,"name":"","label":"VOC base","format":"{{msg.payload}}","layout":"row-spread","x":1070,"y":1260,"wires":[]},{"id":"7865183a.a7acb8","type":"ui_text","z":"75575285.2d458c","d":true,"group":"c75d4663.3ebf28","order":4,"width":0,"height":0,"name":"","label":"ECO2 base","format":"{{msg.payload}}","layout":"row-spread","x":1030,"y":1460,"wires":[]},{"id":"dd015daa.d77f4","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"ind/opisvjetra","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":270,"y":2840,"wires":[["766cc81d.768198"]]},{"id":"766cc81d.768198","type":"ui_text","z":"75575285.2d458c","group":"3903e53d.b1359a","order":19,"width":9,"height":1,"name":"","label":"<font size=4>Trenutno stanje vjetra : ","format":"<font size=4>{{msg.payload}}","layout":"row-center","x":570,"y":2800,"wires":[]},{"id":"d6fbd1fb.3447c","type":"ui_gauge","z":"75575285.2d458c","name":"Brzina vjetra","group":"3903e53d.b1359a","order":1,"width":9,"height":6,"gtype":"gage","title":"Brzina vjetra","label":"m/s","format":"{{value}}","min":0,"max":"30","colors":["#00b500","#e6e600","#ca3838"],"seg1":"5","seg2":"20","x":570,"y":760,"wires":[]},{"id":"2e1a871a.69e088","type":"ui_text","z":"75575285.2d458c","group":"3903e53d.b1359a","order":2,"width":9,"height":1,"name":"Smjer naslov","label":"","format":"<font size=4>Smjer vjetra","layout":"row-center","x":1530,"y":940,"wires":[]},{"id":"eea63945.cd50c8","type":"mqtt in","z":"75575285.2d458c","name":"","topic":"ind/smjervjetra","qos":"2","datatype":"auto","broker":"63996681.d85cf8","x":1040,"y":800,"wires":[["ba73200b.14342","f0bacf07.68711"]]},{"id":"ba73200b.14342","type":"ui_text","z":"75575285.2d458c","group":"3903e53d.b1359a","order":18,"width":9,"height":1,"name":"","label":"","format":"{{value}}","layout":"col-center","x":1250,"y":740,"wires":[]},{"id":"529619fb.764808","type":"ui_text","z":"75575285.2d458c","group":"d98dbee5.f8319","order":4,"width":9,"height":1,"name":"Izradio","label":"Diplomski rad","format":"","layout":"row-center","x":750,"y":1560,"wires":[]},{"id":"87a57dc9.8a77d","type":"ui_text","z":"75575285.2d458c","group":"d98dbee5.f8319","order":7,"width":0,"height":0,"name":"mentor","label":"Mentor","format":"Izv. prof. dr. sc. Tomislav Keser ","layout":"row-spread","x":900,"y":1560,"wires":[]},{"id":"134429d3.1ec2d6","type":"ui_text","z":"75575285.2d458c","group":"d98dbee5.f8319","order":8,"width":0,"height":0,"name":"Nerežišća","label":"Nerežišća","format":"358m nm","layout":"row-spread","x":600,"y":1560,"wires":[]},{"id":"f0bacf07.68711","type":"ui_chart","z":"75575285.2d458c","name":"Smjer vjetra","group":"599ecf92.e2063","order":0,"width":0,"height":0,"label":"chart","chartType":"horizontalBar","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"outputs":1,"x":1190,"y":680,"wires":[[]]},{"id":"4012c6f.d141738","type":"ui_text","z":"75575285.2d458c","group":"d98dbee5.f8319","order":1,"width":0,"height":0,"name":"Sveučilište","label":"Sveučilište u Osijeku","format":"","layout":"row-center","x":430,"y":1560,"wires":[]},{"id":"861702ac.7b099","type":"ui_text","z":"75575285.2d458c","group":"d98dbee5.f8319","order":2,"width":9,"height":2,"name":"Fakultet","label":"","format":"FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA OSIJEK","layout":"row-spread","x":280,"y":1560,"wires":[]},{"id":"bfd0f14b.02a1f","type":"ui_text","z":"75575285.2d458c","group":"6f6f1d2.480ece4","order":1,"width":9,"height":2,"name":"Podaci","label":"<font size=4>SUSTAV JE TRENUTNO U NADOGRADNJI. Podaci se prikupljaju od 10.09.2020, za prikaz povijesnih podataka idite na \"PRIKAZ PODATAKA IZ PROŠLOSTI\"","format":"","layout":"row-center","x":1620,"y":1180,"wires":[]},{"id":"b97550e1.dbdcc","type":"ui_button","z":"75575285.2d458c","name":"","group":"6f6f1d2.480ece4","order":2,"width":0,"height":0,"passthru":false,"label":"Prikaz podataka iz prošlosti","tooltip":"Odaberite za navigaciju na prikaz podataka iz prošlosti","color":"","bgcolor":"","icon":"fa-history","payload":"1","payloadType":"num","topic":"","x":1320,"y":1260,"wires":[["87db8ca6.69612"]]},{"id":"6c562895.ea4578","type":"ui_button","z":"75575285.2d458c","name":"","group":"55f04ff7.91219","order":2,"width":0,"height":0,"passthru":false,"label":"TRENUTNA MJERENJA","tooltip":"Odaberite za navigaciju na trenutno mjerene podatke","color":"","bgcolor":"","icon":"fa-thermometer-empty","payload":"0","payloadType":"num","topic":"","x":1330,"y":1320,"wires":[["87db8ca6.69612"]]},{"id":"87db8ca6.69612","type":"ui_ui_control","z":"75575285.2d458c","name":"","events":"all","x":1640,"y":1300,"wires":[[]]},{"id":"e1901bbc.dcf2a8","type":"ui_text","z":"75575285.2d458c","group":"55f04ff7.91219","order":1,"width":18,"height":1,"name":"Trenutna mjerenja","label":"<font size=4>Za povratak na prikaz \"u živo\" mjerenih podataka odaberite \"TRENUTNA MJERENJA\"","format":"","layout":"row-center","x":1650,"y":1240,"wires":[]},{"id":"6e247238.47bf6c","type":"ui_text","z":"75575285.2d458c","group":"1cbc3384.24863c","order":5,"width":0,"height":0,"name":"mentor","label":"Mentor","format":"Izv. prof .dr. sc. Tomislav Keser ","layout":"row-spread","x":900,"y":1640,"wires":[]},{"id":"8e43ca1a.4e7cb8","type":"ui_text","z":"75575285.2d458c","group":"1cbc3384.24863c","order":6,"width":0,"height":0,"name":"Nerežišća","label":"Nerežišća","format":"358m nm","layout":"row-spread","x":600,"y":1640,"wires":[]},{"id":"44c2ef4a.058bf","type":"ui_text","z":"75575285.2d458c","group":"1cbc3384.24863c","order":1,"width":0,"height":0,"name":"Sveučilište","label":"Sveučilište u Osijeku","format":"","layout":"row-center","x":430,"y":1640,"wires":[]},{"id":"85a41a9e.c51118","type":"ui_text","z":"75575285.2d458c","group":"1cbc3384.24863c","order":2,"width":18,"height":1,"name":"Fakultet","label":"","format":"FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA OSIJEK","layout":"row-spread","x":280,"y":1640,"wires":[]},{"id":"e35e7010.28b7e","type":"file in","z":"75575285.2d458c","name":"Chart dump","filename":"/home/pi/charts/baza_co2.dump","format":"utf8","x":350,"y":1220,"wires":[["8fccb644.d6cf18"]]},{"id":"24bf0210.96ca2e","type":"inject","z":"75575285.2d458c","name":"Startup","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":true,"onceDelay":"","topic":"","payload":"","payloadType":"date","x":160,"y":1200,"wires":[["e35e7010.28b7e"]]},{"id":"adf990dc.269a8","type":"file","z":"75575285.2d458c","name":"Chart dump","filename":"/home/pi/charts/baza_co2.dump","appendNewline":true,"createDir":false,"overwriteFile":"true","x":1130,"y":1140,"wires":[[]]},{"id":"7f165a0c.8e8834","type":"mqtt out","z":"75575285.2d458c","name":"","topic":"nova/baza_voc","qos":"","retain":"","broker":"63996681.d85cf8","x":620,"y":1400,"wires":[]},{"id":"63c3e9bc.451f08","type":"file in","z":"75575285.2d458c","name":"Chart dump","filename":"/home/pi/charts/baza_voc.dump","format":"utf8","x":390,"y":1420,"wires":[["7f165a0c.8e8834"]]},{"id":"bc377cae.06a7b","type":"inject","z":"75575285.2d458c","name":"Startup","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":true,"onceDelay":"","topic":"","payload":"","payloadType":"date","x":160,"y":1400,"wires":[["63c3e9bc.451f08"]]},{"id":"6c678d82.cdfd74","type":"file","z":"75575285.2d458c","name":"Chart dump","filename":"/home/pi/charts/baza_voc.dump","appendNewline":true,"createDir":false,"overwriteFile":"true","x":1070,"y":1340,"wires":[[]]},{"id":"8fccb644.d6cf18","type":"mqtt out","z":"75575285.2d458c","name":"","topic":"nova/co2_baza","qos":"","retain":"","broker":"63996681.d85cf8","x":600,"y":1220,"wires":[]},{"id":"977e099.6efdcf8","type":"comment","z":"75575285.2d458c","name":"Spremanje VOC u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":980,"y":440,"wires":[]},{"id":"c77df28a.e2e63","type":"comment","z":"75575285.2d458c","name":"Spremanje smjera vjetra u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":1050,"y":880,"wires":[]},{"id":"2eafdbb3.d26834","type":"comment","z":"75575285.2d458c","name":"Spremanje brzine vjetra u bazu, te prikaz mjerenja","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":230,"y":760,"wires":[]},{"id":"2db25675.97a85a","type":"comment","z":"75575285.2d458c","name":"Primanje referentnih vrijednosti za CO2","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":830,"y":1140,"wires":[]},{"id":"cf46930a.0c15d","type":"comment","z":"75575285.2d458c","name":"Prikaz opisa brzine vjetra","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":190,"y":2780,"wires":[]},{"id":"555d7ad6.378a94","type":"comment","z":"75575285.2d458c","name":"Prikaz opisa smjera vjetra","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":970,"y":680,"wires":[]},{"id":"c9ac6f26.d5af5","type":"ui_template","z":"75575285.2d458c","group":"3903e53d.b1359a","name":"Wind","order":4,"width":7,"height":7,"format":"<!--\npass msg.payload.degrees, msg.payload.speed, msg.payload.speed_unit\n-->\n<script>\n // Watch the incoming message and convert the degrees to a human readable compass direction\n (function(scope){\n scope.$watch('msg', function(msg) {\n if(typeof(msg) === \"object\"){\n // Convert the degrees to cardinal directions\n var deg = msg.payload.degrees;\n var dirs = [\"S\",\"SSI\",\"SI\",\"ISI\",\"I\",\"IJI\",\"JI\",\"JJI\",\"J\",\"JJZ\",\"JZ\",\"ZJZ\",\"Z\",\"ZSZ\",\"SZ\",\"SSZ\",\"S\"];\n var idx = Math.round(deg*(dirs.length-1)/360);\n scope.direction = dirs[idx];\n \n \n // Keep track of the highest speed value, giving it 40 as a rough starting point.\n // Works okay for MPH and KTS, but KMH will show purple at a lower speed than the rest\n \n \n //$(\".compass_container\").css(\"background-color\",scope.color);\n }\n \t});\n })(scope);\n \n // Hacks to improve the layout and make it scale\n $(document).ready(function(){\n setTimeout(function () {\n // Remove the auto scrolling from the parent node\n $(\".compass_container\").parent().css(\"overflow\",\"hidden\");\n \n // Adjust the color to match the theme base color by looking up the toolbar header background color;\n $(\".compass_container .triangle\").css(\"border-bottom-color\",$(\"md-toolbar\").css(\"background-color\"));\n \n // Scale the compass into the box that it's being rendered in\n // This CSS hack helps make sure the line & font size scales appropriately\n // Based on the node's grid size\n $(\".compass_container\").each(function(k,v){\n var scaleWidth = $(v).parent().width() / $(v).width();\n var scaleHeight = $(v).parent().height() / $(v).height();\n \n var translateX = ($(v).width() - $(v).parent().width()) / 2;\n var translateY = ($(v).height() - $(v).parent().height()) / 2;\n \n $(v).css(\"transform\",\"translate(-\"+translateX+\"px,-\"+translateY+\"px) scale(\"+scaleWidth+\",\"+scaleHeight+\") \");\n });\n \n $(\".compass_container\").css(\"display\",\"block\"); // Unhide it now that it's resized\n }, 1000);\n });\n</script>\n<style>\n @import url(https://fonts.googleapis.com/css?family=Dosis:200,400,500,600);\n \n .compass_container{\n transition: 1s ease-in-out;\n position: absolute;\n display: none;\n width: 500px;\n height: 500px;\n border-radius: 100%;\n font-family: 'Dosis';\n font-size: 80px;\n box-shadow: inset 0px 0px 0px 30px #777; \n background-color: {{color}};\n }\n \n .compass_container .compass_header{\n font-weight: bold;\n position: absolute;\n text-align: center;\n width: 100%;\n font-size: 75%;\n top: -15px\n }\n .compass_container .text_container{\n height: 100%;\n width: 100%;\n padding: 0px;\n display: block;\n border-radius: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n \n .compass_container .arrow{\n transition: 1s ease-in-out;\n width: 100%;\n height: 100%;\n display: block;\n position: absolute;\n top: 0;\n }\n \n .compass_container .arrow .triangle{\n width: 0;\n\t\theight: 0;\n\t\tborder-left: 45px solid transparent;\n\t\tborder-right: 45px solid transparent;\n\t\tborder-bottom: 90px solid black;\n\t\tposition: absolute;\n\t\ttop: -15px;\n\t\tleft: 50%;\n\t\tmargin-left: -45px;\n\t\tz-index: 99;\n }\n</style>\n\n<div class=\"compass_container\" style=\"\">\n <div class=\"compass_header\">S</div>\n \n <div class=\"nr-dashboard-text text_container\">\n \n <div class=\"direction\" style=\"font-size: 120%\">{{direction}}</div>\n <div style=\"flex-direction: row; font-weight: bold;\">\n <span style=\"font-size: 100%\">{{msg.payload.degrees}}</span>\n <span style=\"font-size: 75%\">{{msg.payload.speed_unit}}</span>\n </div>\n </div>\n <div class=\"arrow\" style=\"transform: rotate({{msg.payload.degrees}}deg);\">\n <div class=\"triangle\"></div>\n </div>\n</div>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","x":1610,"y":840,"wires":[["1dc9a025.ae46c"]]},{"id":"83640327.bf56b","type":"function","z":"75575285.2d458c","name":"","func":"var msg = {\n \"payload\": {\n \"speed\":\"\",\n \"speed_unit\":\"°\",\n \"degrees\":Math.round(msg.payload)\n \n }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1320,"y":840,"wires":[["c9ac6f26.d5af5"]]},{"id":"1dc9a025.ae46c","type":"file","z":"75575285.2d458c","name":"Chart dump","filename":"/home/pi/charts/opissmjeravitra.dump","appendNewline":true,"createDir":false,"overwriteFile":"true","x":1950,"y":800,"wires":[[]]},{"id":"f11fcb85.a8cad8","type":"file in","z":"75575285.2d458c","name":"Chart dump","filename":"/home/pi/charts/opissmjeravitra.dump","format":"utf8","x":1830,"y":980,"wires":[["27f1c015.1800a"]]},{"id":"dcf1e460.730138","type":"inject","z":"75575285.2d458c","name":"Startup","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1","crontab":"","once":true,"onceDelay":"","topic":"","payload":"","payloadType":"date","x":1640,"y":1020,"wires":[["f11fcb85.a8cad8"]]},{"id":"27f1c015.1800a","type":"json","z":"75575285.2d458c","name":"","property":"payload","action":"","pretty":false,"x":2010,"y":900,"wires":[["c9ac6f26.d5af5"]]},{"id":"e34f1e30.bb407","type":"comment","z":"75575285.2d458c","name":"Prikaz smjera vjetra","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":1810,"y":740,"wires":[]},{"id":"1d59244a.e1d21c","type":"comment","z":"75575285.2d458c","name":"Prikaz sveučilišta, imena i prezimena","info":"This function node creates multiple INSERT INTO\ncommands for data points that are stored in \nattributes of the payload.","x":160,"y":1500,"wires":[]},{"id":"4ffd9dca.68f874","type":"comment","z":"75575285.2d458c","name":" Slanje referentnih vrijednosti za CO2","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":180,"y":1140,"wires":[]},{"id":"c549be2d.8bfbb","type":"comment","z":"75575285.2d458c","name":" Slanje referentnih vrijednosti za VOC","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":180,"y":1320,"wires":[]},{"id":"7189f3ad.1a66ac","type":"comment","z":"75575285.2d458c","name":"Primanje referentnih vrijednosti za VOC","info":"This flow section shows how to back up the graph\nstate to a local file and restore that at startup.\nThis loads the last graph state so you don't get\nthe \"No data\" screen after node red restart.","x":770,"y":1320,"wires":[]},{"id":"eccbd5cb.36f558","type":"comment","z":"75575285.2d458c","name":"Naslov","info":"This function node creates multiple INSERT INTO\ncommands for data points that are stored in \nattributes of the payload.","x":1230,"y":1480,"wires":[]},{"id":"bf69ba72.7e3e78","type":"ui_text","z":"75575285.2d458c","group":"d98dbee5.f8319","order":5,"width":9,"height":1,"name":"Izradio","label":"","format":"Adriano Garafulić, mag. ing. rač., struč. spec. ing. el.","layout":"row-spread","x":750,"y":1500,"wires":[]},{"id":"6c61c605.80e448","type":"ui_text","z":"75575285.2d458c","group":"1cbc3384.24863c","order":4,"width":18,"height":1,"name":"Izradio","label":"Diplomski rad","format":"Adriano Garafulić, mag. ing. rač., struč. spec. ing. el.","layout":"row-spread","x":770,"y":1860,"wires":[]},{"id":"6b0a7b52.850244","type":"sqlitedb","z":"","db":"/home/pi/Database/nodered.db"},{"id":"63996681.d85cf8","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.14","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"c75d4663.3ebf28","type":"ui_group","z":"","name":"KOLIČINA CO2 i CO U ZRAKU","tab":"b21e0b35.58bff8","order":4,"disp":true,"width":"9","collapse":false},{"id":"68ab7c72.4f9764","type":"ui_group","z":"","name":"TEMPERATURA, VLAGA I TLAK ZRAKA","tab":"b21e0b35.58bff8","order":1,"disp":true,"width":"9","collapse":false},{"id":"efc63623.420e88","type":"ui_group","z":"","name":"KVALITETA ZRAKA, SUNČEVO ZRAČENJE","tab":"b21e0b35.58bff8","order":3,"disp":true,"width":"9","collapse":false},{"id":"3903e53d.b1359a","type":"ui_group","z":"","name":"BRZINA I SMJER VJETRA","tab":"b21e0b35.58bff8","order":2,"disp":true,"width":"9","collapse":false},{"id":"d98dbee5.f8319","type":"ui_group","z":"","name":"Izradio","tab":"b21e0b35.58bff8","order":5,"disp":false,"width":"9","collapse":false},{"id":"599ecf92.e2063","type":"ui_group","z":"","name":"Brzina vjetra","tab":"6434bae9.62cc94","order":7,"disp":true,"width":"6","collapse":false},{"id":"6f6f1d2.480ece4","type":"ui_group","z":"","name":"POVIJEST MJERENIH PODATAKA","tab":"b21e0b35.58bff8","order":6,"disp":true,"width":"9","collapse":false},{"id":"55f04ff7.91219","type":"ui_group","z":"","name":"PRIKAZ MJERENJA U STVARNOM VREMENU","tab":"5c2e0f90.95c24","order":10,"disp":true,"width":"18","collapse":false},{"id":"1cbc3384.24863c","type":"ui_group","z":"","name":"Izradio","tab":"5c2e0f90.95c24","order":11,"disp":false,"width":"18","collapse":false},{"id":"b21e0b35.58bff8","type":"ui_tab","z":"","name":"Trenutna mjerenja","icon":"fa-thermometer-empty","order":1,"disabled":false,"hidden":false},{"id":"6434bae9.62cc94","type":"ui_tab","z":"","name":"Backup Graf","icon":"dashboard","order":5,"disabled":true,"hidden":true},{"id":"5c2e0f90.95c24","type":"ui_tab","z":"","name":"Prikaz podataka iz prošlosti","icon":"fa-history","order":2,"disabled":false,"hidden":false}]