openECHO!ホームネットワーク機器と化したラズパイ
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

openECHO!ホームネットワーク機器と化したラズパイ

2013-08-28 01:01
  • 1
  • 1
というわけでさっきの続き。ここで前回の思わせぶりなフリの答えを書くと、チェックしてたのはここ。このライブラリがRaspberry Piで使えて、しかも拡張I/Oの制御と連動させられればホームネットワーク機器が簡単に作れるんじゃね?と思った次第です。

openECHO for Processingを試す


 まず、openECHOがRaspberry Piに対応していなければお話にならないので、サンプルプログラムで動作確認。こちらのサンプルエミュレータプログラムを動かしてみる。
 
 結論から言うと特に苦も無く動作した。Windowsの場合と同様、application.linux64ディレクトリに_f_Back_ディレクトリをコピーした後application.linux64ディレクトリで
./MoekadenRoom
でOK。

 次に、チュートリアルを読みつつ各種Exampleをコンパイルしてみる。
 前回同様、Runボタンから動かそうとするとJavaが新しすぎると怒られる。よってExport Applicationからコンパイルを行って動作確認。いくつかwarningがでるが、特に問題なく動作した。

Raspberry PiをECHONETLite機器にする


 いよいよ仕上げ。openECHO for ProcessingとPi4Jを連動させてRaspberry PiをECHONET
Lite機器として動作させてみる。概略は以下の通り
  • 回路:前回のPi4JのExampleと同じ
  • プログラム:openECHO for Processingの付属ソースTutrial4_LightEmulatorを改造。改造個所は以下の通り
import java.io.IOException;
import processing.net.*;
import controlP5.*;

import com.sonycsl.echo.Echo;
import com.sonycsl.echo.node.EchoNode;
import com.sonycsl.echo.eoj.profile.NodeProfile;
import com.sonycsl.echo.eoj.device.DeviceObject;

import com.sonycsl.echo.processing.defaults.DefaultNodeProfile;
import com.sonycsl.echo.eoj.device.housingfacilities.GeneralLighting;

/* ------------------ここから-------------------------- */
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;

GpioController gpio;
GpioPinDigitalOutput pin;
/* ------------------ここまで追加-------------------------- */

color backgroundLightOnColor = color(255, 204, 0);
color backgroundLightOffColor = color(0, 0, 0);
color backgroundNow = backgroundLightOffColor;

// 照明クラスを実装します。
public class LightEmulator extends GeneralLighting {
byte[] mStatus = {0x31}; // 電源状態を格納する変数です。デフォルトはOFFと仮定します。
byte[] mLocation = {0x00}; // 機器の置き場所を格納する変数です。
byte[] mFaultStatus = {0x42}; // 機器に問題が発生した時に、そのコードを格納します。
byte[] mManufacturerCode = {0, 0, 0}; // ベンダー固有のメーカーコードです。

protected boolean setOperationStatus(byte[] edt) {
mStatus[0] = edt[0] ;
//背景色を変更
if(mStatus[0] == 0x30){
backgroundNow = backgroundLightOnColor;
pin.high(); /* ------------------この行を追加------------------ */
}else{
backgroundNow = backgroundLightOffColor;
pin.low(); /* ------------------この行を追加------------------ */
}
/* ---------------------中略--------------------- */
/* -------------------ここから------------------- */
gpio = GpioFactory.getInstance();
pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLed", PinState.LOW);

/* -------------ここまでsetup()内に追加------------------- */
/* -------------------以下省略------------------- */

このソースをtest2.pdeとして保存した後、これまでと同様Export Applicationからコンパイルを行う。その後コマンドラインから
cd ~/sketchbook/test2/application.linux64
sudo ./test2

と実行。
 とりあえず自分の環境からはwindow上のボタンのクリック・ECHONETLite電文受信いずれの場合でもwindow上のランプエミュレーション表示とLEDの明滅の連動が確認できた。
 たとえば、上記プログラムを実行して表示ウインドウのLIGHT ONボタンを押して表示とLEDが点灯させたのち、同一LAN上の別マシンでopenECHO for Processingの付属ソースTutrial3a_AllLightsAirconOffを実行するとランプエミュレーション表示とLEDが同時にOFFになることが確認できた。

 以上、Raspberry PiをECHONETLite機器として動作させることに成功w

まとめのようなもの


 とりあえずチュートリアルプログラムが動いた時点で、Raspberry PiがECHONETLiteの実機エミュレーターとして使えることが判明。また、Pi4Jを組み込むことが可能であることが分かった。以上から、
Raspberry Pi+openECHO for Processing+Pi4JでECHONETLite機器が開発可能
であることが確認された。

 まあ、これらをそのまま使ってECHONETLite機器として売り出す、といったことまで考えるとなると問題はありまくりだが(Pi4Jを組み込むとrootでないとアプリが動かない、電池で動かすのは運用上無理、筐体はどうすんだ、とか)、ソフト・ハード開発用のテスト機器としては十分に使い物になるのではないかと思う。
 また、自分はJavaに関しては素人に近いのだが、ここまでやるのに(通算実使用時間で)半日もかからなかった。Linux上でのJavaの開発に慣れた人であれば、きちんとしたソフトウェアが容易に作れるのではないかと思う。
 なお、今回はGPIOしか試していないが、Pi4Jには各種シリアルインターフェースをアクセスするクラスも用意されているようなので、各種センサーノードのECHONETLite機器も同様の方法で製作可能だろう。

 以上、とりとめのない部分もあるかもしれないが何かの参考になれば。
広告
×
先日ceatec2013に行って、初めてECHONETLiteの存在を知ったのですが
・・・この記事ァすげぇ!!

早速Raspberry Pi注文しました!
ECHONETLiteが世界中で普及して欲しいですね!!
49ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。