質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

解決済

ESP32でmDNS設定するも「このサイトにアクセスできません」となる

Yasu0421
Yasu0421

総合スコア37

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

1回答

0グッド

0クリップ

2089閲覧

投稿2021/10/03 04:48

前提・実現したいこと

ESP32 arduino-IDEを使用して、マルチキャストDNS設定を行い、
つい最近まで問題なくDNSが使用できていたのですが、今日突然DNSでurl入力すると「このサイトにアクセスできません」と表示されるようになりました。
原因を解明したいです。

発生している問題・エラーメッセージ

これまで動作していた下記の該当コードで、URLに「http://esp32.local」と入力すると、以下のエラーメッセージが発生しました。
「このサイトにアクセスできません」

このサイトにアクセスできません

該当のソースコード

#include <WiFi.h> #include <WebServer.h> #include <ESPmDNS.h> const char* ssid = "*****"; const char* password = "*******"; WebServer server(80); const int led = 13; void handleIndex(){ digitalWrite(led, 1); String htmlHead="<html><head><title>HTTP case study</title></head>"; String htmlbody00="<body><h2 style='color:royalblue;text-align:center'>Hello., I am WebServer.</h2>"; String htmlbody01="</body></html>"; String html=htmlHead+htmlbody00+htmlbody01; //作成したhtmlをレスポンスとして送信する server.send(200,"text/html", html); digitalWrite(led, 0); } void handleRoot() { digitalWrite(led, 1); server.send(200, "text/plain", "hello from esp32!"); digitalWrite(led, 0); } void handleNotFound() { digitalWrite(led, 1); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); digitalWrite(led, 0); } void setup(void) { pinMode(led, OUTPUT); digitalWrite(led, 0); Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection Serial.println("--------------------------"); Serial.print("Now connecting to "); Serial.println(ssid); Serial.println("--------------------------"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); if (MDNS.begin("esp32")) { // ホスト名:esp32.local Serial.println("MDNS responder started"); } server.on("/", handleRoot); server.on("/index.html",handleIndex ); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); } void loop(void) { server.handleClient(); delay(2);//allow the cpu to switch to other tasks }

試したこと

1)Chromeブラウザのキャッシュをクリアするも改善しませんでした
2)IPアドレスでのアクセスは問題なく表示されます
3)WiFiルータをリセットしてみましたが、改善しませんでした。
4)シリアルモニターを確認すると問題なく
「MDNS responder started」が表示されてはいます。
5)「https://boxil.jp/mag/a38/」のサイトに書かれていることは試しました。

なかなか改善せずモヤモヤしております。
ご助言いただければ助かります。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

mkgt00

2021/10/03 07:09

esp32.localに、pingを打つとどうなりますか?
Yasu0421

2021/10/03 07:23

ご連絡ありがとうございます。 「ping 要求では、 esp32.localが見つかりませんでした」となりました
Yasu0421

2021/10/03 07:53

スマホからWifiに接続して http://esp32.local と入力すると問題なくアクセスできています。 パソコン側でしょうか
mkgt00

2021/10/03 09:06

はい。スマホからアクセスできるとなると、ESP32は正しく動いているようなので、パソコン(のOSレベル)のようですね。 mDNSでの名前の解決に失敗しています。

回答1

0

自己解決

いろいろ試して、Windows10側の問題(更新による問題?)であることが特定できました。
対策として

  • 手順
  1. [スタート (Windows ロゴ)] – [Windows 管理ツール] – [セキュリティが強化された Windows ファイアウォール] をクリックします。

  2. 左ペインの [受信の規則] を右クリックして [新しい規則] をクリックします。

  3. 規則の種類の選択画面で [事前定義] を選択して、セレクトボックスから "mDNS" を選択し、[次へ] をクリックします。

  4. 事前定義された規則の画面で、中央の規則の欄に表示された "mDNS (UDP 受信)" にチェックを入れ、[次へ] をクリックします。

  5. 操作の画面で、[接続を許可する] を選択して [完了] をクリックします。

とすることで、無事、「http://esp32.local」でアクセスできるようになりました。

同じような課題にはまった場合にご参考になれば幸いです。
ちなみにこの課題は、マイクロソフトのドキュメント
https://docs.microsoft.com/ja-jp/archive/blogs/jpntsblog/%E6%97%A2%E5%AE%9A%E3%81%AE%E5%8F%97%E4%BF%A1%E3%81%AE%E8%A6%8F%E5%89%87-mdns-udp-%E5%8F%97%E4%BF%A1-%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C
を参考にして、解決できました。

投稿2021/10/03 10:39

Yasu0421

総合スコア37

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。