#はじめに
自分用の単なる覚書です。
仕事でEchonet Liteやってますが、よく忘れるので
#通信プロトコル
ECHONET-liteはUDPで通信する。
ポート:3610
#ECHONET Liteのパケット構造
こんな感じのバイナリのパケット構造
詳しくは、ここに書いてあります。
#簡単に説明
##ECHONETヘッダ【EHD1,2】
基本的に、0x1081でOK 2Byte
EHD1 : 0x10 = ECHONET Lite、 0x80 = ECHONET
EHD2 : 0x81 = 規定電文形式、0x82 = 任意電文形式
##Transaction ID
基本的には、パケットを送信する毎に、カウントUPする。 2Byte
応答が必要なパケットを送信した時に、どのパケットに対する応答パケットかを紐付けたりする。
##送信元のオブジェクト【SEOJ】、宛先のオブジェクト【DEOJ】
送信元のオブジェクトを示す。 3Byte
[ クラスグループコード、 クラスコード、 インスタンス ]の構造
クラスグループコード | クラスグループ名 |
---|---|
0x00 | センサ関連機器 |
0x01 | 空調関連機器 |
0x02 | 住宅・設備関連機器 |
0x03 | 調理・家電関連機器 |
0x04 | 健康関連機器 |
0x05 | 管理・操作関連機器 |
0x06 | AV関連機器 |
0x07 ~ 0x0D | for future reserved |
0x0E | プロファイルクラス |
0x0F | ユーザー定義クラス |
0x10 ~ 0xFF | for future reserved |
クラスコードは、上位のクラスグループによって、沢山規定されてるので、規格(Appendix)を見てください。
##サービスコード【ESV】
パケットが書き込みの要求なのか、読み出しの要求なのかを示す。 1Byte
コードは以下の通り
ESV | 内容 | 記号 | 備考 |
---|---|---|---|
0x60 | プロパティ書き込み(応答不要) | SetI | |
0x61 | プロパティ書き込み(応答必要) | SetC | |
0x62 | プロパティ読み出し | Get | |
0x63 | プロパティ通知 | INF_REQ | |
0x6E | プロパティ書き込み読み出し | SetGet | |
0x71 | 書き込みの応答 | Set_Res | ESV 0x61の応答 |
0x72 | 読み出しの応答 | Get_Res | ESV 0x62の応答 |
0x73 | プロパティ値通知 | INF | |
0x74 | プロパティ値通知(要応答) | INFC | |
0x7A | プロパティ通知応答 | INFC_Res | ESV 0x74の応答 |
0x7E | プロパティ書き込み読み出しの応答 | GetSet_Res | ESV 0x6Eの応答 |
#プロパティカウンタ【OPC】
EPCの数を示す。 1Byte
基本的に0x01が多い気がする。
###OPCが0x01の場合
電源をONするコマンドの例
OPC | EPC1 | PDC1 | EDT1 |
---|---|---|---|
0x01 | 0x80 | 0x01 | 0x30(ON) |
###OPCが0x02の場合
例えば、照明をONして、調光で1%を指定するコマンドを送信する場合(ESV以降)
EPC1,PDC1,EDT1でONする。EPC2,PDC2,EDT2で調光1%
OPC | EPC1 | PDC1 | EDT1 | EPC2 | PDC2 | EDT2 |
---|---|---|---|---|---|---|
0x02 | 0x80 | 0x01 | 0x30(ON) | 0xB0 | 0x01 | 0x01(1%) |
#ECHONET Liteプロパティ【EPC】
ECHONET Liteのコマンドを示します。 1Byte
EPCは機器によって異なるので、規格書を参照してください。
EPC 0x80は覚えておくと良いです。電源をONOFFするコマンド、基本どの機器も共通
EDT 0x30でON、0x31でOFF
#プロパティデータカウンタ【PDC】
EPCに紐づくデータ(EDT)のByte数を示す。 1Byte
#プロパティのデータ【EDT】
EPCに紐づくデータを示す。
これもEPCによって異なるので規格書を参照