PM2M-2016-CultureHydroponique/Suivi

Titre ICI

Etudiants M2PGI PM2M: Etudiants

Dépôt Git : github

Documents : [[Media:PM2M-2016-CultureHydroponique.pdf|Rapport]] - [[Media:PM2M-2016-CultureHydroponique-slides.pdf|Transparents]] - [[Media:PM2M-2016-CultureHydroponique-flyer.pdf|Flyer]] - Video

=Contexte=

=Objectif du projet=

=Matériel utilisé=
 * AgriSensor


 * Pompe peristalique
 * Barre de LED
 * Enceinte


 * 2 X Raspberry pi 2
 * Dongle Wifi

=Technologies utilisées=
 * Mosquitto
 * Node-RED
 * Grafana
 * InfluxDB
 * Liaison série

=Plan de développement=

Dans un premier temps, nous avons récupéré et traité les informations qui venaient de Agri-Sensor.

Nous avons dans un second temps construit notre boîte de culture en intérieur.

Enfin, nous avons créé notre propre structure utilisant un Arduino, AgriActor.

Mise en place de l'infrastructure
=Expérimentations et Résultats=

Hardware
Nous avons réussi à brancher sur Agri-Actor;


 * un moteur
 * Une barre de LEDs
 * Une enceinte
 * un Capteur Ultrason

Communication
Un deuxième enjeu consiste à assurer la bonne communication entre nos deux Arduinos via node-red.

Notre objectif est ici de limiter un maximum l'intelligence de nos Arduinos et de transférer tous les calculs et la prise de décisions dans le Cloud.

Agri-Actor est programmé pour lire le port série et réagir à certains codes :


 * 9 mise en route de la pompe
 * 8 augmentation de la luminosité
 * 7 diminution de la luminosité
 * 6 lancement de l'alarme

Cloud
Enfin et surtout, notre troisième défi consiste à pouvoir monitorer notre installation à distance grace à Node-red, Influx-DB et Grafana.

