Dernière révision : mars 2025










Projet ESP8266 n° 1

Philippe Notez (philippe.notez@inmc.fr)





Sommaire

Introduction

L’électronique et l’informatique ont profondément modifié notre société. C’est certainement la révolution industrielle la plus rapide de l’histoire de l’humanité. Aujourd'hui, les systèmes embarqués sont omniprésents dans notre vie quotidienne et nous emmènent vers un monde de plus en plus connecté, avec ses avantages et ses inconvénients...

L’auteur ne pourra en aucun cas être tenu responsable des dommages qui résulteraient de l’utilisation des informations publiées sur ce site, sous licence Creative Commons BY-NC-SA. Toute reproduction ou modification d'un document, même partielle, est autorisée à condition que son origine et le nom de l'auteur soient clairement indiqués (BY), qu'il soit utilisé à des fins non commerciales (NC), que son mode de diffusion soit identique au document initial (SA), et que cela ne porte pas atteinte à l’auteur.

Ce document présente un projet utilisant une carte ESP8266 (ESP-01), en espérant toujours être le plus clair et précis possible. Malgré tout le soin apporté à la rédaction, l'auteur vous remercie de bien vouloir le contacter si vous relevez la moindre erreur ou omission, et vous souhaite une agréable lecture.


Objectif

Gérer un relais avec un ESP8266 (ESP-01) via un navigateur web, avec maj OTA.


Niveau




Matériel utilisé
  • un convertisseur USB - RS-232 avec interrupteur (voir ci-dessous)
  • une carte ESP-01 (mémoire flash : 512 kio*) ou ESP-01S (mémoire flash : 1 Mio)
  • un module relais

Programme (sketch)

esp-01.ino
// gérer un relais avec un ESP8266 (ESP-01) via un navigateur web,
// avec maj OTA

#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>
#include <WiFiUdp.h>
#include <NTPClient.h>

#define nom_wifi ""				// à modifier !
#define mdp_wifi ""				// à modifier !
#define nom_ota "Serveur web ESP8266 (ESP-01)"
#define mdp_ota ""				// à modifier !
#define relais 0

IPAddress ip(192,168,1,47);
IPAddress masque(255,255,255,0);
IPAddress passerelle(192,168,1,1);
IPAddress dns(192,168,1,1);

WiFiServer serveur_web(80);
WiFiClient client_web;
WiFiUDP client_udp;
NTPClient client_ntp(client_udp,"fr.pool.ntp.org",0,14400000);
// 0 s = fuseau horaire (UTC), 14400000 ms = 14400 s = 4 h (taux de rafraîchissement)

int jour,mois,annee,heures,minutes;
int jour_m=1,mois_m=0,annee_m=1970,heures_m=0,minutes_m=0;
int jour_a=1,mois_a=0,annee_a=1970,heures_a=0,minutes_a=0;

void delayMilliseconds(unsigned temps)
  {
  unsigned i=0;

  while (i<temps)
    {
    yield();
    delayMicroseconds(1000);
    i++;
    }
  }

void aff_date_heure()
  {
  time_t temps_unix;
  struct tm *date_heure;
  unsigned char texte[256],tab_dh[5];

  client_ntp.update();
  temps_unix=client_ntp.getEpochTime(); // nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00
  date_heure=localtime(&temps_unix);
  // jour de la semaine
  switch (date_heure->tm_wday)
    {
    case 0 : strcpy(texte,"Dimanche "); break;
    case 1 : strcpy(texte,"Lundi ");    break;
    case 2 : strcpy(texte,"Mardi ");    break;
    case 3 : strcpy(texte,"Mercredi "); break;
    case 4 : strcpy(texte,"Jeudi ");    break;
    case 5 : strcpy(texte,"Vendredi "); break;
    case 6 : strcpy(texte,"Samedi ");
    }
  // jour du mois
  jour=date_heure->tm_mday;
  if (jour<10)
    {
    tab_dh[0]=48;
    tab_dh[1]=jour+48;
    tab_dh[2]=0;
    }
  else itoa(jour,tab_dh,10);
  strcat(texte,tab_dh);
  // mois
  mois=date_heure->tm_mon;
  switch (mois)
    {
    case  0 : strcat(texte," janvier ");    break;
    case  1 : strcat(texte," février ");    break;
    case  2 : strcat(texte," mars ");       break;
    case  3 : strcat(texte," avril ");      break;
    case  4 : strcat(texte," mai ");        break;
    case  5 : strcat(texte," juin ");       break;
    case  6 : strcat(texte," juillet ");    break;
    case  7 : strcat(texte," août ");       break;
    case  8 : strcat(texte," septembre ");  break;
    case  9 : strcat(texte," octobre ");    break;
    case 10 : strcat(texte," novembre ");   break;
    case 11 : strcat(texte," décembre ");
    }
  // année
  annee=date_heure->tm_year+1900;
  itoa(annee,tab_dh,10);
  strcat(texte,tab_dh);
  client_web.write(texte,strlen(texte));
  client_web.write("<BR>");
  // heures
  heures=date_heure->tm_hour;
  if (heures<10)
    {
    texte[0]=48;
    texte[1]=heures+48;
    }
  else itoa(heures,texte,10);
  texte[2]=':';
  // minutes
  minutes=date_heure->tm_min;
  if (minutes<10)
    {
    texte[3]=48;
    texte[4]=minutes+48;
    }
  else itoa(minutes,texte+3,10);
  texte[5]=0;
  client_web.write(texte,strlen(texte));
  }

