エコキュートのECHONETパケットを覗いてみた。

# はじめに
- ウチでは、１０年以上前に[エコキュート](http://www.daikinaircon.com/sumai/alldenka/ecocute/)を設置して使用してきました。
- 最近になって、LANアダプターを付加すると[タブレットで状態監視や操作](http://www.daikinaircon.com/app/home_app/index.html)を行えることを知り、色々と調べてみたところ、スマートメーターとの通信にも使われている、[ECHONET Lite準拠](https://echonet.jp/introduce/gz-000114/)とのこと。
- エコキュートの最新機種への置き換えと合わせて、有線LANアダプターも設置したので、どんなパケットが流れているのかをパケットキャプチャしてみました。
    - なお、パケット解析には[ECHONET Lite プロトコル解析器 for Wireshark](https://github.com/mzyy94/ECHONET-Lite-dissector)を使わせて頂きました。

---
# パケットの流れ
- ホームコントローラ（タブレットアプリ）を起動していると、
    - 最初に、自ノードインスタンスリストS、プロパティマップの取得
    - 以降、エコキュート状態１、消費電力、エコキュート状態２、エコキュート状態３の取得がサイクリックに行われているようです。

---

# 自ノードインスタンスリストS（EPC=0xd6）の取得
- EOJ（ECHONETオブジェクト）は、0x026b01（電気温水器クラス）であるようです。

    ```
ECHONET Lite
    ECHONET Lite Header (EHD)
    Transaction ID (TID): 0x00c0
    ECHONET Lite Data (EDATA)
        Source ECHONET Lite object (SEOJ): 0x0ef001 (Node profile)
        Destination ECHONET Lite object (DEOJ): 0x0ef001 (Node profile)
        ECHONET Lite service (ESV): Get_Res (0x72)
        Property size (OPC): 1
        Property 1: Self-node instance list S
            ECHONET Property (EPC): 0xd6 (Self-node instance list S)
            Property Data Counter (PDC): 4
            ECHONET Property Value Data (EDT): 01026b01
                Instance count: 1
                - Electric water heater (ID: 1)
```

---

# プロパティマップの取得
- 状変アナウンスプロパティマップ（EPC=0x9d）、Setプロパティマップ（EPC=0x9e）、Getプロパティマップ（EPC=0x9f）の３種類のプロパティマップを取得しているようです。

    ```
ECHONET Lite
    ECHONET Lite Header (EHD)
    Transaction ID (TID): 0x00c1
    ECHONET Lite Data (EDATA)
        Source ECHONET Lite object (SEOJ): 0x026b01 (Electric water heater)
        Destination ECHONET Lite object (DEOJ): 0x05ff01 (Controller)
        ECHONET Lite service (ESV): Get_Res (0x72)
        Property size (OPC): 3
        Property 1
            ECHONET Property (EPC): 0x9d
            Property Data Counter (PDC): 6
            ECHONET Property Value Data (EDT): 05808188c3ea
        Property 2
            ECHONET Property (EPC): 0x9e
            Property Data Counter (PDC): 12
            ECHONET Property Value Data (EDT): 0b8190919798b0b4b6c0e3e4
        Property 3
            ECHONET Property (EPC): 0x9f
            Property Data Counter (PDC): 17
            ECHONET Property Value Data (EDT): 241b6b4971796148020341410000020202
```

|EPC|状変|Set|Get|プロパティ|
|:-:|:-:|:-:|:-:|:-:|
|0x80|○|×|○|動作状態|
|0x81|○|○|○|設置場所|
|0x82|×|×|○|規格Version情報|
|0x83|×|×|○|識別番号|
|0x84|×|×|○|瞬時消費電力計測値|
|0x85|×|×|○|積算消費電力計測値|
|0x88|○|×|○|異常発生状態|
|0x89|×|×|○|異常内容|
|0x8a|×|×|○|メーカーコード|
|0x90|×|○|○|ONタイマ予約設定|
|0x91|×|○|○|ONタイマ時刻設定値|
|0x97|×|○|○|現在時刻設定|
|0x98|×|○|○|現在年月日設定|
|0x9d|×|×|○|状変アナウンスプロパティマップ|
|0x9e|×|×|○|Setプロパティマップ|
|0x9f|×|×|○|Getプロパティマップ|
|0xb0|×|○|○|沸き上げ自動設定|
|0xb1|×|×|○|沸き上げ湯温自動設定|
|0xb2|×|×|○|沸き上げ中状態|
|0xb4|×|○|○|手動沸き上げ停止日数設定値|
|0xb6|×|○|○|タンク運転モード設定|
|0xc0|×|○|○|昼間沸き増し許可設定|
|0xc3|○|×|○|給湯中状態|
|0xc4|×|×|○|風呂保温運転相対時間設定値|
|0xd1|×|×|○|給湯温度設定値|
|0xd3|×|×|○|風呂温度設定値|
|0xd4|×|×|○|風呂湯量設定4|
|0xd5|×|×|○|風呂湯量設定4設定可能最大レベル|
|0xe1|×|×|○|残湯量計測値|
|0xe2|×|×|○|タンク容量値|
|0xe3|×|○|○|風呂自動モード設定|
|0xe4|×|○|○|手動風呂追い焚き動作設定|
|0xe5|×|×|○|手動風呂足し湯動作設定|
|0xe6|×|×|○|手動風呂ぬるめ動作設定|
|0xe9|×|×|○|浴室優先設定|
|0xea|○|×|○|風呂動作状態監視|

---
# エコキュート状態の取得１
- ホームコントローラ（タブレットアプリ）に表示される内容が、ここで取得された値に由来していると思われます。

    ```
ECHONET Lite
    ECHONET Lite Header (EHD)
    Transaction ID (TID): 0x00c4
    ECHONET Lite Data (EDATA)
        Source ECHONET Lite object (SEOJ): 0x026b01 (Electric water heater)
        Destination ECHONET Lite object (DEOJ): 0x05ff01 (Controller)
        ECHONET Lite service (ESV): Get_Res (0x72)
        Property size (OPC): 7
        Property 1
            ECHONET Property (EPC): 0x80
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 30
        Property 2
            ECHONET Property (EPC): 0x81
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 20
        Property 3
            ECHONET Property (EPC): 0x89
            Property Data Counter (PDC): 2
            ECHONET Property Value Data (EDT): 0000
        Property 4
            ECHONET Property (EPC): 0x8a
            Property Data Counter (PDC): 3
            ECHONET Property Value Data (EDT): 000008
        Property 5
            ECHONET Property (EPC): 0xe3
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 6
            ECHONET Property (EPC): 0xe1
            Property Data Counter (PDC): 2
            ECHONET Property Value Data (EDT): 01f4
        Property 7
            ECHONET Property (EPC): 0xb2
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
```

|EPC|プロパティ|値|
|:-:|:-:|:-:|
|0x80|動作状態|起動中（0x30）|
|0x81|設置場所|浴室、バス（0x20）|
|0x89|異常内容|異常なし（0x0000）|
|0x8a|メーカーコード|？（0x000008）|
|0xe3|風呂自動モード設定|自動解除（0x42）|
|0xe1|残湯量計測値|500L（0x1f4）|
|0xb2|沸き上げ中状態|非沸き上げ中（0x42）|

---
# 瞬時消費電力計測値（EPC=0x84）の取得
- 文字通り、消費電力（W）で、このパケットでは100W（0x0064）を示しています。

    ```
ECHONET Lite
    ECHONET Lite Header (EHD)
    Transaction ID (TID): 0x00c5
    ECHONET Lite Data (EDATA)
        Source ECHONET Lite object (SEOJ): 0x026b01 (Electric water heater)
        Destination ECHONET Lite object (DEOJ): 0x05ff01 (Controller)
        ECHONET Lite service (ESV): Get_Res (0x72)
        Property size (OPC): 1
        Property 1
            ECHONET Property (EPC): 0x84
            Property Data Counter (PDC): 2
            ECHONET Property Value Data (EDT): 0064
```

---
# エコキュート状態の取得２
- ホームコントローラ（タブレットアプリ）に表示される内容が、ここで取得された値に由来していると思われます。

    ```
ECHONET Lite
    ECHONET Lite Header (EHD)
    Transaction ID (TID): 0x00c6
    ECHONET Lite Data (EDATA)
        Source ECHONET Lite object (SEOJ): 0x026b01 (Electric water heater)
        Destination ECHONET Lite object (DEOJ): 0x05ff01 (Controller)
        ECHONET Lite service (ESV): Get_Res (0x72)
        Property size (OPC): 6
        Property 1
            ECHONET Property (EPC): 0xc3
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 2
            ECHONET Property (EPC): 0xb2
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 3
            ECHONET Property (EPC): 0xea
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 4
            ECHONET Property (EPC): 0xd1
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 2a
        Property 5
            ECHONET Property (EPC): 0xd3
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 29
        Property 6
            ECHONET Property (EPC): 0xe1
            Property Data Counter (PDC): 2
            ECHONET Property Value Data (EDT): 01f4
```

|EPC|プロパティ|値|
|:-:|:-:|:-:|
|0xc3|給湯中状態|非給湯中（0x42）|
|0xb2|沸き上げ中状態|非沸き上げ中（0x42）|
|0xea|風呂動作状態監視|停止中（0x42）|
|0xd1|給湯温度設定値|42度（0x2a）|
|0xd3|風呂温度設定値|41度（0x29）|
|0xe1|残湯量計測値|500L（0x1f4）|

---
# エコキュート状態の取得３
- ホームコントローラ（タブレットアプリ）に表示される内容が、ここで取得された値に由来していると思われます。

    ```
ECHONET Lite
    ECHONET Lite Header (EHD)
    Transaction ID (TID): 0x00c7
    ECHONET Lite Data (EDATA)
        Source ECHONET Lite object (SEOJ): 0x026b01 (Electric water heater)
        Destination ECHONET Lite object (DEOJ): 0x05ff01 (Controller)
        ECHONET Lite service (ESV): Get_Res (0x72)
        Property size (OPC): 9
        Property 1
            ECHONET Property (EPC): 0x80
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 30
        Property 2
            ECHONET Property (EPC): 0xe3
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 3
            ECHONET Property (EPC): 0x90
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 4
            ECHONET Property (EPC): 0x91
            Property Data Counter (PDC): 2
            ECHONET Property Value Data (EDT): 1100
        Property 5
            ECHONET Property (EPC): 0xb4
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 00
        Property 6
            ECHONET Property (EPC): 0xb0
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 41
        Property 7
            ECHONET Property (EPC): 0xb6
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 8
            ECHONET Property (EPC): 0xc0
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
        Property 9
            ECHONET Property (EPC): 0xe4
            Property Data Counter (PDC): 1
            ECHONET Property Value Data (EDT): 42
```

|EPC|プロパティ|値|
|:-:|:-:|:-:|
|0x80|動作状態|起動中（0x30）|
|0xe3|風呂自動モード設定|自動解除（0x42）|
|0x90|ONタイマ予約設定|予約切（0x42）|
|0x91|ONタイマ時刻設定値|17:00（0x1100）|
|0xb4|手動沸き上げ停止日数設定値|０日（0x00）|
|0xb0|沸き上げ自動設定|自動沸き上げ（0x41）|
|0xb6|タンク運転モード設定|節約（0x42）|
|0xc0|昼間沸き増し許可設定|昼間沸き増し禁止（0x42）|
|0xe4|手動風呂追い焚き動作設定|追い焚き切（0x42）|

---
# まとめ
- 時系列データを取ってみようと思えるデータとしては、消費電力値と残湯量計測値くらいですね。
- いずれの値も、あまり細かい数値は取れない（100W未満の消費電力値は取得できない模様）ようで、思っていたより面白みがないですが。