Skip to content

MiyazawaShi/echonet-lite

Repository files navigation

EchonetLite

これはECHONET Liteプロトコルの送受信を扱うためのモジュールです。

Installation

以下のコマンドでGemパッケージをインストールします。

Add this line to your application's Gemfile:

$ gem install echonet_lite

Usage

##送信, send

ECHONET Lite機器に対して制御または状態の確認は以下を実行する。

EL.sendString(ip, buffer)
EL.sendOPC1(ip,seoj,deoj,esv,epc,edt)

・ ip: ECHONET Lite機器のipアドレスまたは、マルチキャストアドレス(224.0.23.0) seoj,deoj..edt: ECHONET LiteのAPPENDIX ECHONET機器オブジェクト詳細規定を参照。

・ seoj,deoj等のECHONET Liteの電文構成解説は、ECHONET Liteの電文作成方法のページを参照する。

同一ネットワーク上のECHONET Lite機器に対しての探査を行う関数

EL.search

##送信例

# SET
EL.sendOPC1('192.168.2.163', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x61, 0x80,[0x30])
EL.sendOPC1( '192.168.2.163', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x61, 0x80,0x30)
EL.sendOPC1('224.0.23.0', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x62, 0x80,0x30)
EL.sendOPC1( '192.168.2.163', '05ff01', "013501", "61", "80", "31");
EL.sendOPC1( '192.168.2.163', "05ff01", "013501", EL.SETC, "80", "31");
EL.sendString('192.168.2.163',"1081000005FF010135016201800131")


# GET
EL.sendOPC1( '192.168.2.163', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x62, 0x80)
EL.sendOPC1('192.168.2.163', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x62, 0x80)
EL.sendOPC1( '192.168.2.163', '05ff01', "013501", "62", "80", "31");
EL.sendOPC1( '192.168.2.163', "05ff01", "013501", EL.GET, "80", "31");
EL.sendString('192.168.2.163',"1081000005FF01013501620180")
EL.sendOPC1('224.0.23.0', [0x05,0xff,0x01], [0x01,0x35,0x01], 0x62, 0x80)

# Search
EL.search

##受信, Receive ECHONET Lite機器から送られてくるパケットを受信する。

EL.ReceivePrint
EL.Receive(function)

・ReceivePrintでは受信したECHOENT Lite電文をコンソールに表示する。 ・Receive(function)では開発者が作成したfunction(関数)をコールバック関数として実行させる。

##受信例

require "echonet_lite"

EL.ReceivePrint
EL.search
text = gets

# =>["1081361005ff010ef0016201d600"]
# ["AF_INET", 63895, "192.168.2.167", "192.168.2.167"]
# ["108136100ef00105ff017201d60401013501"]
# ["AF_INET", 3610, "192.168.2.163", "192.168.2.163"]
require "echonet_lite"

def function(msg_r=nil,ip_r=nil)
  # 処理内容を記載する
  p msg_r
  p ip_r
end

EL.Receive(function)
EL.search
text = gets

# =>["1081361005ff010ef0016201d600"]
# ["AF_INET", 63895, "192.168.2.167", "192.168.2.167"]
# ["108136100ef00105ff017201d60401013501"]
# ["AF_INET", 3610, "192.168.2.163", "192.168.2.163"]

License

The gem is available as open source under the terms of the MIT License.