RaspberryPiのGPIOをpythonから使うのは簡単。Lチカは簡単にできた。だとすると 次に、これをネットワーク越しに実現したいところ。できればhttpでコントロールできたら色々便利。 そこで、ネットワーク越しに別のマシンからGPIOを操る方法を探した。 Pythonでwebサーバを簡単に作れるフレームワークがあるらしいので、それを使って見た。
RaspberryPiにCherryPyをインストールする。Rasbianが動いていれば、以下のapt-getで簡単にインストールできる。
$ sudo apt-get install python-cherrypy3
#!/usr/bin/env python
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
とても簡単。これを起動するとサーバとして動き出す。アドレスはデフォルトで、ローカルホストの8080。 同じマシンからcurlすると以下のようになる。
$ curl http://127.0.0.1:8080 Hello World!
他のマシンからも見られるようにするには、RaspberryPiに割り当てたアドレスを使って公開すればよい。デフォルトを変更するには、cherrypy.config.updateを使う。以下はアドレスが192.168.0.80の場合。
#!/usr/bin/env python
import cherrypy
cherrypy.config.update({'server.socket_host': '192.168.0.80',
'server.socket_port': 8080,
})
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
他のマシンからwebブラウザで見ると以下のようになる。