MyDns.jp更新装置

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です