困ってます、教えてください。
固定IPにして NTPでの時刻取得が できません。
ESP32 系列の「M5Stack BASIC」を使ってます。
WiFiでの接続を
スタティックIPで行うと、getLocalTime() がエラーになるんです。
ちなみに
WiFiServer server(80)などは、問題なく動きます。
#include <M5Stack.h> #include <WiFi.h> #include <time.h> //<For WiFi>================================= const char* ssid = "test"; // ここを書き換える const char* password = "12345678"; // ここを書き換える //=========================================== IPAddress staticIP(192, 168, 0, 40); IPAddress subnet(255, 255, 255, 0); IPAddress gateway(192, 168, 0, 254); IPAddress DNS(192, 168, 0, 254); //optional // for NTPサーバー ------------------------ struct tm timeInfo; //=================================== void setup() { Serial.begin(115200); M5.begin(true, false, true); //M5.begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true) Serial.println("M5 Starting...."); WiFi.mode(WIFI_STA); WiFi.disconnect(true, true); WiFi.config(staticIP, DNS, gateway, subnet); // これを有効にすると NG WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); M5.Lcd.print("."); } configTime(9 * 3600, 0, "ntp1.jst.mfeed.ad.jp"); // NG // configTime(9 * 3600, 0, "210.173.160.27"); // OK if (getLocalTime(&timeInfo, 10000) == false ) { Serial.print("Err getLocalTime()"); while (true) {} } Serial.println("OK getLocalTime()"); while (true) {} } void loop() { ; }
NTPのIPではない、ということはないでしょうか。
コードは全文を提示しましょう
staticではないときはDHCPサーバーからDNSやゲートウェイアドレスを教えてもらってNTPサーバーにアクセスできているけど、staticにしてDHCPサーバーから他の設定を得ていないので、インターネットに出ていけない、とかではないですか。
"ntp.nttsl.mfeed.ne.jp"、"210.173.162.106"といった情報は、どこから得たものですか?
「インターネットマルチフィード(MFEED) 時刻情報提供サービス for Public 」のHPに掲載されている以下のURLおよびIPアドレスは、試されましたか?
ntp1.jst.mfeed.ad.jp (210.173.160.27)
ntp2.jst.mfeed.ad.jp (210.173.160.57)
ntp3.jst.mfeed.ad.jp (210.173.160.87)
DHCPで IPを取得したときは、"ntp.nttsl.mfeed.ne.jp" で問題なく時刻を取得できているので、
そこでは ないと思うのですが、、、。
ntp1.jst.mfeed.ad.jp (210.173.160.27) で やってみます。
210.173.160.27
を指定すると 時刻の取得はできました。
ntp1.jst.mfeed.ad.jp
を指定すると エラーで 所得できませんでした。
configTime(9 * 3600, 0, "210.173.160.27"); ---------- OK
configTime(9 * 3600, 0, "ntp1.jst.mfeed.ad.jp"); ----- NG
つまり、DNSが機能してないようです。
LAN環境としては、DNSアドレスは 間違ってないのですが、、、。
どうして、機能しないのでしょうか?
DNSでは、どのサイトを使っているのですか? 8.8.8.8(Google Public DNS)とか、1.1.1.1とかを使ってみると改善するかもしれません。
ntp.nttsl.mfeed.ne.jpは、NTTの研究所のドメインでしたが、組織改編に伴って研究所が廃止されたので、今は使われていないと思います。
「8.8.8.8(Google Public DNS)とか、1.1.1.1」を指定しましたが、NGでした。
DHCPの場合は 時刻の取得ができてますので、NTPサーバのIPの問題ではなさそうなのですが、、。
サブネットマスク、ゲートウェイの設定がされていないのでは。(DHCPなら自動的にされるはずですが)
追記:(※2020/07/12 14:00のコメントでサブネットマスク以外については一応指摘済みなので、確認済みであればすみません)
回答2件
あなたの回答
tips
プレビュー