Récupérer l'heure depuis un serveur WEB
publication: 4 août 2022 / mis à jour 4 août 2022
Appel à collaboration
Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.
Partagez-les ici sur ce site.
ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.
Vos montages peuvent aider d'autres développeurs.
Les montages des autres développeurs peuvent vous aider.
Pour proposer un article ou un montage, cliquez ici
Dans cet article, Horloge temps réel logicielle, on s'est intéressé à la manière de gérer une horloge temps réel grâce aux propriétés du timer.
Cependant, l'initialisation de cette horloge temps réel doit s'effectuer manuellement. Maintenant que nous disposons d'un moyen de communiquer avec un serveur web, nous allons voir comment effectuer cette initialisatiion au travers d'un serveur web.
Transmission et réception du temps depuis un serveur web
Pour la partie serveur, on crée un nouveau script gettime.php dont voici le contenu:
<?php echo date('H i s')." RTC.set-time";
Si on exécute ce script:
http://ws.arduino-forth.com/gettime.php
Voici ce qui s'affiche: 15 25 30 RTC.set-time
. On a préparé le travail
pour ESP32Forth de manière à ce que l'interpréteur n'aie que cette ligne à exécuter.
Coté ESP32Forth, voici le code permettant de récupérer l'heure:
WiFi \ connection to local WiFi LAN : myWiFiConnect z" Mariloo" z" 1925144D91DE5373C3C2D7959F" login ; Forth 0 value currentTime \ store current time : RTC.set-time { hh mm ss -- } hh 3600 * mm 60 * ss + + 1000 * MS-TICKS - to currentTime ; \ used for SS and MM part of time display : :## ( n -- n' ) # 6 base ! # decimal [char] : hold ; \ display current time : RTC.display-time ( -- ) currentTime MS-TICKS + 1000 / <# :## :## 24 mod #S #> type ; 700 constant bufferSize create httpBuffer bufferSize allot 0 buffer 700 erase HTTP : getTime cr z" http://ws.arduino-forth.com/gettime.php" HTTP.begin if HTTP.doGet if httpBuffer bufferSize HTTP.getPayload httpBuffer z>s evaluate then then HTTP.end ; myWiFiConnect getTime RTC.display-time
Dans le mot getTime
, cette séquence httpBuffer z>s evaluate
récupère le contenu du buffer de transaction web et évalue son contenu. Ceci est possible, car
le serveur web a transmis une séquence compatible avec notre interpréteur FORTH.
L'exécution des trois dernières lignes de ce code affiche ceci:
--> myWiFiConnect 192.168.1.23 MDNS started ok --> getTime ok --> RTC.display-time 15:33:09 ok
Cette initialisation peut être exécutée une seule fois, en général au démarrage de ESP32Forth. Cette technique consistant à interroger notre propre serveur web évite de négocier avec un serveur de temps.
La plupart des serveurs de temps délivrent l'information dans des formats difficiles à traiter par FORTH: csv, JSON, XML...
Legal: site web personnel sans commerce / personal site without seling