2021/04/19

ESP32でmDNSからIPアドレスを取得する

raspberrypi.local みたいなあれ

いちいち静的IPとかやってられないのでmDNSで名前解決してIPアドレスを取得したい. ESP32なら標準ライブラリでできる.

MDNS#queryHost で取得できるが, 戻り値が IPAddress クラスなので注意. そのまま接続できるのかは不明. HTTPClient#begin は引数が String なのでとりあえず IPAddress#toString で渡しておけばOK.

#include <WiFi.h>
#include <ESPmDNS.h>
const char MDNS_NAME[] = "client_name";
const char SSID[] = "ssid";
const char PASSWORD[] = "password";
const char API_DOMAIN[] = "mdns_host_name";
void setup() {
Serial.begin(115200);
while (!Serial);
WiFi.begin(SSID, PASSWORD);
Serial.print("WiFi connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.print("success!\n");
Serial.print("mDNS server instancing");
while (!MDNS.begin(MDNS_NAME)) {
Serial.print(".");
delay(100);
}
Serial.print("success!\n");
}
void loop() {
IPAddress ip = MDNS.queryHost(API_DOMAIN);
Serial.println("API domain: "+ip.toString());
while(1);
}
view raw mDNS_sample.cpp hosted with ❤ by GitHub

1 件のコメント:

  1. WindowsのPCのホスト名に対しては、使えないようですね。

    返信削除