Wash Alert With Intel Edison

by veronafablab in Circuits > Electronics

1522 Views, 31 Favorites, 0 Comments

Wash Alert With Intel Edison

20160911_213547.jpg
hqdefault.jpg
P1020462.jpg



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

IMG_2016-09-09 08:40:18.jpg
IMG_2016-09-09 08:39:51.jpg
IMG_2016-09-09 08:40:08.jpg
Copy of base_shield_v2.jpg
20160911_213547.jpg
groveCableModified.jpg

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:

  1. the buzzer on port D6
  2. the coil on port D8
  3. the led on port D3
  4. the current sensor on port A1
  5. the water flow sensor on port D4
  6. (optionals) in case you desiderate monitoring a room temperature, the temperature sensor on port A0

  7. a grove cable with a modified connector for connecting the current sensor to a shield

Software

telegram.jpg

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

node-red.jpg
UI menu.jpg
UI comands.jpg
UI wash.jpg
UI room.jpg

Install intel edison flow on Node-Red:

for ease of reading, the flows were divided into three parts:

  1. waterstop&system
  2. acquiring
  3. 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