{"id":9477,"date":"2022-07-08T13:07:30","date_gmt":"2022-07-08T11:07:30","guid":{"rendered":"https:\/\/fablab21.fr\/?page_id=1706"},"modified":"2026-10-19T19:00:52","modified_gmt":"2026-10-19T17:00:52","slug":"irrigation-automatique-dun-jardin-connecte","status":"publish","type":"page","link":"https:\/\/www.association-ore.fr\/fr\/tutos\/irrigation-automatique-dun-jardin-connecte\/","title":{"rendered":"Syst\u00e8me d&rsquo;irrigation automatique"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Principe du projet<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Le Projet consiste \u00e0 l&#039;arrosage automatique d&#039;un jardin connect\u00e9, c&#039;est une nouvelle mani\u00e8re de piloter et g\u00e9rer un syst\u00e8me d&#039;arrosage d&#039;une mani\u00e8re intelligente en permettant l&#039;\u00e9conomie d&#039;eau.Il peut \u00eatre g\u00e9r\u00e9 via un smartphone, une tablette ou un ordinateur. Vous pouvez contr\u00f4ler l&#039;arrosage m\u00eame lorsque vous n&#039;\u00eates pas chez vous. En \u00e9tant connect\u00e9, vous avez acc\u00e8s \u00e0 une interface web\/App ,permettant de contr\u00f4ler votre Syst\u00e8me d&#039;arrosage programm\u00e9 ; horaire et dur\u00e9e, la m\u00e9t\u00e9o (temp\u00e9rature\/humidit\u00e9 de l&#039;air, taux d&#039;humidit\u00e9 du sol).Vous pouvez aussi lancer les arrosages manuellement et consulter l&#039;historique de vos arrosages. Un Arrosage sur Mesure, avec des quantit\u00e9s exactes, trop facile a utiliser au quotidien<\/h4>\n\n\n\n<h2 class=\"wp-block-heading\">Mat\u00e9riel utilis\u00e9<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/esp.jpg\" alt=\"\"\/><\/figure>\n\n\n<h3><strong>ESP 8266<\/strong><\/h3><div><h5>Ce microcontr\u00f4leur qui dispose d&rsquo;une connexion WiFi permettant de cr\u00e9er de tr\u00e8s nombreux projets IoT et domotiques \u00e0 faible co\u00fbt.<\/h5><\/div><div><i>\u00a0<\/i><\/div><div><i>\u00a0<\/i><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/sensor-moisture.jpg\" alt=\"\"\/><\/figure>\n\n\n<h3>Capteur analogique d\u2019humidit\u00e9 du sol<\/h3><div><h5>C&rsquo;est un capteur qui utilise la variation de capacit\u00e9 pour d\u00e9terminer l&rsquo;humidit\u00e9 du sol.<\/h5><\/div><div><i>\u00a0<\/i><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/relai-5-v.jpg\" alt=\"\"\/><\/figure>\n\n\n<h3>Un Relais<\/h3><div><h5>Un relais est un interrupteur \u00e0 commande \u00e9lectrique. Il utilise un \u00e9lectroaimant (bobine) pour faire fonctionner son m\u00e9canisme de commutation interne (contacts).<\/h5><\/div><div>\u00a0<\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/pompe.jpg\" alt=\"\"\/><\/figure>\n\n\n<h5>Pompe immerg\u00e9e 6V<\/h5>\n\n\n<h2 class=\"wp-block-heading\">Sch\u00e9ma<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/dessin.png\" alt=\"\"\/><\/figure>\n\n\n<h2>\u00a0<\/h2><h2>\u00a0<\/h2><h2>Partie 1: Pilotage depuis une page web<\/h2><div><h5>\u00a0 \u00a0 \u00a0 \u00a0<\/h5><h5>\u00a0<\/h5><h5>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Dans cette partie ,les param\u00e8tres du sol et de l&rsquo;air sont affich\u00e9es sur une page web qui contiendra 2 boutons (mise en route ou l&rsquo;arr\u00eat de la pompe).<\/h5><h5>L&rsquo;ESP 8266 servira de point d&rsquo;acc\u00e9s WiFi et de serveur Web.Dans le programme, vous devez modifier le nom de votre r\u00e9seau WiFi (mon_ssid), ainsi que le mot de passe (mon_mot_de_passe).\u00a0<br \/>Pour acc\u00e9der \u00e0 la page Web, connectez vous \u00e0 votre r\u00e9seau wifi puis indiquez dans un navigateur l&rsquo;adresse IP de votre esp a savoir :192.168.17.8<\/h5><\/div><div>\u00a0<\/div>\n\n\n<h2 class=\"wp-block-heading\">Voici le programme pour la carte Arduino :<\/h2>\n\n\n\n<details class=\"wp-block-details ore-question is-layout-flow wp-block-details-is-layout-flow\"><summary>Programme<\/summary>\n<pre class=\"wp-block-code\"><code>#include &quot;DHT.h&quot;\n#define DHTPIN 12\/\/D6\n#define DHTTYPE DHT11\nint PinAnalogiqueHumidite=A0;\u00a0 \u00a0 \u00a0\nint PinRelai=2;\u00a0 \u00a0 \/\/ D4\nDHT dht(DHTPIN, DHTTYPE);\nint hsol;\u00a0 \/\/Humidite su sol\nfloat temp ;\/\/temp\u00e9rature\nfloat hum;\/\/humidity\u00a0\n#include&lt;ESP8266WebServer.h&gt;\n#include&lt;ESP8266WiFi.h&gt;\nconst char *ssid=&quot;mon_ssid&quot;;\nconst char *password=&quot;mon_mot_de_passe&quot;;\n\n\nIPAddress IP(192,168,17,8);\nIPAddress gateway(192,168,17,1);\nIPAddress subnet(255,255,255,0);\n\u00a0\u00a0\nESP8266WebServer ServerWeb(80);\n\n\n\n\nconst char index_html []PROGMEM = R&quot;=====(\n&lt;!-- Contenu de la page Web --&gt;\n&lt;!doctype html&gt;\n&lt;html lang=&quot;fr&quot;&gt;\n\u00a0 &lt;head&gt;\n\u00a0 \u00a0 &lt;meta charset=&quot;utf-8&quot;&gt;\n\u00a0 \u00a0 &lt;title&gt;Irrigation&lt;\/title&gt;\n\u00a0\u00a0\n\u00a0 \u00a0 &lt;!-- mise en forme de la page web (css)--&gt;\n\u00a0 \u00a0 &lt;style&gt;\n\u00a0 \u00a0 \u00a0 html\u00a0\n\u00a0 \u00a0 \u00a0 {\n\u00a0 \u00a0 \u00a0 \u00a0 font-size: 16px;\n\u00a0 \u00a0 \u00a0 \u00a0 margin-top: 50px;\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 h1 {\n\u00a0 \u00a0 \u00a0 \u00a0 color: #696969;\n\u00a0 \u00a0 \u00a0 \u00a0 text-align: center;\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 a {\n\u00a0 \u00a0 \u00a0 \u00a0 text-align: center;\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 a.btn {\n\u00a0 \u00a0 \u00a0 \u00a0 text-decoration: none;\n\u00a0 \u00a0 \u00a0 \u00a0 font-size: 1.7rem;\n\u00a0 \u00a0 \u00a0 \u00a0 color: #fff;\n\u00a0 \u00a0 \u00a0 \u00a0 padding: 13px;\n\u00a0 \u00a0 \u00a0 \u00a0 border-radius: 10px;\n\u00a0 \u00a0 \u00a0 \u00a0 margin: 0 20px 0;\n\u00a0 \u00a0 \u00a0 \u00a0 background-color: #97CC04;\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 .ak_container {\n\u00a0 \u00a0 \u00a0 \u00a0 width: 80%;\n\u00a0 \u00a0 \u00a0 \u00a0 margin: 0 auto;\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 .wrapper {\n\u00a0 \u00a0 \u00a0 \u00a0 margin-bottom: 70px;\n\u00a0 \u00a0 \u00a0 \u00a0 text-align: center;\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0\u00a0\n\u00a0 \u00a0 \u00a0&lt;\/style&gt;\n\u00a0 &lt;\/head&gt;\n\n\n\u00a0 &lt;body&gt;\n\u00a0 \u00a0 &lt;div&gt;\n\u00a0 \u00a0 \u00a0 &lt;h1&gt;%hsol%&lt;\/h1&gt;\u00a0\n\u00a0 \u00a0 \u00a0 &lt;h1&gt;%temp%&lt;\/h1&gt;\n\u00a0 \u00a0 \u00a0 &lt;h1&gt;%hum%&lt;\/h1&gt;\n\u00a0 \u00a0 &lt;\/div&gt;\n\u00a0 \u00a0\u00a0\n\u00a0 \u00a0 &lt;div&gt;\n\u00a0 \u00a0 \u00a0 &lt;h1&gt;Irrigation&lt;\/h1&gt;\n\u00a0 \u00a0 \u00a0 &lt;h2&gt;Etat de la Pompe&lt;\/h2&gt;\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;a href=&quot;\/SwitchIrrigOn&quot;&gt;Marche&lt;\/a&gt;\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;a href=&quot;\/SwitchIrrigOff&quot;&gt;Arret&lt;\/a&gt;\n\u00a0 \u00a0 \u00a0 &lt;h2&gt;%PinRelai%&lt;\/h2&gt;\u00a0\n\u00a0 \u00a0 &lt;\/div&gt;\n\u00a0 &lt;\/body&gt;\n&lt;\/html&gt;\n)=====&quot;;\n\n\n\u00a0 \u00a0 \u00a0\u00a0\n\u00a0void SwitchIrrigOn()\n{\n\u00a0 digitalWrite(PinRelai,HIGH);\n\u00a0 handleRoot();\n}\n\u00a0void SwitchIrrigOff()\n{\n\u00a0 digitalWrite(PinRelai,LOW);\n\u00a0 handleRoot();\n}\nvoid handleRoot()\n{\n\u00a0 \/* conversion des donn\u00e9es en chaines de caract\u00e8res (string)*\/\u00a0\n\u00a0 String stringMoisture= &quot;Humidit\u00e9 du sol : &quot; +String(hsol) +&quot; %&quot;; \/\/Affichage en html de l&#039;humidit\u00e9 du sol\n\u00a0 String stringTemperature= &quot;Temp\u00e9rature de l&#039;Air : &quot; +String(temp) +&quot; \u00b0C&quot;; \/\/Affichage en html de la temp\u00e9rature de l&#039;air\n\u00a0 String stringHumidity= &quot;Humidit\u00e9 de l&#039;air : &quot; +String(hum) +&quot; %&quot;;\/\/L\u2019humidit\u00e9 atmosph\u00e9rique absolue. Il s\u2019agit de la valeur r\u00e9elle contenue dans un m\u00e8tre cube. Son unit\u00e9 de mesure est le g\/m\u00b3\n\u00a0\u00a0\n\u00a0 String temp(reinterpret_cast&lt;const __FlashStringHelper*&gt;(index_html));\n\u00a0 temp.replace(&quot;%hsol%&quot;, stringMoisture);\n\u00a0 temp.replace(&quot;%temp%&quot;, stringTemperature);\n\u00a0 temp.replace(&quot;%hum%&quot;, stringHumidity);\n\n\n\u00a0 if(digitalRead(PinRelai)==LOW)\n\u00a0 {\n\u00a0 \u00a0 temp.replace(&quot;%PinRelai%&quot;,&quot;Pompe a l&#039;arret&quot;);\n\u00a0 }\u00a0\n\u00a0 else\u00a0\n\u00a0 {\n\u00a0 \u00a0 temp.replace(&quot;%PinRelai%&quot;,&quot;Pompe en marche&quot;);\n\u00a0 }\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\n\n\n\u00a0 ServerWeb.send(200,&quot;text\/html&quot;,temp);\n}\n\n\nvoid setup() {\n\u00a0 dht.begin();\n\u00a0 Serial.begin(9600);\n\u00a0 pinMode(PinAnalogiqueHumidite, INPUT);\u00a0 \u00a0 \u00a0 \u00a0\/\/pin A0 en entr\u00e9e analogique\u00a0\n\u00a0 pinMode(PinRelai, OUTPUT);\u00a0 \u00a0\/\/relai_pompe\u00a0\n\u00a0 WiFi.softAPConfig(IP,gateway,subnet);\n\u00a0 WiFi.softAP(ssid,password);\n\u00a0 ServerWeb.on(&quot;\/SwitchIrrigOn&quot;,SwitchIrrigOn);\n\u00a0 ServerWeb.on(&quot;\/SwitchIrrigOff&quot;,SwitchIrrigOff);\n\u00a0 ServerWeb.on(&quot;\/&quot;,handleRoot);\n\u00a0 ServerWeb.begin();\n\u00a0 \u00a0handleRoot();\n}\n\n\n\n\nvoid loop() {\u00a0\n\u00a0 \u00a0\n\u00a0 ServerWeb.handleClient();\n\u00a0 temp = dht.readTemperature();\n\u00a0 hum= dht.readHumidity();\n\u00a0 hsol = analogRead(PinAnalogiqueHumidite);\n\u00a0 hsol=map(hsol,100,700,100,0);\n\n\n\u00a0\u00a0\n\u00a0 Serial.println(temp);\u00a0\n\u00a0 Serial.println(hum);\n\u00a0 Serial.println(hsol);\u00a0\n\u00a0 delay(2000);\u00a0\n\u00a0 handleRoot();\n}<\/code><\/pre>\n<\/details>\n\n\n<h4>Voici le R\u00e9sultat :<\/h4>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/Capture.png\" alt=\"\"\/><\/figure>\n\n\n<h2>Partie 2:Affichage et stockage des donn\u00e9es<\/h2><h2>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0(base de donn\u00e9e)<\/h2>\n\n<h5>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Dans cette partie ,les param\u00e8tres du sol et de l&rsquo;air sont affich\u00e9es sur une page web (sous forme d&rsquo;un graphe, comme vous pouvez le voir juste au dessous), mais l&rsquo;irrigation est automatique cette fois ci, On conservera les donn\u00e9es dans une base de donn\u00e9e de votre choix (Always data dans notre programme)<\/h5><h5>\u00a0Pour acc\u00e9der \u00e0 la page Web, copiez le lien .index sur un navigateur\u00a0<\/h5>\n\n\n<h2 class=\"wp-block-heading\">Voici le programme pour la carte Arduino :<\/h2>\n\n\n\n<details class=\"wp-block-details ore-question is-layout-flow wp-block-details-is-layout-flow\"><summary>Programme:<\/summary>\n<pre class=\"wp-block-code\"><code>\u00a0Code Arduino:\n\n\/*\n* Projet station m\u00e9t\u00e9o dht11 alwaysdata\n* Capteur dht 11\n* Envoi des donn\u00e9es \u00e0 intervalle r\u00e9gulier sur serveur php\n* R\u00e9troaction : allumage leds green et red suivant la temperature capt\u00e9e\n*\/\n#include\n#include\n#include\n#define wifi_ssid &quot;************&quot;\n#define wifi_pwd &quot;*************&quot;\n#define dhtType DHT11\n#define dhtPin 12 \/\/D6\n#define ledRedPin 4 \/\/D2\n#define ledGreenPin 5 \/\/D1\nconst int RELAY = 2; \/\/D4\nint PinAnalogiqueHumidite=A0;\nint moisture;\nString staticUrl = &quot;http:\/\/jardin-connect.alwaysdata.net\/********\/*****.php?&quot;;\nfloat temperature;\nfloat humidity;\nunsigned long lastTime = 0;\nunsigned long currentTime;\n\/\/ parameter for periodic sensor\nconst int sensorPeriod = 300000; \/\/each 15 mn\nDHT dht(dhtPin, dhtType);\nvoid wifiConnexion()\n{\nWiFi.begin(wifi_ssid, wifi_pwd);\nwhile (WiFi.status() != WL_CONNECTED)\n{\nSerial.print(&quot;.&quot;);\ndelay(1000);\n}\nSerial.println();\nSerial.println(&quot;Connexion WiFi \u00e9tablie&quot;);\n}\nvoid sendDatas()\n{\ncurrentTime = millis();\nif (currentTime == 0)\n{\nlastTime = 0;\n}\nif (lastTime == 0 || (currentTime - lastTime) &gt; sensorPeriod)\n{\nlastTime = currentTime;\nmoisture = analogRead(PinAnalogiqueHumidite);\nmoisture = map(moisture,300,800,100,0);\ntemperature = dht.readTemperature();\nhumidity = dht.readHumidity();\nif (isnan(temperature) || isnan(humidity))\n{\nSerial.println(&quot;Echec de lecture !&quot;);\nreturn;\n}\nWiFiClient client;\nHTTPClient http;\nString url = staticUrl +&quot;temperature=&quot; +temperature +&quot;&amp;humidity=&quot; +humidity +&quot;&amp;moisture=&quot; +moisture;\nhttp.begin(client, url);\nSerial.print(&quot;[HTTP] GET...\\n&quot;);\n\/\/ start connection and send HTTP header. httpcode return the status of the response\nint httpCode = http.GET();\nif (httpCode &gt; 0) {\n\/\/ HTTP header has been send and Server response header has been handled\nSerial.printf(&quot;[HTTP] GET... code: %d\\n&quot;, httpCode);\n\/\/ file found at server\nif (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {\nString payload = http.getString();\nSerial.println(payload);\nif (payload == &quot;1&quot;) {\ndigitalWrite(ledRedPin, HIGH);\ndigitalWrite(ledGreenPin, LOW);\n} else if (payload == &quot;0&quot;) {\ndigitalWrite(ledRedPin, LOW);\ndigitalWrite(ledGreenPin, HIGH);\n}\n}\n} else {\nSerial.printf(&quot;[HTTP] GET... failed, error: %s\\n&quot;, http.errorToString(httpCode).c_str());\n}\nhttp.end();\n}\n}\nvoid setup()\n{\nSerial.begin(115200);\nwifiConnexion();\ndht.begin();\npinMode(RELAY, OUTPUT);\n\/* pinMode(ledRedPin, OUTPUT);\npinMode(ledGreenPin, OUTPUT);*\/\n}\nvoid loop()\n{\nif (moisture &lt; 50 )\n{\ndigitalWrite(RELAY,HIGH);\n}\nelse\n{\ndigitalWrite(RELAY,LOW);\n}\nif (WiFi.status() != WL_CONNECTED)\nwifiConnexion();\n}\nif (WiFi.isConnected()) {\nsendDatas();\n}\n\/\/ Serial.println(moisture);\n}\u00a0\u00a0{CodePHP:\u00a0\u00a0api.php:\u00a0&lt;?php\u00a0require_once &#039;pdo.php&#039;;\u00a0$askedDay = str_replace(&quot;\/&quot;, &quot;&quot;, $_GET[&#039;day&#039;]);$year = substr($askedDay, 4, 4);$month = substr($askedDay, 2, 2);$day = substr($askedDay, 0, 2);$currentDate = $year.$month.$day; \/\/Ymd for request\u00a0$sql = &quot;SELECT sent_at, temperature, humidity, moisture from capture WHERE YEAR(sent_at) = YEAR($currentDate) AND DAYOFYEAR(sent_at) = DAYOFYEAR($currentDate);&quot;;\u00a0$stmt = $pdo-&gt;prepare($sql);$stmt-&gt;execute();$res = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\u00a0$table = [];\u00a0$table[&#039;cols&#039;] = [\u00a0 \u00a0 \u00a0 \u00a0 [\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;label&#039; =&gt; &#039;Date Time&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;type&#039; =&gt; &#039;string&#039;\u00a0 \u00a0 \u00a0 \u00a0 ],\u00a0 \u00a0 \u00a0 \u00a0 [\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;label&#039; =&gt; &#039;Temp\u00e9rature&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;type&#039; =&gt; &#039;number&#039;\u00a0 \u00a0 \u00a0 \u00a0 ],\u00a0 \u00a0 \u00a0 \u00a0 [\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;label&#039; =&gt; &#039;Humidit\u00e9&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;type&#039; =&gt; &#039;number&#039;\u00a0 \u00a0 \u00a0 \u00a0 ],\u00a0 \u00a0 \u00a0 \u00a0 [\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;label&#039; =&gt; &#039;Humidit\u00e9 du Sol&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#039;type&#039; =&gt; &#039;number&#039;\u00a0 \u00a0 \u00a0 \u00a0 ]\u00a0 \u00a0 ];\u00a0$rows = [];while ($item = array_shift($res)) {\u00a0 \u00a0 $datetime = new DateTime($item[&#039;sent_at&#039;]);\u00a0 \u00a0 $hour = $datetime-&gt;format(&#039;H:i&#039;);\u00a0\u00a0 \u00a0 $row = [];\u00a0 \u00a0 $row[] = [\u00a0 \u00a0 \u00a0 \u00a0 &#039;v&#039; =&gt; $hour\u00a0 \u00a0 ];\u00a0 \u00a0 $row[] = [\u00a0 \u00a0 \u00a0 \u00a0 &#039;v&#039; =&gt; $item[&#039;temperature&#039;]\u00a0 \u00a0 ];\u00a0 \u00a0 $row[] = [\u00a0 \u00a0 \u00a0 \u00a0 &#039;v&#039; =&gt; $item[&#039;humidity&#039;]\u00a0 \u00a0 ];\u00a0 \u00a0 $row[] = [\u00a0 \u00a0 \u00a0 \u00a0 &#039;v&#039; =&gt; $item[&#039;moisture&#039;]\u00a0 \u00a0 ];\u00a0 \u00a0 $rows[] = [\u00a0 \u00a0 \u00a0 \u00a0 &#039;c&#039; =&gt; $row\u00a0 \u00a0 ];}$table[&#039;rows&#039;] = $rows;\u00a0$jsonData = json_encode($table);echo $jsonData;\u00a0\u00a0capture.php:\u00a0&lt;?php\u00a0require_once &#039;pdo.php&#039;;\u00a0$temperature = $_GET[&#039;temperature&#039;];$humidity = $_GET[&#039;humidity&#039;];$moisture = \u00a0$_GET[&#039;moisture&#039;];\u00a0$now = new DateTime(&#039;NOW&#039;, new DateTimeZone(&#039;Europe\/Paris&#039;));$sent_at = $now-&gt;format(&#039;Y-m-d H:i:s&#039;);\u00a0$sql = &quot;INSERT INTO capture(temperature, humidity, sent_at, moisture) VALUES(:temperature, :humidity, :sent_at, :moisture)&quot;;$stmt = $pdo-&gt;prepare($sql);$stmt-&gt;bindValue(&#039;:temperature&#039;, $temperature);$stmt-&gt;bindValue(&#039;:humidity&#039;, $humidity);$stmt-&gt;bindValue(&#039;:sent_at&#039;, $sent_at);$stmt-&gt;bindValue(&#039;:moisture&#039;, $moisture);$stmt-&gt;execute();\u00a0require_once &#039;retroaction.php&#039;;\u00a0\u00a0index.php:\n\n&lt;?php\u00a0 \u00a0 $datetime = new DateTime(&#039;NOW&#039;);\u00a0 \u00a0 $askedDay = empty($_POST[&#039;submit_day&#039;]) ? $datetime-&gt;format(&#039;d\/m\/Y&#039;) : $_POST[&#039;day_choice&#039;];?&gt;\u00a0&lt;!DOCTYPE html&gt;&lt;html lang=&quot;fr&quot;&gt;&lt;head&gt;\u00a0 \u00a0 &lt;meta charset=&quot;UTF-8&quot;&gt;\u00a0 \u00a0 &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;\u00a0 \u00a0 &lt;title&gt;Document&lt;\/title&gt;\u00a0\u00a0 \u00a0 &lt;link rel=&quot;stylesheet&quot; href=&quot;http:\/\/style.css&quot;&gt;\u00a0 \u00a0 &lt;link rel=&quot;stylesheet&quot; href=&quot;\/\/code.jquery.com\/ui\/1.13.0\/themes\/Black-Tie\/jquery-ui.css&quot;&gt;\u00a0\u00a0 \u00a0 &lt;script type=&quot;text\/javascript&quot; src=&quot;https:\/\/www.gstatic.com\/charts\/loader.js&quot;&gt;&lt;\/script&gt;\u00a0 \u00a0 &lt;script type=&quot;text\/javascript&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 &lt;?php echo &quot;var askedDay = &#039;$askedDay&#039;;&quot;; ?&gt;\u00a0 \u00a0 \u00a0 \u00a0 console.log(askedDay);\u00a0\u00a0 \u00a0 \u00a0 \u00a0 google.charts.load(&#039;current&#039;, {&#039;packages&#039;:[&#039;corechart&#039;]});\u00a0 \u00a0 \u00a0 \u00a0 google.charts.setOnLoadCallback(drawChart);\u00a0\u00a0 \u00a0 \u00a0 \u00a0 function drawChart() {\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ajaxCall();\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 setInterval(ajaxCall, 900000); \/\/900000 MS == 15 minutes\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 function ajaxCall() {\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 var jsonData = $.ajax({\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 url: &quot;http:\/\/jardin-connect.alwaysdata.net\/********\/api.php?day=&quot; +askedDay,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 dataType: &quot;json&quot;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 async: false\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }).responseText;\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 var data = new google.visualization.DataTable(jsonData);\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 var options = {\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 title:&#039;Irrigation&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 curveType: &#039;function&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 legend:{position:&#039;bottom&#039;},\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 chartArea:{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 width:&#039;90%&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 height:&#039;65%&#039;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 },\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 animation:{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 duration: 1000,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 easing: &#039;out&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 },\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 hAxis:{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 gridlines:{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color:&#039;red&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 format: &#039;scientific&#039;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 },\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 vAxis: {\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 maxValue: 100,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 minValue: -20\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 },\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pointShape: &#039;circle&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pointSize: 10,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lineWidth: 3,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 colors: [&#039;#ff9b00&#039;,&#039;#138cff&#039;, &#039;#008000&#039;],\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 backgroundColor:{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 fill:&#039;#fcfcfc&#039;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 },\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 crosshair:{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color:&#039;#000&#039;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 var chart = new google.visualization.LineChart(document.getElementById(&#039;chart_display&#039;));\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 chart.draw(data, options);\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\u00a0 \u00a0 \u00a0 \u00a0 }\u00a0 \u00a0 &lt;\/script&gt;\u00a0&lt;\/head&gt;&lt;body&gt;\u00a0 \u00a0 &lt;main class=&quot;ak_container&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 &lt;div id=&quot;homepage_page&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;a href=&quot;&quot;&gt;Aujourd&#039;ui&lt;\/a&gt;\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;form id=&quot;asked_date_form&quot; action=&quot;&quot; method=&quot;POST&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;label for=&quot;datepicker&quot;&gt;Jour&lt;\/label&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;input id=&quot;datepicker&quot; name=&quot;day_choice&quot; type=&quot;text&quot; autocomplete=&quot;off&quot; value=&quot;&quot;&gt;\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;input type=&quot;submit&quot; id=&quot;submit_day&quot; name=&quot;submit_day&quot; value=&quot;Afficher&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/form&gt;\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;p id=&quot;today&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;?php echo $askedDay ?&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/p&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;div id=&quot;chart_display&quot;&gt;&lt;\/div&gt;\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;\u00a0 \u00a0 &lt;\/main&gt;\u00a0\u00a0 \u00a0 &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.6.0\/jquery.min.js&quot; integrity=&quot;sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn\/+\/3e7Jo4EaG7TubfWGUrMQ==&quot; crossorigin=&quot;anonymous&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;\/script&gt;\u00a0 \u00a0 &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jqueryui\/1.12.1\/jquery-ui.min.js&quot; integrity=&quot;sha512-uto9mlQzrs59VwILcLiRYeLKPPbS\/bT71da\/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA==&quot; crossorigin=&quot;anonymous&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;\/script&gt;\u00a0 \u00a0 &lt;script type=&quot;text\/javascript&quot;&gt;\u00a0 \u00a0 \u00a0 \u00a0 $( function() {\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 $( &quot;#datepicker&quot; ).datepicker({\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 altField: &quot;#datepicker&quot;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 closeText: &#039;Fermer&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 prevText: &#039;Pr\u00e9c\u00e9dent&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 nextText: &#039;Suivant&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 currentText: &#039;Aujourd\\&#039;hui&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 monthNames: [&#039;Janvier&#039;, &#039;F\u00e9vrier&#039;, &#039;Mars&#039;, &#039;Avril&#039;, &#039;Mai&#039;, &#039;Juin&#039;, &#039;Juillet&#039;, &#039;Ao\u00fbt&#039;, &#039;Septembre&#039;, &#039;Octobre&#039;, &#039;Novembre&#039;, &#039;D\u00e9cembre&#039;],\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 monthNamesShort: [&#039;Janv.&#039;, &#039;F\u00e9vr.&#039;, &#039;Mars&#039;, &#039;Avril&#039;, &#039;Mai&#039;, &#039;Juin&#039;, &#039;Juil.&#039;, &#039;Ao\u00fbt&#039;, &#039;Sept.&#039;, &#039;Oct.&#039;, &#039;Nov.&#039;, &#039;D\u00e9c.&#039;],\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 dayNames: [&#039;Dimanche&#039;, &#039;Lundi&#039;, &#039;Mardi&#039;, &#039;Mercredi&#039;, &#039;Jeudi&#039;, &#039;Vendredi&#039;, &#039;Samedi&#039;],\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 dayNamesShort: [&#039;Dim.&#039;, &#039;Lun.&#039;, &#039;Mar.&#039;, &#039;Mer.&#039;, &#039;Jeu.&#039;, &#039;Ven.&#039;, &#039;Sam.&#039;],\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 dayNamesMin: [&#039;D&#039;, &#039;L&#039;, &#039;M&#039;, &#039;M&#039;, &#039;J&#039;, &#039;V&#039;, &#039;S&#039;],\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 weekHeader: &#039;Sem.&#039;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 dateFormat: &#039;dd\/mm\/yy&#039;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 });\u00a0 \u00a0 \u00a0 \u00a0 });\u00a0 \u00a0 &lt;\/script&gt;&lt;\/body&gt;&lt;\/html&gt;\u00a0\u00a0\u00a0\u00a0\u00a0pdo.php:&lt;?php\u00a0 \u00a0 $dsn = &quot;mysql:host=mysql-jardin-connect.alwaysdata.net;dbname=jardin-connect_********;charset=utf8&quot;;\u00a0 \u00a0 $dbuser = &quot;**********&quot;;\u00a0 \u00a0 $dbpwd = &quot;***********&quot;;\u00a0\u00a0 \u00a0 $pdo = new PDO($dsn, $dbuser, $dbpwd, []);\u00a0\u00a0\u00a0retroaction.php:\u00a0&lt;?php\u00a0$sql = &quot;SELECT moisture from capture WHERE id=(SELECT max(id) FROM capture)&quot;;$stmt = $pdo-&gt;query($sql);$res = $stmt-&gt;fetch();$moisture = $res[&#039;moisture&#039;];\u00a0if ($moisture &gt; 50) {\u00a0 \u00a0 echo &#039;1&#039;;} else {\u00a0 \u00a0 echo &#039;0&#039;;}\u00a0\u00a0style.css:\u00a0html {\u00a0 \u00a0 font-size: 16px;}a {\u00a0 \u00a0 text-decoration: none;\u00a0 \u00a0 font-size: 1.7rem;\u00a0 \u00a0 color: #97CC04;}.ui-datepicker {\u00a0 \u00a0 font-size: 17px !important;}.ui-state-default {\u00a0 \u00a0 font-size: 1.2rem;}.ak_container {\u00a0 \u00a0 width: 80%;\u00a0 \u00a0 margin: 0 auto;}#homepage_page #today {\u00a0 \u00a0 margin: 10px 0 0;\u00a0 \u00a0 font-size: 2rem;\u00a0 \u00a0 color: #1C2321;\u00a0 \u00a0 margin-bottom: 50px;\u00a0 \u00a0 text-align: center;}#homepage_page #chart_display {\u00a0 \u00a0 margin: 0 auto;\u00a0 \u00a0 width: 80%;\u00a0 \u00a0 height: 600px;}#homepage_page form#asked_date_form {\u00a0 \u00a0 margin-top: 15px;\u00a0 \u00a0 height: 50px;}#homepage_page form#asked_date_form label {\u00a0 \u00a0 font-size: 1.1rem;}#homepage_page form#asked_date_form input#datepicker {\u00a0 \u00a0 text-align: center;\u00a0 \u00a0 width: 70px;\u00a0 \u00a0 height: 30px;\u00a0 \u00a0 border-radius: 10px;\u00a0 \u00a0 border: 1px solid #97CC04;\u00a0 \u00a0 background: #fff;}#homepage_page form#asked_date_form input#submit_day {\u00a0 \u00a0 width: 90px;\u00a0 \u00a0 height: 30px;\u00a0 \u00a0 border-radius: 10px;\u00a0 \u00a0 border: 1px solid #97CC04;\u00a0 \u00a0 font-size: 1rem;\u00a0 \u00a0 color: #1C2321;\u00a0 \u00a0 background:#fff;\u00a0}<\/code><\/pre>\n<\/details>\n\n\n<h4>Voici le R\u00e9sultat :<\/h4>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/resultat-base-de-donnees.png\" alt=\"\"\/><\/figure>\n\n\n<h2>Partie 3:Utilisation de IOT Cloud Arduino\u00a0<\/h2>\n\n<h5>\u00a0 \u00a0 \u00a0 \u00a0<\/h5><h5>\u00a0<\/h5><h5>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0IOT Cloud Arduino nous donne acc\u00e8s a une interface Web ou une\u00a0 application nomm\u00e9 \u00ab\u00a0Arduino IOT Cloud Remote\u00a0\u00bb\u00a0 pour pouvoir afficher\/stocker les donn\u00e9es (taux d&rsquo;humidit\u00e9 du sol, temp\u00e9rature\/humidit\u00e9 de l&rsquo;air ) et de contr\u00f4ler l&rsquo;arrosage\u00a0 via un bouton (marche\/arr\u00eat )<\/h5><h5>\u00a0<\/h5><h1>\u00a0<\/h1>\n\n\n<h2 class=\"wp-block-heading\">Voici le programme pour la carte Arduino :<\/h2>\n\n\n\n<details class=\"wp-block-details ore-question is-layout-flow wp-block-details-is-layout-flow\"><summary>Programme<\/summary>\n<pre class=\"wp-block-code\"><code>\u00a0\n#include &quot;thingProperties.h&quot;\n#define ledG 16 \/\/D2\n#include &quot;DHT.h&quot;\n#define DHTpin 12\/\/D6\n#define DHTTYPE DHT11\nDHT dht(DHTpin, DHTTYPE);\nint sensor = A0;\nint relay = 2; \/\/D4\nvoid setup()\n{ Serial.begin(9600);\n\u00a0 delay(1500);\n\u00a0 dht.begin();\n\u00a0 pinMode(ledG, INPUT);\n\u00a0 \/\/pinMode(sensor,INPUT);\n\u00a0 pinMode(relay, OUTPUT);\n\u00a0 initProperties();\n\u00a0 ArduinoCloud.begin(ArduinoIoTPreferredConnection);\n\u00a0 setDebugMessageLevel(2);\n\u00a0 ArduinoCloud.printDebugInfo();\n}\nvoid loop()\n{\n\u00a0 ArduinoCloud.update();\n\u00a0 temperature = dht.readTemperature();\n\u00a0 humidite = dht.readHumidity();\n\u00a0 humidity = analogRead(sensor);\n\u00a0 humidity = map(humidity, 300, 800, 100, 0);\n\u00a0 onLedBtnChange() ;\n\u00a0\n}\n\u00a0\nvoid onLedBtnChange()\n{\n\u00a0 if (humidity &gt; 50)\n\u00a0 {\n\u00a0 \u00a0 digitalWrite(ledG, HIGH);\n\u00a0 }\n\u00a0 else\n\u00a0 {\n\u00a0 \u00a0 digitalWrite(ledG, LOW);\n\u00a0 }\n\u00a0\n}\n\u00a0\n\u00a0\nvoid onRelaisChange()\u00a0 {\n\u00a0 if (relais)\n\u00a0 {\n\u00a0 \u00a0 digitalWrite(relay, HIGH);\n\u00a0 }\n\u00a0 else\n\u00a0 {\n\u00a0 \u00a0 digitalWrite(relay, LOW);\n\u00a0 }\n}\n\u00a0<\/code><\/pre>\n<\/details>\n\n\n\n<h2 class=\"wp-block-heading\">Voici le R\u00e9sultat :<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Affichage depuis un site Web :<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/iot-cloud.png\" alt=\"\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Affichage avec une application:<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/07\/iot-cloud-arduino-2.png\" alt=\"\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Principe du projet Le Projet consiste \u00e0 l&#039;arrosage automatique d&#039;un jardin connect\u00e9, c&#039;est une nouvelle mani\u00e8re de piloter et g\u00e9rer un syst\u00e8me d&#039;arrosage d&#039;une [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":9471,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-tutoriel","meta":{"footnotes":""},"class_list":["post-9477","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9477","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/comments?post=9477"}],"version-history":[{"count":1,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9477\/revisions"}],"predecessor-version":[{"id":11533,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9477\/revisions\/11533"}],"up":[{"embeddable":true,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9471"}],"wp:attachment":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/media?parent=9477"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}