ECHONET Lite Emulatorの使い方（セットアップからパケット送信まで）

ECHONET Lite Emulatorのダウンロードの仕方から簡単な使い方（セットアップからパケット送信まで）を軽く説明します。

## ダウンロード・初期設定・起動

### ①Node.jsダウンロード(既にダウンロード済みなら②に進む)

[ダウンロード | Node.js](https://nodejs.org/ja/download)

- LTS版（長期サポート版）推奨
- 何もチェックは付けずに全部nextで良いはず

### ②EL Emulatorのパッケージをダウンロード

[GitHub - KAIT-HEMS/elemu: ECHONET Lite機器エミュレータは30種類以上の機器エミュレーターです。](https://github.com/KAIT-HEMS/elemu)

**②-1 下記の場所をクリック**

![EL-emu_code.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/55d93427-81ee-113a-6413-9ae36954da4a.png)


**②-2 下記の場所をクリックし、ZIPファイルをダウンロード**

![スクリーンショット 2023-06-01 011742.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/d5bb2517-8718-ad43-b782-d50e8450c585.png)


**②-3 ダウンロードしたZIPを展開し、適当なディレクトリに配置（私はDocuments直下に配置した）**

![スクリーンショット 2023-05-27 181100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/1870ec7d-f03e-345c-9a3c-4efe36a0e6cb.png)


- elemu-mainというフォルダ名になる

### ③EL Emulatorを起動できるように初期設定する

**③-1 ファイルエクスプローラーでelemu-mainフォルダに移動する**

**③-2 下記の欄に”cmd”を入力、エンターを押してカレントディレクトリ*が”elemu-main”になっているコマンドプロンプトを起動する**

![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/b74483e5-9ec2-08e8-ec81-2f59b25f4dd5.png)


※カレントディレクトリ…現在いるディレクトリのこと

下記の画像の場合はカレントディレクトリは”Documents”となる

![スクリーンショット 2023-06-01 015548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/4285ac6c-28b3-85d0-2f7a-849c77502fc2.png)

**③-3 コマンドプロンプトに`npm install`を入力し、エンターを押す**

- エラーが出なければ起動準備完了

### ④EL Emulatorを起動

**④-1 ③の1~2で行ったのと同じことを再び行い、コマンドプロンプトで”elemu-main”がカレントディレクトリになっている状態にする**

**④-2 コマンドプロンプトで`npm start`を入力し、エンターを押す**

![スクリーンショット 2023-06-01 020511.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/361b4bff-361e-b515-9e8f-ab8a971ed8a4.png)


- 上記の画像のように4つ”OK”が表示されたら起動成功
- 上記画像の例ではlocalhost(自身のPC)の8880番ポートで開始している
- 初回以降起動したい場合は④以降の処理を毎回行えばよい

### ⑤EL Emulatorにアクセス

ブラウザを立ち上げ、アドレスバーに下記のURLを記述してエンターを押す

[`http://localhost:8880/`](http://localhost:8880/)

下記のような画面が表示されたらアクセス成功

![スクリーンショット 2023-06-04 235636.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/f0148f78-0409-0dd5-5935-cb6adff59c41.png)


## パケット送信使い方

![スクリーンショット 2023-06-01 104421.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/603a7149-66e0-a185-a621-1b916969ae08.png)


## 各欄の説明

### 宛先IPアドレス

- パケットを送信する相手のIPアドレスを記述する欄。
- マルチキャスト（同じLANにつながっているEL機器全部に送りたい場合）は`224.0.23.0`を指定する。

### TID(Transaction ID)

- ECHONET Lite 通信において、要求送信側が応答受信時に、自己が送信した要求と受信した応答をひも付けするためのパラメータ
    - 例えば送信パケットのTIDを`0x11`で指定したら、応答パケットのTIDは同じ値の`0x11`になる。
- 基本は指定しなくてよい(EL Emulator側が自動で決めてくれるため)

### SEOJ(Source ECHONET オブジェクト)

- パケット送信元のEOJ(ECHONET Object)を指定する欄。
    - そもそも**EOJ**とは
        - EL機器のオブジェクトコードのこと。
        - 機器の種類（クラス）ごとに指定されている。
            - 例：家庭用エアコンクラス⇒`0x0130`
            　　一般照明クラス⇒`0x0290`
            　　他はAppendixを参照
            
            [](https://echonet.jp/wp/wp-content/uploads/pdf/General/Standard/Release/Release_Q/Appendix_Release_Q_rev1.pdf)
            
- ドロップダウンリストで指定する。
    
![スクリーンショット 2023-06-01 154752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/da8f8728-cae4-0cf2-369e-900722129422.png)

    
- **基本は`0x05FF:コントローラー`でよい。**

### DEOJ(Decision ECHONET オブジェクト)

- パケット送信先のEOJを指定する欄。
- SEOJと同じようにドロップダウンリストで指定する。

### インスタンス番号

- 基本は変更しなくてよい。
- まれにDEOJのインスタンス番号を`0x00`に指定する必要がある。

### ESV(ECHONET Lite サービス)

- ドロップダウンリストで指定する。
- 基本は`0x61:SetC`か`0x62:Get`を使用する。
    - `0x61:SetC`を使用する場合
        - EL機器を制御する場合に使用する。
        - 送信した機器から応答が返ってくる。
    - `0x62:Get`を使用する場合
        - EL機器の情報を取得する場合に使用する。
        - 送信した機器から応答が返ってくる。

### OPC(処理対象プロパティカウンタ)

- ドロップダウンリストで指定する。
- ECHONET Liteでは同時に複数の命令（プロパティ）を送信することができる。その命令の数を指定するのがOPCである。
※ESVが異なる命令は一度に送信できない。
- EL Emulatorでは0x01（1個）~0x0A（10個）の命令を一度に送信することができる。

### EPC(ECHONET プロパティコード)

- 命令の種類を指定する欄。
- ドロップダウンリストで指定する。
- DEOJの値によって選択肢が変化する。（オブジェクトによって使える命令が違うため。）
- ESVがSetに指定した場合とGetで指定した場合で使えるEPCが異なる。
- **選択ができても機器側が対応していない命令もある**ため、確認の必要がある。
- 下記にすべてのEL機器で使えるEPCで覚えておいたほうが良いものを示す。

| プロパティ名称 | EPC | 説明 |
| --- | --- | --- |
| 動作状態 | 0x80 | Set時 ⇒ ON/OFFを制御する,<br>Get時 ⇒ ON/OFFの状態が返ってくる。   |
| 識別番号 | 0x83 | ・Get時のみ使用可<br>・オブジェクトを固有に識別する番号が返ってくる。<br>・**ノードプロファイル(0x0EF001)のみにある(使用できる)** |
| メーカーコード | 0x8A | ・Get時のみ使用可<br>・メーカー固有の番号(ECHONETコンソーシアムで規定した番号)が返ってくる。<br>・メーカーを識別できる。   |
| Setプロパティマップ | 0x9E | ・Get時のみ使用可<br>・Set時に使える命令(EPC)が返ってくる。   |
| Getプロパティマップ | 0x9F | ・Get時のみ使用可<br>・Get時に使える命令(EPC)が返ってくる。 |
- 機器ごとのEPCを確認したい場合はAppendixを参照

[](https://echonet.jp/wp/wp-content/uploads/pdf/General/Standard/Release/Release_Q/Appendix_Release_Q_rev1.pdf)

### EDT(ECHONET プロパティ値データ)

- 命令の詳細を指定する欄。
- **ESV**を**Set**にした場合のみ使用する。
- EPCによって入力する値は異なる。
- ドロップダウンリストで指定できないため、Appendixを参照する必要がある。
    - 例：家庭用エアコンの設定温度を27℃にしたい場合
        
        ①Appendixで「家庭用エアコンクラス規定」の項まで移動
        
        ②「プロパティ名称：温度設定値」の行を見つける。
        
        ③下記の画像から温度設定をする場合はEDTを`0x00~0x32`に指定すればよいことがわかる。
        ④27は16進数で0x1Bなので、EDTに`0x1B`を入力する。
- **`0x`を除いた16進数で入力する。**
    - 上記の例だとEDTの欄に`1B`を入力する。
        
![スクリーンショット 2023-06-02 140109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628884/b55cf214-01b8-500a-cbe5-a0a99c302c47.png)