2018.1.31
手っ取り早くEnOceanの電文をデコードしたい、という方向けに、Node-REDのデコーダーを公開しました。→こちら
================
ここではEnOcean無線規格およびプロトコルの概要を説明します。
1) ISO/IEC 14543-3-10
EnOceanが準拠している国際規格です。この通信の標準規格は、 OSI(開放型システム間相互接続)の物理層、データリンクおよびネットワーク層であるレイヤ1から3までをカバーしています。この標準規格の正式なタイトルは次のとおりです。 ISO / IEC14543-3-10 情報技術 — ホーム電子システム(HES) — パート3-10:エネルギーハーベスティングに最適化されたワイヤレスショートパケット(WSP)プロトコル — アーキテクチャと下位層プロトコル
2) ARIB STD-T108
日本国内でEnOceanが準拠している無線規格です。
3) 上位プロトコル
まずは略語の説明から(リンク先から最新版ドキュメントがダウンロードできます)
a) ERP:EnOcean RadioProtocol:最新版はERP2:EnOcean GmbHが決めたものです。
b) ESP:EnOcean SerialProtocol:最新版はESP3:これもEnOcean GmbHが決めたものです。
c) EEP:EnOcean EquipmentProfiles:最新版はEEP2.6:これは上記2つと異なり、EnOcean Allianceが決めたものです。
ごく大雑把に言うと、
a) ERPは無線プロトコル(つまりメーカであるEnOcean GmbHが責任を持つところ)
b) ESPはEnOcean無線モジュールとのI/Fであるシリアルプロトコル(同上)
c) EEPはアプリケーション層で各社の互換を取るための規約事項(これはEnOcean Allianceのメンバー各社が話し合って決めるものです)
となります。
図1 ERP, ESP, EEPの関係
4) 電文解析の例
a) ロッカースイッチ(シングル)を押してみる。この時、受信側のUSB400J/TCM410J/STM400J-snifferのUART出力は以下のようになります。ESP3のP.12参照。
Group | Field | Value hex |
Sync.Byte | 55 | |
Header | Data Length | 00 07 |
Optional Length | 02 | |
Packet Type | 0A | |
CRC8H | 0A | |
Data | 20 | |
00 | ||
29 | ||
91 | ||
F1 | ||
88 | ||
00 | ||
Optional Length | 02 | |
2A | ||
CRC8D | FC |
Data Lengh=7なので20,,,90まで7byte、Optional Length=2なので02,2Aで2byte、Packet Typeが0A、とわかります。
Dataの中身はERP2のP.16を参照すると、1byte目=20なので、
Originator-ID 32bit, no Destination-ID
R-ORG=RPS telegram
Originator-ID=002991F1
Data=88
Status=00
ということがわかります。
b) 温度センサーの場合。受信側のUSB400J/TCM410J/STM400J-snifferのUART出力は以下のようになります。ESP3のP.12参照。
Group | Field | Value hex |
Sync.Byte | 55 | |
Header | Data Length | 00 0A |
Optional Length | 02 | |
Packet Type | 0A | |
CRC8H | 9B | |
Data | 22 | |
04 | ||
00 | ||
1D | ||
6E | ||
00 | ||
00 | ||
4B | ||
08 | ||
E5 | ||
Optional Length | 03 | |
31 | ||
CRC8D | A8 |
Data Lengh=Aなので22,,,E5まで10byte、Optional Length=2なので03,31で2byte、Packet Typeが0A、とわかります。
Dataの中身はERP2のP.16を参照すると、1byte目=22なので、
Originator-ID 32bit, no Destination-ID
R-ORG=4BS telegram
Originator-ID=04001D6E
Data=00004B08
ということがわかります。
次にData=00004B08を解析するにはEEP2.6のP.26を見ると1オリジンで3byte目が温度表現であることがわかります。
range 255…0でscale0…+40度を表現しているので、
0x4B=75dは(255-75)/255*40=28.23度
とデコードできます。
5) FAQ
※質問される毎に追記していきます。
2015.6.12 created