ESP32(M5)でmDNSからIPを取得する

ESP32のライブラリでは、直接、mDNSのURLを指定してもアクセスできない。

ただ、mDNSを利用するためのライブラリは提供されているので、IPを解決してからアクセスすればよい。

例えばraspberry.localのIPを取得したい場合は以下のような感じでできる。

#include <ESPmDNS.h>

std::string SearchIP(char* host) {
  MDNS.begin("m5atom");
  auto ip = MDNS.queryHost(host);
  int port = 3000;

  char str[30];
  sprintf(str, "http://%u.%u.%u.%u:%d", ip[0], ip[1], ip[2], ip[3], port);

  MDNS.end();
  return std::string{str};
}

void setup() {
  (略)
  SearchIP("raspberry");
}