[{"id":"b3c6006c.b201f","type":"tab","label":"NETIO AN49e","disabled":false,"info":""},{"id":"62016630.b4e4e8","type":"inject","z":"b3c6006c.b201f","name":"","topic":"","payload":"","payloadType":"date","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":40,"wires":[["6612db70.4598b4"]]},{"id":"6612db70.4598b4","type":"http request","z":"b3c6006c.b201f","name":"","method":"GET","ret":"txt","url":"http://192.168.1.91/netio.json","tls":"","x":310,"y":40,"wires":[["cbd9d848.880268"]]},{"id":"9a9b913d.75c15","type":"catch","z":"b3c6006c.b201f","name":"","scope":["6612db70.4598b4"],"x":410,"y":100,"wires":[["ae9b7c1e.2e7db"]]},{"id":"3aee318d.931d3e","type":"function","z":"b3c6006c.b201f","name":"main logic","func":"//set parameters\nvar total_duration = 82;\nvar min_difference = 45;\nvar max_difference = 55;\nvar post_trigger_waiting = 5;\n//------------------------------------------------------------------------------- \n\n// load flow variables\nvar energy = msg.payload.Outputs[0].Energy; \nflow.set(\"last_energy_value\", energy); \nvar segment_array = flow.get(\"segment_array\") || []; \nvar coffees = flow.get(\"coffees\") || 0; \nvar last_coffee_time = flow.get(\"last_coffee_time\") || \"00:00\";\nvar failed_segment_counter = flow.get(\"failed_segment_counter\") || 0;\nvar failed_segment_sequence = flow.get(\"failed_segment_sequence\") || true;\n\n// \nif(segment_array.length < total_duration) // fill segment_array with same amount of items as total_duration parameter\n{ \n segment_array.push(energy);\n} \nelse \n{ \n current_segment_difference = segment_array[total_duration - 1] - segment_array[0];\n \n // check if current segment is within parameters\n if(current_segment_difference >= min_difference && current_segment_difference <= max_difference) \n { \n if(failed_segment_counter >= post_trigger_waiting) \n { \n timeout_sequence = false; \n failed_segment_counter = 0; \n coffees += 1; \n } \n \n } \n else \n { \n if(failed_segment_sequence === true) \n { \n failed_segment_counter += 1; \n } \n } \n \n segment_array.shift(); // remove first item from array\n segment_array.push(energy); // add last energy value into array\n}\n\n// save parameters as flow variables\nflow.set(\"total_duration\", total_duration);\nflow.set(\"min_difference\", min_difference);\nflow.set(\"max_difference\", max_difference);\nflow.set(\"post_trigger_waiting\", post_trigger_waiting);\n\n// get time of coffee\nvar date = new Date(); \nvar hour = date.getHours(); \nhour = (hour < 10 ? \"0\" : \"\") + hour;\nvar min = date.getMinutes(); \nmin = (min < 10 ? \"0\" : \"\") + min; \nvar sec = date.getSeconds(); \nsec = (sec < 10 ? \"0\" : \"\") + sec; \nlast_coffee_time = hour + \":\" + min + \":\" + sec; \n \nflow.set(\"segment_array\", segment_array);\nflow.set(\"coffees\", coffees);\nflow.set(\"last_coffee_time\", last_coffee_time);\nflow.set(\"failed_segment_sequence\", failed_segment_sequence);\nflow.set(\"failed_segment_counter\", failed_segment_counter);\n \n// set message as msg.payload \nvar message = \"Total number of coffees: \" + coffees + \"\\nLast coffee: \" + last_coffee_time;\nmsg.payload = message\nreturn msg;","outputs":1,"noerr":0,"x":580,"y":40,"wires":[["176812b.0596ced"]]},{"id":"ae9b7c1e.2e7db","type":"function","z":"b3c6006c.b201f","name":"request timeout","func":"//set parameters\nvar total_duration = flow.get(\"total_duration\")\nvar min_difference = flow.get(\"min_difference\")\nvar max_difference = flow.get(\"max_difference\")\nvar post_trigger_waiting = flow.get(\"post_trigger_waiting\")\n//------------------------------------------------------------------------------- \n\n// load flow variables\nvar energy = flow.get(\"last_energy_value\") // load last saved energy value\nflow.set(\"last_energy_value\", energy); \nvar segment_array = flow.get(\"segment_array\") || []; \nvar coffees = flow.get(\"coffees\") || 0; \nvar last_coffee_time = flow.get(\"last_coffee_time\") || \"00:00\";\nvar failed_segment_counter = flow.get(\"failed_segment_counter\") || 0;\nvar failed_segment_sequence = flow.get(\"failed_segment_sequence\") || true;\n\n// \nif(segment_array.length < total_duration) // fill segment_array with same amount of items as total_duration parameter\n{ \n segment_array.push(energy);\n} \nelse \n{ \n current_segment_difference = segment_array[total_duration - 1] - segment_array[0];\n \n // check if current segment is within parameters\n if(current_segment_difference >= min_difference && current_segment_difference <= max_difference) \n { \n if(failed_segment_counter >= post_trigger_waiting) \n { \n timeout_sequence = false; \n failed_segment_counter = 0; \n coffees += 1; \n } \n \n } \n else \n { \n if(failed_segment_sequence === true) \n { \n failed_segment_counter += 1; \n } \n } \n \n segment_array.shift(); // remove first item from array\n segment_array.push(energy); // add last energy value into array\n}\n\n// get time of coffee\nvar date = new Date(); \nvar hour = date.getHours(); \nhour = (hour < 10 ? \"0\" : \"\") + hour;\nvar min = date.getMinutes(); \nmin = (min < 10 ? \"0\" : \"\") + min; \nvar sec = date.getSeconds(); \nsec = (sec < 10 ? \"0\" : \"\") + sec; \nlast_coffee_time = hour + \":\" + min + \":\" + sec; \n \nflow.set(\"segment_array\", segment_array);\nflow.set(\"coffees\", coffees);\nflow.set(\"last_coffee_time\", last_coffee_time);\nflow.set(\"failed_segment_sequence\", failed_segment_sequence);\nflow.set(\"failed_segment_counter\", failed_segment_counter);\n \n// set message as msg.payload \nvar message = \"Total number of coffees: \" + coffees + \"\\nLast coffee: \" + last_coffee_time;\nmsg.payload = message\nreturn msg;","outputs":1,"noerr":0,"x":560,"y":100,"wires":[["ee86c082.e84dc"]]},{"id":"176812b.0596ced","type":"debug","z":"b3c6006c.b201f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":730,"y":40,"wires":[]},{"id":"ee86c082.e84dc","type":"debug","z":"b3c6006c.b201f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":730,"y":100,"wires":[]},{"id":"cbd9d848.880268","type":"json","z":"b3c6006c.b201f","name":"","property":"payload","action":"","pretty":false,"x":450,"y":40,"wires":[["3aee318d.931d3e"]]}]