MENU

RAPIRO(ラピロ)をWebサーバにしてスマホやPCから制御する

さて、Pythonを使ってWebサーバを立ててみようと思います。これがなんとなくラピロの制御には相性良さそうなので。

まず、Pythonは2.x系と3.x系で色々変わっているらしいので、とりあえずバージョンを確認。

[code language=”bash”]
$ python -V
[/code]

現時点(11/22時点)でRaspbianにデフォルトで入っているのは、Python 2.7.3の模様。これから使おうとしているWebフレームワーク”bottle“は2.5以上なら動くそうなので、問題なし。

次に、適当なディレクトリを作成&移動してから、bottleをとってきます。

[code language=”bash”]
$ wget http://bottlepy.org/bottle.py
[/code]

1ファイルだけなので、とても楽。

次に、bottle.pyと同じ場所にサンプルソースを作成。

[code title=”rapiro_server.py” language=”python”]
from bottle import route, run

@route(‘/hello’)
def hello():
return "Hello World!"

run(host=’192.168.xxx.xxx’, port=10080, debug=True)
[/code]

hostのところは、Raspberry Piに割り当てられているIPアドレスを設定。

作成できたら、以下で実行。

[code language=”bash”]
$ 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.
[/code]

同じローカルネットのPCやスマホのブラウザで”http://192.168.xxx.xxx:10080/hello”にアクセスしてみて、”Hellow World!”が表示されれば成功です。

…うーん、node.jsの10倍、Tomcatの100倍ぐらい簡単だった気がします。

次に、rapiro_server.pyをもうちょっとだけ改造して、ラピロをブラウザから動かしてみます。

[code title=”rapiro_server.py” language=”python”]
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)
[/code]

これだけ。

“http://192.168.xxx.xxx:10080/hello”で両手を挙げて頭を振り、”http://192.168.xxx.xxx:10080/stop”で止まるはず。

…うわあ、node.jsとTomcatの苦労は何だったんだ、と思うぐらいに簡単にできてしまった。

HTTPリクエストさえ発行できれば、発行元はプログラムでもブラウザでも何でもありだし、PCからだろうがスマホからだろうが何でもありなので、これができればスマホリモコンなんかは簡単に作れると思います。HTML+CSS+JavaScriptあたりでブラウザアプリを作り込んでいくことになるのかなーと思っています。

一個、これを使って、意味はないけど楽しそうな制御の仕方を思いついたので、別記事で試してみます。

 

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (2件)

コメントする

目次