obniz-cliでの書き込み

obniz-cli

obniz-cliはnpmで配信されているobnizOS書き込み専用のソフトで主に以下のことが可能です。

  • obnizOSの書き込み
  • クラウドにサインインしてデバイスの生成
  • obnizIDを指定してのDeviceKeyの書き込み
  • Wi-Fiなどネットワークの設定

obniz-cliがあれば、デバイスの生成からWiFi設定までを1コマンドで済ませることができるので、大量なデバイス生成も容易です。

例えば以下のコマンドでデバイスの生成(説明付き)=>OSの書き込み=>WiFi設定が行われます。

obniz-cli os:flash-create -p /dev/tty.USBSERIAL --description "工場Aに設置" --config ./wifi-config.json

obniz-cliの準備

obniz-cliはEspressif社提供の公式ツール「esptool」を利用することで書き込みを行います
利用にはNodejs12以降とpipが必要となります。
ここからの利用方法は https://github.com/obniz/obniz-cli に載っているのでそれに従います。

まずnpmでインストールします。シェルから以下を実行します。

npm i obniz-cli -g

次にesptoolをインストールします

pip install esptool

これでソフトウェアの準備は完了です。プログラムを書き込みたいデバイスをシリアルでPCと接続します。

USBドライバについて

プロセッサにプログラムを転送するためにマシンにUSBドライバが必要な場合があります(DevKitCやM5Stackは必要なことが多いです)、その場合はhttps://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers このドライバがESP32の開発ボードで利用されている場合が多いので、必要に応じてインストールしてください。(可能性として高いと言うだけです。正確なものはメーカーのドライバ情報をご確認ください)

obniz-cliより利用できるシリアルポートを以下コマンドで確認できます。

obniz-cli os:ports

obniz-cliでのデバイス生成

サインイン

まずはobnizクラウドにサインインする必要があります。

obniz-cli signin

上記コマンドでブラウザが立ち上がり認証画面となります。obniz-cliへの認証を行っていただくとサインインが完了し、シェルに完了が表示されます。

生成と書き込み

以下のコマンドでアカウント上にデバイスが生成され、OSの書き込みと同時にデバイスキーの設定が行われます(シリアルポート名はあなたのものをご利用下さい)

obniz-cli os:flash-create -p /dev/tty.USBSERIAL

obnizOSは無指定ではobnizOS for ESP32の最新のものがダウンロードされます。

ハードウェア別obnizOSの選択

無指定ではobnizOS for ESP32が指定されています。--hardwareを指定することで専用obnizOSをインストールすることでディスプレイなどが起動時から利用できるようになります。例えばobnizOS for M5StickCなら

obniz-cli os:flash-create -p /dev/tty.USBSERIAL --hardware m5stickc

となります。hardwareは以下から選択可能です。

Device OS --hardware
M5Stack Basic obnizOS for M5Stack Basic m5stack_basic
M5StickC obnizOS for M5StickC m5stickc
ESP32, ESP32-PICO, ESP32-WROOM32, DevKitC obnizOS for ESP32 esp32w

デバイスキー設定失敗時の挙動

デバイスの生成後、デバイスに対してDeviceKeyの設定が行われます。
その設定に失敗した場合も、同じコマンドを実行することで前回書き込みに設定した番号を書き込むか聞かれますのでYESと答えれば書き込むことができます。
また、生成されたデバイスはあなたのアカウントにすでに存在しているため以下のobnizIDを指定した書き込みでも書き込むことができます、

自動設定

OS書き込み時に以下の設定も同時に行うことができます。

  • Wi-Fiなどネットワーク設定
  • descriptionの設定
obniz-cli os:flash-create -p /dev/tty.USBSERIAL --description "工場A" --config ./wifi-config.json
引数 説明 設定例
--description obnizクラウド上に保存されるデバイスの説明 --description "工場A"
--config ネットワーク設定 --config ./wifi-config.json

所有デバイスの書き込み

あなたのデバイス一覧にあるデバイスを書き込む方法です。サインインした上でobnizIDを指定して書き込みます。

obniz-cli os:flash -p /dev/tty.USBSERIAL -i 0000-0000 --config ./wifi-config.json
引数 説明 設定例
-i アカウント内にあるobniz ID -i 0000-0000

消去方法

設定を間違えた場合などデバイスキーも含めobnizOSも削除して初期化することができます。

obniz-cli os:erase

ターミナルからの設定

obnizOSと対話することでobniz-cliを使わずにデバイスキーの設定することも可能です。
obnizOSの書き込みだけ行われたデバイスではターミナル経由で設定できます。

まず、デバイスとシリアル通信にて設定を行います。お使いのターミナルアプリ又は以下のpythonモジュールで通信できます。

python -m serial.tools.miniterm /dev/tty.SLAB_USBtoUART 115200

通信を開始した段階でデバイスキーの入力待ちとなっています。
エンターキーを押すことで以下の表示が出れば正常にobnizOSが動作しています。

DeviceKey: 

また、通信した状態でデバイスをリセットすると以下のように表示が行われます。

obniz ver: 2.0.0
DeviceKey: 

この状態でデバイスキーの書き込みを待っています。
クラウドからダウンロードしてきたデバイスキーは以下のような文字列になっています。

12345678&5f4fd05f4fd07ebbb7275f4fd08a6075f4fd08a60267a35b2

これをそのまま入力しエンターキーを押すことで設定が完了します。
完了後はネットワークの設定となります。