RaspberryPi WebIOPi が かなり使える件について(12/23)

今RaspberryPi 2でSPIとI2Cで環境センサを5つ動かそうとしているのだが、
MQTTとか新しい軽量プロトコルを使った方法を検討したのがとても難航していた。
で、上記の件「WebIOPi」という、python3で書かれたフレームワークを使って、
apache2+PHPなどよりは、少し高級な、ラッパーを使って組んでみている。

これが、上のMQTTがNode.jsを駆使しているのに対し、WebIOPiはjQuery.jsとPythonでWebサーバを実現しており、従来のHTTPプロトコルでとっつきやすい。

具体的には、他のサイトにも載ってるので、そちらを参照してもらえばいいが、本サイトでは、特にWebIOPiのサポートしているサンサーでないものも(つまりWebIOPiがサポートしているセンサーなら、定義ファイルにセンサーデバイス名を記述するだけで、汎用的にWebIOPiの固定デバイス名で設定や入出力が出来る)、pythonでセンサーの機能を呼び出す関数を作成してそれをWebIOPiで呼び出してやれば、サポートを待たずにそのセンサーを使うことが出来るので、結構Raspi標準のpythonで組まれたセンサープログラムを流用出来て、拡張性があるように思う。

ん、やることは結局python側でsetup(),loop()を書いて@webiopi.macroを使って宣言してやるだけなのだが、今MCP3002でCDSと水分センサを2チャンネルAD変換して取り込み、温度湿度気圧のI2Cセンサで3データ取り込むことを、基本のWebIOPiのインストールだけで出来る。

これは、個人でやるのに大げさなクラウドとか使わなくても出来るので、結構優位性があるんじゃないかな。
7.0.1になってMCP3X0XシリーズのMCP3002が入って使い勝手もよくなったし。
最初I2Cが使えなかった(I2Cのpython2.7用のライブラリpython-smbusしかなかった)のだけど、2015/9になってRaspi公式フォーラムにpython3用I2Cのpython3-smbusがパッケージ化されたことを知り、それをインストールすると、従来のpythonソース資産で動くようになったのが大きい。

もちろん、SPI用の関数(analogRead)はpython3でもサポートされていたので、さあこれでpythonでデータの入出力は出来た、じゃあWebインターフェースは何がいい?となったところで、クラウドやWebIOPi、apache2を試してきた。

そうそう、それとWebIOPiは自宅LAN内に公開する簡易Webサーバなのだが、これを普通のインターネットからアクセスする方法も、WeavedというVPNサービスをWebIOPiのセットアップで標準で出来るので、アカウントさえあればいつでも拡張することが出来る。ここも切り口がはっきりしていていいね。セキュリティも自分がアクセスする分にはVPNで確保されているし。

万能感あるわー

P.S.
12/31 追記:
12/30のは勘違いだったようだ。
Raspi上のEpiphanyブラウザだと動かないだけで、FireFox互換のIceweaselではきちんと動いた。
全く~標準ブラウザがJavascriptサポートしてないってなんだよ~
標準はやっぱり重くても世の中の標準をインストールしておいて欲しいよ。
軽量ソフトが入っているかなんてパッと見にはわからないのだから。
最近のディストリはどうかなんて、気にしてないし、ましてや入門者はわからない。
だったらWindowsみたいに自分で軽量化させてくれ~

P.S.
12/30 追加:
どうもwebiopi().createButtonのcallMacroが効かないようだ。
tutorials/2.macroのsendButtonがどうしてもsetLightHoursを呼び出してくれない。
Raspberry Pi 2 のサポートは、日本人の方がpatchをフォーラムに提案し、最初のHeadPinのWeb ON/OFFのが動くようになったが、まだそれだけなのかもしれない。
まあwebiopi -sで動かしてるから、サーバプロセスなら動くのかな。
仕方ない。webiopi備え付けのボタンクリエイト関数はやめて、普通のonClickイベントでcallMacroを呼び出して対処しよう。
[PR]
by k1segawa | 2015-12-23 11:41 | Comments(0)
<< RaspberryPi バック... Raspberry Pi Ze... >>