Wash Alert With Intel Edison
by veronafablab in Circuits > Electronics
1522 Views, 31 Favorites, 0 Comments
Wash Alert With Intel Edison
We are a group of makers who enjoy spending nights and weekends together, tinkering with tecnology and other stuff, here at Verona FabLab (Verona is a city in the North of Italy) .With this instructable we want to describe the project we've developed together for Intel Maker contest: the Wash Alert system.
We wanted to tackle the problem of leaving clothes for a long period in the washing machine, after the washing cycle has ended.
So we had an idea: placing a current sensor on the machine power cable.
When no more current is flowing through the sensor, after an adjustable timeout, the Wash Alert will send you a notification via telegram or e-mail to remind you to remove your clothes from the washing machine in order to dry them out.
This application isn't only for washmachine, but is extensible at all appliances e.g. fridge, oven, or any other type of electrical equipement that you want to monitor.
For a current sensor you can use this https://moderndevice.com/product/current-sensor/ . The particularity of this sensor is not necessary cutting the power cable for measure the current, it's possible measure the current indirectly for a hall effect.
For more technical details please consult the manufacturer's website.
Hardware
Wash alert is built on intel Edison with Arduino breakout Kit.
We used Grove starter kit plus for managing all the I/O such as the current sensor and the water sensor.
With a coil relay you can even command a solenoid valve for a waterstop function. When arrive the message ending wash you have a possibility of send a messag to wasalert for closing the water on inlet of washmachine.
We used a buzzer and a blue led to announce the washing cycle is ended.
The box of Edison it's made with plexiglas laser cutted.
Then we screw the intel edison on the plexi box as shown in the image above.
Next mounting a grove shield and all the grove sensors and actuators of starter kit plus:
- the buzzer on port D6
- the coil on port D8
- the led on port D3
- the current sensor on port A1
- the water flow sensor on port D4
-
(optionals) in case you desiderate monitoring a room temperature, the temperature sensor on port A0
- a grove cable with a modified connector for connecting the current sensor to a shield
Software
We built the wash alert software on Node-Red, ideal for managing hardware such as Intel Edison.
When no more current is flowing through the sensor, after an adjustable timeout, the Wash Alert will send you a notification via telegram or e-mail to remind you to remove your clothes from the washing machine in order to dry them out.
This application can also have an ecological information function.
To increase people's awareness on the use of water and energy, we added the water and energy power consumption of the washing cycle to the notifications.
Wash alert Telegram bot is built with Telegram provided bot BotFather.
Install Software on Intel Edison
Install node red software on intel edison:
download the NODE-red release from https://github.com
unzip the downloaded file
go in the directory
install npm --production
# npm install
next install grunt
# npm install -g grunt-cli
then compile NODE-red
# grunt build
try launch NODE-red
# node-red
if all seems ok, try to open the web page on your pc, on the edison IP address
next install the Node-RED library:
npm install node-red-node-intel-gpio
npm install node-red-node-sqlite
npm install node-red-contrib-telegrambot
npm install node-red-contrib-ui_j
create the service startup for starting up Node-RED at the boot:
reference guide: http://shawnhymel.com/792/run-a-script-on-edison-boot/
edit with nano the file xxx.service (xxx is the name of service)
# nano /lib/systemd/system/myscript.service
insert:
[Unit]
Description=My service
After=xdk-daemon.service
Requires=xdk-daemon.service
[Service]
TimeoutStartSec=1
ExecStart=/usr/bin/node /home/root/myscript.js
Environment="NODE_PATH=/usr/lib/node_modules/"
Environment="NODE_ENV=production"
Environment="AVAHI_COMPAT_NOWARN=1"
Environment="HOME=/home/root"
[Install]
WantedBy=multi-user.target
relaunch the deamon
# systemctl daemon-reload
enable the new service:
# systemctl enable myscript.service
try to reboot Edison. If it is all ok, Node-RED will run itself
Install Flow on Node Red
Install intel edison flow on Node-Red:
for ease of reading, the flows were divided into three parts:
- waterstop&system
- acquiring
- and the Alert
the waterstop&system flow are for a commands.
the acquiring flow is for acquire and scale the value from the input
the Alert flow is the the core of WashAlert
copy the json text of flow from here:
ALERT FLOW:
[{"id":"c118f0a.683ef9","type":"debug","z":"bc448a8a.4aed58","name":"","active":false,"console":"false","complete":"false","x":650,"y":80,"wires":[]},{"id":"53dcf834.3a9f9","type":"function","z":"bc448a8a.4aed58","name":"START WASH","func":"if (msg.payload >= 1.0){\nmsg.payload = true\n} else {\nreturn [ null, msg ];\n//msg.payload = false \n}\nreturn msg;","outputs":"1","noerr":0,"x":276,"y":118,"wires":[["6c34f345.64d09c"]]},{"id":"6c34f345.64d09c","type":"trigger","z":"bc448a8a.4aed58","op1":"msg.payload","op2":"false","op1type":"pay","op2type":"val","duration":"5","extend":true,"units":"s","reset":"","name":"timer filtro","x":448,"y":120,"wires":[["c118f0a.683ef9","8deb152e.3098e","e5062670.3b54c8"]]},{"id":"2bfcce32.316dca","type":"debug","z":"bc448a8a.4aed58","name":"","active":false,"console":"false","complete":"false","x":650,"y":40,"wires":[]},{"id":"66d06828.528f3","type":"function","z":"bc448a8a.4aed58","name":"post","func":"msg.payload = {chatId : 146718903, type : 'message', content : 'la lavatrice ha finito il lavaggio'};\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":220,"wires":[[]]},{"id":"8deb152e.3098e","type":"function","z":"bc448a8a.4aed58","name":"send message","func":"if (msg.payload === false){\nmsg.payload = true\nvar reset = {payload: 'reset'};\n} else {\nreturn [ null, null ];\n}\nreturn [msg, reset];","outputs":"2","noerr":0,"x":320,"y":300,"wires":[["66d06828.528f3","8627845b.641578","969e6db0.ac5e9"],["f9e4e5e9.9a2568"]]},{"id":"3911fdfc.fb3d3a","type":"comment","z":"bc448a8a.4aed58","name":"README","info":"timer filtro serve per evitare falsi avvisi tra una\nattivazione assorbimento e l'altra.\nSuggerisco di impostare 2 minuti o più.\n\nIn START WASH c'è una soglia di lettura corrente\nal disiotto della quale non vine considerato\ncome lavaggio in atto. Per evitare falsi avviamenti.\n\ntoken:\n166891132:AAESWlcB52Vu5qVPbF6TecMTUtlwDJxrLgc","x":252,"y":165,"wires":[]},{"id":"8627845b.641578","type":"trigger","z":"bc448a8a.4aed58","op1":"1","op2":"0","op1type":"val","op2type":"val","duration":"250","extend":false,"units":"ms","reset":"","name":"BUZZER","x":560,"y":300,"wires":[["5188dd82.4f497c"]]},{"id":"5188dd82.4f497c","type":"mraa-gpio-dout","z":"bc448a8a.4aed58","name":"","pin":"6","set":true,"level":"0","x":710,"y":300,"wires":[]},{"id":"c1798dc0.8716a8","type":"function","z":"bc448a8a.4aed58","name":"energy summ","func":"if (msg.payload === 'reset'){\n//resetto a 0 la variabile\n context.set('Energy',0);\n}\nelse{\n//inizializzo variabile a 0\nvar Energy = context.get('Energy')||0;\n//sommo alla variabile il valore di payload\nEnergy += msg.payload;\n//salvo il valore nella variabile\ncontext.set('Energy',Energy);\nvar out = { payload: Energy / 3600}; //divido per 3600 se il campionamento è al secondo\n}\nreturn out;","outputs":1,"noerr":0,"x":520,"y":440,"wires":[["969e6db0.ac5e9","7a5fe97e.3b34c"]]},{"id":"1e4f96c7.760379","type":"inject","z":"bc448a8a.4aed58","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"x":110,"y":520,"wires":[[]]},{"id":"888adf38.4dfcd8","type":"inject","z":"bc448a8a.4aed58","name":"","topic":"","payload":"reset","payloadType":"str","repeat":"","crontab":"","once":false,"x":310,"y":520,"wires":[["c1798dc0.8716a8"]]},{"id":"17301ee5.182a19","type":"comment","z":"bc448a8a.4aed58","name":"README","info":"funzione energy calc e invio messaggio telegram","x":100,"y":360,"wires":[]},{"id":"24aaff8b.d9c5c","type":"function","z":"bc448a8a.4aed58","name":"calcolo potenza","func":"var ampere = msg.payload;\nvar cosphi = 0.90;\nvar power = {payload: (ampere * 220 * cosphi / 1000)};\nreturn power; //potenza espressa in kW","outputs":1,"noerr":0,"x":120,"y":440,"wires":[["5fa93aba.014cc4","500daaf6.c3532c"]]},{"id":"5fa93aba.014cc4","type":"trigger","z":"bc448a8a.4aed58","op1":"1","op2":"0","op1type":"pay","op2type":"nul","duration":"1","extend":false,"units":"s","reset":"","name":"","x":300,"y":440,"wires":[["c1798dc0.8716a8"]]},{"id":"76bbf0b1.152208","type":"function","z":"bc448a8a.4aed58","name":"post","func":"msg.payload = {chatId : 146718903, type : 'message', content : 'lavaggio lavatrice terminato,' + '\\n' + 'per questo lavaggio hai consumato ' + msg.payload + ' kWh'};\nreturn msg;","outputs":1,"noerr":0,"x":936.25,"y":393.75,"wires":[["fe8a5be4.538168"]]},{"id":"969e6db0.ac5e9","type":"function","z":"bc448a8a.4aed58","name":"send energy cnsum.","func":"if (msg.payload === true) {\n msg.payload = context.flow.Energy.toFixed(6);\n return [ msg, null ];\n} else {\n var Energy = context.get('Energy')||0;\n context.flow.Energy = msg.payload;\n// Energy = msg.payload;\n// context.flow.Energy = Energy;\n msg.payload = context.flow.Energy;\n return [ null, msg ];\n}","outputs":"2","noerr":0,"x":740,"y":440,"wires":[["76bbf0b1.152208"],[]]},{"id":"7a5fe97e.3b34c","type":"debug","z":"bc448a8a.4aed58","name":"","active":false,"console":"false","complete":"false","x":715,"y":492,"wires":[]},{"id":"f9e4e5e9.9a2568","type":"delay","z":"bc448a8a.4aed58","name":"reset counter","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":310,"y":400,"wires":[["c1798dc0.8716a8","3816a8f.ec463d8"]]},{"id":"3a9224ea.d82384","type":"ui_gauge","z":"bc448a8a.4aed58","tab":"64705f49.fcc59","name":"Potenza kW","group":"Lavatrice","order":"0","format":"{{value}}","min":0,"max":"3","x":462,"y":635,"wires":[]},{"id":"500daaf6.c3532c","type":"function","z":"bc448a8a.4aed58","name":"FIX","func":"msg.payload = msg.payload.toFixed(1);\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":580,"wires":[["3a9224ea.d82384","d1201ef2.2ffbc"]]},{"id":"e5062670.3b54c8","type":"mraa-gpio-dout","z":"bc448a8a.4aed58","name":"","pin":"3","set":true,"level":"0","x":629.75,"y":123.75,"wires":[]},{"id":"ed1f44a.721d438","type":"link in","z":"bc448a8a.4aed58","name":"Ampere","links":["137109e2.fefc56"],"x":133.25,"y":36.25,"wires":[["53dcf834.3a9f9","24aaff8b.d9c5c","2bfcce32.316dca"]]},{"id":"69f2d8e5.c62f98","type":"ui_chart","z":"bc448a8a.4aed58","tab":"64705f49.fcc59","name":"Potenza kW","group":"Lavatrice","order":"2","interpolate":"basis","nodata":"0","removeOlder":"3","removeOlderUnit":"3600","x":657.75,"y":559.75,"wires":[[],[]]},{"id":"d1201ef2.2ffbc","type":"delay","z":"bc448a8a.4aed58","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"6","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":458.25,"y":559,"wires":[["69f2d8e5.c62f98"]]},{"id":"4b90642d.7f53c4","type":"link in","z":"bc448a8a.4aed58","name":"Water","links":["b0a29bf0.b69b78"],"x":684.75,"y":393.75,"wires":[[]]},{"id":"3816a8f.ec463d8","type":"link out","z":"bc448a8a.4aed58","name":"reset","links":["d08732cf.ebfce"],"x":454.25,"y":400,"wires":[]},{"id":"13d6c552.1b9453","type":"link in","z":"bc448a8a.4aed58","name":"","links":["7f977f62.f41a9"],"x":934.375,"y":347.5,"wires":[["fe8a5be4.538168"]]},{"id":"8c7f910e.6bd13","type":"telegram receiver","z":"bc448a8a.4aed58","name":"","bot":"d5f64d0c.92ebd","x":116.875,"y":687.5,"wires":[["7959fe7.2111d","4f78dfc6.514de8"],["4f78dfc6.514de8"]]},{"id":"fe8a5be4.538168","type":"telegram sender","z":"bc448a8a.4aed58","name":"","bot":"d5f64d0c.92ebd","x":1106.875,"y":343.75,"wires":[[]]},{"id":"4f78dfc6.514de8","type":"link out","z":"bc448a8a.4aed58","name":"Telegram_IN","links":["1d5d0f32.8521c1"],"x":281.875,"y":727.5,"wires":[]},{"id":"7959fe7.2111d","type":"link out","z":"bc448a8a.4aed58","name":"system_comand","links":["36c6e9f0.faf4c6"],"x":283.125,"y":686.25,"wires":[]},{"id":"64705f49.fcc59","type":"ui_tab","z":"bc448a8a.4aed58","name":"Elettrodomestici","icon":"dns","order":"2"},{"id":"d5f64d0c.92ebd","type":"telegram bot","z":"bc448a8a.4aed58","botname":"WashAlert","usernames":"Angelo","chatids":"146718903"}]
WATERSTOP&SYSTEM FLOW:
[{"id":"3e6b0521.9be682","type":"function","z":"80d9bcbc.f61a98","name":"post","func":"msg.payload = {chatId : 146718903, type : 'message', content : 'waterstop ' + msg.payload};\nreturn msg;","outputs":1,"noerr":0,"x":687,"y":241,"wires":[["7f977f62.f41a9"]]},{"id":"da576d03.d081b","type":"function","z":"80d9bcbc.f61a98","name":"content of message","func":"msg.payload = msg.payload.content;\nreturn msg;","outputs":1,"noerr":0,"x":318.75,"y":45,"wires":[["12f6765.642d28a","f88e1ee0.208fc"]]},{"id":"12f6765.642d28a","type":"debug","z":"80d9bcbc.f61a98","name":"","active":false,"console":"false","complete":"false","x":636.5,"y":33.75,"wires":[]},{"id":"30ac8747.829ed","type":"ui_switch","z":"80d9bcbc.f61a98","tab":"dcf7a13f.5aa548","name":"Waterstop","topic":"Uscite","group":"Comands","order":"1","onvalue":"1","offvalue":"0","x":637.75,"y":137.99998474121094,"wires":[["8e005ef8.6f43f","3e6b0521.9be682"]]},{"id":"8e005ef8.6f43f","type":"mraa-gpio-dout","z":"80d9bcbc.f61a98","name":"","pin":"8","set":"","level":"0","x":861.25,"y":136,"wires":[]},{"id":"3944e98c.d76cfe","type":"exec","z":"80d9bcbc.f61a98","command":"ifconfig wlan0 | grep inet | awk -F : '{ print $2 }' | awk '{ print $1 }'","addpay":false,"append":"","useSpawn":false,"timer":"","name":"which is the IP of washalert","x":480,"y":500,"wires":[["a7cdc90a.6d36c"],[],[]]},{"id":"71ffae0d.b39378","type":"debug","z":"80d9bcbc.f61a98","name":"","active":true,"console":"false","complete":"false","x":662.75,"y":383,"wires":[]},{"id":"e1d25cef.0a6448","type":"inject","z":"80d9bcbc.f61a98","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":true,"x":84,"y":502.5,"wires":[["6b2661eb.afd848"]]},{"id":"6b2661eb.afd848","type":"delay","z":"80d9bcbc.f61a98","name":"","pauseType":"delay","timeout":"20","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":241,"y":500,"wires":[["3944e98c.d76cfe"]]},{"id":"bc86d62f.4626a","type":"inject","z":"80d9bcbc.f61a98","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"x":269,"y":451,"wires":[["3944e98c.d76cfe"]]},{"id":"a7cdc90a.6d36c","type":"function","z":"80d9bcbc.f61a98","name":"post","func":"msg.payload = {chatId : 146718903, type : 'message', content : \"l'indirizzo ip del washalert è \" + msg.payload};\nreturn msg;","outputs":1,"noerr":0,"x":708,"y":486,"wires":[["7f977f62.f41a9"]]},{"id":"154b43a4.5374e4","type":"exec","z":"80d9bcbc.f61a98","command":"shutdown now","addpay":false,"append":"","useSpawn":false,"timer":"","name":"shutdown now","x":496.25,"y":320,"wires":[["6fb8d23e.92162c"],[],[]]},{"id":"69214854.d73da8","type":"function","z":"80d9bcbc.f61a98","name":"shutdown","func":"if (msg.payload === 'shutdown') {\n msg.payload = true;\n} else{\nreturn [ null, msg ];\n//msg = null; \n}\nreturn msg;","outputs":1,"noerr":0,"x":418.4999694824219,"y":398.75,"wires":[["71ffae0d.b39378","154b43a4.5374e4"]]},{"id":"6fb8d23e.92162c","type":"debug","z":"80d9bcbc.f61a98","name":"","active":false,"console":"false","complete":"false","x":681.75,"y":308.25,"wires":[]},{"id":"d7a4e998.568188","type":"ui_link","z":"80d9bcbc.f61a98","name":"VRFablab","link":"http://www.veronafablab.it/","icon":"language","order":"0","x":91.25,"y":111.25,"wires":[]},{"id":"da541941.dddbd","type":"inject","z":"80d9bcbc.f61a98","name":"shutdown","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"x":287.2499694824219,"y":321.25,"wires":[["154b43a4.5374e4"]]},{"id":"f88e1ee0.208fc","type":"function","z":"80d9bcbc.f61a98","name":"waterstop on/off","func":"if (msg.payload == 1) {\n msg.payload = true;\n} else if (msg.payload == 0){\n msg.payload = false;\n} else{\nreturn [ null, msg ];\n//msg = null; \n}\nreturn msg;","outputs":1,"noerr":0,"x":460,"y":138.75,"wires":[["30ac8747.829ed"]]},{"id":"7f977f62.f41a9","type":"link out","z":"80d9bcbc.f61a98","name":"Telegram_OUT","links":["13d6c552.1b9453"],"x":936.875,"y":333.75,"wires":[]},{"id":"1d5d0f32.8521c1","type":"link in","z":"80d9bcbc.f61a98","name":"","links":["4f78dfc6.514de8"],"x":170.625,"y":26.25,"wires":[["da576d03.d081b"]]},{"id":"36c6e9f0.faf4c6","type":"link in","z":"80d9bcbc.f61a98","name":"","links":["7959fe7.2111d"],"x":111.875,"y":348.75,"wires":[["900d3258.3ca1a8"]]},{"id":"900d3258.3ca1a8","type":"function","z":"80d9bcbc.f61a98","name":"content of message","func":"msg.payload = msg.payload.content;\nreturn msg;","outputs":1,"noerr":0,"x":232.5,"y":398.75,"wires":[["69214854.d73da8"]]},{"id":"dcf7a13f.5aa548","type":"ui_tab","z":"80d9bcbc.f61a98","name":"WashAlert","icon":"home","order":"0"}]
ACQUIRE VFLOW:
[{"id":"139f00ed.354c07","type":"mraa-gpio-ain","z":"75f5632c.149b7c","name":"current","pin":"1","interval":"250","x":90,"y":300,"wires":[["a824d38.a4deeb","83958bf0.671558"]]},{"id":"8aa34b4c.bae1b","type":"debug","z":"75f5632c.149b7c","name":"","active":false,"console":"false","complete":"false","x":590,"y":300,"wires":[]},{"id":"a824d38.a4deeb","type":"range","z":"75f5632c.149b7c","minin":"0","maxin":"1023","minout":"0","maxout":"5","action":"scale","round":false,"name":"","x":230,"y":300,"wires":[["be3288c7.ce297","f5316aee.c3d96"]]},{"id":"e37149ec.9c9d4","type":"function","z":"75f5632c.149b7c","name":"V to W","func":"if (msg.payload === 0){\n var power = {payload: 0};\n} else {\nvar power = {payload: (msg.payload * 326.348 + 26.461).toFixed(0)}; //conversione da 0-5V a potenza \n}\nreturn power;","outputs":1,"noerr":0,"x":530,"y":380,"wires":[["84cbd1f5.a7dbc8"]]},{"id":"84cbd1f5.a7dbc8","type":"debug","z":"75f5632c.149b7c","name":"","active":false,"console":"false","complete":"false","x":670,"y":380,"wires":[]},{"id":"be3288c7.ce297","type":"function","z":"75f5632c.149b7c","name":"trigger","func":"if (msg.payload >= 0.1){\n} else {\n msg.payload = 0;\n}\nreturn msg;","outputs":"1","noerr":0,"x":370,"y":300,"wires":[["8aa34b4c.bae1b","e37149ec.9c9d4","6ba6cafd.734354"]]},{"id":"83958bf0.671558","type":"debug","z":"75f5632c.149b7c","name":"","active":false,"console":"false","complete":"false","x":490,"y":500,"wires":[]},{"id":"f5316aee.c3d96","type":"debug","z":"75f5632c.149b7c","name":"","active":false,"console":"false","complete":"false","x":490,"y":460,"wires":[]},{"id":"6ba6cafd.734354","type":"function","z":"75f5632c.149b7c","name":"V to A","func":"if (msg.payload === 0){\n var ampere = {payload: 0};\n} else {\nvar ampere = {payload: (msg.payload * 1.28 - 0.05).toFixed(1)}; //1.21 0.12 1.48 conversione da 0-5V a ampere \n}\nreturn ampere;","outputs":1,"noerr":0,"x":530,"y":420,"wires":[["fdd844b7.1eabd","137109e2.fefc56"]]},{"id":"fdd844b7.1eabd","type":"debug","z":"75f5632c.149b7c","name":"","active":false,"console":"false","complete":"false","x":684,"y":420,"wires":[]},{"id":"a853441e.867db8","type":"mraa-gpio-din","z":"75f5632c.149b7c","name":"flow_pulse","pin":"4","interrupt":"f","x":95.49998474121094,"y":733.5,"wires":[["83f548fa.6d6a18","8d5eea71.4a714"]]},{"id":"1692d77b.75f9b9","type":"debug","z":"75f5632c.149b7c","name":"","active":true,"console":"false","complete":"payload","x":729.5000305175781,"y":737.5000610351562,"wires":[]},{"id":"83f548fa.6d6a18","type":"debug","z":"75f5632c.149b7c","name":"","active":false,"console":"false","complete":"false","x":253.50006103515625,"y":819.0000610351562,"wires":[]},{"id":"7240cd31.66060c","type":"inject","z":"75f5632c.149b7c","name":"","topic":"","payload":"reset","payloadType":"str","repeat":"","crontab":"","once":false,"x":117.5,"y":644,"wires":[["92e92384.22d13"]]},{"id":"92e92384.22d13","type":"function","z":"75f5632c.149b7c","name":"Flow counter","func":"if (msg.payload == \"reset\"){\n count = 0;\n context.set('count', count);\n var out = { payload: count };\n// msg.count = count;\n} else {\n var count = context.get('count')||0;\n count += 1;\n context.set('count',count);\n var out = { payload: count };\n// msg.count = count;\n}\nreturn out;","outputs":1,"noerr":0,"x":526.7500305175781,"y":715.7500610351562,"wires":[["1692d77b.75f9b9","b0a29bf0.b69b78"]]},{"id":"137109e2.fefc56","type":"link out","z":"75f5632c.149b7c","name":"Ampere","links":["ed1f44a.721d438"],"x":658.25,"y":473,"wires":[]},{"id":"b0a29bf0.b69b78","type":"link out","z":"75f5632c.149b7c","name":"total_flow","links":["4b90642d.7f53c4"],"x":685.2500305175781,"y":669.2500610351562,"wires":[]},{"id":"d08732cf.ebfce","type":"link in","z":"75f5632c.149b7c","name":"reset","links":["3816a8f.ec463d8"],"x":152.25,"y":609.25,"wires":[["92e92384.22d13"]]},{"id":"8d5eea71.4a714","type":"delay","z":"75f5632c.149b7c","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"2","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":263.125,"y":733.75,"wires":[["92e92384.22d13"]]}]
open the Node-RED page on Edison and select import from clipboard on menu
on popup window paste
repeate the last two steps for every flow.
et voilà! Your WASH ALERT will run perfectly
on address http://xxx.xxx.xxx.xxx:1880/ui find a human interface of the WashAlert .
the xxx.xxx.xxx.xxx is the IP of your Edison