Le flow NodeRED est le suivant: [{"id":"a92c3d8b.49a0b","type":"mqtt-broker","z":"4ce7896f.096518","broker":"broker.mqttdashboard.com","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"15","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"9f7bc2ff.60844","type":"influxdb","z":"4ce7896f.096518","hostname":"192.168.1.25","port":"8086","database":"m2m","name":""},{"id":"d7817e2c.06a56","type":"function","z":"4ce7896f.096518","name":"Infos extraction","func":"if (!msg.payload.split) {\n   msg.payload = 'error';\n    return msg;\n}\nconst info = msg.payload.split(' ');\n\nconst key = info[0].split('/');\nconst env = key[1];\nconst car = key[2];\n\nconst value = info[1];\n\nif (env && car && value) {\n    msg.payload = [env, car, value];\n} else {\n    msg.payload = 'error';\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":394.42857360839844,"y":576.1428470611572,"wires":"57303db9.388d84"},{"id":"db5c6122.1b2a5","type":"debug","z":"4ce7896f.096518","name":"Air hum","active":false,"console":"false","complete":"payload","x":933.023811340332,"y":262.99999713897705,"wires":[]},{"id":"57303db9.388d84","type":"function","z":"4ce7896f.096518","name":"Analysis","func":"const infos = msg.payload;\n\nif (infos[0] === 'air') {\n    if (infos[1] === 'humidity') {\n        return [msg, null, null, null, null, null];\n    } else if (infos[1] === 'temperature') {\n        return [null, msg, null, null, null, null];\n    } else if (infos[1] === 'dewpoint') {\n        return [null, null, msg, null, null, null];\n    }\n} else if (infos[0] === 'soil') {\n    return [null, null, null, msg, null, null];\n} else if (infos[0] === 'light') {\n    return [null, null, null, null, msg, null];\n} else if (infos[0] === 'water') {\n    return [null, null, null, null, null, msg]\n}\n","outputs":"6","noerr":0,"x":566.8571548461914,"y":575.1428298950195,"wires":"49608446.b69f7c"],["96cde7bb.693218"],["6ea94021.9156c"],["496af499.b6950c"],["4c7b637a.b3849c"],["576ea78d.788958"},{"id":"49608446.b69f7c","type":"function","z":"4ce7896f.096518","name":"Air humidity","func":"if (msg.payload) {\n    msg.payload = +msg.payload[2];\n}\nreturn msg;","outputs":1,"noerr":0,"x":772.8809928894043,"y":305.4285640716553,"wires":"db5c6122.1b2a5","ffc74287.0038c"},{"id":"6ea94021.9156c","type":"function","z":"4ce7896f.096518","name":"Air dewpoint","func":"if (msg.payload) {\n    msg.payload = +msg.payload[2];\n}\nreturn msg;","outputs":1,"noerr":0,"x":767.7619934082031,"y":487.33334732055664,"wires":"3abc96ef.c5436a","448670da.bb799"},{"id":"96cde7bb.693218","type":"function","z":"4ce7896f.096518","name":"Air temp","func":"if (msg.payload) {\n    msg.payload = +msg.payload[2];\n}\nreturn msg;","outputs":1,"noerr":0,"x":756.571605682373,"y":403.1666431427002,"wires":"3bbed7f9.c44128","ab5d6595.54a298"},{"id":"3bbed7f9.c44128","type":"debug","z":"4ce7896f.096518","name":"Air temp","active":false,"console":"false","complete":"payload","x":927.0000305175781,"y":347.21428871154785,"wires":[]},{"id":"3abc96ef.c5436a","type":"debug","z":"4ce7896f.096518","name":"Air dewpoint","active":false,"console":"false","complete":"payload","x":927.5713958740234,"y":442.714298248291,"wires":[]},{"id":"9a9154bb.656ea8","type":"inject","z":"4ce7896f.096518","name":"air hum ++","topic":"agri-m2m","payload":"/air/humidity 30.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":225.14286041259766,"y":267.0714235305786,"wires":"d7817e2c.06a56"},{"id":"496af499.b6950c","type":"function","z":"4ce7896f.096518","name":"Soil humidity","func":"if (msg.payload) {\n    msg.payload = +msg.payload[2];\n}\nreturn msg;","outputs":1,"noerr":0,"x":747.6428909301758,"y":592.214316368103,"wires":"fa882bb.f0577d8","b8bb6004.4744a","c83afbef.e4e548"},{"id":"4c7b637a.b3849c","type":"function","z":"4ce7896f.096518","name":"Light intensity","func":"if (msg.payload) {\n    msg.payload = +msg.payload[2];\n}\nreturn msg;","outputs":1,"noerr":0,"x":746.928596496582,"y":729.0000133514404,"wires":"ce330573.31ccf8","fe01f341.01fe1","9e52635a.ad2e7"},{"id":"1bda8246.e4257e","type":"inject","z":"4ce7896f.096518","name":"air hum --","topic":"agri-m2m","payload":"/air/humidity 15.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":222.2857208251953,"y":325.6428556442261,"wires":"d7817e2c.06a56"},{"id":"fa882bb.f0577d8","type":"debug","z":"4ce7896f.096518","name":"Soil hum","active":true,"console":"false","complete":"payload","x":923.9285469055176,"y":538.2143087387085,"wires":[]},{"id":"ce330573.31ccf8","type":"debug","z":"4ce7896f.096518","name":"Light intensity","active":false,"console":"false","complete":"payload","x":936.9286079406738,"y":679.0000419616699,"wires":[]},{"id":"1038c218.efc73e","type":"inject","z":"4ce7896f.096518","name":"air temp --","topic":"agri-m2m","payload":"/air/temperature 15.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":223.71429824829102,"y":429.78571033477783,"wires":"d7817e2c.06a56"},{"id":"a0ca97a6.5f3568","type":"inject","z":"4ce7896f.096518","name":"air temp ++","topic":"agri-m2m","payload":"/air/temperature 30.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":228.00000381469727,"y":379.2142686843872,"wires":"d7817e2c.06a56"},{"id":"ba79864f.458678","type":"inject","z":"4ce7896f.096518","name":"air dew --","topic":"agri-m2m","payload":"/air/dewpoint 5.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":225.14286041259766,"y":542.5714416503906,"wires":"d7817e2c.06a56"},{"id":"b96cb3ec.46935","type":"inject","z":"4ce7896f.096518","name":"air dew ++","topic":"agri-m2m","payload":"/air/dewpoint 7.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":228,"y":484.00000953674316,"wires":"d7817e2c.06a56"},{"id":"c7b55160.384ab","type":"inject","z":"4ce7896f.096518","name":"soil hum --","topic":"agri-m2m","payload":"/soil/humidity 15.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":223.71428680419922,"y":761.1428833007812,"wires":"d7817e2c.06a56"},{"id":"e660286d.199fd8","type":"inject","z":"4ce7896f.096518","name":"soil hum ++","topic":"agri-m2m","payload":"/soil/humidity 30.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":226.57142639160156,"y":702.5714511871338,"wires":"d7817e2c.06a56"},{"id":"82ca8e4.f7d357","type":"inject","z":"4ce7896f.096518","name":"light intensity --","topic":"agri-m2m","payload":"/light/intensity 15.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":227.6428680419922,"y":878.642897605896,"wires":"d7817e2c.06a56"},{"id":"b8adc399.47524","type":"inject","z":"4ce7896f.096518","name":"light intensity ++","topic":"agri-m2m","payload":"/light/intensity 30.00","payloadType":"string","repeat":"","crontab":"","once":false,"x":230.50000762939453,"y":820.0714654922485,"wires":"d7817e2c.06a56"},{"id":"ab5d6595.54a298","type":"influxdb out","z":"4ce7896f.096518","influxdb":"9f7bc2ff.60844","name":"air temp","measurement":"airtemp","x":930.7142906188965,"y":401.7856779098511,"wires":[]},{"id":"ffc74287.0038c","type":"influxdb out","z":"4ce7896f.096518","influxdb":"9f7bc2ff.60844","name":"air hum","measurement":"airhum","x":933.4523811340332,"y":307.1428632736206,"wires":[]},{"id":"448670da.bb799","type":"influxdb out","z":"4ce7896f.096518","influxdb":"9f7bc2ff.60844","name":"air dewpoint","measurement":"airdew","x":929.2857131958008,"y":497.8571443557739,"wires":[]},{"id":"b8bb6004.4744a","type":"influxdb out","z":"4ce7896f.096518","influxdb":"9f7bc2ff.60844","name":"soil humidity","measurement":"soilhum","x":932.5000381469727,"y":589.6428880691528,"wires":[]},{"id":"fe01f341.01fe1","type":"influxdb out","z":"4ce7896f.096518","influxdb":"9f7bc2ff.60844","name":"light intensity","measurement":"lightint","x":936.0714721679688,"y":727.8572540283203,"wires":[]},{"id":"852a3ca7.2c50a","type":"mqtt in","z":"4ce7896f.096518","name":"agri-m2m","topic":"agri-m2m","broker":"a92c3d8b.49a0b","x":83.3333511352539,"y":591.6667098999023,"wires":"71bc0f03.6de2c"},{"id":"c83afbef.e4e548","type":"function","z":"4ce7896f.096518","name":"water?","func":"if (msg.payload < 40) {\n    msg.payload = 9;\n} else {\n    msg.payload = 0;\n}\nreturn msg;","outputs":1,"noerr":0,"x":914.1666450500488,"y":639.1667041778564,"wires":"204b13e5.8093cc","e21956c4.bc03d8"},{"id":"e21956c4.bc03d8","type":"mqtt out","z":"4ce7896f.096518","name":"water","topic":"agri-m2m-retour","qos":"","retain":"","broker":"a92c3d8b.49a0b","x":1102.50004196167,"y":639.1666221618652,"wires":[]},{"id":"204b13e5.8093cc","type":"debug","z":"4ce7896f.096518","name":"water signal","active":false,"console":"false","complete":"payload","x":1122.4999237060547,"y":585.8333673477173,"wires":[]},{"id":"71bc0f03.6de2c","type":"debug","z":"4ce7896f.096518","name":"mqtt brut","active":false,"console":"false","complete":"payload","x":198.33332061767578,"y":643.3332777023315,"wires":[]},{"id":"576ea78d.788958","type":"function","z":"4ce7896f.096518","name":"Water distance","func":"if (msg.payload) {\n    msg.payload = +msg.payload[2];\n}\nreturn msg;","outputs":1,"noerr":0,"x":753.3333282470703,"y":882.5000133514404,"wires":"c65fe6b2.b289f8","e0a03178.ebd07"},{"id":"c65fe6b2.b289f8","type":"debug","z":"4ce7896f.096518","name":"Water distance","active":false,"console":"false","complete":"payload","x":933.3333435058594,"y":822.4999294281006,"wires":[]},{"id":"3915c94a.5430d6","type":"mqtt out","z":"4ce7896f.096518","name":"light","topic":"agri-m2m-retour","qos":"","retain":"","broker":"a92c3d8b.49a0b","x":1094.1665534973145,"y":781.6666564941406,"wires":[]},{"id":"9e52635a.ad2e7","type":"function","z":"4ce7896f.096518","name":"light?","func":"if (msg.payload < 3) {\n    msg.payload = 8;\n} else if (msg.payload > 3) {\n    msg.payload = 7;\n} else {\n    msg.payload = 0;\n}\nreturn msg;","outputs":1,"noerr":0,"x":942.4999465942383,"y":781.666654586792,"wires":"6d26762c.8447b8","3915c94a.5430d6"},{"id":"6d26762c.8447b8","type":"debug","z":"4ce7896f.096518","name":"light signal","active":false,"console":"false","complete":"payload","x":1114.166633605957,"y":716.6666622161865,"wires":[]},{"id":"e0a03178.ebd07","type":"function","z":"4ce7896f.096518","name":"noMoreWater?","func":"if (msg.payload > 0.30 && context.done != 1) {\n    msg.payload = 6;\n    context.done = 1;\n} else if (msg.payload > -1) {\n    msg.payload = 0;\n} else {\n    context.done = 0;\n}\nreturn msg;","outputs":1,"noerr":0,"x":941.6667022705078,"y":884.9999527931213,"wires":"9a0566fe.aa8a28"},{"id":"9a0566fe.aa8a28","type":"mqtt out","z":"4ce7896f.096518","name":"sound","topic":"agri-m2m-retour","qos":"","retain":"","broker":"a92c3d8b.49a0b","x":1105.0000610351562,"y":884.9999918937683,"wires":[]},{"id":"429eebc2.b7e414","type":"inject","z":"4ce7896f.096518","name":"Reset alarm","topic":"","payload":"{payload: 0.40}","payloadType":"none","repeat":"","crontab":"","once":false,"x":582,"y":945,"wires":"83329e9e.dd521"},{"id":"83329e9e.dd521","type":"function","z":"4ce7896f.096518","name":"Reset","func":"msg.payload = -1;\nreturn msg;","outputs":1,"noerr":0,"x":731,"y":945,"wires":"e0a03178.ebd07"}]

=Photos et Vidéo= Test du son ! https://www.youtube.com/watch?v=cqTI-i-xu70