/

M5Stack UnitV2 にサンプルアプリの認識結果をJSONで返すAPIを追加する

JSONを取得
JSONを取得

M5Stack UnitV2のサンプルアプリは画像の認識結果をブラウザ画面上で表示し続けますが、常に値が変わり続けるのでコピーしようとしても、コピーしようとした瞬間に値が変わってしまうので実際に使おうとすると大変です。

ですので今回はUnitV2にサンプルアプリの認識結果をJSONで返すAPIを追加します。

方法は下記のAもしくはB、どちらかの方法で行ってください。

A. 直接viで書き換える方法

UnitV2内の ~/payload/_server_core.py の下記のコードを追加してください。追加する場所は @app.route('/xxxxxxx') とパスと対応するメソッドが書かれている部分以降にしてください。私は600行目付近に追加しました。

sshでUnitV2にログインしてviで書き換えてください。

@app.route('/result_json')
def result_json():
    j = "None"
    for num in range(50):
        if pipe_result_rx_queue.qsize() != 0:
            j = pipe_result_rx_queue.get()
            pipe_result_rx_queue.task_done()
            break
        else:
            time.sleep(0.01)
            continue
    return Response(j, mimetype='application/json')

B. ファイルを置き換える方法

こちらの方が A. よりも簡単というかお手軽です。

こちらからsever_core.pyをダウンロードしてきます。

# @PC UnitV2にsshでログイン
$ ssh m5stack@unitv2.py

# @UnitV2 /dev/nullのpermissionを変えないとscpできない
$ sudo chmod 666 /dev/null

# @PC PCからUnitV2へscpでファイルをもっていく
# コピー先を/media/sdcardにしたのは~/だとm5stackユーザーが直で置けないため、m5stackユーザ用のディレクトリをどこかに作ってもいい
$ scp <ファイルを置いたディレクトリ>/server_core.py  m5stack@10.254.239.1:/media/sdcard/

# @UnitV2 一応置き換える予定のserver_core.pyをリネームしておく
$ sudo mv ~/payload/server_core.py ~/payload/_server_core.py

# @UnitV2 server_core.pyを~/payload/にコピー
$ sudo cp /media/sdcard/server_core.py ~/payload/

M5Stack UnitV2を再起動してAPIを叩く

  1. M5Stack UnitV2を再起動する。USBを再接続でもいいと思いますが、私はsudo haltしてからUSBを抜き差ししています。

  2. M5Stack UnitV2が再起動したら ブラウザでhttp://10.254.239.1/ を表示します。

  3. "Face Recognition"などのモードに変更します。

  4. http://10.254.239.1/result_json を叩くとJSONが取得できます。

これでJSONが好きなタイミングで取得できます。