2022年1月26日水曜日

LINEダッシュボタン、DNSの問題解決?

昨日作ったLINEダッシュボタンがLINEのサーバをFQDNで指定していたら接続できず、IPアドレスに変更したら上手くつながった件をもう少し調べてみました。昨夜、ノートPC(Windows7)のDNS設定をGoogleのDNSサーバから自動取得に戻したら、アドレスの解決ができなくなった。やはり、DNSが上手く動いていない模様。でも、Windows10のノートPCやスマホなどは大丈夫なのがイマイチわからない。

ということで、ESP32のスケッチ内でDNSサーバを指定するようにしてみました。コードは以下のような感じ。
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    
    IPAddress gateway(192,168,0,1);
    IPAddress subnet(255,255,255,0);
    IPAddress dns1(8, 8, 8, 8); // Google DNS primery server
    IPAddress dns2(8, 8, 4, 4); // Google DNS secondary server
    WiFi.config(WiFi.localIP(),gateway,subnet,dns1,dns2);

DNSサーバだけ設定することができないようで、IPアドレス、ゲートウェイ、サブネットマスクも指定しています。本来、WiFi.config()は、WiFi.begin()の前に呼ぶようですが、IPアドレスは自動取得したいので、一旦begin()して取得したIPアドレスをWiFi.localIP()で指定しました。

上手くいくか分からなかったのですが、無事にFQDNでサーバを指定してもLINEサーバに繋がるようになりました。デフォルトでDNSが上手く動いてない原因は不明ですが、取り合えず解決。


ダッシュボタンというからにはタクトスイッチではなく、それなりのスイッチにしてみようと、昨夜アマゾンでチャイム用スイッチを購入しました。先ほど届いて早速繋いでみました。ボタン内にESP32を組み込むのは無理そうですが、台になるケースを用意して組んでみようかと思っています。できれば電池駆動にしたいのですが、消費電力を抑えるためのDeepSleepとWiFi接続の相性はどうなんでしょうか?

0 件のコメント:

コメントを投稿