void reponse_serveur()
  {
  unsigned char tab_annee[5];
  
  client_web.write("HTTP/1.1 200 OK");
  client_web.write(13);
  client_web.write(10);
  client_web.write("Content-type: text/html; charset=UTF-8");
  client_web.write(13);
  client_web.write(10);
  client_web.write("Refresh: 60");
  client_web.write(13);
  client_web.write(10);
  // ligne vide obligatoire à la fin de l'en-tête HTTP
  client_web.write(13);
  client_web.write(10);
  client_web.write("<!DOCTYPE HTML>");
  client_web.write("<HTML LANG=\"fr\">");
  client_web.write("<HEAD>");
  client_web.write("<TITLE>Serveur web ESP8266 (ESP01)</TITLE>");
  client_web.write("</HEAD>");
  client_web.write("<BODY>");
  client_web.write("<CENTER>");
  client_web.write("<FONT FACE=calibri><BR>");
  client_web.write("<B>Gérer un relais avec un ESP8266 (ESP-01)</B><BR><BR>");
  aff_date_heure();
  client_web.write("<FORM ACTION=/ METHOD=get><BR><BR>");
  client_web.write("Date de marche : ");
  // jour de marche
  client_web.write("<SELECT NAME=jour_m>");
  if (jour_m==1) client_web.write("<OPTION VALUE=1 SELECTED>1</OPTION>");
  else client_web.write("<OPTION VALUE=1>1</OPTION>");
  if (jour_m==2) client_web.write("<OPTION VALUE=2 SELECTED>2</OPTION>");
  else client_web.write("<OPTION VALUE=2>2</OPTION>");
  if (jour_m==3) client_web.write("<OPTION VALUE=3 SELECTED>3</OPTION>");
  else client_web.write("<OPTION VALUE=3>3</OPTION>");
  if (jour_m==4) client_web.write("<OPTION VALUE=4 SELECTED>4</OPTION>");
  else client_web.write("<OPTION VALUE=4>4</OPTION>");
  if (jour_m==5) client_web.write("<OPTION VALUE=5 SELECTED>5</OPTION>");
  else client_web.write("<OPTION VALUE=5>5</OPTION>");
  if (jour_m==6) client_web.write("<OPTION VALUE=6 SELECTED>6</OPTION>");
  else client_web.write("<OPTION VALUE=6>6</OPTION>");
  if (jour_m==7) client_web.write("<OPTION VALUE=7 SELECTED>7</OPTION>");
  else client_web.write("<OPTION VALUE=7>7</OPTION>");
  if (jour_m==8) client_web.write("<OPTION VALUE=8 SELECTED>8</OPTION>");
  else client_web.write("<OPTION VALUE=8>8</OPTION>");
  if (jour_m==9) client_web.write("<OPTION VALUE=9 SELECTED>9</OPTION>");
  else client_web.write("<OPTION VALUE=9>9</OPTION>");
  if (jour_m==10) client_web.write("<OPTION VALUE=10 SELECTED>10</OPTION>");
  else client_web.write("<OPTION VALUE=10>10</OPTION>");
  if (jour_m==11) client_web.write("<OPTION VALUE=11 SELECTED>11</OPTION>");
  else client_web.write("<OPTION VALUE=11>11</OPTION>");
  if (jour_m==12) client_web.write("<OPTION VALUE=12 SELECTED>12</OPTION>");
  else client_web.write("<OPTION VALUE=12>12</OPTION>");
  if (jour_m==13) client_web.write("<OPTION VALUE=13 SELECTED>13</OPTION>");
  else client_web.write("<OPTION VALUE=13>13</OPTION>");
  if (jour_m==14) client_web.write("<OPTION VALUE=14 SELECTED>14</OPTION>");
  else client_web.write("<OPTION VALUE=14>14</OPTION>");
  if (jour_m==15) client_web.write("<OPTION VALUE=15 SELECTED>15</OPTION>");
  else client_web.write("<OPTION VALUE=15>15</OPTION>");
  if (jour_m==16) client_web.write("<OPTION VALUE=16 SELECTED>16</OPTION>");
  else client_web.write("<OPTION VALUE=16>16</OPTION>");
  if (jour_m==17) client_web.write("<OPTION VALUE=17 SELECTED>17</OPTION>");
  else client_web.write("<OPTION VALUE=17>17</OPTION>");
  if (jour_m==18) client_web.write("<OPTION VALUE=18 SELECTED>18</OPTION>");
  else client_web.write("<OPTION VALUE=18>18</OPTION>");
  if (jour_m==19) client_web.write("<OPTION VALUE=19 SELECTED>19</OPTION>");
  else client_web.write("<OPTION VALUE=19>19</OPTION>");
  if (jour_m==20) client_web.write("<OPTION VALUE=20 SELECTED>20</OPTION>");
  else client_web.write("<OPTION VALUE=20>20</OPTION>");
  if (jour_m==21) client_web.write("<OPTION VALUE=21 SELECTED>21</OPTION>");
  else client_web.write("<OPTION VALUE=21>21</OPTION>");
  if (jour_m==22) client_web.write("<OPTION VALUE=22 SELECTED>22</OPTION>");
  else client_web.write("<OPTION VALUE=22>22</OPTION>");
  if (jour_m==23) client_web.write("<OPTION VALUE=23 SELECTED>23</OPTION>");
  else client_web.write("<OPTION VALUE=23>23</OPTION>");
  if (jour_m==24) client_web.write("<OPTION VALUE=24 SELECTED>24</OPTION>");
  else client_web.write("<OPTION VALUE=24>24</OPTION>");
  if (jour_m==25) client_web.write("<OPTION VALUE=25 SELECTED>25</OPTION>");
  else client_web.write("<OPTION VALUE=25>25</OPTION>");
  if (jour_m==26) client_web.write("<OPTION VALUE=26 SELECTED>26</OPTION>");
  else client_web.write("<OPTION VALUE=26>26</OPTION>");
  if (jour_m==27) client_web.write("<OPTION VALUE=27 SELECTED>27</OPTION>");
  else client_web.write("<OPTION VALUE=27>27</OPTION>");
  if (jour_m==28) client_web.write("<OPTION VALUE=28 SELECTED>28</OPTION>");
  else client_web.write("<OPTION VALUE=28>28</OPTION>");
  if (jour_m==29) client_web.write("<OPTION VALUE=29 SELECTED>29</OPTION>");
  else client_web.write("<OPTION VALUE=29>29</OPTION>");
  if (jour_m==30) client_web.write("<OPTION VALUE=30 SELECTED>30</OPTION>");
  else client_web.write("<OPTION VALUE=30>30</OPTION>");
  if (jour_m==31) client_web.write("<OPTION VALUE=31 SELECTED>31</OPTION>");
  else client_web.write("<OPTION VALUE=31>31</OPTION>");
  client_web.write("</SELECT> ");
  // mois de marche
  client_web.write("<SELECT NAME=mois_m>");
  if (mois_m==0) client_web.write("<OPTION VALUE=0 SELECTED>janvier</OPTION>");
  else client_web.write("<OPTION VALUE=0>janvier</OPTION>");
  if (mois_m==1) client_web.write("<OPTION VALUE=1 SELECTED>février</OPTION>");
  else client_web.write("<OPTION VALUE=1>février</OPTION>");
  if (mois_m==2) client_web.write("<OPTION VALUE=2 SELECTED>mars</OPTION>");
  else client_web.write("<OPTION VALUE=2>mars</OPTION>");
  if (mois_m==3) client_web.write("<OPTION VALUE=3 SELECTED>avril</OPTION>");
  else client_web.write("<OPTION VALUE=3>avril</OPTION>");
  if (mois_m==4) client_web.write("<OPTION VALUE=4 SELECTED>mai</OPTION>");
  else client_web.write("<OPTION VALUE=4>mai</OPTION>");
  if (mois_m==5) client_web.write("<OPTION VALUE=5 SELECTED>juin</OPTION>");
  else client_web.write("<OPTION VALUE=5>juin</OPTION>");
  if (mois_m==6) client_web.write("<OPTION VALUE=6 SELECTED>juillet</OPTION>");
  else client_web.write("<OPTION VALUE=6>juillet</OPTION>");
  if (mois_m==7) client_web.write("<OPTION VALUE=7 SELECTED>août</OPTION>");
  else client_web.write("<OPTION VALUE=7>août</OPTION>");
  if (mois_m==8) client_web.write("<OPTION VALUE=8 SELECTED>septembre</OPTION>");
  else client_web.write("<OPTION VALUE=8>septembre</OPTION>");
  if (mois_m==9) client_web.write("<OPTION VALUE=9 SELECTED>octobre</OPTION>");
  else client_web.write("<OPTION VALUE=9>octobre</OPTION>");
  if (mois_m==10) client_web.write("<OPTION VALUE=10 SELECTED>novembre</OPTION>");
  else client_web.write("<OPTION VALUE=10>novembre</OPTION>");
  if (mois_m==11) client_web.write("<OPTION VALUE=11 SELECTED>décembre</OPTION>");
  else client_web.write("<OPTION VALUE=11>décembre</OPTION>");
  client_web.write("</SELECT> ");
  // année de marche
  client_web.write("<INPUT TYPE=text NAME=annee_m VALUE=");
  itoa(annee_m,tab_annee,10);
  client_web.write(tab_annee,4);
  client_web.write(" REQUIRED MINLENGTH=4 MAXLENGTH=4 SIZE=2><BR><BR>");
  client_web.write("Heure de marche : ");
  // heures de marche
  client_web.write("<SELECT NAME=heures_m>");
  if (heures_m==0) client_web.write("<OPTION VALUE=0 SELECTED>0</OPTION>");
  else client_web.write("<OPTION VALUE=0>0</OPTION>");
  if (heures_m==1) client_web.write("<OPTION VALUE=1 SELECTED>1</OPTION>");
  else client_web.write("<OPTION VALUE=1>1</OPTION>");
  if (heures_m==2) client_web.write("<OPTION VALUE=2 SELECTED>2</OPTION>");
  else client_web.write("<OPTION VALUE=2>2</OPTION>");
  if (heures_m==3) client_web.write("<OPTION VALUE=3 SELECTED>3</OPTION>");
  else client_web.write("<OPTION VALUE=3>3</OPTION>");
  if (heures_m==4) client_web.write("<OPTION VALUE=4 SELECTED>4</OPTION>");
  else client_web.write("<OPTION VALUE=4>4</OPTION>");
  if (heures_m==5) client_web.write("<OPTION VALUE=5 SELECTED>5</OPTION>");
  else client_web.write("<OPTION VALUE=5>5</OPTION>");
  if (heures_m==6) client_web.write("<OPTION VALUE=6 SELECTED>6</OPTION>");
  else client_web.write("<OPTION VALUE=6>6</OPTION>");
  if (heures_m==7) client_web.write("<OPTION VALUE=7 SELECTED>7</OPTION>");
  else client_web.write("<OPTION VALUE=7>7</OPTION>");
  if (heures_m==8) client_web.write("<OPTION VALUE=8 SELECTED>8</OPTION>");
  else client_web.write("<OPTION VALUE=8>8</OPTION>");
  if (heures_m==9) client_web.write("<OPTION VALUE=9 SELECTED>9</OPTION>");
  else client_web.write("<OPTION VALUE=9>9</OPTION>");
  if (heures_m==10) client_web.write("<OPTION VALUE=10 SELECTED>10</OPTION>");
  else client_web.write("<OPTION VALUE=10>10</OPTION>");
  if (heures_m==11) client_web.write("<OPTION VALUE=11 SELECTED>11</OPTION>");
  else client_web.write("<OPTION VALUE=11>11</OPTION>");
  if (heures_m==12) client_web.write("<OPTION VALUE=12 SELECTED>12</OPTION>");
  else client_web.write("<OPTION VALUE=12>12</OPTION>");
  if (heures_m==13) client_web.write("<OPTION VALUE=13 SELECTED>13</OPTION>");
  else client_web.write("<OPTION VALUE=13>13</OPTION>");
  if (heures_m==14) client_web.write("<OPTION VALUE=14 SELECTED>14</OPTION>");
  else client_web.write("<OPTION VALUE=14>14</OPTION>");
  if (heures_m==15) client_web.write("<OPTION VALUE=15 SELECTED>15</OPTION>");
  else client_web.write("<OPTION VALUE=15>15</OPTION>");
  if (heures_m==16) client_web.write("<OPTION VALUE=16 SELECTED>16</OPTION>");
  else client_web.write("<OPTION VALUE=16>16</OPTION>");
  if (heures_m==17) client_web.write("<OPTION VALUE=17 SELECTED>17</OPTION>");
  else client_web.write("<OPTION VALUE=17>17</OPTION>");
  if (heures_m==18) client_web.write("<OPTION VALUE=18 SELECTED>18</OPTION>");
  else client_web.write("<OPTION VALUE=18>18</OPTION>");
  if (heures_m==19) client_web.write("<OPTION VALUE=19 SELECTED>19</OPTION>");
  else client_web.write("<OPTION VALUE=19>19</OPTION>");
  if (heures_m==20) client_web.write("<OPTION VALUE=20 SELECTED>20</OPTION>");
  else client_web.write("<OPTION VALUE=20>20</OPTION>");
  if (heures_m==21) client_web.write("<OPTION VALUE=21 SELECTED>21</OPTION>");
  else client_web.write("<OPTION VALUE=21>21</OPTION>");
  if (heures_m==22) client_web.write("<OPTION VALUE=22 SELECTED>22</OPTION>");
  else client_web.write("<OPTION VALUE=22>22</OPTION>");
  if (heures_m==23) client_web.write("<OPTION VALUE=23 SELECTED>23</OPTION>");
  else client_web.write("<OPTION VALUE=23>23</OPTION>");
  client_web.write("</SELECT> ");
  // minutes de marche
  client_web.write("<SELECT NAME=minutes_m>");
  if (minutes_m==0) client_web.write("<OPTION VALUE=0 SELECTED>0</OPTION>");
  else client_web.write("<OPTION VALUE=0>0</OPTION>");
  if (minutes_m==1) client_web.write("<OPTION VALUE=1 SELECTED>1</OPTION>");
  else client_web.write("<OPTION VALUE=1>1</OPTION>");
  if (minutes_m==2) client_web.write("<OPTION VALUE=2 SELECTED>2</OPTION>");
  else client_web.write("<OPTION VALUE=2>2</OPTION>");
  if (minutes_m==3) client_web.write("<OPTION VALUE=3 SELECTED>3</OPTION>");
  else client_web.write("<OPTION VALUE=3>3</OPTION>");
  if (minutes_m==4) client_web.write("<OPTION VALUE=4 SELECTED>4</OPTION>");
  else client_web.write("<OPTION VALUE=4>4</OPTION>");
  if (minutes_m==5) client_web.write("<OPTION VALUE=5 SELECTED>5</OPTION>");
  else client_web.write("<OPTION VALUE=5>5</OPTION>");
  if (minutes_m==6) client_web.write("<OPTION VALUE=6 SELECTED>6</OPTION>");
  else client_web.write("<OPTION VALUE=6>6</OPTION>");
  if (minutes_m==7) client_web.write("<OPTION VALUE=7 SELECTED>7</OPTION>");
  else client_web.write("<OPTION VALUE=7>7</OPTION>");
  if (minutes_m==8) client_web.write("<OPTION VALUE=8 SELECTED>8</OPTION>");
  else client_web.write("<OPTION VALUE=8>8</OPTION>");
  if (minutes_m==9) client_web.write("<OPTION VALUE=9 SELECTED>9</OPTION>");
  else client_web.write("<OPTION VALUE=9>9</OPTION>");
  if (minutes_m==10) client_web.write("<OPTION VALUE=10 SELECTED>10</OPTION>");
  else client_web.write("<OPTION VALUE=10>10</OPTION>");
  if (minutes_m==11) client_web.write("<OPTION VALUE=11 SELECTED>11</OPTION>");
  else client_web.write("<OPTION VALUE=11>11</OPTION>");
  if (minutes_m==12) client_web.write("<OPTION VALUE=12 SELECTED>12</OPTION>");
  else client_web.write("<OPTION VALUE=12>12</OPTION>");
  if (minutes_m==13) client_web.write("<OPTION VALUE=13 SELECTED>13</OPTION>");
  else client_web.write("<OPTION VALUE=13>13</OPTION>");
  if (minutes_m==14) client_web.write("<OPTION VALUE=14 SELECTED>14</OPTION>");
  else client_web.write("<OPTION VALUE=14>14</OPTION>");
  if (minutes_m==15) client_web.write("<OPTION VALUE=15 SELECTED>15</OPTION>");
  else client_web.write("<OPTION VALUE=15>15</OPTION>");
  if (minutes_m==16) client_web.write("<OPTION VALUE=16 SELECTED>16</OPTION>");
  else client_web.write("<OPTION VALUE=16>16</OPTION>");
  if (minutes_m==17) client_web.write("<OPTION VALUE=17 SELECTED>17</OPTION>");
  else client_web.write("<OPTION VALUE=17>17</OPTION>");
  if (minutes_m==18) client_web.write("<OPTION VALUE=18 SELECTED>18</OPTION>");
  else client_web.write("<OPTION VALUE=18>18</OPTION>");
  if (minutes_m==19) client_web.write("<OPTION VALUE=19 SELECTED>19</OPTION>");
  else client_web.write("<OPTION VALUE=19>19</OPTION>");
  if (minutes_m==20) client_web.write("<OPTION VALUE=20 SELECTED>20</OPTION>");
  else client_web.write("<OPTION VALUE=20>20</OPTION>");
  if (minutes_m==21) client_web.write("<OPTION VALUE=21 SELECTED>21</OPTION>");
  else client_web.write("<OPTION VALUE=21>21</OPTION>");
  if (minutes_m==22) client_web.write("<OPTION VALUE=22 SELECTED>22</OPTION>");
  else client_web.write("<OPTION VALUE=22>22</OPTION>");
  if (minutes_m==23) client_web.write("<OPTION VALUE=23 SELECTED>23</OPTION>");
  else client_web.write("<OPTION VALUE=23>23</OPTION>");
  if (minutes_m==24) client_web.write("<OPTION VALUE=24 SELECTED>24</OPTION>");
  else client_web.write("<OPTION VALUE=24>24</OPTION>");
  if (minutes_m==25) client_web.write("<OPTION VALUE=25 SELECTED>25</OPTION>");
  else client_web.write("<OPTION VALUE=25>25</OPTION>");
  if (minutes_m==26) client_web.write("<OPTION VALUE=26 SELECTED>26</OPTION>");
  else client_web.write("<OPTION VALUE=26>26</OPTION>");
  if (minutes_m==27) client_web.write("<OPTION VALUE=27 SELECTED>27</OPTION>");
  else client_web.write("<OPTION VALUE=27>27</OPTION>");
  if (minutes_m==28) client_web.write("<OPTION VALUE=28 SELECTED>28</OPTION>");
  else client_web.write("<OPTION VALUE=28>28</OPTION>");
  if (minutes_m==29) client_web.write("<OPTION VALUE=29 SELECTED>29</OPTION>");
  else client_web.write("<OPTION VALUE=29>29</OPTION>");
  if (minutes_m==30) client_web.write("<OPTION VALUE=30 SELECTED>30</OPTION>");
  else client_web.write("<OPTION VALUE=30>30</OPTION>");
  if (minutes_m==31) client_web.write("<OPTION VALUE=31 SELECTED>31</OPTION>");
  else client_web.write("<OPTION VALUE=31>31</OPTION>");
  if (minutes_m==32) client_web.write("<OPTION VALUE=32 SELECTED>32</OPTION>");
  else client_web.write("<OPTION VALUE=32>32</OPTION>");
  if (minutes_m==33) client_web.write("<OPTION VALUE=33 SELECTED>33</OPTION>");
  else client_web.write("<OPTION VALUE=33>33</OPTION>");
  if (minutes_m==34) client_web.write("<OPTION VALUE=34 SELECTED>34</OPTION>");
  else client_web.write("<OPTION VALUE=34>34</OPTION>");
  if (minutes_m==35) client_web.write("<OPTION VALUE=35 SELECTED>35</OPTION>");
  else client_web.write("<OPTION VALUE=35>35</OPTION>");
  if (minutes_m==36) client_web.write("<OPTION VALUE=36 SELECTED>36</OPTION>");
  else client_web.write("<OPTION VALUE=36>36</OPTION>");
  if (minutes_m==37) client_web.write("<OPTION VALUE=37 SELECTED>37</OPTION>");
  else client_web.write("<OPTION VALUE=37>37</OPTION>");
  if (minutes_m==38) client_web.write("<OPTION VALUE=38 SELECTED>38</OPTION>");
  else client_web.write("<OPTION VALUE=38>38</OPTION>");
  if (minutes_m==39) client_web.write("<OPTION VALUE=39 SELECTED>39</OPTION>");
  else client_web.write("<OPTION VALUE=39>39</OPTION>");
  if (minutes_m==40) client_web.write("<OPTION VALUE=40 SELECTED>40</OPTION>");
  else client_web.write("<OPTION VALUE=40>40</OPTION>");
  if (minutes_m==41) client_web.write("<OPTION VALUE=41 SELECTED>41</OPTION>");
  else client_web.write("<OPTION VALUE=41>41</OPTION>");
  if (minutes_m==42) client_web.write("<OPTION VALUE=42 SELECTED>42</OPTION>");
  else client_web.write("<OPTION VALUE=42>42</OPTION>");
  if (minutes_m==43) client_web.write("<OPTION VALUE=43 SELECTED>43</OPTION>");
  else client_web.write("<OPTION VALUE=43>43</OPTION>");
  if (minutes_m==44) client_web.write("<OPTION VALUE=44 SELECTED>44</OPTION>");
  else client_web.write("<OPTION VALUE=44>44</OPTION>");
  if (minutes_m==45) client_web.write("<OPTION VALUE=45 SELECTED>45</OPTION>");
  else client_web.write("<OPTION VALUE=45>45</OPTION>");
  if (minutes_m==46) client_web.write("<OPTION VALUE=46 SELECTED>46</OPTION>");
  else client_web.write("<OPTION VALUE=46>46</OPTION>");
  if (minutes_m==47) client_web.write("<OPTION VALUE=47 SELECTED>47</OPTION>");
  else client_web.write("<OPTION VALUE=47>47</OPTION>");
  if (minutes_m==48) client_web.write("<OPTION VALUE=48 SELECTED>48</OPTION>");
  else client_web.write("<OPTION VALUE=48>48</OPTION>");
  if (minutes_m==49) client_web.write("<OPTION VALUE=49 SELECTED>49</OPTION>");
  else client_web.write("<OPTION VALUE=49>49</OPTION>");
  if (minutes_m==50) client_web.write("<OPTION VALUE=50 SELECTED>50</OPTION>");
  else client_web.write("<OPTION VALUE=50>50</OPTION>");
  if (minutes_m==51) client_web.write("<OPTION VALUE=51 SELECTED>51</OPTION>");
  else client_web.write("<OPTION VALUE=51>51</OPTION>");
  if (minutes_m==52) client_web.write("<OPTION VALUE=52 SELECTED>52</OPTION>");
  else client_web.write("<OPTION VALUE=52>52</OPTION>");
  if (minutes_m==53) client_web.write("<OPTION VALUE=53 SELECTED>53</OPTION>");
  else client_web.write("<OPTION VALUE=53>53</OPTION>");
  if (minutes_m==54) client_web.write("<OPTION VALUE=54 SELECTED>54</OPTION>");
  else client_web.write("<OPTION VALUE=54>54</OPTION>");
  if (minutes_m==55) client_web.write("<OPTION VALUE=55 SELECTED>55</OPTION>");
  else client_web.write("<OPTION VALUE=55>55</OPTION>");
  if (minutes_m==56) client_web.write("<OPTION VALUE=56 SELECTED>56</OPTION>");
  else client_web.write("<OPTION VALUE=56>56</OPTION>");
  if (minutes_m==57) client_web.write("<OPTION VALUE=57 SELECTED>57</OPTION>");
  else client_web.write("<OPTION VALUE=57>57</OPTION>");
  if (minutes_m==58) client_web.write("<OPTION VALUE=58 SELECTED>58</OPTION>");
  else client_web.write("<OPTION VALUE=58>58</OPTION>");
  if (minutes_m==59) client_web.write("<OPTION VALUE=59 SELECTED>59</OPTION>");
  else client_web.write("<OPTION VALUE=59>59</OPTION>");
  client_web.write("</SELECT><BR><BR><BR>");
  client_web.write("Date d'arrêt : ");
  // jour d'arrêt
  client_web.write("<SELECT NAME=jour_a>");
  if (jour_a==1) client_web.write("<OPTION VALUE=1 SELECTED>1</OPTION>");
  else client_web.write("<OPTION VALUE=1>1</OPTION>");
  if (jour_a==2) client_web.write("<OPTION VALUE=2 SELECTED>2</OPTION>");
  else client_web.write("<OPTION VALUE=2>2</OPTION>");
  if (jour_a==3) client_web.write("<OPTION VALUE=3 SELECTED>3</OPTION>");
  else client_web.write("<OPTION VALUE=3>3</OPTION>");
  if (jour_a==4) client_web.write("<OPTION VALUE=4 SELECTED>4</OPTION>");
  else client_web.write("<OPTION VALUE=4>4</OPTION>");
  if (jour_a==5) client_web.write("<OPTION VALUE=5 SELECTED>5</OPTION>");
  else client_web.write("<OPTION VALUE=5>5</OPTION>");
  if (jour_a==6) client_web.write("<OPTION VALUE=6 SELECTED>6</OPTION>");
  else client_web.write("<OPTION VALUE=6>6</OPTION>");
  if (jour_a==7) client_web.write("<OPTION VALUE=7 SELECTED>7</OPTION>");
  else client_web.write("<OPTION VALUE=7>7</OPTION>");
  if (jour_a==8) client_web.write("<OPTION VALUE=8 SELECTED>8</OPTION>");
  else client_web.write("<OPTION VALUE=8>8</OPTION>");
  if (jour_a==9) client_web.write("<OPTION VALUE=9 SELECTED>9</OPTION>");
  else client_web.write("<OPTION VALUE=9>9</OPTION>");
  if (jour_a==10) client_web.write("<OPTION VALUE=10 SELECTED>10</OPTION>");
  else client_web.write("<OPTION VALUE=10>10</OPTION>");
  if (jour_a==11) client_web.write("<OPTION VALUE=11 SELECTED>11</OPTION>");
  else client_web.write("<OPTION VALUE=11>11</OPTION>");
  if (jour_a==12) client_web.write("<OPTION VALUE=12 SELECTED>12</OPTION>");
  else client_web.write("<OPTION VALUE=12>12</OPTION>");
  if (jour_a==13) client_web.write("<OPTION VALUE=13 SELECTED>13</OPTION>");
  else client_web.write("<OPTION VALUE=13>13</OPTION>");
  if (jour_a==14) client_web.write("<OPTION VALUE=14 SELECTED>14</OPTION>");
  else client_web.write("<OPTION VALUE=14>14</OPTION>");
  if (jour_a==15) client_web.write("<OPTION VALUE=15 SELECTED>15</OPTION>");
  else client_web.write("<OPTION VALUE=15>15</OPTION>");
  if (jour_a==16) client_web.write("<OPTION VALUE=16 SELECTED>16</OPTION>");
  else client_web.write("<OPTION VALUE=16>16</OPTION>");
  if (jour_a==17) client_web.write("<OPTION VALUE=17 SELECTED>17</OPTION>");
  else client_web.write("<OPTION VALUE=17>17</OPTION>");
  if (jour_a==18) client_web.write("<OPTION VALUE=18 SELECTED>18</OPTION>");
  else client_web.write("<OPTION VALUE=18>18</OPTION>");
  if (jour_a==19) client_web.write("<OPTION VALUE=19 SELECTED>19</OPTION>");
  else client_web.write("<OPTION VALUE=19>19</OPTION>");
  if (jour_a==20) client_web.write("<OPTION VALUE=20 SELECTED>20</OPTION>");
  else client_web.write("<OPTION VALUE=20>20</OPTION>");
  if (jour_a==21) client_web.write("<OPTION VALUE=21 SELECTED>21</OPTION>");
  else client_web.write("<OPTION VALUE=21>21</OPTION>");
  if (jour_a==22) client_web.write("<OPTION VALUE=22 SELECTED>22</OPTION>");
  else client_web.write("<OPTION VALUE=22>22</OPTION>");
  if (jour_a==23) client_web.write("<OPTION VALUE=23 SELECTED>23</OPTION>");
  else client_web.write("<OPTION VALUE=23>23</OPTION>");
  if (jour_a==24) client_web.write("<OPTION VALUE=24 SELECTED>24</OPTION>");
  else client_web.write("<OPTION VALUE=24>24</OPTION>");
  if (jour_a==25) client_web.write("<OPTION VALUE=25 SELECTED>25</OPTION>");
  else client_web.write("<OPTION VALUE=25>25</OPTION>");
  if (jour_a==26) client_web.write("<OPTION VALUE=26 SELECTED>26</OPTION>");
  else client_web.write("<OPTION VALUE=26>26</OPTION>");
  if (jour_a==27) client_web.write("<OPTION VALUE=27 SELECTED>27</OPTION>");
  else client_web.write("<OPTION VALUE=27>27</OPTION>");
  if (jour_a==28) client_web.write("<OPTION VALUE=28 SELECTED>28</OPTION>");
  else client_web.write("<OPTION VALUE=28>28</OPTION>");
  if (jour_a==29) client_web.write("<OPTION VALUE=29 SELECTED>29</OPTION>");
  else client_web.write("<OPTION VALUE=29>29</OPTION>");
  if (jour_a==30) client_web.write("<OPTION VALUE=30 SELECTED>30</OPTION>");
  else client_web.write("<OPTION VALUE=30>30</OPTION>");
  if (jour_a==31) client_web.write("<OPTION VALUE=31 SELECTED>31</OPTION>");
  else client_web.write("<OPTION VALUE=31>31</OPTION>");
  client_web.write("</SELECT> ");
  // mois d'arrêt
  client_web.write("<SELECT NAME=mois_a>");
  if (mois_a==0) client_web.write("<OPTION VALUE=0 SELECTED>janvier</OPTION>");
  else client_web.write("<OPTION VALUE=0>janvier</OPTION>");
  if (mois_a==1) client_web.write("<OPTION VALUE=1 SELECTED>février</OPTION>");
  else client_web.write("<OPTION VALUE=1>février</OPTION>");
  if (mois_a==2) client_web.write("<OPTION VALUE=2 SELECTED>mars</OPTION>");
  else client_web.write("<OPTION VALUE=2>mars</OPTION>");
  if (mois_a==3) client_web.write("<OPTION VALUE=3 SELECTED>avril</OPTION>");
  else client_web.write("<OPTION VALUE=3>avril</OPTION>");
  if (mois_a==4) client_web.write("<OPTION VALUE=4 SELECTED>mai</OPTION>");
  else client_web.write("<OPTION VALUE=4>mai</OPTION>");
  if (mois_a==5) client_web.write("<OPTION VALUE=5 SELECTED>juin</OPTION>");
  else client_web.write("<OPTION VALUE=5>juin</OPTION>");
  if (mois_a==6) client_web.write("<OPTION VALUE=6 SELECTED>juillet</OPTION>");
  else client_web.write("<OPTION VALUE=6>juillet</OPTION>");
  if (mois_a==7) client_web.write("<OPTION VALUE=7 SELECTED>août</OPTION>");
  else client_web.write("<OPTION VALUE=7>août</OPTION>");
  if (mois_a==8) client_web.write("<OPTION VALUE=8 SELECTED>septembre</OPTION>");
  else client_web.write("<OPTION VALUE=8>septembre</OPTION>");
  if (mois_a==9) client_web.write("<OPTION VALUE=9 SELECTED>octobre</OPTION>");
  else client_web.write("<OPTION VALUE=9>octobre</OPTION>");
  if (mois_a==10) client_web.write("<OPTION VALUE=10 SELECTED>novembre</OPTION>");
  else client_web.write("<OPTION VALUE=10>novembre</OPTION>");
  if (mois_a==11) client_web.write("<OPTION VALUE=11 SELECTED>décembre</OPTION>");
  else client_web.write("<OPTION VALUE=11>décembre</OPTION>");
  client_web.write("</SELECT> ");
  // année d'arrêt
  client_web.write("<INPUT TYPE=text NAME=annee_a VALUE=");
  itoa(annee_a,tab_annee,10);
  client_web.write(tab_annee,4);
  client_web.write(" REQUIRED MINLENGTH=4 MAXLENGTH=4 SIZE=2><BR><BR>");
  client_web.write("Heure d'arrêt : ");
  // heures d'arrêt
  client_web.write("<SELECT NAME=heures_a>");
  if (heures_a==0) client_web.write("<OPTION VALUE=0 SELECTED>0</OPTION>");
  else client_web.write("<OPTION VALUE=0>0</OPTION>");
  if (heures_a==1) client_web.write("<OPTION VALUE=1 SELECTED>1</OPTION>");
  else client_web.write("<OPTION VALUE=1>1</OPTION>");
  if (heures_a==2) client_web.write("<OPTION VALUE=2 SELECTED>2</OPTION>");
  else client_web.write("<OPTION VALUE=2>2</OPTION>");
  if (heures_a==3) client_web.write("<OPTION VALUE=3 SELECTED>3</OPTION>");
  else client_web.write("<OPTION VALUE=3>3</OPTION>");
  if (heures_a==4) client_web.write("<OPTION VALUE=4 SELECTED>4</OPTION>");
  else client_web.write("<OPTION VALUE=4>4</OPTION>");
  if (heures_a==5) client_web.write("<OPTION VALUE=5 SELECTED>5</OPTION>");
  else client_web.write("<OPTION VALUE=5>5</OPTION>");
  if (heures_a==6) client_web.write("<OPTION VALUE=6 SELECTED>6</OPTION>");
  else client_web.write("<OPTION VALUE=6>6</OPTION>");
  if (heures_a==7) client_web.write("<OPTION VALUE=7 SELECTED>7</OPTION>");
  else client_web.write("<OPTION VALUE=7>7</OPTION>");
  if (heures_a==8) client_web.write("<OPTION VALUE=8 SELECTED>8</OPTION>");
  else client_web.write("<OPTION VALUE=8>8</OPTION>");
  if (heures_a==9) client_web.write("<OPTION VALUE=9 SELECTED>9</OPTION>");
  else client_web.write("<OPTION VALUE=9>9</OPTION>");
  if (heures_a==10) client_web.write("<OPTION VALUE=10 SELECTED>10</OPTION>");
  else client_web.write("<OPTION VALUE=10>10</OPTION>");
  if (heures_a==11) client_web.write("<OPTION VALUE=11 SELECTED>11</OPTION>");
  else client_web.write("<OPTION VALUE=11>11</OPTION>");
  if (heures_a==12) client_web.write("<OPTION VALUE=12 SELECTED>12</OPTION>");
  else client_web.write("<OPTION VALUE=12>12</OPTION>");
  if (heures_a==13) client_web.write("<OPTION VALUE=13 SELECTED>13</OPTION>");
  else client_web.write("<OPTION VALUE=13>13</OPTION>");
  if (heures_a==14) client_web.write("<OPTION VALUE=14 SELECTED>14</OPTION>");
  else client_web.write("<OPTION VALUE=14>14</OPTION>");
  if (heures_a==15) client_web.write("<OPTION VALUE=15 SELECTED>15</OPTION>");
  else client_web.write("<OPTION VALUE=15>15</OPTION>");
  if (heures_a==16) client_web.write("<OPTION VALUE=16 SELECTED>16</OPTION>");
  else client_web.write("<OPTION VALUE=16>16</OPTION>");
  if (heures_a==17) client_web.write("<OPTION VALUE=17 SELECTED>17</OPTION>");
  else client_web.write("<OPTION VALUE=17>17</OPTION>");
  if (heures_a==18) client_web.write("<OPTION VALUE=18 SELECTED>18</OPTION>");
  else client_web.write("<OPTION VALUE=18>18</OPTION>");
  if (heures_a==19) client_web.write("<OPTION VALUE=19 SELECTED>19</OPTION>");
  else client_web.write("<OPTION VALUE=19>19</OPTION>");
  if (heures_a==20) client_web.write("<OPTION VALUE=20 SELECTED>20</OPTION>");
  else client_web.write("<OPTION VALUE=20>20</OPTION>");
  if (heures_a==21) client_web.write("<OPTION VALUE=21 SELECTED>21</OPTION>");
  else client_web.write("<OPTION VALUE=21>21</OPTION>");
  if (heures_a==22) client_web.write("<OPTION VALUE=22 SELECTED>22</OPTION>");
  else client_web.write("<OPTION VALUE=22>22</OPTION>");
  if (heures_a==23) client_web.write("<OPTION VALUE=23 SELECTED>23</OPTION>");
  else client_web.write("<OPTION VALUE=23>23</OPTION>");
  client_web.write("</SELECT> ");
  // minutes d'arrêt
  client_web.write("<SELECT NAME=minutes_a>");
  if (minutes_a==0) client_web.write("<OPTION VALUE=0 SELECTED>0</OPTION>");
  else client_web.write("<OPTION VALUE=0>0</OPTION>");
  if (minutes_a==1) client_web.write("<OPTION VALUE=1 SELECTED>1</OPTION>");
  else client_web.write("<OPTION VALUE=1>1</OPTION>");
  if (minutes_a==2) client_web.write("<OPTION VALUE=2 SELECTED>2</OPTION>");
  else client_web.write("<OPTION VALUE=2>2</OPTION>");
  if (minutes_a==3) client_web.write("<OPTION VALUE=3 SELECTED>3</OPTION>");
  else client_web.write("<OPTION VALUE=3>3</OPTION>");
  if (minutes_a==4) client_web.write("<OPTION VALUE=4 SELECTED>4</OPTION>");
  else client_web.write("<OPTION VALUE=4>4</OPTION>");
  if (minutes_a==5) client_web.write("<OPTION VALUE=5 SELECTED>5</OPTION>");
  else client_web.write("<OPTION VALUE=5>5</OPTION>");
  if (minutes_a==6) client_web.write("<OPTION VALUE=6 SELECTED>6</OPTION>");
  else client_web.write("<OPTION VALUE=6>6</OPTION>");
  if (minutes_a==7) client_web.write("<OPTION VALUE=7 SELECTED>7</OPTION>");
  else client_web.write("<OPTION VALUE=7>7</OPTION>");
  if (minutes_a==8) client_web.write("<OPTION VALUE=8 SELECTED>8</OPTION>");
  else client_web.write("<OPTION VALUE=8>8</OPTION>");
  if (minutes_a==9) client_web.write("<OPTION VALUE=9 SELECTED>9</OPTION>");
  else client_web.write("<OPTION VALUE=9>9</OPTION>");
  if (minutes_a==10) client_web.write("<OPTION VALUE=10 SELECTED>10</OPTION>");
  else client_web.write("<OPTION VALUE=10>10</OPTION>");
  if (minutes_a==11) client_web.write("<OPTION VALUE=11 SELECTED>11</OPTION>");
  else client_web.write("<OPTION VALUE=11>11</OPTION>");
  if (minutes_a==12) client_web.write("<OPTION VALUE=12 SELECTED>12</OPTION>");
  else client_web.write("<OPTION VALUE=12>12</OPTION>");
  if (minutes_a==13) client_web.write("<OPTION VALUE=13 SELECTED>13</OPTION>");
  else client_web.write("<OPTION VALUE=13>13</OPTION>");
  if (minutes_a==14) client_web.write("<OPTION VALUE=14 SELECTED>14</OPTION>");
  else client_web.write("<OPTION VALUE=14>14</OPTION>");
  if (minutes_a==15) client_web.write("<OPTION VALUE=15 SELECTED>15</OPTION>");
  else client_web.write("<OPTION VALUE=15>15</OPTION>");
  if (minutes_a==16) client_web.write("<OPTION VALUE=16 SELECTED>16</OPTION>");
  else client_web.write("<OPTION VALUE=16>16</OPTION>");
  if (minutes_a==17) client_web.write("<OPTION VALUE=17 SELECTED>17</OPTION>");
  else client_web.write("<OPTION VALUE=17>17</OPTION>");
  if (minutes_a==18) client_web.write("<OPTION VALUE=18 SELECTED>18</OPTION>");
  else client_web.write("<OPTION VALUE=18>18</OPTION>");
  if (minutes_a==19) client_web.write("<OPTION VALUE=19 SELECTED>19</OPTION>");
  else client_web.write("<OPTION VALUE=19>19</OPTION>");
  if (minutes_a==20) client_web.write("<OPTION VALUE=20 SELECTED>20</OPTION>");
  else client_web.write("<OPTION VALUE=20>20</OPTION>");
  if (minutes_a==21) client_web.write("<OPTION VALUE=21 SELECTED>21</OPTION>");
  else client_web.write("<OPTION VALUE=21>21</OPTION>");
  if (minutes_a==22) client_web.write("<OPTION VALUE=22 SELECTED>22</OPTION>");
  else client_web.write("<OPTION VALUE=22>22</OPTION>");
  if (minutes_a==23) client_web.write("<OPTION VALUE=23 SELECTED>23</OPTION>");
  else client_web.write("<OPTION VALUE=23>23</OPTION>");
  if (minutes_a==24) client_web.write("<OPTION VALUE=24 SELECTED>24</OPTION>");
  else client_web.write("<OPTION VALUE=24>24</OPTION>");
  if (minutes_a==25) client_web.write("<OPTION VALUE=25 SELECTED>25</OPTION>");
  else client_web.write("<OPTION VALUE=25>25</OPTION>");
  if (minutes_a==26) client_web.write("<OPTION VALUE=26 SELECTED>26</OPTION>");
  else client_web.write("<OPTION VALUE=26>26</OPTION>");
  if (minutes_a==27) client_web.write("<OPTION VALUE=27 SELECTED>27</OPTION>");
  else client_web.write("<OPTION VALUE=27>27</OPTION>");
  if (minutes_a==28) client_web.write("<OPTION VALUE=28 SELECTED>28</OPTION>");
  else client_web.write("<OPTION VALUE=28>28</OPTION>");
  if (minutes_a==29) client_web.write("<OPTION VALUE=29 SELECTED>29</OPTION>");
  else client_web.write("<OPTION VALUE=29>29</OPTION>");
  if (minutes_a==30) client_web.write("<OPTION VALUE=30 SELECTED>30</OPTION>");
  else client_web.write("<OPTION VALUE=30>30</OPTION>");
  if (minutes_a==31) client_web.write("<OPTION VALUE=31 SELECTED>31</OPTION>");
  else client_web.write("<OPTION VALUE=31>31</OPTION>");
  if (minutes_a==32) client_web.write("<OPTION VALUE=32 SELECTED>32</OPTION>");
  else client_web.write("<OPTION VALUE=32>32</OPTION>");
  if (minutes_a==33) client_web.write("<OPTION VALUE=33 SELECTED>33</OPTION>");
  else client_web.write("<OPTION VALUE=33>33</OPTION>");
  if (minutes_a==34) client_web.write("<OPTION VALUE=34 SELECTED>34</OPTION>");
  else client_web.write("<OPTION VALUE=34>34</OPTION>");
  if (minutes_a==35) client_web.write("<OPTION VALUE=35 SELECTED>35</OPTION>");
  else client_web.write("<OPTION VALUE=35>35</OPTION>");
  if (minutes_a==36) client_web.write("<OPTION VALUE=36 SELECTED>36</OPTION>");
  else client_web.write("<OPTION VALUE=36>36</OPTION>");
  if (minutes_a==37) client_web.write("<OPTION VALUE=37 SELECTED>37</OPTION>");
  else client_web.write("<OPTION VALUE=37>37</OPTION>");
  if (minutes_a==38) client_web.write("<OPTION VALUE=38 SELECTED>38</OPTION>");
  else client_web.write("<OPTION VALUE=38>38</OPTION>");
  if (minutes_a==39) client_web.write("<OPTION VALUE=39 SELECTED>39</OPTION>");
  else client_web.write("<OPTION VALUE=39>39</OPTION>");
  if (minutes_a==40) client_web.write("<OPTION VALUE=40 SELECTED>40</OPTION>");
  else client_web.write("<OPTION VALUE=40>40</OPTION>");
  if (minutes_a==41) client_web.write("<OPTION VALUE=41 SELECTED>41</OPTION>");
  else client_web.write("<OPTION VALUE=41>41</OPTION>");
  if (minutes_a==42) client_web.write("<OPTION VALUE=42 SELECTED>42</OPTION>");
  else client_web.write("<OPTION VALUE=42>42</OPTION>");
  if (minutes_a==43) client_web.write("<OPTION VALUE=43 SELECTED>43</OPTION>");
  else client_web.write("<OPTION VALUE=43>43</OPTION>");
  if (minutes_a==44) client_web.write("<OPTION VALUE=44 SELECTED>44</OPTION>");
  else client_web.write("<OPTION VALUE=44>44</OPTION>");
  if (minutes_a==45) client_web.write("<OPTION VALUE=45 SELECTED>45</OPTION>");
  else client_web.write("<OPTION VALUE=45>45</OPTION>");
  if (minutes_a==46) client_web.write("<OPTION VALUE=46 SELECTED>46</OPTION>");
  else client_web.write("<OPTION VALUE=46>46</OPTION>");
  if (minutes_a==47) client_web.write("<OPTION VALUE=47 SELECTED>47</OPTION>");
  else client_web.write("<OPTION VALUE=47>47</OPTION>");
  if (minutes_a==48) client_web.write("<OPTION VALUE=48 SELECTED>48</OPTION>");
  else client_web.write("<OPTION VALUE=48>48</OPTION>");
  if (minutes_a==49) client_web.write("<OPTION VALUE=49 SELECTED>49</OPTION>");
  else client_web.write("<OPTION VALUE=49>49</OPTION>");
  if (minutes_a==50) client_web.write("<OPTION VALUE=50 SELECTED>50</OPTION>");
  else client_web.write("<OPTION VALUE=50>50</OPTION>");
  if (minutes_a==51) client_web.write("<OPTION VALUE=51 SELECTED>51</OPTION>");
  else client_web.write("<OPTION VALUE=51>51</OPTION>");
  if (minutes_a==52) client_web.write("<OPTION VALUE=52 SELECTED>52</OPTION>");
  else client_web.write("<OPTION VALUE=52>52</OPTION>");
  if (minutes_a==53) client_web.write("<OPTION VALUE=53 SELECTED>53</OPTION>");
  else client_web.write("<OPTION VALUE=53>53</OPTION>");
  if (minutes_a==54) client_web.write("<OPTION VALUE=54 SELECTED>54</OPTION>");
  else client_web.write("<OPTION VALUE=54>54</OPTION>");
  if (minutes_a==55) client_web.write("<OPTION VALUE=55 SELECTED>55</OPTION>");
  else client_web.write("<OPTION VALUE=55>55</OPTION>");
  if (minutes_a==56) client_web.write("<OPTION VALUE=56 SELECTED>56</OPTION>");
  else client_web.write("<OPTION VALUE=56>56</OPTION>");
  if (minutes_a==57) client_web.write("<OPTION VALUE=57 SELECTED>57</OPTION>");
  else client_web.write("<OPTION VALUE=57>57</OPTION>");
  if (minutes_a==58) client_web.write("<OPTION VALUE=58 SELECTED>58</OPTION>");
  else client_web.write("<OPTION VALUE=58>58</OPTION>");
  if (minutes_a==59) client_web.write("<OPTION VALUE=59 SELECTED>59</OPTION>");
  else client_web.write("<OPTION VALUE=59>59</OPTION>");
  client_web.write("</SELECT><BR><BR><BR>");
  client_web.write("<INPUT TYPE=submit VALUE=Valider>");
  client_web.write("</FORM>");
  client_web.write("</FONT>");
  client_web.write("</CENTER>");
  client_web.write("</BODY>");
  client_web.write("</HTML>");
  }

