RAPIRO(ラピロ)をWebサーバにしてスマホやPCから制御する
さて、Pythonを使ってWebサーバを立ててみようと思います。これがなんとなくラピロの制御には相性良さそうなので。
まず、Pythonは2.x系と3.x系で色々変わっているらしいので、とりあえずバージョンを確認。
$ python -V
現時点(11/22時点)でRaspbianにデフォルトで入っているのは、Python 2.7.3の模様。これから使おうとしているWebフレームワーク”bottle“は2.5以上なら動くそうなので、問題なし。
次に、適当なディレクトリを作成&移動してから、bottleをとってきます。
$ wget http://bottlepy.org/bottle.py
1ファイルだけなので、とても楽。
次に、bottle.pyと同じ場所にサンプルソースを作成。
from bottle import route, run @route('/hello') def hello(): return "Hello World!" run(host='192.168.xxx.xxx', port=10080, debug=True)
hostのところは、Raspberry Piに割り当てられているIPアドレスを設定。
作成できたら、以下で実行。
$ python rapiro_server.py Bottle v0.13-dev server starting up (using WSGIRefServer())... Listening on http://192.168.xxx.xxx:10080/ Hit Ctrl-C to quit.
同じローカルネットのPCやスマホのブラウザで”http://192.168.xxx.xxx:10080/hello”にアクセスしてみて、”Hellow World!”が表示されれば成功です。
…うーん、node.jsの10倍、Tomcatの100倍ぐらい簡単だった気がします。
次に、rapiro_server.pyをもうちょっとだけ改造して、ラピロをブラウザから動かしてみます。
from bottle import route, run import serial com = serial.Serial('/dev/ttyAMA0', 57600, timeout = 10); @route('/hello') def hello(): com.write("#M5") return "Hello!" @route('/stop') def stop(): com.write("#M0") return "OK, Stopped." run(host='192.168.xxx.xxx', port=10080, debug=True)
これだけ。
“http://192.168.xxx.xxx:10080/hello”で両手を挙げて頭を振り、”http://192.168.xxx.xxx:10080/stop”で止まるはず。
…うわあ、node.jsとTomcatの苦労は何だったんだ、と思うぐらいに簡単にできてしまった。
HTTPリクエストさえ発行できれば、発行元はプログラムでもブラウザでも何でもありだし、PCからだろうがスマホからだろうが何でもありなので、これができればスマホリモコンなんかは簡単に作れると思います。HTML+CSS+JavaScriptあたりでブラウザアプリを作り込んでいくことになるのかなーと思っています。
一個、これを使って、意味はないけど楽しそうな制御の仕方を思いついたので、別記事で試してみます。
ディスカッション
ピンバック & トラックバック一覧
[…] ということは、この前Python使ってWebサーバ化したラピロもジェスチャで制御できるのではなかろうか? […]