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”の一文も追記しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include "mdns.h" #define EXAMPLE_MDNS_INSTANCE CONFIG_MDNS_INSTANCE static char* generate_hostname(void) { ... ... } static void initialise_mdns(void) { ... ... } void app_main(void) { .... ... initialise_mdns(); } |
ここでの”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ファイルの中身は
1 2 3 4 5 6 7 8 9 10 |
menu "Example Configuration" config MDNS_HOSTNAME string "mDNS Hostname" default "esp32-mdns" help mDNS Hostname for example to use config MDNS_INSTANCE string "mDNS Instance Name" |
特に書式の書き方のDocumentsを見なくても一目瞭然ですね。
再度buildしてからsdkconfigを見てみるとmDNSの設定が追加されています。
そしてflashしてping esp32-mdns.localするとちゃんと応答が返ってきます。
(実は私の環境ではpingが返ってこないことがよくありました。PC側の問題の気もしますがPC側でWiFiをつなげなおすと直ったりしました)