Wi-Fiを有効にする
USE_WIFIでWi-Fiサポートをビルドに組み込みます。
Wi-Fiのネイティブコード(Network::WiFi / ESP32::WiFi、およびpicoruby-socketの
Wi-Fi経由のTCPServer/TCPSocket)は、デフォルトでは組み込まれていません。
有効にするには、ビルド前にUSE_WIFI環境変数を設定してください
(ビルドを参照)。
$ export USE_WIFI=1
$ rake build
これは、例えばmrdebugの Wi-Fi経由のリモートデバッグを使う場合に必要です (デバッグを参照)。
Note:
USE_WIFIはCMakeがプロジェクトを構成するときにしか読み込まれず、 ビルドのたびに読まれるわけではありません。すでにターゲットのセットアップや ビルドをUSE_WIFIを設定せずに実行している場合、単にUSE_WIFI=1 rake buildと しても反映されず、undefined reference to 'ESP32_WIFI_init'のような リンクエラーになることがあります。USE_WIFI=1をエクスポートした状態で ターゲットのセットアップをやり直し、強制的に再構成してください。$ export USE_WIFI=1 $ rake setup_esp32 # ビルド対象のターゲットに合わせて $ rake build
起動時に自動接続する
storage/etc/network/wifi.ymlに暗号化されたWi-Fi認証情報ファイルを生成すると
(ファイル転送を参照)、
main_task.rbが起動のたびにこれを読み込んで自動接続します。
$ rake gen_wifi_config SSID=your-ssid PASSWORD=your-password UNIQUE_ID=your-device-unique-id
UNIQUE_IDはデバイス自身のMachine.unique_idから取得します。一度接続して (クイックスタートのirbなど)、Machine.unique_idを 実行して確認してください。- 任意項目:
AUTO_CONNECT(デフォルトtrue)、RETRY_IF_FAILED(デフォルトtrue)、WATCHDOG(デフォルトfalse)、COUNTRY_CODE。
このファイルを生成したあとは、再ビルド・再フラッシュするか、wifi.ymlを
デバイスに直接アップロードするのを忘れないでください。
デバイス上で設定する(nmcli)
ビルド前にパソコン側でwifi.ymlを生成する代わりに、デバイス自身のシェル
(クイックスタートを参照)からnmcliを実行して、動作中の
デバイスに直接書き込むこともできます。デバイス自身がすでにMachine.unique_id
を知っているので、事前に調べる必要はありません。
$> nmcli
Ctrd-D to exit
Country Code? [JP]
WiFi SSID? your-ssid
WiFi Password? (leave blank if no password required)
Auto Connect? (y/n) [y]
Retry if failed? (y/n) [n]
Use Watchdog? (y/n) [n]
Successfully saved to /etc/network/wifi.yml
$> reboot
nmcliはファイルを書き込むだけです。デバイスは上記と同じ方法でこのファイルを
読み込んで自動接続しますが、それは次回起動時だけなので、反映させるには
reboot(または電源の入れ直し)が必要です。
Note: これは実行時の変更のため(ファイル転送を参照)、 デバイス上にしか残りません。あとから
rake flashを実行すると、ローカルのstorage/ディレクトリの内容(またはその欠如)で上書きされてしまいます。 オンデバイスのストレージに触れずにアプリだけを再フラッシュしたい場合は、 代わりにrake flash_factoryを使ってください。
このページの内容