チラシの裏の電子工作

電子工作、PC関係の備忘録というか、チラシの裏

ESP-WROOM-02 DHCPクライアントの切り替え

ESP-WROOM-02の電源再投入操作無しに、DHCPと固定IPを切り替える方法が無いか調べてみました。

固定IPにする方法は、ライブラリにちゃんと定義がありますね。(esp2866-2.0.0)

ESP8266WiFi.h

void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet);
void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns);

ってワケで、arduino公式の物(多分WiFiシールド用?)とは引数の順番が違うので、注意が必要です。
そもそもmaskは省略不可でない事自体がおかしい気がするんだけど、WiFiシールドはどうなってるんだ…

で、ESP8266WiFi.cppを読んでて気になったのが

wifi_station_dhcpc_stop();
wifi_station_dhcpc_start();

これってDHCPクライアントを止めたり動かしたりできるんでない?
定義自体を探してみたらあった。

user_interface.h

enum dhcp_status {
    DHCP_STOPPED,
    DHCP_STARTED
};
bool wifi_station_dhcpc_start(void);
bool wifi_station_dhcpc_stop(void);
enum dhcp_status wifi_station_dhcpc_status(void);


実際にESP8266WiFi.cppの内部では以下のように使用されていた。

wifi_station_dhcpc_start();
 WiFi.begin()の時のみ。(但しIPを固定にしてない場合)

wifi_station_dhcpc_stop();
 WiFi.config()つまりIPを固定にしたときのみ。

つまるところ、IPを固定にするときは何も考えずにWiFi.config()を叩けばよろしい。

一度固定IPにした後、DHCPからIPを得たければ

if(wifi_station_dhcpc_status()==DHCP_STOPPED){
  wifi_station_dhcpc_start();
}

こんな感じでいいんじゃないかな。



スポンサーサイト

カテゴリ:電子工作

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://nax9800.blog.fc2.com/tb.php/111-972a413f
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad