3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MicroPythonでBlynk

Last updated at Posted at 2019-06-03

#免責
この記事に従って発生した如何なる損害も筆者は負うことができません。ご免なさい。

#はじめに
使い勝手が良いのでMicroPythonがお気に入りです。
ここではBlynkに挑戦します。
MicroPythonをUbuntuなどにインストールするにはこちらを参考にしてみて下さい。

#目的
MicroPythonでBlynkしたいと思います。

#準備
ここでは説明しませんが、Blynkのアカウントはスマホを操作して用意しておいて下さい。
デバイス(または母艦)に既にインストールしてあるMicroPythonにBlynkLibが使うパッケージを用意しておきます。struct、time、os、socketを使えるようにしておきます。

Blynkが使うPythonパッケージをインストール
$ micropython
MicroPython v1.11-37-g62f004b on 2019-06-05; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>>
>>> import upip
>>> upip.install("struct")
>>> upip.install("time")
>>> upip.install("os")
>>> upip.install("socket")
>>>

#どのBlynkLibパッケージを使うか
残念ながら、公式版のBlynkLibはimportするとエラーになります。osパッケージのunameにアクセスしようとして、エラーになります。
issue-27が上がっていますが公式版は修正されておらず、jsikorskyさんが修正してくれていますので、そちらを使います。

###公式版(動かない)
https://github.com/vshymanskyy/blynk-library-python.git

公式版Blynk(動かない)
$ micropython
MicroPython v1.11-37-g62f004b on 2019-06-05; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>>
>>> import upip
>>> upip.install("blynk-library-python")
>>>
>>> import BlynkLib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/.micropython/lib/BlynkLib.py", line 49, in <module>
AttributeError: 'module' object has no attribute 'uname'
>>>

###jsikorskyさん版(動く)
issue-27の対応をしているので、エラーが出ません。
https://github.com/jsikorsky/blynk-library-python.git

jsikorskyさん版(動く)
$ # UNIX版MicroPythonの場合
$ mkdir -p ~/.micropython/lib
$ wget -O ~/.micropython/lib/BlynkLib.py https://raw.githubusercontent.com/jsikorsky/blynk-library-python/master/BlynkLib.py
$ micropython
MicroPython v1.11-37-g62f004b on 2019-06-05; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>>
>>> import BlynkLib

    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ for Python v0.2.0 (linux)

>>>

#サンプル(virtual_write.py)を試す
スクリプトからスマホへ時刻を秒にして送るBlynkLibのサンプルを試します。

###スマホのBlynkアプリにMyDeviceを作る
スマホのMyDeviceに"Labeled Value"を"INPUT V0"で作ります。
必死に探せば"AUTH TOKEN"を自分にメールしてくれるボタンが見つかるので押します。このトークンを後でスクリプトに書き込みます。
トークンを手に入れたら、再生ボタンでデバイスを動かしておきます。

###Blynkサンプルを用意する
スクリプトをダウンロードしてコードの中にメールでゲットした"AUTH TOKEN"を書き込みます。

Blynkサンプル
$ wget -O virtual_write.py https://raw.githubusercontent.com/jsikorsky/blynk-library-python/master/examples/virtual_write.py
$ vi virtual_write.py #ここで編集

###MicroPythonでサンプルを動かす
準備できたのでvirtual_write.pyをimportして実行します。
スクリプトが正しく動くと、1秒毎にBlynkアプリに"time:xxxx.xxx"と表示されます。
スクリプトを再起動するにはMicroPython自体を再起動します。

Blynkサンプルを実行
$ # UNIX版MicroPythonの場合
$ micropython
MicroPython v1.11-10-g84f1067f7 on 2019-06-02; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>> import virtual_write

    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ for Python v0.2.0 (linux)

1 sec elapsed, sending data to the server...
1 sec elapsed, sending data to the server...
1 sec elapsed, sending data to the server...
1 sec elapsed, sending data to the server...
1 sec elapsed, sending data to the server...
1 sec elapsed, sending data to the server...
1 sec elapsed, sending data to the server...

#デバイスならバイトコードがお勧め
mpy-crossを使って*.pyから*.mpyにしておくとリソースの消費が少なくなるようです。
特にデバイスではライブラリ類は小さくしたいものです。
UNIX版のMicroPythonでは-mcache-lookup-bcオプションを付けた方がよさそうです。

mpy-crossでバイトコードにする(軽量化)
$ # UNIX版MicroPythonの場合
$ pushd ~/.micropython/lib
$ mpy-cross -mcache-lookup-bc BlynkLib.py
$ mv BlynkLib.py BlynkLib.backup # *.pyが優先されるようなので移動
$ popd

こうするとデバイスでも色々と大きめのパッケージも使えるようです。

#参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?