void setup()
  {
  pinMode(relais,OUTPUT);
  digitalWrite(relais,HIGH);
  // WiFi.mode(WIFI_AP);                        // Access Point mode (box)
  // WiFi.softAPConfig(ip,passerelle,masque);
  // WiFi.softAP(nom_wifi,mdp_wifi,1,false,8);  // channel (1 to 13, default = 1), ssid_hidden (true or false, default = false), max_connection (0 to 8, default = 4)
  // WiFi.setOutputPower(20.5);                 // puissance d'émission (0 à 20.5 dBm, -3 dBm pour une puissance divisée par 2, +3 dBm pour une puissance multipliée par 2)
  WiFi.mode(WIFI_STA);
  WiFi.config(ip,passerelle,masque,dns);
  WiFi.begin(nom_wifi,mdp_wifi);
  Serial.begin(9600);
  while (Serial.available()>0) Serial.read();
  Serial.write(13);
  Serial.write(10);
  Serial.write("Numéro de série de l'ESP8266 : ");
  Serial.println(ESP.getChipId());
  Serial.write("Fréquence CPU (MHz) : ");
  Serial.println(ESP.getCpuFreqMHz());
  Serial.write("Fréquence mémoire flash (MHz) : ");
  Serial.println(ESP.getFlashChipSpeed()/1000000);
  Serial.write("Capacité mémoire flash (octets) : ");
  Serial.println(ESP.getFlashChipRealSize());
  Serial.write("Mémoire flash utilisée (octets) : ");
  Serial.println(ESP.getSketchSize());
  Serial.write("Mémoire flash disponible (octets) : ");
  Serial.println(ESP.getFreeSketchSpace());
  Serial.write("Connexion au réseau wifi");
  while (WiFi.status()!=WL_CONNECTED)
    {
    Serial.write('.');
    delayMilliseconds(100);
    }
  Serial.write(13);
  Serial.write(10);
  Serial.write("Connecté au réseau wifi !");
  Serial.write(13);
  Serial.write(10);
  Serial.write("Nom du réseau : ");
  Serial.println(WiFi.SSID());
  Serial.write("Force du signal : ");
  Serial.print(WiFi.RSSI());  // Received Signal Strength Indication
  Serial.write(" dBm");       // dBmW, 0 dBm = puissance max. (1 mW)
  Serial.write(13);
  Serial.write(10);
  Serial.write("Adresse MAC : ");
  Serial.println(WiFi.macAddress());
  Serial.write("Adresse IP : ");
  Serial.println(WiFi.localIP());
  Serial.write("Masque de sous-réseau : ");
  Serial.println(WiFi.subnetMask());
  Serial.write("Passerelle : ");
  Serial.println(WiFi.gatewayIP());
  Serial.write("Serveur DNS : ");
  Serial.println(WiFi.dnsIP());
  ArduinoOTA.setHostname(nom_ota);
  ArduinoOTA.setPassword(mdp_ota);
  ArduinoOTA.begin();
  Serial.write("OTA démarré !");
  Serial.write(13);
  Serial.write(10);
  serveur_web.begin();
  Serial.write("Serveur web démarré !");
  Serial.write(13);
  Serial.write(10);
  client_ntp.begin();
  Serial.write("Client NTP démarré !");
  Serial.write(13);
  Serial.write(10);
  }

