ECHONET Liteの電文 作成方法

  • 8
    いいね
  • 0
    コメント

はじめに

ECHONET Liteの電文作成方法について
ECHONET Liteの電文は対象機器に制御命令を記述します。
※ECHONET Lite(ISO/IEC 14543-4-3)国際規格

例えば
1081000005FF010135016101800130  の場合は
    空気清浄機を起動する

っといいた命令になっています!!
今回は、どうやってこの文字を作成するのかって話です!!

わからなかった人は
RubyでECHONET Lite家電を制御する ← リンク先のサンプルコードで

msg=[
0x10,0x81,
0x00,0x00,
0x05,0xFF,0x01,
0x01,0x35,0x01,
0x61,0x01,
0x80,0x01,
0x30
].pack("C*")

の部分が今回の話です

ちなみに、この記事の内容の詳しい説明は規格書を読んで欲しいです。
ECHONET Lite規格書 ← リンク先の第2部 ECHONET Lite 通信ミドルウェア仕様 に詳しい説明があります。

電文構成

フレーム

電文のフレームは下の図のようになっている。
決められた要素とバイト数で記述をしていく
電文フレーム.jpg

例えば

冒頭で紹介した
1081000005FF010135016101800130 の電文の場合 対応する要素と数値は以下のようになる。
電文構成.jpg

EHD1 & EHD2

電文がECHONET Liteであることを宣言する部分
基本的にこの部分に入る 文字は
     1081
以外は入らないので 電文の最初は1081のままでよい

TID

この部分は自由記述である。
なので、2バイト以内なら

1111 or  1234  or  1573  or  1899

どんな文字を記入してもよい。
 最初のうちはわかりにくいので、0000 を入れることをお勧めする。
※ TIDの便利な使用方法は下で紹介する。

SEOJ

送信元機器を明記する。
要するに、自分の機器名(ECHONET Liteオブジェクト)を記述する。
例えば、自分のパソコンが家電機器に命令を送信したい場合は
SEOJ ⇒ 05FF01
になる。 主に使用される機器名(ECHONET Liteオブジェクト)は以下である

オブジェクト.jpg
他の機器名(ECHONET Liteオブジェクト)の検索は
APPENDIX ECHONET機器オブジェクト詳細規定を参照して欲しい

DEOJ

送信先の機器名(ECHONET Liteオブジェクト)を記述する
例えば、エアコンの制御をしたい場合
DEOJ ⇒ 013001
になる。主な送信先になるのは SEOJ と同じです

SEOJと同様に他の機器は
APPENDIX ECHONET機器オブジェクト詳細規定を参照する

ESV

送信時に使用するESVは主に3種類である。

① SetI

ESV ⇒ 60
エアコンの動作をONにする

② SetC

ESV ⇒ 61
エアコンの動作をONにし、エアコンからONになったことの応答をしてもらう。
応答の時、ESVは 71 で返ってくる

③ Get

ESV ⇒ 62
エアコンの動作状態を確認する。
エアコンの設定温度を確認する。
状態の応答は ESV ⇒ 72 になっている
ESV.jpg

②と③ はどちらも機器から返事が返ってくるが、違いとして
②は機器を制御する
③は制御しないで状態の取得だけを行う。

OPC

処理プロパティ数を示す。制御内容が一つの場合は
      OPC ⇒ 01
で示す。

※ 基本的に01 でよい

EPC

ECHONET Liteプロパティの指定をする。
ECHONET Liteプロパティは全機器共通の 機器オブジェクトスーパークラス と
機器固有の 機器オブジェクト
の二種類がある。

スーパークラス

スーパークラスは、どの機器に対しても、プロパティ名とEPCの値同じである。
例)
エアコンの動作状態を確認したい場合  EPC ⇒ 80
空気清浄機の動作状態を確認したい時も EPC ⇒ 80

機器固有のオブジェクト

エアコンの場合         空気清浄機        照明レベル
節電動作設定 : 8F      風量設定   : A0   照明レベル: B0
運転モード  : B0      空気汚れ検出 : C0   点等モード: B6
温度自動設定 : B1                   光色設定 : B1
など

※詳しい説明は下のEDTと一緒に説明をする

PDC

EDTのバイト数を示す。制御内容が一つの場合は
      PDC ⇒ 01

※ 基本的に01 でよい

EDT

EPCで指定したプロパディ名によって、値を入れる

スーパークラスの場合

EPC ⇒ 80(動作状態) の時は
EDT ⇒ 30(ON)
    ⇒ 31(OFF)

機器固有のオブジェクト

エアコン

エアコンの場合、機器固有のオブジェクトは以下のようになる
例えば、 エアコンの風向きスイングを 上下に 変化させたい場合
   EPC ⇒ A3 , EDT ⇒ 41
Aircon.jpg

一般照明

一般照明の機器固有オブジェクトは以下のようになる
例えば、照明の 光色を 白色 に変化させたい場合
   EPC ⇒ B1  ,  EDT ⇒ 42
一般照明.jpg

※ アクセスルールとはESV の説明にあった Set と Get の使用が出来るかを示している。
もしも、アクセスルールに Get しかなかった場合、そのプロパティはGet の要求しか行えない。

まとめ

基本的に以下の ? の部分を変えればよい
何の機器を どうしたいのかは APPENDIX ECHONET機器オブジェクト詳細規定を参照
電文構成 送信.jpg

TID の使い方について

TIDは自由記述なので2バイトならば何を記述してもよい。
ECHONETの約束ごととしてGetや SetCで来たとき応答するときのパケットは送られて来たときの、TIDと同一の文字列を返すようになっている。
なんで、LAN内にECHONETLite電文が複数ある場合など、プログラム内で電文の処理をしやすくなる。

TID.jpg

独り言

電文構成の基本部分は「まとめ」の図をみればなんとなくわかると思う。また、電文構成がどんな感じだったかを思い出すにも最後の「まとめ」の画像をみると楽だと思う
今回は送信するときに必要な電文作成のことを説明したが、
受信したときの電文を読めるように、ECHONET LiteのAPPENDIXのみかたの説明をしようと思う。

参考文献

ECHONET Lite規格書
APPENDIX ECHONET機器オブジェクト詳細規定