{"id":1705,"date":"2018-12-13T15:16:40","date_gmt":"2018-12-13T20:16:40","guid":{"rendered":"https:\/\/espacerm.com\/webgen\/?page_id=1705"},"modified":"2019-03-15T20:27:41","modified_gmt":"2019-03-16T01:27:41","slug":"linterface-bluetooth-du-declencheur-de-relais","status":"publish","type":"page","link":"https:\/\/espacerm.com\/webgen\/linterface-bluetooth-du-declencheur-de-relais\/","title":{"rendered":"L\u2019interface BLUETOOTH du d\u00e9clencheur de relais ( 1 de 2 )"},"content":{"rendered":"\n<p>Interface utilisateur pour afficher des donn\u00e9es, modifier des param\u00e8tres et passer des commandes. Cette interface demande l&rsquo;installation d&rsquo;une application sur l&rsquo;unit\u00e9 du client (t\u00e9l\u00e9phone ou tablette). L&rsquo;interface propos\u00e9e fonctionne que sur ANDROID.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"1024\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-984x1024.jpg\" alt=\"\" class=\"wp-image-2311\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-984x1024.jpg 984w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-288x300.jpg 288w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-768x799.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a.jpg 1200w\" sizes=\"(max-width: 984px) 100vw, 984px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Mode <\/strong>BLUETOOTH<\/p>\n\n\n\n<p>La communication BLUETOOTH se fait directement entre le t\u00e9l\u00e9phone intelligent ou la tablette et le ESP32 sans interm\u00e9diaire. <\/p>\n\n\n\n<p>Cette interface est aussi compatible aux circuits Arduino et autres circuits semblables. Il suffit d&rsquo;adapter le programme du ESP32 au circuit souhait\u00e9.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Interface avec un programme sp\u00e9cifique \u00e0 installer sur l&rsquo;unit\u00e9 du client<\/h4>\n\n\n\n<p>L&rsquo;avantage de cette approche est que le programme d&rsquo;interface client prend relativement peu de place dans le ESP32. Avec la version WEB, comme la majeure partie du programme d&rsquo;interface r\u00e9side sur le ESP32, nous sommes tr\u00e8s restreints par sa m\u00e9moire. Pour la version avec programme sp\u00e9cifique, la majeure partie du traitement se fait dans l&rsquo;unit\u00e9 du client. Ceci offre beaucoup plus d&rsquo;opportunit\u00e9s. En plus de la m\u00e9moire plus grande, le programme r\u00e9sidant sur l&rsquo;unit\u00e9 du client peut acc\u00e9der \u00e0 pratiquement toutes les possibilit\u00e9s qu&rsquo;offre l&rsquo;unit\u00e9 du client ( grande capacit\u00e9 de traitement, internet, cam\u00e9ra, son, microphone &#8230; ).<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">MIT app inventor2, l&rsquo;outil de d\u00e9veloppement de programme<\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/designer_03a.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"532\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/designer_03a-1024x532.jpg\" alt=\"\" class=\"wp-image-2419\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/designer_03a-1024x532.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/designer_03a-300x156.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/designer_03a-768x399.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/designer_03a.jpg 1914w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Cliquez sur les images pour les agrandir <\/figcaption><\/figure>\n\n\n\n<p>Avec l&rsquo;outil WEB <a rel=\"noreferrer noopener\" aria-label=\"Avec l'outil WEB MIT app inventor2, il est relativement facile de cr\u00e9er une application sur mesure.&nbsp; (ouverture dans un nouvel onglet)\" href=\"http:\/\/appinventor.mit.edu\/explore\/\" target=\"_blank\">MIT app inventor2<\/a>, il est relativement facile de cr\u00e9er une application ANDROID sur mesure.&nbsp; Pas de lignes de code \u00e0 programmer. L&rsquo;application se monte comme un jeu de blocs.<\/p>\n\n\n\n<p><strong>L&rsquo;\u00e9diteur de blocs<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/editeur-de-blocs_03b.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"545\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/editeur-de-blocs_03b-1024x545.jpg\" alt=\"\" class=\"wp-image-2421\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/editeur-de-blocs_03b-1024x545.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/editeur-de-blocs_03b-300x160.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/editeur-de-blocs_03b-768x409.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/editeur-de-blocs_03b.jpg 1913w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Exemple<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/exemple_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/exemple_03-1024x258.jpg\" alt=\"\" class=\"wp-image-2206\" width=\"850\" height=\"214\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/exemple_03-1024x258.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/exemple_03-300x76.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/exemple_03-768x193.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/exemple_03.jpg 1259w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/a><\/figure>\n\n\n\n<p>Pour avoir un bon aper\u00e7u du fonctionnement de MIT app Inventor, je vous propose de visionner ce court vid\u00e9o&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"How To Build Custom Android App for your Arduino Project using MIT App Inventor\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/o-YVvxYiSuk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">LE PROGRAMME D\u00c9CLENCHEUR DE RELAIS<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Programme source \u00e0 importer dans MIT app inventor<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/rcepmorel\/Declencheur_de_relais_Comm_Bluetooth_01\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (ouverture dans un nouvel onglet)\">https:\/\/github.com\/rcepmorel\/Declencheur_de_relais_Comm_Bluetooth_01<\/a><\/p>\n\n\n\n<ul><li> T\u00e9l\u00e9charger le fichier : DeclencheurDeRelais_V1_0.aia<\/li><li> Apr\u00e8s l&rsquo;importation dans  MIT app inventor, s&rsquo;assurer d&rsquo;avoir \u00abFran\u00e7ais\u00bb comme langue s\u00e9lectionn\u00e9e <\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"826\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prog_D_R_L_03b.jpg\" alt=\"\" class=\"wp-image-2491\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prog_D_R_L_03b.jpg 595w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prog_D_R_L_03b-216x300.jpg 216w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">La fen\u00eatre utilisateur<\/h2>\n\n\n\n<p>Chaque \u00e9l\u00e9ment de la page porte un nom, ceci permet d&rsquo;interagir individuellement avec chaque item. Chaque \u00e9l\u00e9ment, incluant les \u00e9tiquettes (lable), peut \u00eatre modifi\u00e9 en cours de programme.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_Details_b__03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_Details_b__03-1024x871.jpg\" alt=\"\" class=\"wp-image-2258\" width=\"669\" height=\"569\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_Details_b__03-1024x871.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_Details_b__03-300x255.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_Details_b__03-768x653.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_Details_b__03.jpg 1595w\" sizes=\"(max-width: 669px) 100vw, 669px\" \/><\/a><\/figure>\n\n\n\n<p><br><strong>LES BLOCS<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">D\u00e9finition des variables<\/h4>\n\n\n\n<p>D\u00e9finition des variables qui vont servir aux traitements de l&rsquo;information.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/variables_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/variables_03-1024x203.jpg\" alt=\"\" class=\"wp-image-2457\" width=\"849\" height=\"167\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/variables_03-1024x203.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/variables_03-300x59.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/variables_03-768x152.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/variables_03.jpg 1180w\" sizes=\"(max-width: 849px) 100vw, 849px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Processus principal<\/h4>\n\n\n\n<p>Processus qui roule \u00e0 intervalle r\u00e9gulier. Il valide l&rsquo;\u00e9tat de la connexion BLUETOOTH, d\u00e9marre la phase d&rsquo;initialisation de l&rsquo;interface et surveille la r\u00e9ception de donn\u00e9es.<\/p>\n\n\n\n<p>Au premier d\u00e9marrage, comme le BLUETOOTH n&rsquo;est pas connect\u00e9, il appelle la proc\u00e9dure \u00abprVousEtesD\u00e9Connect\u00e9\u00bb.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-vous-etes-deconnecte_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-vous-etes-deconnecte_01-1024x405.jpg\" alt=\"\" class=\"wp-image-1809\" width=\"874\" height=\"346\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-vous-etes-deconnecte_01-1024x405.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-vous-etes-deconnecte_01-300x119.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-vous-etes-deconnecte_01-768x303.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-vous-etes-deconnecte_01.jpg 1111w\" sizes=\"(max-width: 874px) 100vw, 874px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Affichage du message \u00ab Vous \u00eates d\u00e9connect\u00e9 \u00bb<\/h4>\n\n\n\n<p>Ex\u00e9cute l&rsquo;affichage \u00ab VOUS \u00caTES D\u00c9CONNECT\u00c9 \u00bb, met l&rsquo;arri\u00e8re-plan de ce message en rouge. Rends le texte de \u00abbtConnect\u00e9\u00bb invisible avec un arri\u00e8re-plan en gris.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnect\u00e9.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnect\u00e9.jpg\" alt=\"\" class=\"wp-image-2095\" width=\"814\" height=\"206\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnect\u00e9.jpg 599w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnect\u00e9-300x76.jpg 300w\" sizes=\"(max-width: 814px) 100vw, 814px\" \/><\/a><\/figure>\n\n\n\n<p>Le texte en rouge sur les boutons indique qu&rsquo;ils sont inactifs. Les boutons sont mis \u00e0 non activ\u00e9 au d\u00e9part dans l&rsquo;interface Designer de MIT app Inventor.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_00-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_00-1-853x1024.jpg\" alt=\"\" class=\"wp-image-1751\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_00-1-853x1024.jpg 853w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_00-1-250x300.jpg 250w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_00-1-768x922.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/declencheur-USB_00-1.jpg 1198w\" sizes=\"(max-width: 853px) 100vw, 853px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Screen1.Erreur survenue<\/h4>\n\n\n\n<p>Un processus surveille en permanence l&rsquo;arriv\u00e9e d&rsquo;erreur et l&rsquo;affiche sous l&rsquo;\u00e9tiquette lbMessageDErreur et met l&rsquo;arri\u00e8re-plan du message en rouge.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/screen1_erreur_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"649\" height=\"307\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/screen1_erreur_03.jpg\" alt=\"\" class=\"wp-image-2097\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/screen1_erreur_03.jpg 649w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/screen1_erreur_03-300x142.jpg 300w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Appel de l&rsquo;affichage des p\u00e9riph\u00e9riques BLUETOOTH&nbsp;<\/strong><\/p>\n\n\n\n<p>La liste des p\u00e9riph\u00e9riques BLUETOOTH d\u00e9j\u00e0 associ\u00e9s au t\u00e9l\u00e9phone ou \u00e0 la tablette s&rsquo;affiche en cliquant sur l&rsquo;image \u00abCONNECT\u00bb. Cette image est li\u00e9e \u00e0 l&rsquo;action ci-dessous.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSelectionDuPeripheriqueBluetooth_AVP_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSelectionDuPeripheriqueBluetooth_AVP_01.jpg\" alt=\"\" class=\"wp-image-1983\" width=\"775\" height=\"66\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSelectionDuPeripheriqueBluetooth_AVP_01.jpg 874w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSelectionDuPeripheriqueBluetooth_AVP_01-300x26.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSelectionDuPeripheriqueBluetooth_AVP_01-768x66.jpg 768w\" sizes=\"(max-width: 775px) 100vw, 775px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"249\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/liste-des-peripheriques_01-1024x249.jpg\" alt=\"\" class=\"wp-image-1909\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/liste-des-peripheriques_01-1024x249.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/liste-des-peripheriques_01-300x73.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/liste-des-peripheriques_01-768x187.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/liste-des-peripheriques_01.jpg 1195w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>S\u00e9lection d&rsquo;un p\u00e9riph\u00e9rique<\/strong><\/p>\n\n\n\n<p>Le clic d&rsquo;une adresse BLUETOOTH dans la liste en fait la s\u00e9lection. Le processus d&rsquo;effacement des messages d&rsquo;erreur est aussi lanc\u00e9.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSlctBlueApres_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSlctBlueApres_03-1024x103.jpg\" alt=\"\" class=\"wp-image-2100\" width=\"798\" height=\"80\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSlctBlueApres_03-1024x103.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSlctBlueApres_03-300x30.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSlctBlueApres_03-768x77.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/slSlctBlueApres_03.jpg 1312w\" sizes=\"(max-width: 798px) 100vw, 798px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Efface les messages d&rsquo;erreur<\/h4>\n\n\n\n<p>Vide le texte et met un fond blanc<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prEffaceMessageErreur_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prEffaceMessageErreur_03.jpg\" alt=\"\" class=\"wp-image-2101\" width=\"627\" height=\"122\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prEffaceMessageErreur_03.jpg 480w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prEffaceMessageErreur_03-300x59.jpg 300w\" sizes=\"(max-width: 627px) 100vw, 627px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Message d&rsquo;erreur BLUETOOTH<\/h4>\n\n\n\n<p>En cas d&rsquo;erreur sur la connexion BLUETOOTH un message s&rsquo;affiche, ceci au cas o\u00f9 l&rsquo;autre processus n&rsquo;aurait pas d\u00e9tect\u00e9 l&rsquo;erreur.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bluetooth_erreur_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bluetooth_erreur_03.jpg\" alt=\"\" class=\"wp-image-2129\" width=\"756\" height=\"204\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bluetooth_erreur_03.jpg 636w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bluetooth_erreur_03-300x81.jpg 300w\" sizes=\"(max-width: 756px) 100vw, 756px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Affichage du message \u00abVOUS \u00caTES CONNECT\u00c9\u00bb<\/h4>\n\n\n\n<p>Si l&rsquo;op\u00e9ration se passe bien le processus principal appel la proc\u00e9dure \u00abprVousEtesConnect\u00e9\u00bb<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_vous-etes-connecte_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_vous-etes-connecte_01-1024x405.jpg\" alt=\"\" class=\"wp-image-1811\" width=\"739\" height=\"292\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_vous-etes-connecte_01-1024x405.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_vous-etes-connecte_01-300x119.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_vous-etes-connecte_01-768x304.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_vous-etes-connecte_01.jpg 1112w\" sizes=\"(max-width: 739px) 100vw, 739px\" \/><\/a><\/figure>\n\n\n\n<p><br>La proc\u00e9dure \u00abprVousEtesConnect\u00e9\u00bb ex\u00e9cute l&rsquo;affichage \u00ab VOUS \u00caTES CONNECT\u00c9 \u00bb, met l&rsquo;arri\u00e8re-plan de ce message en vert. Change le texte de&nbsp; \u00abVOUS \u00caTES D\u00c9CONNECT\u00c9\u00bb pour \u00abAPPUYER POUR D\u00c9CONNECTER\u00bb et met son arri\u00e8re-plan en gris.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnecte_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnecte_03.jpg\" alt=\"\" class=\"wp-image-2103\" width=\"736\" height=\"147\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnecte_03.jpg 739w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prVousEtesConnecte_03-300x60.jpg 300w\" sizes=\"(max-width: 736px) 100vw, 736px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Premi\u00e8re connexion<\/h4>\n\n\n\n<p>Par la suite, comme c&rsquo;est la premi\u00e8re connexion, le processus principal appel la proc\u00e9dure \u00abprPremiereConnexion\u00bb. \u00abvrPremi\u00e8reConnexion\u00bb a \u00e9t\u00e9 initialis\u00e9 \u00e0 \u00abvrai\u00bb lors de sa cr\u00e9ation.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-premiere-connexion_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-premiere-connexion_01-1024x408.jpg\" alt=\"\" class=\"wp-image-1813\" width=\"744\" height=\"296\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-premiere-connexion_01-1024x408.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-premiere-connexion_01-300x119.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-premiere-connexion_01-768x306.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp-premiere-connexion_01.jpg 1108w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prPremiereConnexion_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prPremiereConnexion_03.jpg\" alt=\"\" class=\"wp-image-2106\" width=\"807\" height=\"303\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prPremiereConnexion_03.jpg 802w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prPremiereConnexion_03-300x113.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prPremiereConnexion_03-768x289.jpg 768w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><\/figure>\n\n\n\n<p>L&rsquo;effacement des messages d&rsquo;erreur est ex\u00e9cut\u00e9.<\/p>\n\n\n\n<p>La proc\u00e9dure \u00abprD\u00e9sactiveBoutons\u00bb est appel\u00e9e. La couleur du texte des boutons passe au cyan.<\/p>\n\n\n\n<p> Le texte du bouton \u00abArr\u00eater\u00bb est mis en noir et il est inactiv\u00e9. Ce bouton est associ\u00e9 \u00e0 l&rsquo;intervallom\u00e8tre. Il n&rsquo;est op\u00e9rationnel que lorsque la phase  d&rsquo;initialisation est termin\u00e9e et que le bouton \u00abD\u00e9marrer\u00bb est  activ\u00e9.<\/p>\n\n\n\n<p>La proc\u00e9dure \u00abprPremiereConnexion\u00bb envoie une commande \u00abINIT,I\u00bb vers le ESP32. Une r\u00e9ponse est attendue en provenance du ESP32 suite \u00e0 cette commande. Comme r\u00e9ponse, le ESP32 enverra les valeurs configur\u00e9es lors de sa derni\u00e8re utilisation. Ces valeurs vont permettre de remplir les champs de l&rsquo;interface utilisateur.<\/p>\n\n\n\n<p>Un chronom\u00e8tre est d\u00e9marr\u00e9. Si aucune r\u00e9ponse n&rsquo;est re\u00e7ue, \u00e0 l&rsquo;expiration du d\u00e9lai de r\u00e9ception \u00abChronoCmdD\u00e9sactiv\u00e9.Chronom\u00e8tre\u00bb s&rsquo;ex\u00e9cute. Un message d&rsquo;erreur est affich\u00e9 et les boutons sont r\u00e9activ\u00e9s. Le d\u00e9lai configur\u00e9 est 10 secondes.<\/p>\n\n\n\n<p>La variable \u00abvrPremi\u00e8reConnexion\u00bb est plac\u00e9e \u00e0 faux pour indiquer que la phase premi\u00e8re connexion est pass\u00e9e. <\/p>\n\n\n\n<p>La proc\u00e9dure \u00abztfrequence.RequestFocus\u00bb force le curseur \u00e0 se placer sur la case zone de texte \u00abztfrequence\u00bb qui est \u00e0 droite de l&rsquo;\u00e9tiquette \u00ab\u00c0 toutes les\u00bb. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">D\u00e9sactivation des boutons<\/h4>\n\n\n\n<p>Les boutons sont d\u00e9sactiv\u00e9s pour emp\u00eacher un changement pendant l&rsquo;ex\u00e9cution d&rsquo;une demande de traitement. La couleur cyan signale que les boutons sont temporairement d\u00e9sactiv\u00e9s. <\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bouton-d\u00e9sactiv\u00e9s_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bouton-d\u00e9sactiv\u00e9s_01.jpg\" alt=\"\" class=\"wp-image-1870\" width=\"534\" height=\"298\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bouton-d\u00e9sactiv\u00e9s_01.jpg 664w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/bouton-d\u00e9sactiv\u00e9s_01-300x168.jpg 300w\" sizes=\"(max-width: 534px) 100vw, 534px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">ChronoCmdD\u00e9sactiv\u00e9<\/h4>\n\n\n\n<p>Certaines actions n\u2019ont pas d\u2019impact r\u00e9el \u00e0 ce stade de l\u2019ex\u00e9cution du programme, mais elles en auront ult\u00e9rieurement, car cette routine est exploitable \u00e0 toute \u00e9tape au besoin. Cette remarque s&rsquo;applique \u00e0 toutes les proc\u00e9dures et \u00e0 plusieurs blocs.<\/p>\n\n\n\n<p>Il n&rsquo;y a pas de message d&rsquo;erreur quand la commande Clic est en cours, car il n&rsquo;y a pas de message attendu suite \u00e0 cette commande. Pour toutes autres commandes, un message est affich\u00e9, car il y a expiration du d\u00e9lai d&rsquo;attente d&rsquo;une r\u00e9ponse. Puis, le chronom\u00e8tre est d\u00e9sactiv\u00e9, le statut de vrCmdClicEnCours est mis \u00e0 faux, les variables d&rsquo;octets sont remises \u00e0 z\u00e9ro. Les boutons sont r\u00e9activ\u00e9s.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03.jpg\" alt=\"\" class=\"wp-image-2153\" width=\"793\" height=\"296\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03.jpg 644w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03-300x112.jpg 300w\" sizes=\"(max-width: 793px) 100vw, 793px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Remise \u00e0 z\u00e9ro des variables d&rsquo;octets<\/strong><\/p>\n\n\n\n<p>Les variables d&rsquo;octets sont remises \u00e0 z\u00e9ro, vid\u00e9es afin d&rsquo;\u00eatre pr\u00eates pour de nouveaux \u00e9changes.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/rmz_01-2.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/rmz_01-2.jpg\" alt=\"\" class=\"wp-image-1827\" width=\"540\" height=\"106\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/rmz_01-2.jpg 681w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/rmz_01-2-300x59.jpg 300w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Activation des boutons<\/strong><\/p>\n\n\n\n<p>Les boutons sont mis op\u00e9rationnel. Le texte est affich\u00e9 en vert.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/paActiveBoutons_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/paActiveBoutons_03.jpg\" alt=\"\" class=\"wp-image-2219\" width=\"443\" height=\"244\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/paActiveBoutons_03.jpg 603w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/paActiveBoutons_03-300x165.jpg 300w\" sizes=\"(max-width: 443px) 100vw, 443px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Octets re\u00e7us<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"1024\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-1-984x1024.jpg\" alt=\"\" class=\"wp-image-2314\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-1-984x1024.jpg 984w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-1-288x300.jpg 288w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-1-768x799.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/fen\u00eatre-declencheur_03a-1.jpg 1200w\" sizes=\"(max-width: 984px) 100vw, 984px\" \/><\/a><\/figure>\n\n\n\n<p>\u00c0 la commande \u00abINIT,I\u00bb&nbsp; le programme du ESP32 retourne en r\u00e9ponse une trame de donn\u00e9es. Le processus principal d\u00e9tecte l&rsquo;arriv\u00e9e de donn\u00e9es et appel la proc\u00e9dure \u00abprTaiteOctesRecus\u00bb.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_TraiteOctetsRecu_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"404\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_TraiteOctetsRecu_01-1024x404.jpg\" alt=\"\" class=\"wp-image-1817\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_TraiteOctetsRecu_01-1024x404.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_TraiteOctetsRecu_01-300x118.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_TraiteOctetsRecu_01-768x303.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/pp_TraiteOctetsRecu_01.jpg 1105w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Trame de r\u00e9ponse : [ |DATA|#|#|#|#|#| ]&nbsp; # est un nombre.<\/p>\n\n\n\n<ul><li>Caract\u00e8re de d\u00e9but de trame [<\/li><li>Cha\u00eene de caract\u00e8res : DATA<\/li><li>Voltage de l&rsquo;alimentation<\/li><li>D\u00e9lai de r\u00e9action<\/li><li>Temps actif du relais<\/li><li>D\u00e9lai de retour<\/li><li>Unit\u00e9 de d\u00e9lai de r\u00e9action<\/li><li>Caract\u00e8re de fin de trame ]<\/li><\/ul>\n\n\n\n<p>La proc\u00e9dure commence en effa\u00e7ant les messages d&rsquo;erreurs.<\/p>\n\n\n\n<p>La trame de r\u00e9ponse est compos\u00e9e de 8 segments d&rsquo;information. Ils ne sont pas re\u00e7us obligatoirement en une seule \u00e9tape. Il&nbsp; faut donc accumuler les octets re\u00e7us dans une variable temporaire \u00abvrOctetsRe\u00e7us\u00bb. Afin de suivre les \u00e9changes, le contenu de cette variable est affich\u00e9 sous l&rsquo;\u00e9tiquette \u00ablbMessageDeSuivie\u00bb. La trame se termine par le caract\u00e8re \u00ab]\u00bb. Le processus valide si ce caract\u00e8re est arriv\u00e9, si oui, il valide si le d\u00e9but de la trame commence par \u00ab[\u00bb.&nbsp; Si c&rsquo;est le cas, il lance la proc\u00e9dure \u00abprDiviseOctetsRe\u00e7us\u00bb. <\/p>\n\n\n\n<p>Si le caract\u00e8re de fin est re\u00e7u, mais que le caract\u00e8re de d\u00e9but n&rsquo;est pas \u00ab[\u00bb un message d&rsquo;erreur est affich\u00e9 sous l&rsquo;\u00e9tiquette \u00ablbMessageDErreur\u00bb. Les variables d&rsquo;octets sont vid\u00e9es et les boutons r\u00e9activ\u00e9s.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prOctetsRecus_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prOctetsRecus_03-1024x437.jpg\" alt=\"\" class=\"wp-image-2110\" width=\"915\" height=\"390\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prOctetsRecus_03-1024x437.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prOctetsRecus_03-300x128.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prOctetsRecus_03-768x328.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prOctetsRecus_03.jpg 1190w\" sizes=\"(max-width: 915px) 100vw, 915px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Segmentation de la trame re\u00e7ue<\/h4>\n\n\n\n<p>L&rsquo;information des donn\u00e9es doit \u00eatre extraite de la trame obtenue. Chaque champ d&rsquo;information est s\u00e9par\u00e9 par le caract\u00e8re \u00ab|\u00bb. La fonction \u00abdiviser\u00bb permet de s\u00e9parer chacun des champs et de les mettre comme \u00e9l\u00e9ment d&rsquo;une liste. Chacun des champs de l&rsquo;\u00e9cran utilisateur se remplit automatiquement. Un mouchard affiche la taille de la liste. Il sert lors du d\u00e9veloppement du programme. La ligne \u00abmettre \u00ablbMouchard_01&#8230;.\u00bb est enlev\u00e9e dans la version finale.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prDiviseOctetsRecu_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prDiviseOctetsRecu_03-1024x743.jpg\" alt=\"\" class=\"wp-image-2453\" width=\"926\" height=\"671\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prDiviseOctetsRecu_03-1024x743.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prDiviseOctetsRecu_03-300x218.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prDiviseOctetsRecu_03-768x558.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prDiviseOctetsRecu_03.jpg 1062w\" sizes=\"(max-width: 926px) 100vw, 926px\" \/><\/a><\/figure>\n\n\n\n<p>Le chronom\u00e8tre de commandes d\u00e9sactiv\u00e9es est arr\u00eat\u00e9, les boutons sont r\u00e9activ\u00e9s.<\/p>\n\n\n\n<p><strong>Ajust\u00e9 les \u00e9tiquettes d&rsquo;unit\u00e9 pour le d\u00e9lai de r\u00e9action<\/strong><\/p>\n\n\n\n<p>Le dernier segment re\u00e7u contient 1 ou 0. S&rsquo;il est \u00e9gal \u00e0 1, l&rsquo;unit\u00e9 pour le d\u00e9lai de r\u00e9action est en microseconde, sinon en milliseconde. L&rsquo;instruction \u00abmettre cbUnitUs.V\u00e9rifi\u00e9 \u00e0 vrai\u00bb place le crochet dans la case cbUnitUS. L&rsquo;expression \u00abfaux\u00bb l&rsquo;enl\u00e8ve \u00e9videmment.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prAjusteUniteDelaiDeReaction_01.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prAjusteUniteDelaiDeReaction_01.jpg\" alt=\"\" class=\"wp-image-1828\" width=\"611\" height=\"369\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prAjusteUniteDelaiDeReaction_01.jpg 704w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prAjusteUniteDelaiDeReaction_01-300x181.jpg 300w\" sizes=\"(max-width: 611px) 100vw, 611px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Calcul du temps total de l&rsquo;op\u00e9ration du relais<\/h4>\n\n\n\n<p>En pr\u00e9vision de l&rsquo;op\u00e9ration de l&rsquo;intervallom\u00e8tre, le temps d&rsquo;ex\u00e9cution total de l&rsquo;op\u00e9ration du relais est comptabilis\u00e9. Ce qui comprend, le d\u00e9lai d&rsquo;attente programm\u00e9 avant l&rsquo;op\u00e9ration du relais suite \u00e0 une demande d&rsquo;activation, plus le temps allou\u00e9 \u00e0 l&rsquo;op\u00e9ration du relais lui-m\u00eame, plus un temps d&rsquo;attente \u00e0 la fin avant de redonner le contr\u00f4le \u00e0 la suite du programme.<\/p>\n\n\n\n<p>Le temps total est comptabilis\u00e9 en milliseconde. Le temps inscrit dans la case \u00abd\u00e9lai de r\u00e9action\u00bb doit \u00eatre divis\u00e9 par 1000 si l&rsquo;unit\u00e9 est en microseconde. Ceci donnera sa valeur en milliseconde.<\/p>\n\n\n\n<p>Le r\u00e9sultat du calcul est affich\u00e9 sous l&rsquo;\u00e9tiquette \u00ablbMessageInterv\u00bb.<\/p>\n\n\n\n<p>Ce temps sert aussi au calcul du d\u00e9lai de d\u00e9sactivation des boutons suite \u00e0 une demande d&rsquo;op\u00e9ration du relais.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prCaculTempsTotalRelais_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prCaculTempsTotalRelais_03-1024x302.jpg\" alt=\"\" class=\"wp-image-2135\" width=\"878\" height=\"259\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prCaculTempsTotalRelais_03-1024x302.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prCaculTempsTotalRelais_03-300x88.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prCaculTempsTotalRelais_03-768x226.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prCaculTempsTotalRelais_03.jpg 1192w\" sizes=\"(max-width: 878px) 100vw, 878px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Valide le voltage de la source d&rsquo;alimentation<\/h4>\n\n\n\n<p>Si le voltage de la source d&rsquo;alimentation se situe entre 7 et 7,6 volts, la couleur de fond de l&rsquo;\u00e9tiquette \u00ablbVoltageSrcAlimentation_Lu\u00bb est rose p\u00e2le pour indiquer un niveau moyennement critique. Si ce voltage est sous 7 volts, la couleur est rouge pour indiquer un niveau critique. Autrement, le fond est vert pour signifier un niveau normal.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prValideVoltAlimentation_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prValideVoltAlimentation_03-1024x237.jpg\" alt=\"\" class=\"wp-image-2358\" width=\"902\" height=\"209\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prValideVoltAlimentation_03-1024x237.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prValideVoltAlimentation_03-300x70.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prValideVoltAlimentation_03-768x178.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/prValideVoltAlimentation_03.jpg 1372w\" sizes=\"(max-width: 902px) 100vw, 902px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Changement au niveau de l&rsquo;unit\u00e9 de \u00abD\u00e9lai de r\u00e9action\u00bb<\/strong><\/p>\n\n\n\n<p>Dans la configuration initiale de l&rsquo;interface, l&rsquo;unit\u00e9 pour le d\u00e9lai de r\u00e9action est la milliseconde. Il peut arriver que dans le ESP32, cette unit\u00e9 enregistr\u00e9e dans le EEPROM soit la microseconde, valeur employ\u00e9e par le dernier utilisateur du EPS32. \u00c0 la r\u00e9ception de la trame d&rsquo;initialisation, le programme d\u00e9tectera la diff\u00e9rence et lancera les actions suivantes.<\/p>\n\n\n\n<p>Si la case \u00e0 cocher \u00abcbUnitUs\u00bb est \u00e0 1, \u00abV\u00e9rifi\u00e9\u00bb (\u00abchecked en anglais\u00bb, coch\u00e9, vrai)<\/p>\n\n\n\n<ul><li>D\u00e9marrer le chronom\u00e8tre \u00abChronoCmdD\u00e9sactiv\u00e9\u00bb avec le d\u00e9lai de r\u00e9ception configur\u00e9 pr\u00e9c\u00e9demment et activer le chrono<\/li><li>D\u00e9cocher la case&nbsp;\u00abcbUnitMs\u00bb<\/li><li>Vider les variables d&rsquo;octets<\/li><li>Effacer les messages d&rsquo;erreur<\/li><li>D\u00e9sactiver les boutons<\/li><li>Envoyer au ESP32 la commande \u00abU\u00bb. En r\u00e9ponse, le ESP32 enregistrera la valeur 1 dans le EEPROM et retournera la trame \u00abDATA\u00bb. Le programme principal amorcera le traitement de cette trame comme nous l\u2019avons vu pr\u00e9c\u00e9demment. Les unit\u00e9s s&rsquo;ajusteront dans l&rsquo;interface utilisateur ainsi que le calcul&nbsp;du temps total de l&rsquo;op\u00e9ration du relais.&nbsp;  <\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitUS_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitUS_03.jpg\" alt=\"\" class=\"wp-image-2407\" width=\"885\" height=\"380\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitUS_03.jpg 940w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitUS_03-300x129.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitUS_03-768x330.jpg 768w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><\/a><\/figure>\n\n\n\n<p>Si la case \u00e0 cocher \u00abcbUnitUs\u00bb est non coch\u00e9e et la case \u00abcbUnitMs\u00bb est non coch\u00e9e  alors, <strong>cocher<\/strong> \u00abcbUnitUs\u00bb. <\/p>\n\n\n\n<p>Comme il y a eu un changement sur \u00abcbUnitUs\u00bb \u00e0 non coch\u00e9 et que \u00abcbUnitMs\u00bb est non coch\u00e9, on en d\u00e9duit que cette case a \u00e9t\u00e9 d\u00e9coch\u00e9e par erreur. On la recoche. L&rsquo;unit\u00e9 \u00e9tait d\u00e9j\u00e0 us. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">La phase d&rsquo;initialisation est compl\u00e9t\u00e9e<\/h4>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">ATTENTE D&rsquo;UNE ACTION<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Case \u00e0 cocher \u00abMilliseconde\u00bb<\/h2>\n\n\n\n<p>L&rsquo;utilisateur d\u00e9cide de cocher la case Milliseconde<br><\/p>\n\n\n\n<p>Si la case \u00e0 cocher \u00abcbUnitMs\u00bb est \u00abV\u00e9rifi\u00e9\u00bb (\u00abchecked en anglais\u00bb, coch\u00e9, vrai) <\/p>\n\n\n\n<ul><li>D\u00e9marrer le chronom\u00e8tre \u00abChronoCmdD\u00e9sactiv\u00e9\u00bb avec le d\u00e9lai de r\u00e9ception configur\u00e9 pr\u00e9c\u00e9demment et activer le chrono <\/li><li>D\u00e9cocher la case&nbsp;\u00abcbUnitUs\u00bb<\/li><li>Vider les variables d&rsquo;octets<br><\/li><li>Effacer les messages d&rsquo;erreur  <\/li><li>D\u00e9sactiver les boutons  <\/li><li>Envoyer au ESP32 la commande \u00abM\u00bb. En r\u00e9ponse le ESP32 enregistrera la valeur 0 dans le EEPROM et retournera la trame \u00abDATA\u00bb. Le programme principal amorcera le traitement de cette trame. Les unit\u00e9s s&rsquo;ajusteront dans l&rsquo;interface utilisateur ainsi que le calcul&nbsp;du temps total de l&rsquo;op\u00e9ration du relais.&nbsp; <\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitMs_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitMs_03.jpg\" alt=\"\" class=\"wp-image-2408\" width=\"905\" height=\"389\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitMs_03.jpg 940w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitMs_03-300x129.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/cbUnitMs_03-768x331.jpg 768w\" sizes=\"(max-width: 905px) 100vw, 905px\" \/><\/a><\/figure>\n\n\n\n<p> Si la case chang\u00e9e \u00abcbUnitMs\u00bb est non coch\u00e9e et la case \u00abcbUnitUs\u00bb est non coch\u00e9e alors, <strong>cocher<\/strong> \u00abcbUnitMs\u00bb.  <\/p>\n\n\n\n<p>Comme il y a eu un changement sur \u00abcbUnitMs\u00bb \u00e0 non coch\u00e9 et que \u00abcbUnitUs\u00bb est non coch\u00e9 , on en d\u00e9duit que cette case a \u00e9t\u00e9 d\u00e9coch\u00e9e par erreur. On la recoche. L&rsquo;unit\u00e9 \u00e9tait d\u00e9j\u00e0 ms.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Bouton d&rsquo;activation du relais<\/h2>\n\n\n\n<p>Un clic sur ce bouton<\/p>\n\n\n\n<ul><li>Configure \u00abChronoCmdD\u00e9sactiv\u00e9\u00bb. Le temps du chronom\u00e8tre doit \u00eatre sup\u00e9rieur au temps total de l&rsquo;op\u00e9ration du relais. 1 seconde est ajout\u00e9e<\/li><li> Active le \u00abChronoCmdD\u00e9sactiv\u00e9\u00bb <\/li><li>Efface les messages d&rsquo;erreur<\/li><li>D\u00e9sactive les boutons<\/li><li>Mets \u00e0 \u00abvrai\u00bb la variable \u00abvrCmdClicEncours\u00bb<\/li><li>Envoie la commande \u00abCLIC,D\u00bb au ESP32. <\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btActiveLeRelais_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btActiveLeRelais_03.jpg\" alt=\"\" class=\"wp-image-2117\" width=\"866\" height=\"216\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btActiveLeRelais_03.jpg 942w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btActiveLeRelais_03-300x75.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btActiveLeRelais_03-768x192.jpg 768w\" sizes=\"(max-width: 866px) 100vw, 866px\" \/><\/a><\/figure>\n\n\n\n<p>Aucune r\u00e9ponse n&rsquo;est attendue du ESP32. \u00c0 la fin du d\u00e9lai, \u00abChronoCmdD\u00e9sactiv\u00e9s\u00bb est lanc\u00e9, les boutons sont r\u00e9activ\u00e9s comme vu pr\u00e9c\u00e9demment.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03-1.jpg\" alt=\"\" class=\"wp-image-2229\" width=\"682\" height=\"254\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03-1.jpg 644w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/chronoCmdD\u00e9sactiv\u00e9_03-1-300x112.jpg 300w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Changement dans la zone de texte<\/h2>\n\n\n\n<p>Quand l&rsquo;utilisateur s\u00e9lectionne la zone de texte&nbsp;\u00abTemps actif\u00bb, la couleur de fond du bouton \u00abEnvoie\u00bb passe au jaune. Ceci signale de ne pas oublier de transmettre les changements au ESP32. La couleur de fond repassera au gris seulement apr\u00e8s le clic de ce bouton.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stTempsActif_03-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stTempsActif_03-1.jpg\" alt=\"\" class=\"wp-image-2179\" width=\"500\" height=\"83\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stTempsActif_03-1.jpg 803w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stTempsActif_03-1-300x50.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stTempsActif_03-1-768x127.jpg 768w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/figure>\n\n\n\n<p>Le comportement pour la zone de d\u00e9lai de retour est identique \u00e0 celui de la zone de Temps actif<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ztDelaiDeRetour_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ztDelaiDeRetour_03.jpg\" alt=\"\" class=\"wp-image-2178\" width=\"503\" height=\"83\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ztDelaiDeRetour_03.jpg 803w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ztDelaiDeRetour_03-300x50.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ztDelaiDeRetour_03-768x128.jpg 768w\" sizes=\"(max-width: 503px) 100vw, 503px\" \/><\/a><\/figure>\n\n\n\n<p>Pour la zone de texte D\u00e9lai de r\u00e9action, il y a un petit ajout. Lors du d\u00e9marrage de l&rsquo;application, le curseur se place sur la premi\u00e8re zone de texte qui est la zone de texte de d\u00e9lai de r\u00e9action. Pour \u00e9viter que le bouton \u00abEnvoie\u00bb passe au jaune, cette action est saut\u00e9e lors de la premi\u00e8re connexion. Comme nous l&rsquo;avons vu pr\u00e9c\u00e9demment, \u00e0 l&rsquo;\u00e9tape d&rsquo;initialisation, le curseur est d\u00e9plac\u00e9 \u00e0 la zone de texte \u00e0 la droite de \u00ab \u00c0 toutes les \u00bb par la proc\u00e9dure \u00abztfr\u00e9quence.RequestFocus\u00bb. Par la suite, le comportement est identique aux deux autres.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stDelaiDeReaction_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stDelaiDeReaction_03.jpg\" alt=\"\" class=\"wp-image-2180\" width=\"514\" height=\"121\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stDelaiDeReaction_03.jpg 907w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stDelaiDeReaction_03-300x70.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/stDelaiDeReaction_03-768x180.jpg 768w\" sizes=\"(max-width: 514px) 100vw, 514px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Le bouton \u00abEnvoie\u00bb<\/h2>\n\n\n\n<p>Le bouton \u00abEnvoie\u00bb sert \u00e0 transmettre et enregistrer les changements de configuration.<\/p>\n\n\n\n<ul><li>Premi\u00e8re \u00e9tape, toutes les cases doivent \u00eatre remplies, sinon il y a un message d&rsquo;erreur affich\u00e9 et le programme retourne en attente d&rsquo;action<\/li><li> Deuxi\u00e8me \u00e9tape, l&rsquo;\u00e9tiquette \u00ablbMessageDErreur\u00bb est vid\u00e9e et son arri\u00e8re-plan est mis en blanc. On s&rsquo;assure que les variables d&rsquo;octets soient vides et on d\u00e9sactive les boutons<\/li><li> Troisi\u00e8me \u00e9tape, le chronom\u00e8tre de temporisation de d\u00e9sactivation des boutons est mis \u00e0 la valeur du d\u00e9lai de r\u00e9ception configur\u00e9 et est d\u00e9marr\u00e9  <br><\/li><li>Quatri\u00e8me \u00e9tape, le contenu des trois champs est transmis au ESP32 dans une trame NDATA avec une virgule comme \u00e9l\u00e9ment de s\u00e9paration <\/li><li> Cinqui\u00e8me \u00e9tape<ul><li>L&rsquo;arri\u00e8re-plan du bouton \u00abEnvoie\u00bb est remis en gris<br><\/li><li>L&rsquo;\u00e9tiquette \u00ablbMessageDeSuivie\u00bb est vid\u00e9e <\/li><\/ul><\/li><li> Sixi\u00e8mement, le curseur est remis sur la zone de texte \u00abztFr\u00e9quence\u00bb. <\/li><\/ul>\n\n\n\n<p>Suite \u00e0 la r\u00e9ception de la commande\u00abNDATA\u00bb, le programme du ESP32 enregistre les nouvelles donn\u00e9es dans le EEPROM et r\u00e9pond avec une trame \u00abDATA\u00bb. Le processus principal de l&rsquo;interface utilisateur traite cette nouvelle trame comme nous l&rsquo;avons vu pr\u00e9c\u00e9demment.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btEnvoie_03a.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btEnvoie_03a.jpg\" alt=\"\" class=\"wp-image-2475\" width=\"909\" height=\"808\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btEnvoie_03a.jpg 942w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btEnvoie_03a-300x267.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btEnvoie_03a-768x683.jpg 768w\" sizes=\"(max-width: 909px) 100vw, 909px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"> <br>D\u00e9connexion <\/h2>\n\n\n\n<p>Quand le bouton \u00abbtNonConnect\u00e9\u00bb est cliqu\u00e9<\/p>\n\n\n\n<ul><li>Le Bluetooth est d\u00e9connect\u00e9<\/li><li>Les boutons sont d\u00e9sactiv\u00e9s et leur texte est mis en rouge<\/li><li>La variable \u00abvrPremi\u00e8reConnexion\u00bb est mise \u00e0 \u00abvrai\u00bb<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btNonConnect\u00e9_Clic_03-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btNonConnect\u00e9_Clic_03-1.jpg\" alt=\"\" class=\"wp-image-2412\" width=\"642\" height=\"280\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btNonConnect\u00e9_Clic_03-1.jpg 797w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btNonConnect\u00e9_Clic_03-1-300x131.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btNonConnect\u00e9_Clic_03-1-768x336.jpg 768w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">INTERVALLOM\u00c8TRE<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>L&rsquo;intervallom\u00e8tre a pour fonction de g\u00e9n\u00e9rer un d\u00e9clenchement du relais \u00e0 un intervalle r\u00e9gulier pendant un temps pr\u00e9d\u00e9terminer.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/intervallometre_03a.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/intervallometre_03a-1024x348.jpg\" alt=\"\" class=\"wp-image-2317\" width=\"912\" height=\"310\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/intervallometre_03a-1024x348.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/intervallometre_03a-300x102.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/intervallometre_03a-768x261.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/intervallometre_03a.jpg 1200w\" sizes=\"(max-width: 912px) 100vw, 912px\" \/><\/a><\/figure>\n\n\n\n<p>L&rsquo;intervalle est en seconde et est inscrit dans la zone de texte \u00abztfr\u00e9quence\u00bb. La p\u00e9riode de temps s&rsquo;inscrit en seconde dans la zone de texte \u00abztP\u00e9riode\u00bb.<\/p>\n\n\n\n<p>La s\u00e9quence d\u00e9marre lorsque le bouton \u00abD\u00c9MARRER\u00bb est cliqu\u00e9.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btDemarrage_clic_03b.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btDemarrage_clic_03b-1024x747.jpg\" alt=\"\" class=\"wp-image-2477\" width=\"925\" height=\"675\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btDemarrage_clic_03b-1024x747.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btDemarrage_clic_03b-300x219.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btDemarrage_clic_03b-768x560.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btDemarrage_clic_03b.jpg 1101w\" sizes=\"(max-width: 925px) 100vw, 925px\" \/><\/a><\/figure>\n\n\n\n<ul><li>Si une des deux zones de texte est vide, le message \u00ab** UNE CASE EST VIDE **\u00bb est affich\u00e9 sur fond rouge sous l&rsquo;\u00e9tiquette \u00ablbMessageInterv\u00bb <\/li><li>Si l&rsquo;intervalle configur\u00e9 est plus court que le temps total de l&rsquo;op\u00e9ration du relais, le message  \u00ab** L&rsquo;intervalle est trop court pour la configuration de d\u00e9clenchement **\u00bb est affich\u00e9 sur fond rouge sous l&rsquo;\u00e9tiquette \u00ablbMessageInterv\u00bb  <\/li><\/ul>\n\n\n\n<ul><li>Si la p\u00e9riode est plus courte que la fr\u00e9quence le message \u00ab** \u00abPENDANT\u00bb DOIT \u00caTRE PLUS GRAND QUE \u00ab\u00c0 TOUS LES\u00bb **\u00bb est affich\u00e9 sur fond rouge sous l&rsquo;\u00e9tiquette \u00ablbMessageInterv\u00bb  <\/li><\/ul>\n\n\n\n<p>  Si les deux champs sont bien configur\u00e9s<\/p>\n\n\n\n<ul><li>Les boutons sont d\u00e9sactiv\u00e9s<\/li><li>Le \u00abChronoP\u00e9riode\u00bb est r\u00e9gl\u00e9 sur le nombre de secondes de \u00abztP\u00e9riode\u00bb multipli\u00e9 par 1000 pour avoir le nombre en millisecondes et il est activ\u00e9<\/li><li> Le \u00abChronoFr\u00e9quence\u00bb  est r\u00e9gl\u00e9 sur le nombre de secondes de \u00abztfr\u00e9quence\u00bb multipli\u00e9 par 1000 pour avoir le nombre en millisecondes et il est activ\u00e9 <\/li><li>Le bouton \u00abARR\u00caTER\u00bb est activ\u00e9 et le texte est mis en vert<\/li><li>Le message \u00ab+ C&rsquo;EST D\u00c9MARR\u00c9 \u00bb s&rsquo;affiche sur fond vert sous l&rsquo;\u00e9tiquette  <br>\u00ablbMessageInterv\u00bb <\/li><li>La commande \u00abCLIC,D\u00bb est envoy\u00e9 au ESP32<\/li><\/ul>\n\n\n\n<p><strong>Le \u00abChronoFr\u00e9quence\u00bb<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoFr\u00e9quence_03.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoFr\u00e9quence_03.jpg\" alt=\"\" class=\"wp-image-2197\" width=\"763\" height=\"246\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoFr\u00e9quence_03.jpg 849w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoFr\u00e9quence_03-300x97.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoFr\u00e9quence_03-768x248.jpg 768w\" sizes=\"(max-width: 763px) 100vw, 763px\" \/><\/a><\/figure>\n\n\n\n<p>\u00c0 l&rsquo;expiration du d\u00e9lai du \u00abChronoFr\u00e9quence\u00bb<\/p>\n\n\n\n<ul><li>Le chronom\u00e8tre de fr\u00e9quence est mis \u00e0 \u00abfaux\u00bb<\/li><li>Si la p\u00e9riode est encore active<ul><li>Le  \u00abChronoFr\u00e9quence\u00bb est red\u00e9marr\u00e9<\/li><li> La commande \u00abCLIC,D\u00bb est envoy\u00e9 au ESP32 <\/li><\/ul><\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Le \u00abChronoP\u00e9riode\u00bb<\/h4>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoP\u00e9riode_03a.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoP\u00e9riode_03a-1024x343.jpg\" alt=\"\" class=\"wp-image-2427\" width=\"911\" height=\"305\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoP\u00e9riode_03a-1024x343.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoP\u00e9riode_03a-300x100.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoP\u00e9riode_03a-768x257.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/ChronoP\u00e9riode_03a.jpg 1251w\" sizes=\"(max-width: 911px) 100vw, 911px\" \/><\/a><\/figure>\n\n\n\n<p> \u00c0 l&rsquo;expiration du d\u00e9lai du \u00abChronoP\u00e9riode\u00bb <\/p>\n\n\n\n<ul><li>Le  \u00abChronoP\u00e9riode\u00bb  est d\u00e9sactiv\u00e9<\/li><li>La couleur du texte du bouton ARR\u00caTER est mise \u00e0 noir et il est d\u00e9sactiv\u00e9<\/li><li>\u00ablbMessageInterv\u00bb est vid\u00e9 et son arri\u00e8re-plan est mis en blanc<\/li><li> Configure \u00abChronoCmdD\u00e9sactiv\u00e9\u00bb. Le temps du chronom\u00e8tre doit \u00eatre sup\u00e9rieur au temps total de l&rsquo;op\u00e9ration du relais. 1 seconde est ajout\u00e9e<\/li><li>\u00abChronoCmdD\u00e9sactiv\u00e9\u00bb est mis en marche <\/li><li> Mets \u00e0 \u00abvrai\u00bb la variable \u00abvrCmdClicEncours\u00bb<\/li><li>Envoie la commande \u00abCLIC,D\u00bb au ESP32. C&rsquo;est un clic suppl\u00e9mentaire pour compl\u00e9ter le bon nombre de clics par p\u00e9riode.    <\/li><\/ul>\n\n\n\n<p> \u00c0 la fin du d\u00e9lai, \u00abChronoCmdD\u00e9sactiv\u00e9s\u00bb est lanc\u00e9, les boutons sont r\u00e9activ\u00e9s comme vu pr\u00e9c\u00e9demment. <\/p>\n\n\n\n<p><strong>Le bouton \u00abARR\u00caTER\u00bb<\/strong><\/p>\n\n\n\n<p>L&rsquo;utilisateur a la possibilit\u00e9 d&rsquo;arr\u00eater la s\u00e9quence \u00e0 tout moment.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btArreter_03-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"737\" height=\"368\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btArreter_03-1.jpg\" alt=\"\" class=\"wp-image-2247\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btArreter_03-1.jpg 737w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/12\/btArreter_03-1-300x150.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<ul><li>\u00abChronoFr\u00e9quence\u00bb est mis \u00e0 z\u00e9ro et est arr\u00eat\u00e9.<\/li><li> \u00abChronoP\u00e9riode\u00bb est mis \u00e0 z\u00e9ro et est arr\u00eat\u00e9. <\/li><li>Le bouton \u00abARR\u00caTER\u00bb est d\u00e9sactiv\u00e9 et son texte est mis en noir<\/li><li> \u00ablbMessageInterv\u00bb est vid\u00e9 et son arri\u00e8re-plan est mis en blanc<\/li><li>Le processus de r\u00e9activation des boutons est lanc\u00e9 <\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td><strong><a href=\"https:\/\/espacerm.com\/webgen\/linterface-web\/\">&lt;- L\u2019interface Web du d\u00e9clencheur de relais<\/a><\/strong><\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/td><td><strong><a href=\"https:\/\/espacerm.com\/webgen\/linterface-bluetooth-du-declencheur-de-relais-2-de-2\/\">L\u2019interface BLUETOOTH du d\u00e9clencheur de relais&nbsp;(2&nbsp;de&nbsp;2)&nbsp;-&gt;<\/a><\/strong><\/td><\/tr><\/tbody><\/table>\n","protected":false},"excerpt":{"rendered":"<p>Interface utilisateur pour afficher des donn\u00e9es, modifier des param\u00e8tres et passer des commandes. Cette interface demande l&rsquo;installation d&rsquo;une application sur l&rsquo;unit\u00e9 du client (t\u00e9l\u00e9phone ou tablette). L&rsquo;interface propos\u00e9e fonctionne que sur ANDROID. Mode BLUETOOTH La communication BLUETOOTH se fait directement entre le t\u00e9l\u00e9phone intelligent ou la tablette et le ESP32 sans interm\u00e9diaire. Cette interface est [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages\/1705"}],"collection":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/comments?post=1705"}],"version-history":[{"count":430,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages\/1705\/revisions"}],"predecessor-version":[{"id":3391,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages\/1705\/revisions\/3391"}],"wp:attachment":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/media?parent=1705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}