Obtenez l’heure Epoch/Unix avec l’ESP8266 NodeMCU (Arduino)

Obtenez l'heure Epoch/Unix avec l'ESP8266 NodeMCU (Arduino)

Ce guide rapide montre comment obtenir l’heure epoch/unix en utilisant la carte ESP826 NodeMCU avec Arduino IDE. Obtenir l’heure de l’époque peut être utile pour horodater vos lectures, donner des noms uniques aux fichiers et à d’autres applications. Nous demanderons l’heure actuelle à un serveur NTP, la carte ESP8266 doit donc disposer d’une connexion Internet.

Obtenez Epoch Unix Time avec l'ESP8266 NodeMCU Arduino

Si vous souhaitez obtenir la date et l’heure dans un format lisible par l’homme, nous vous recommandons plutôt le didacticiel suivant :

Qu’est-ce que le temps d’époque ?

le Temps d’époque (Aussi connu comme époque Unix, Temps Unix, heure POSIX ou Horodatage Unix) est le nombre de secondes qui se sont écoulées depuis le 1er janvier 1970 (minuit UTC/GMT), sans compter les secondes intercalaires (dans ISO 8601 : 1970-01-01T00:00:00Z).

NTP (Network Time Protocol)

NTP signifie Network Time Protocol et c’est un protocole de mise en réseau pour la synchronisation d’horloge entre les systèmes informatiques. En d’autres termes, il est utilisé pour synchroniser les heures d’horloge des ordinateurs dans un réseau.

ESP8266 NodeMCU NTP Network Time Protocol Client Server Comment ça marche

Il existe des serveurs NTP comme pool.ntp.org que n’importe qui peut utiliser pour demander du temps en tant que client. Dans ce cas, l’ESP8266 est un client NTP qui demande l’heure à un serveur NTP (pool.ntp.org).

ESP8266 Obtenir la fonction d’époque/temps Unix

Pour obtenir l’heure d’époque/unix avec l’ESP8266, vous pouvez utiliser la fonction suivante obtenir du temps():

// Function that gets current epoch time
unsigned long getTime() {
  timeClient.update();
  unsigned long now = timeClient.getEpochTime();
  return now;
}

Cette fonction renvoie l’heure de l’époque actuelle. Continuez à lire pour un exemple complet.

ESP8266 NodeMCU Get Epoch/Unix Time Exemple

Copiez le code suivant dans votre IDE Arduino. Ce code se connecte à Internet et demande l’heure à un serveur NTP (pool.ntp.org).

/*
  Rui Santos
  Complete project details at https://Raspberryme.com/epoch-unix-time-esp8266-nodemcu-arduino/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

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

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");

// Variable to save current epoch time
unsigned long epochTime; 

// Function that gets current epoch time
unsigned long getTime() {
  timeClient.update();
  unsigned long now = timeClient.getEpochTime();
  return now;
}

// Initialize WiFi
void initWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
}

void setup() {
  Serial.begin(115200);
  initWiFi();
  timeClient.begin();
}

void loop() {
  epochTime = getTime();
  Serial.print("Epoch Time: ");
  Serial.println(epochTime);
  delay(1000);
}

Afficher le code brut

Insérez vos informations d’identification réseau dans les variables suivantes et le code fonctionnera immédiatement :

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Comment fonctionne le code

Jetons un coup d’œil rapide sur le fonctionnement du code.

Bibliothèques

Tout d’abord, incluez les bibliothèques nécessaires

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

Identifiants du réseau

Insérez vos informations d’identification réseau dans les variables suivantes afin que l’ESP8266 puisse se connecter à votre réseau.

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Serveur NTP

Définissez un client NTP pour gagner du temps.

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");

Nous demanderons l’heure à pool.ntp.org, qui est un cluster de serveurs de temps que tout le monde peut utiliser pour demander l’heure.

fonction getTime()

le obtenir du temps() La fonction obtient et renvoie l’heure de l’époque actuelle.

// Function that gets current epoch time
unsigned long getTime() {
  timeClient.update();
  unsigned long now = timeClient.getEpochTime();
  return now;
}

initWiFi()

le initWiFi() La fonction initialise le Wi-Fi et connecte l’ESP8266 à votre réseau local.

void initWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
}

mettre en place()

Dans le mettre en place(), initialisez le moniteur série à un débit en bauds de 115 200.

Serial.begin(115200);

Appeler le initWiFi() fonction pour initialiser le Wi-Fi :

initWiFi();

Initialisez le client NTP.

timeClient.begin();

boucler()

Dans le boucler(), obtenez l’heure de l’époque et enregistrez-la dans le epochTime variable:

epochTime = getTime();

Enfin, imprimez l’heure de l’époque toutes les secondes :

Serial.print("Epoch Time: ");
Serial.println(epochTime);
delay(1000);

Manifestation

Téléchargez le code sur votre carte ESP8266. Ensuite, ouvrez le moniteur série à un débit en bauds de 115 200. Il doit se connecter au Wi-Fi et commencer à imprimer l’heure actuelle/unix toutes les secondes.

ESP8266 NodeMCU Get Epoch Unix Time Serial Monitor

Conclusion

Il s’agissait d’un guide rapide vous montrant comment obtenir une époque ou également connue sous le nom de temps unix avec l’ESP8266 NodeMCU. Le temps d’époque est le nombre de secondes écoulées depuis le 1er janvier 1970. Pour obtenir le temps, nous devons nous connecter à un serveur NTP, donc l’ESP8266 doit avoir accès à Internet.

Si vous souhaitez obtenir la date et l’heure dans un format lisible par l’homme, reportez-vous au didacticiel suivant :

Nous espérons que vous avez trouvé ce tutoriel utile. Si vous souhaitez en savoir plus sur l’ESP8266, consultez nos ressources :

Merci d’avoir lu.