#はじめに
ECHONET Liteの電文作成方法について記述します。
詳しくは以下の規格書で確認してください
ECHONET Lite規格書
#電文構成
フレーム
電文のフレームは下の図のようになっている。
決められた要素とバイト数で記述をしていく
###例えば
「空気清浄機 を on にする」 ⇨ 1081000005FF010135016101800130
の電文の場合 対応する要素と数値は以下のようになる。
##EHD1 & EHD2
電文が ECHONET Liteであることを宣言する部分
基本的にこの部分に入る 文字は
1081
以外は入らないので 電文の最初は1081のままでよい
##TID
この部分は自由記述である。
なので、2バイト以内なら
1111 or 1234 or 1573 or 1899
どんな文字を記入してもよい。
最初のうちはわかりにくいので、0000 を入れることをお勧めする。
※ TIDの便利な使用方法は下で紹介する。
##SEOJ
送信元機器を明記する。
要するに、自分の機器名(ECHONET Liteオブジェクト)を記述する。
例えば、自分のパソコンが家電機器に命令を送信したい場合は
SEOJ ⇒ 05FF01
になる。 主に使用される機器名(ECHONET Liteオブジェクト)は以下である
他の機器名(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 になっている
②と③ はどちらも機器から返事が返ってくるが、違いとして
②は機器を制御する
③は制御しないで状態の取得だけを行う。
##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
####一般照明
一般照明の機器固有オブジェクトは以下のようになる
例えば、照明の 光色を 白色 に変化させたい場合
EPC ⇒ B1 , EDT ⇒ 42
※ アクセスルールとはESV の説明にあった Set と Get の使用が出来るかを示している。
もしも、アクセスルールに Get しかなかった場合、そのプロパティはGet の要求しか行えない。
#まとめ
基本的に以下の ? の部分を変えればよい
何の機器を どうしたいのかは APPENDIX ECHONET機器オブジェクト詳細規定を参照
#TID の使い方について
TIDは自由記述なので2バイトならば何を記述してもよい。
ECHONETの約束ごととしてGetや SetCで来たとき応答するときのパケットは送られて来たときの、TIDと同一の文字列を返すようになっている。
なんで、LAN内にECHONETLite電文が複数ある場合など、プログラム内で電文の処理をしやすくなる。