[{"id":"6eea7aa8.ee1584","type":"tab","label":"NETIO AN49a","disabled":false,"info":""},{"id":"d4c350fc.618ab","type":"inject","z":"6eea7aa8.ee1584","name":"","topic":"","payload":"","payloadType":"date","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":40,"wires":[["5c53f099.e98c5"]]},{"id":"5c53f099.e98c5","type":"http request","z":"6eea7aa8.ee1584","name":"","method":"GET","ret":"txt","url":"http://192.168.1.91/netio.json","tls":"","x":290,"y":40,"wires":[["bc4ab987.254fa8"]]},{"id":"4e68438e.a2e71c","type":"catch","z":"6eea7aa8.ee1584","name":"","scope":["5c53f099.e98c5"],"x":390,"y":100,"wires":[["4202357c.d0d4fc"]]},{"id":"b2636340.ff4f5","type":"function","z":"6eea7aa8.ee1584","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 failed_segment_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// return message and save values in case coffee was counted\nif(coffees > flow.get(\"coffees\"))\n{\n // get time of coffee\n var date = new Date(); \n var hour = date.getHours(); \n hour = (hour < 10 ? \"0\" : \"\") + hour;\n var min = date.getMinutes(); \n min = (min < 10 ? \"0\" : \"\") + min; \n var sec = date.getSeconds(); \n sec = (sec < 10 ? \"0\" : \"\") + sec; \n last_coffee_time = hour + \":\" + min + \":\" + sec; \n \n flow.set(\"segment_array\", segment_array);\n flow.set(\"coffees\", coffees);\n flow.set(\"last_coffee_time\", last_coffee_time);\n flow.set(\"failed_segment_sequence\", failed_segment_sequence);\n flow.set(\"failed_segment_counter\", failed_segment_counter);\n \n // set message as msg.payload \n var message = \"Total number of coffees: \" + coffees + \"\\nLast coffee: \" + last_coffee_time;\n msg.payload = message\n return msg;\n}\n\n// save values in case coffee was not counted\nflow.set(\"segment_array\", segment_array);\nflow.set(\"failed_segment_sequence\", failed_segment_sequence);\nflow.set(\"failed_segment_counter\", failed_segment_counter);","outputs":1,"noerr":0,"x":560,"y":40,"wires":[["5e755d5c.ca7124"]]},{"id":"4202357c.d0d4fc","type":"function","z":"6eea7aa8.ee1584","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 failed_segment_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// return message and save values in case coffee was counted\nif(coffees > flow.get(\"coffees\"))\n{\n // get time of coffee\n var date = new Date(); \n var hour = date.getHours(); \n hour = (hour < 10 ? \"0\" : \"\") + hour;\n var min = date.getMinutes(); \n min = (min < 10 ? \"0\" : \"\") + min; \n var sec = date.getSeconds(); \n sec = (sec < 10 ? \"0\" : \"\") + sec; \n last_coffee_time = hour + \":\" + min + \":\" + sec; \n \n flow.set(\"segment_array\", segment_array);\n flow.set(\"coffees\", coffees);\n flow.set(\"last_coffee_time\", last_coffee_time);\n flow.set(\"failed_segment_sequence\", failed_segment_sequence);\n flow.set(\"failed_segment_counter\", failed_segment_counter);\n \n // set message as msg.payload \n var message = \"Total number of coffees: \" + coffees + \"\\nLast coffee: \" + last_coffee_time;\n msg.payload = message\n return msg;\n}\n\n// save values in case coffee was not counted\nflow.set(\"segment_array\", segment_array);\nflow.set(\"failed_segment_sequence\", failed_segment_sequence);\nflow.set(\"failed_segment_counter\", failed_segment_counter);","outputs":1,"noerr":0,"x":540,"y":100,"wires":[["214f167b.4f91ca"]]},{"id":"5e755d5c.ca7124","type":"debug","z":"6eea7aa8.ee1584","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":710,"y":40,"wires":[]},{"id":"214f167b.4f91ca","type":"debug","z":"6eea7aa8.ee1584","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":710,"y":100,"wires":[]},{"id":"bc4ab987.254fa8","type":"json","z":"6eea7aa8.ee1584","name":"","property":"payload","action":"","pretty":false,"x":430,"y":40,"wires":[["b2636340.ff4f5"]]}]