ESP32-WROVERでHTTPS Serverを立ち上げ mDNS追加編

“https-server-example”プロジェクトにmDNS搭載

“mDNS_example”プロジェクトの”mdns_example_main.c”を見るとモニター類を除くと”initialize_mdns()”と”generate_hostname()”を定義して”initialize_mdns()”を”app_main()”で起動しているだけなのがわかります。”app_main()”は一般の”main()”に相当するもので必要な初期化が終わった後に呼び出されます。

では”initialise_mdns()”、”generate_hostname()”をコピペ、”app_main()”に”initialise_mdns()”を追記、先頭付近に”#include “mdns.h”を追記します。あと”#define EXAMPLE_MDNS_INSTANCE CONFIG_MDNS_INSTANCE”の一文も追記しておきます。

ここでの”CONFIG__MDNS_INSTANCE”や”generate_hostname()”内の”CONFIG_MDNS_ADD_MAC_TO_HOSTNAME”、”CONFIG_MDNS_HOSTNAME”などはどこで定義されているのでしょうか。

これらはbuild/config/sdkconfig.hにあります(今はまだ定義されていません)。build下にあるのですからbuildで生成されたということになります。では何を元に生成されたのでしょうか。これは名前の通り、今まで設定で使っていたsdkconfigから生成されています。さらにこのsdkconfigはESP-IDF/components下のKconfigファイルから生成されています。

これに追加の設定をオーバーライドするにはKconfig.projbuild(およびproject_include.cmake)ファイルを用意すればいい、とEspressifのDocumentsには書かれています。

実際、mDNS_example/main下にKconfig.projbuildファイルが含まれています。この中身を移植すればいいのですが”https-server-example”プロジェクトにはKconfig.projbuildファイルがないので単にコピーでいいです。

ちなみにこのKconfig.projbuildファイルの中身は

特に書式の書き方のDocumentsを見なくても一目瞭然ですね。

再度buildしてからsdkconfigを見てみるとmDNSの設定が追加されています。

Example Configuration

そしてflashしてping esp32-mdns.localするとちゃんと応答が返ってきます。

ping

(実は私の環境ではpingが返ってこないことがよくありました。PC側の問題の気もしますがPC側でWiFiをつなげなおすと直ったりしました)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です