MyDnsでDDNSを登録して取得しているが、IPの更新が手間なので
M5StickCPlusを使った更新装置の記事を見た・・・どこだっけ?
今使っているソース(自前用に改修したやつ)
XXXXXXなどWifiやMyDns.jpの情報を変更して使用できます。

#include <M5StickCPlus.h> #include <HTTPClient.h> #include <NTPClient.h> #include <Time.h> #include <TimeLib.h> #include <FS.h> #include <WiFi.h> #include <WiFiClient.h> #define SERIAL_SPEED 115200 // wifiの設定(my) const char* ssid = "XXXXXXXXXXX"; // WiFiのSSID const char* password = "XXXXXXXXXXX"; // WiFiのパスワード // mydns info.(xxxxx.mydns.jp) const char* id="mydnsXXXXXX"; //マスターID const char* pw="XXXXXXXXXXX"; //パスワード // NTP用 WiFiUDP ntpUDP; const char *NTP_SERVER = "ntp.nict.jp"; const int TIME_OFFSET = 32400; // UTC+9h (JST) NTPClient timeClient(ntpUDP, NTP_SERVER, TIME_OFFSET); const unsigned long NTP_INTERVAL_TIME = 86000000; // 24h毎に更新1000 24h=86400000 unsigned long ntp_interval = 0; unsigned long pasttime = 0; String getmsg = ""; void setup() { pinMode(M5_BUTTON_HOME, INPUT); Serial.begin(SERIAL_SPEED); Serial.println(""); M5.begin(); M5.Lcd.setRotation(3); M5.Axp.ScreenBreath(100); M5.Lcd.fillScreen(BLACK); // connect to WiFi M5.Lcd.setCursor(0, 0, 1); M5.Lcd.setTextColor(WHITE); M5.Lcd.setTextSize(2); M5.Lcd.print("WiFi connecting"); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { // 1秒おきに接続状態を確認 delay(1000); M5.Lcd.print("."); } M5.Lcd.println("\nconnected"); M5.Lcd.print(""); //M5.Lcd.print("WiFi Connected."); M5.Lcd.print("SSID:"); M5.Lcd.print(WiFi.SSID()); M5.Lcd.print("\n"); M5.Lcd.print("IP:"); M5.Lcd.print(WiFi.localIP()); M5.Lcd.print("\n"); // NTP timeClient.begin(); timeClient.update(); setTime(timeClient.getEpochTime()); M5.Lcd.print("NTP st."); ntp_interval = millis(); M5.Lcd.print(timeClient.getFormattedTime()); M5.Lcd.print("\n"); delay(3000); M5.Lcd.print("First Req"); M5.Lcd.print("\n"); notice(); } void loop() { //M5ボタンでモード切替 if(digitalRead(M5_BUTTON_HOME) == LOW){ M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(0, 0, 1); M5.Lcd.setTextFont(4); M5.Lcd.setTextSize(1); M5.Lcd.print("\n"); M5.Lcd.print(" Update Now!\n"); M5.Lcd.print("\n"); M5.Lcd.print("\n"); notice(); delay(5000); } // MDNS.update(); // 定期的に時刻を合わせて、IPを通知。 pasttime = millis() - ntp_interval; if (pasttime > NTP_INTERVAL_TIME) { //M5.Lcd.fillScreen(BLACK); M5.Lcd.fillRect(0,0,300,70,BLACK); // 塗りつぶし left, top, witdh, height M5.Lcd.setCursor(0, 0, 1); M5.Lcd.setTextFont(4); M5.Lcd.setTextSize(1); M5.Lcd.print("\n"); M5.Lcd.print(" Update Now!\n"); M5.Lcd.print("\n"); M5.Lcd.print("\n"); delay(5000); timeClient.update(); M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(0, 0, 1); M5.Lcd.setTextColor(GREEN); M5.Lcd.setTextFont(7); M5.Lcd.setTextSize(1); M5.Lcd.print(timeClient.getFormattedTime()); M5.Lcd.print("\n"); M5.Lcd.print("\n"); notice(); ntp_interval = millis(); }else{ if(getmsg="200"){ M5.Lcd.fillRect(0,0,300,70,BLACK); // 塗りつぶし left, top, witdh, height }else{ M5.Lcd.fillScreen(RED); } M5.Lcd.setCursor(0, 0, 1); M5.Lcd.setTextColor(GREEN); M5.Lcd.setTextFont(7); M5.Lcd.setTextSize(1); M5.Lcd.print(timeClient.getFormattedTime()); M5.Lcd.print("\n"); M5.Lcd.setTextFont(4); M5.Lcd.setTextSize(1); M5.Lcd.print(NTP_INTERVAL_TIME / 1000); M5.Lcd.print(" > "); M5.Lcd.print(pasttime / 1000); M5.Lcd.print("\n"); M5.Lcd.print("http GET= "); M5.Lcd.print(getmsg); M5.Lcd.print("\n"); M5.Lcd.print("Push M5:update"); M5.Lcd.print("\n"); delay(1000); } } void notice() { timeClient.update(); // 通知 WiFiClient client; HTTPClient http; http.begin(client, "http://ipv4.mydns.jp/login.html"); http.setAuthorization(id, pw); M5.Lcd.setTextFont(4); M5.Lcd.setTextSize(1); M5.Lcd.print("http GET= "); getmsg = http.GET(); M5.Lcd.print(getmsg); M5.Lcd.print("\n"); timeClient.update(); M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(0, 0, 1); M5.Lcd.setTextColor(GREEN); M5.Lcd.setTextFont(7); M5.Lcd.setTextSize(1); M5.Lcd.print(timeClient.getFormattedTime()); M5.Lcd.print("\n"); M5.Lcd.print("\n"); ntp_interval = millis(); }
Arduino IDE 2.3.6
