homebridge-echonet-lite-plus 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/NOTICE-MRA.md +29 -0
- package/README.md +32 -1
- package/config.schema.json +1 -1
- package/dist/mra.js +7 -1
- package/dist/platform.js +6 -2
- package/homebridge-ui/public/index.html +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.2
|
|
4
|
+
|
|
5
|
+
- Clarified how HEMS commonly uses ECHONET Lite and why some HEMS-compatible devices may be discoverable by this plugin.
|
|
6
|
+
- Documented that standard ECHONET Lite air-conditioner temperature control uses 1°C steps, while manufacturer-specific local APIs may support 0.5°C.
|
|
7
|
+
- Rejected fractional numeric writes that an ECHONET property schema cannot represent instead of silently rounding them.
|
|
8
|
+
|
|
9
|
+
## 0.7.1
|
|
10
|
+
|
|
11
|
+
- Added a bilingual `NOTICE-MRA.md` identifying the ECHONET Consortium as the copyright holder and documenting the source of the bundled MRA data.
|
|
12
|
+
- Clarified that the plugin's MIT License does not alter the copyright, license, or other terms applicable to the MRA data.
|
|
13
|
+
- Hardened ECHONET Lite property-map parsing against malformed and duplicate EPC entries, based on findings from the separately developed ECHONET Lite engine/core implementation.
|
|
14
|
+
- Documented that this standalone package and Homebridge ECHONET Lite Engine Plus are mutually exclusive and must not be enabled together on the same Homebridge host.
|
|
15
|
+
|
|
3
16
|
## 0.7.0
|
|
4
17
|
|
|
5
18
|
- Kept disabled devices out of Apple Home while retaining the complete discovered-device registry in the settings UI.
|
package/NOTICE-MRA.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Machine Readable Appendix (MRA) Notice
|
|
2
|
+
|
|
3
|
+
This package includes Machine Readable Appendix Version 1.4.0 data published by the ECHONET Consortium.
|
|
4
|
+
|
|
5
|
+
Copyright in the MRA data belongs to the ECHONET Consortium.
|
|
6
|
+
|
|
7
|
+
Source:
|
|
8
|
+
|
|
9
|
+
- [ECHONET Consortium — Machine Readable Appendix](https://echonet.jp/spec_mra_rr3/)
|
|
10
|
+
|
|
11
|
+
The MIT License of `homebridge-echonet-lite-plus` applies to the plugin source code. It does not alter the copyright, license, or other terms applicable to the MRA data.
|
|
12
|
+
|
|
13
|
+
The ECHONET Consortium is preparing general guidance for credit and license notices for secondary distribution. This project will review and update this notice if relevant official guidance is published.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Machine Readable Appendix(MRA)に関する表示
|
|
18
|
+
|
|
19
|
+
本パッケージには、エコーネットコンソーシアムが公開するMachine Readable Appendix Version 1.4.0のデータを同梱しています。
|
|
20
|
+
|
|
21
|
+
MRAデータの著作権は、エコーネットコンソーシアムに帰属します。
|
|
22
|
+
|
|
23
|
+
出典:
|
|
24
|
+
|
|
25
|
+
- [エコーネットコンソーシアム — Machine Readable Appendix](https://echonet.jp/spec_mra_rr3/)
|
|
26
|
+
|
|
27
|
+
`homebridge-echonet-lite-plus`のMITライセンスはプラグインのソースコードに適用されるものであり、MRAデータに適用される著作権、ライセンスその他の条件を変更するものではありません。
|
|
28
|
+
|
|
29
|
+
エコーネットコンソーシアムから二次配布時のクレジット・ライセンス表記に関する公式方針が公開された場合、本プロジェクトは内容を確認し、必要に応じて本表示を更新します。
|
package/README.md
CHANGED
|
@@ -6,7 +6,19 @@ LAN内の ECHONET Lite 機器と直接通信し、HomeKit に公開するHomebri
|
|
|
6
6
|
|
|
7
7
|
ECHONET ConsortiumのMachine Readable Appendix Version 1.4.0を同梱し、EPCの名称、アクセス規則、数値型、符号、倍率、状態enumの読書きをMRAから解決します。HomeKitサービスへの割当ては、MRAで変換したプロパティ名を使用します。
|
|
8
8
|
|
|
9
|
-
MRA
|
|
9
|
+
MRAデータの著作権はエコーネットコンソーシアムに帰属します。出典およびライセンス適用範囲の詳細は、同梱の[NOTICE-MRA.md](NOTICE-MRA.md)を参照してください。本プラグインのMITライセンスはMRAデータの著作権、ライセンスその他の条件を変更するものではありません。
|
|
10
|
+
|
|
11
|
+
## HEMSとECHONET Liteの関係
|
|
12
|
+
|
|
13
|
+
HEMS(Home Energy Management System)は、家庭内の電力・発電量・ガス・水道などを見える化し、家電や住宅設備を管理・制御するシステムです。
|
|
14
|
+
|
|
15
|
+
ECHONET Liteは、HEMSを構成するコントローラーと、エアコン、照明、給湯器、分電盤などの機器が通信するために広く利用されている共通規格です。そのため、ECHONET Liteという名称を意識していなくても、ご自宅にある「HEMS対応機器」がECHONET Lite対応機器である場合があります。
|
|
16
|
+
|
|
17
|
+
本プラグインは、LAN内のECHONET Lite対応機器と直接通信し、対応する機能をHomebridge/Appleホームへ橋渡しします。メーカーがApple HomeやHomeKitへ直接対応していないHEMS対応機器でも、ECHONET Liteで通信できる場合は、本プラグインから検出・操作できる可能性があります。
|
|
18
|
+
|
|
19
|
+
ECHONET Liteの利用先はHEMSだけに限定されません。家電制御、住宅設備管理、セキュリティ、見守りなどにも利用されています。また、本プラグインはECHONET Liteによる機器通信を扱うものであり、エネルギー最適化、料金計算、需要予測などを行うHEMSそのものではありません。
|
|
20
|
+
|
|
21
|
+
なお、HEMS対応と表示されているすべての機器を操作できるとは限りません。ネットワークへの接続方法、メーカー独自の制限、機器が公開しているECHONET Liteプロパティ、HomeKitで表現可能な機能などによって対応範囲が異なります。
|
|
10
22
|
|
|
11
23
|
## 動作要件とインストール
|
|
12
24
|
|
|
@@ -22,6 +34,19 @@ npm install -g homebridge-echonet-lite-plus
|
|
|
22
34
|
|
|
23
35
|
インストール後、プラグイン設定を開いて対象ネットワークを確認し、Child Bridgeを再起動してください。既存バージョンから更新する場合も設定は引き継がれます。
|
|
24
36
|
|
|
37
|
+
## Engine Plusとの排他的利用
|
|
38
|
+
|
|
39
|
+
本パッケージは、ECHONET Liteの探索・通信からHomeKit公開までを単独で行うStandalone版です。
|
|
40
|
+
|
|
41
|
+
別パッケージの`homebridge-echonet-lite-engine-plus`は、ECHONET Lite通信を共有Engineへ集約してメーカー別プラグイン等へ配信する構成です。両パッケージは同じ役割のECHONET Lite通信部分を持つため、排他的に選択してください。
|
|
42
|
+
|
|
43
|
+
- 同一Homebridgeホストで両方を同時に有効化しないでください。
|
|
44
|
+
- Standalone版を使用する場合は、Engine Plusおよびそれを利用する構成を無効化してください。
|
|
45
|
+
- Engine Plus構成へ移行する場合は、本Standalone版を停止してからEngine Plusを有効化してください。
|
|
46
|
+
- 両方を同時に動かすと、UDP/3610の待受け、機器探索、状態取得、操作要求が競合する可能性があります。
|
|
47
|
+
|
|
48
|
+
This package is the standalone implementation. It is mutually exclusive with `homebridge-echonet-lite-engine-plus`; do not enable both on the same Homebridge host.
|
|
49
|
+
|
|
25
50
|
## 対応方針
|
|
26
51
|
|
|
27
52
|
ECHONET Liteの機器クラスとプロパティを、意味が一致するHomeKitサービスへ割り当てます。HomeKitに対応する型がない計測値を、照度や湿度など別の値へ偽装することはありません。
|
|
@@ -49,6 +74,12 @@ Appleのホームアプリには電力・発電量・EV残量・水道・ガス
|
|
|
49
74
|
|
|
50
75
|
ECHONET Liteとして存在していても、HomeKit上で安全かつ自然に表現できない機器クラスは検出一覧にのみ表示し、対応マッピングを実装するまでHomeKitへは公開しません。
|
|
51
76
|
|
|
77
|
+
### エアコンの設定温度単位
|
|
78
|
+
|
|
79
|
+
本Standalone版は、家庭用エアコンの標準ECHONET Liteプロパティ「温度設定値」(EPC `B3`)に合わせ、設定温度を1℃単位で扱います。EPC `B3`では0.5℃を表現できないため、Appleホーム上で0.5℃単位を選択できるようにしても、その値を標準ECHONET Lite通信でそのまま実機へ送ることはできません。
|
|
80
|
+
|
|
81
|
+
Engine Plus構成のメーカー別プラグインでは、メーカーが提供する対応ローカルAPIなど、0.5℃を表現できる別の操作経路が設定されている場合に限り、0.5℃単位へ対応することがあります。標準ECHONET Lite通信へフォールバックする場合は1℃単位です。
|
|
82
|
+
|
|
52
83
|
## 構成
|
|
53
84
|
|
|
54
85
|
HomebridgeをECHONET Lite機器と同じLANで動かし、設定画面で自動探索を有効にします。複数NIC環境では対象ネットワークを指定してください。
|
package/config.schema.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"singular": true,
|
|
5
5
|
"customUi": true,
|
|
6
6
|
"customUiPath": "./homebridge-ui",
|
|
7
|
-
"headerDisplay": "## ECHONET Lite Plus\nDirectly discovers ECHONET Lite devices on your LAN and exposes them to HomeKit. MQTT is not required. \nLAN内のECHONET Lite機器を直接探索し、HomeKitへ追加します。MQTT
|
|
7
|
+
"headerDisplay": "## ECHONET Lite Plus\nDirectly discovers ECHONET Lite devices on your LAN and exposes them to HomeKit. MQTT is not required. Do not enable this standalone plugin together with Homebridge ECHONET Lite Engine Plus on the same Homebridge host. \nLAN内のECHONET Lite機器を直接探索し、HomeKitへ追加します。MQTTは不要です。本単独版とHomebridge ECHONET Lite Engine Plusは排他的に使用し、同一Homebridge上で同時に有効化しないでください。",
|
|
8
8
|
"footerDisplay": "Set **Log Level / ログレベル** to Debug only while troubleshooting, then return it to Info. \n問題調査時だけDebugへ変更し、確認後はInfoへ戻してください。",
|
|
9
9
|
"schema": {
|
|
10
10
|
"type": "object",
|
package/dist/mra.js
CHANGED
|
@@ -45,7 +45,13 @@ class MraRepository {
|
|
|
45
45
|
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
46
46
|
for (const number of this.schemasOfType(schema, 'number')) {
|
|
47
47
|
const multiple = number.multiple ?? 1, size = this.sizeOf(number.format), signed = number.format?.startsWith('int') ?? false;
|
|
48
|
-
const
|
|
48
|
+
const scaled = value / multiple;
|
|
49
|
+
// Do not silently round a value that the ECHONET schema cannot
|
|
50
|
+
// represent. For example, the standard air-conditioner B3 property
|
|
51
|
+
// is an integer Celsius value, so 25.5°C must not become 26°C.
|
|
52
|
+
if (!Number.isInteger(scaled))
|
|
53
|
+
continue;
|
|
54
|
+
const n = scaled;
|
|
49
55
|
if ((number.minimum !== undefined && n < number.minimum) || (number.maximum !== undefined && n > number.maximum))
|
|
50
56
|
continue;
|
|
51
57
|
const min = signed ? -(2 ** (size * 8 - 1)) : 0, max = signed ? 2 ** (size * 8 - 1) - 1 : 2 ** (size * 8) - 1;
|
package/dist/platform.js
CHANGED
|
@@ -273,7 +273,11 @@ class EchonetLitePlatform {
|
|
|
273
273
|
this.api.updatePlatformAccessories([a]);
|
|
274
274
|
}
|
|
275
275
|
propertyRequests(map) {
|
|
276
|
-
|
|
276
|
+
if (!/^(?:[0-9a-f]{2})+$/i.test(map))
|
|
277
|
+
return {};
|
|
278
|
+
const bytes = map.match(/../g)?.map(v => Number.parseInt(v, 16)) ?? [];
|
|
279
|
+
if (!bytes.length || bytes.some(Number.isNaN))
|
|
280
|
+
return {};
|
|
277
281
|
const epcs = [];
|
|
278
282
|
if (bytes[0] <= 15) {
|
|
279
283
|
for (let i = 1; i <= bytes[0] && i < bytes.length; i++)
|
|
@@ -284,7 +288,7 @@ class EchonetLitePlatform {
|
|
|
284
288
|
for (let bit = 0; bit < 8; bit++)
|
|
285
289
|
if ((bytes[i + 1] ?? 0) & (1 << bit))
|
|
286
290
|
epcs.push(((bit + 8) * 16 + i).toString(16));
|
|
287
|
-
return Object.fromEntries(epcs.filter(epc => !['d6', '9d', '9e', '9f'].includes(epc)).map(epc => [epc, '']));
|
|
291
|
+
return Object.fromEntries([...new Set(epcs.map(epc => epc.toLowerCase()))].filter(epc => !['d6', '9d', '9e', '9f'].includes(epc)).map(epc => [epc, '']));
|
|
288
292
|
}
|
|
289
293
|
scheduleFacilitySync() {
|
|
290
294
|
if (this.facilitySyncTimer)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-echonet-lite-plus",
|
|
3
|
-
"version": "0.7.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.7.2",
|
|
4
|
+
"description": "Standalone Homebridge plugin for ECHONET Lite devices",
|
|
5
5
|
"author": "ECHONET Lite Plus contributors",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/sylpied/homebridge-echonet-lite-plus#readme",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"README.md",
|
|
21
21
|
"CHANGELOG.md",
|
|
22
22
|
"LICENSE",
|
|
23
|
+
"NOTICE-MRA.md",
|
|
23
24
|
"work/MRA_v1.4.0.zip"
|
|
24
25
|
],
|
|
25
26
|
"keywords": [
|