前提・実現したいこと
ESP32でraspberrypi.localのipアドレスを取得したい。
発生している問題・エラーメッセージ
ESP32でraspberrypi.localのipアドレスを取得できません。
localドメインが解決でません、www.yahoo.co.jpなどのipアドレスは取得できます。
もともと、ESP8266の時には、問題なかったのですがESP32に作り替えたときに、
raspberrypiのサーバーにアクセスできなかったので、IPアドレス直書きにすると接続でき処理も動きました。
localドメインが解決できないと仮定して、確認の為の以下のコード作成して
確認するとやはり解決できてないように思えますがなにか間違ってところはないでしょうか?
該当のソースコード
ino
1#include <WiFi.h> 2 3const char ssid[] = "xxxxx"; 4const char pass[] = "xxxxx"; 5 6void setup() 7{ 8 Serial.begin(115200); 9 delay(100); 10 WiFi.mode(WIFI_STA); 11 WiFi.disconnect(); 12 WiFi.begin(ssid,pass); 13 while(WiFi.status() != WL_CONNECTED) { 14 Serial.print("."); 15 delay(100); 16 } 17 Serial.println(" connected. "); 18 19 dnstest("www.yahoo.co.jp"); 20 dnstest("raspberrypi.local"); 21 dnstest("raspberrypi"); 22 dnstest("user-pc.local"); 23} 24void dnstest(char *name) 25{ 26 IPAddress ipaddr; 27 int ret; 28 ret = WiFi.hostByName(name,ipaddr); 29 Serial.printf("hostbyname %s ret=%d %s\n",name,ret,ipaddr.toString().c_str()); 30} 31void loop() 32{ 33 delay(100); 34} 35
実行結果
※(ssidとpassは該当するものに変更後)
.. connected.
hostbyname www.yahoo.co.jp ret=1 183.79.217.124
hostbyname raspberrypi.local ret=0 0.0.0.0
hostbyname raspberrypi ret=0 0.0.0.0
hostbyname user-pc.local ret=0 0.0.0.0
補足情報(FW/ツールのバージョンなど)
arduino-esp32 1.0.4
解決内容
ESP8266と違ってESP32ではESPmDNSを使用すればIPアドレスの問題は解決できました。
ino
1#include <ESPmDNS.h> 2//略 3mdns_init(); //追加 4ipaddr = MDNS.queryHost(name); //.localを省いたもの
raspberrypiなどでIPアドレスが取得できました。
ESP8266では、特にmDNSのライブラリは呼ぶ必要がなかったのでmDNSは、見つけてもらうときに必要で
見つけるときには必要ないと思ってました。
(ESP8266とESP32のライブラリの違いがどこにあるのかまでは、調べてません。)
回答1件
あなたの回答
tips
プレビュー