void loop()
  {
  unsigned char car=0,i=0,requete_client[256],j=0,texte[5];
  
  ArduinoOTA.handle();
  client_web=serveur_web.available();
  if (client_web)
    {
    delayMilliseconds(100);
    Serial.write("Client connecté !");
    Serial.write(13);
    Serial.write(10);
    // jour de marche
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) jour_m=atoi(texte);
      else jour_m=1;
      }
    // mois de marche
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) mois_m=atoi(texte);
      else mois_m=0;
      }
    // année de marche
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<4)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) annee_m=atoi(texte);
      else annee_m=1;
      }
    // heures de marche
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) heures_m=atoi(texte);
      else heures_m=1;
      }
    // minutes de marche
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) minutes_m=atoi(texte);
      else minutes_m=1;
      }
    // jour d'arrêt
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) jour_a=atoi(texte);
      else jour_a=1;
      }
    // mois d'arrêt
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) mois_a=atoi(texte);
      else mois_a=0;
      }
    // année d'arrêt
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<4)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) annee_a=atoi(texte);
      else annee_a=1;
      }
    // heures d'arrêt
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while ((car!='&') && (car!=13))
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if ((car!='&') && (j<2)) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) heures_a=atoi(texte);
      else heures_a=1;
      }
    // minutes d'arrêt
    while ((car!='=') && (car!=13))
      {
      car=client_web.read();
      if ((car!=13) && (i<255)) requete_client[i++]=car;
      }
    if (car=='=')
      {
      j=0;
      while (car!=13)
        {
        car=client_web.read();
        if (car!=13)
          {
          if (i<255) requete_client[i++]=car;
          if (j<2) texte[j++]=car;
          }
        }
      texte[j]=0;
      if (texte[0]!=0) minutes_a=atoi(texte);
      else minutes_a=1;
      }
    while (client_web.available()>0) client_web.read();
    requete_client[i]=0;
    if (requete_client[0]!=0)
      {
      Serial.write(requete_client,strlen(requete_client));
      Serial.write(13);
      Serial.write(10);
      }
    reponse_serveur();
    delayMilliseconds(100);
    client_web.stop();
    if ((jour==jour_m) && (mois==mois_m) && (annee==annee_m) && (heures==heures_m) && (minutes==minutes_m)) digitalWrite(relais,LOW);
    if ((jour==jour_a) && (mois==mois_a) && (annee==annee_a) && (heures==heures_a) && (minutes==minutes_a)) digitalWrite(relais,HIGH);
    }
  }

N'oubliez pas de modifier les paramètres en fonction de votre réseau !

L'ESP-01 ne possède que quatre E/S : GPIO0, GPIO1 (TX), GPIO2 et GPIO3 (RX). A la mise sous tension, l'interrupteur permet de sélectionner le mode UART pour téléverser votre programme en mémoire flash (GPIO0 = 0) ou le mode PROG pour exécuter votre programme (GPIO0 = 1). Il faut malheureusement débrancher et rebrancher le convertisseur USB - RS-232 après chaque changement, car il n'y a pas de bouton-poussoir reset.





* 1 ki (kilo informatique) = 1024 et non pas 1000, donc 1 kio = 1024 octets et 16 kio = 16384 octets.



Haut de page