I am looking for internet time M5Stack for Arduino ide



  • Unfortunately, ezTime.h does not work on the M5Stack.

    Does anyone know of a simple, working way to get the time and date from the internet?



  • Hello @Stoni99

    are you sure? From the description Rob developed ezTime together with M5ez for M5Stack.

    What exactly doesn't work for you? Care to share your code?

    Thanks
    Felix



  • I tried example codes. After establishing the Internet connection, the M5Stack crashes and restarts. He doesn't seem to tolerate waitForSync();

    #include <M5Stack.h>
    #include "WiFi.h"
    #include "ezTime.h"

    const char *ssid = "xxxxxxxxxxx";
    const char *password = "xxxxxxxxxxx";

    void setup(){
    //Serial.begin(115200);
    M5.begin();
    M5.Power.begin();
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
    WiFi.begin(ssid, password);
    M5.Lcd.print("Call to " + String(ssid));
    while (WiFi.status() != WL_CONNECTED) {
    M5.Lcd.print('.');
    delay(1000);
    }
    M5.Lcd.println(" ");
    M5.Lcd.println(WiFi.localIP());
    M5.Lcd.print("Signalstearke: ");
    M5.Lcd.println(WiFi.RSSI());
    //server.begin();
    delay(2000);
    M5.Lcd.clear();

    waitForSync();
    M5.Lcd.println();
    M5.Lcd.println("Time in various internet standard formats ...");
    M5.Lcd.println();
    M5.Lcd.println("ATOM: " + dateTime(ATOM));
    M5.Lcd.println("COOKIE: " + dateTime(COOKIE));
    M5.Lcd.println("IS8601: " + dateTime(ISO8601));
    M5.Lcd.println("RFC822: " + dateTime(RFC822));
    M5.Lcd.println("RFC850: " + dateTime(RFC850));
    M5.Lcd.println("RFC1036: " + dateTime(RFC1036));
    M5.Lcd.println("RFC1123: " + dateTime(RFC1123));
    M5.Lcd.println("RFC2822: " + dateTime(RFC2822));
    M5.Lcd.println("RFC3339: " + dateTime(RFC3339));
    M5.Lcd.println("RFC3339_EXT: " + dateTime(RFC3339_EXT));
    M5.Lcd.println("RSS: " + dateTime(RSS));
    M5.Lcd.println("W3C: " + dateTime(W3C));
    M5.Lcd.println();
    M5.Lcd.println(" ... and any other format, like "" + dateTime("l ~t~h~e jS ~o~f F Y, g:i A") + """);
    delay(6000);
    }

    void loop() {
    events();
    }



  • Hello @Stoni99

    your code runs fine on my M5Stack.

    • what happens if you comment out waitForSync()?
    • what is the log output of the crash?

    Thanks
    Felix



  • Hell@Stoni99

    I'm using the World Time API.
    It is good to use it according to the area.

    World Time API : http://worldtimeapi.org/

    Example

    //===========================================================
    // Web WorldTime M5Stack : 2022.07.01 : macsbug
    // 開発環境 : Arduino IDE 1.8.19
    // : Board : ”M5Stack-Core-ESP32”
    // : Board Manager : arduino-esp32 2.0.3-RC1
    // Device : M5Stack
    // Library : M5Stack.h , WiFi.h , HTTPClient.h
    //===========================================================
    // WorldTimeAPI : http://worldtimeapi.org/
    // TomeZpone : https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
    // Tokyo : http://worldtimeapi.org/api/timezone/Asia/Bangkok
    // Chicago : http://worldtimeapi.org/api/timezone/America/Chicago
    //===========================================================

    #include <M5Stack.h>
    #include <WiFi.h>
    #include <HTTPClient.h>

    const char *ssid = "xxxx";// Wi-Fi access point
    const char *pass = "xxxx";// Wi-Fi password
    const char *WTA = "http://worldtimeapi.org/api/timezone/Asia/Bangkok"; // WTA,BANGKOK
    int _year, _mon, _day, _hour, _min, _sec;

    //============================================================
    // WorldTime : web dada = {
    // "abbreviation":"JST","client_ip":"127.0.0.0",
    // "datetime":"2022-06-25T08:18:17.061071+09:00",
    // "_day_of_week":6,"_day_of_year":176,"dst":false,
    // "dst_from":null,"dst_offset":0,"dst_until":null,
    // "raw_offset":25200"timezone":"Asia/Bangkok",
    // "unixtime":1656112697,
    // "utc_datetime":"2022-06-24T23:18:17.061071+00:00",
    // "utc_offset":"+09:00","week_number":25}
    //============================================================
    void WorldTimeAPI(){
    if ((WiFi.status() == WL_CONNECTED)){
    HTTPClient http;
    http.begin(WTA); // Specify URL
    int httpCode = http.GET(); // Send GET request
    if (httpCode > 0) { // If there is a reply
    String web = http.getString(); // WEB Data acquisition
    // Serial.print("web dada = ");Serial.println(web);

      // "datetime":"2022-06-25T08:06:30.948882+09:00",
      //  00000000001111111111222222222233333333334444
      //  01234567890123456789012345678901234567890123
      int pos = web.indexOf("datetime") + 11;    
      _year = web.substring(pos   , pos+ 4  ).toInt();
      _mon  = web.substring(pos +5, pos+ 5+2).toInt();
      _day  = web.substring(pos +8, pos+ 8+2).toInt();
      _hour = web.substring(pos+11, pos+11+2).toInt();
      _min  = web.substring(pos+14, pos+14+2).toInt();
      _sec  = web.substring(pos+17, pos+17+2).toInt();
    
      char ymm[12];sprintf(ymm,"%4d/%02d/%02d"   ,_year,_mon,_day);
      char hms[10];sprintf(hms,"%02d:%02d:%02d\n",_hour,_min,_sec);
      M5.Lcd.print(ymm);M5.Lcd.print(" ");M5.Lcd.println(hms);
      
    }else{ Serial.println("Error on HTTP request");}
    http.end();   // Free the resources
    

    }
    }

    //===========================================================
    void setup(){
    M5.begin();
    M5.Lcd.setSwapBytes(true);
    M5.Lcd.setRotation(1);
    M5.Lcd.fillScreen(TFT_BLUE);
    M5.Lcd.setTextColor(TFT_WHITE);
    M5.Lcd.setTextSize(2);
    M5.Lcd.printf(" Wi-Fi Connecting to %s\n", ssid);
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED){delay(500);M5.Lcd.print(".");}
    M5.Lcd.println();
    }

    //===========================================================
    void loop(){
    WorldTimeAPI();
    delay(1000);
    }
    //===========================================================



  • @felmue said in I am looking for internet time M5Stack for Arduino ide:

    Hello @Stoni99

    your code runs fine on my M5Stack.

    • what happens if you comment out waitForSync()?
    • what is the log output of the crash?

    Thanks
    Felix

    What do you mean by comment out?
    I don't have log output , it just restarts.



  • @macsbug said in I am looking for internet time M5Stack for Arduino ide:

    Hell@Stoni99

    I'm using the World Time API.
    It is good to use it according to the area.

    World Time API : http://worldtimeapi.org/

    Example
    ......

    Code works - thanks!



  • Hi guys

    @macsbug : thank you for presenting the World Time API as alternative solution.

    @Stoni99 : never mind - I am glad to read you have working code now.

    Thanks
    Felix



  • ezTime.h seems easier to condition?!🤔



  • ezTime.h works now. I have updated to new Version. Thx!



  • Hello@stoni99

    ezTime.h

    I modified the following and got the result.

    Fix;
    #include <WiFi.h>
    #include <ezTime.h>
    //waitForSync();

    result;
    Time in various internet standard formats ...

    ATOM: 1970-01-01T00:00:09-00:00
    COOKIE: Thursday, 01-Jan-1970 00:00:09 UTC
    IS8601: 1970-01-01T00:00:09-0000
    RFC822: Thu, 01 Jan 70 00:00:09 -0000
    RFC850: Thursday, 01-Jan-1970 00:00:09 UTC
    RFC1036: Thu, 01 Jan 70 00:00:09 -0000
    RFC1123: Thu, 01 Jan 70 00:00:09 -0000
    RFC2822: Thu, 01 Jan 70 00:00:09 -0000
    RFC3339: 1970-01-01T00:00:09-00:00
    RFC3339_EXT: 1970-01-01T00:00:09.771-00:00
    RSS: Thu, 01 Jan 70 00:00:09 -0000
    W3C: 1970-01-01T00:00:09-00:00

    ... and any other format, like Thursday the 1st of January 1970, 12:00 AM



  • Ahhh - ok: "//waitForSync();" 👍