Smdn.Net.EchonetLite
は、ECHONET Liteやその周辺の規格/仕様を.NETで使用できるように実装したものです。 Smdn.Net.EchonetLite
is the implementation of ECHONET Lite and its related standards/specifications for .NET.
本プロジェクトは、Bルートサービス(電力メーター情報発信サービス)を.NETで利用できるようにするために必要な実装を確保・維持することを主な目的としています。 現時点ではBルートサービスで必要な機能を中心に実装していますが、長期的にはECHONET Liteを広くサポートすることも考慮しています。
Important
本プロジェクトは、HiroyukiSakoh/EchoDotNetLiteをベースとしたプロジェクトです。
本プロジェクトでは、オリジナルと同様MIT Licenseを採用しており、同ライセンスの条項に従ってフォーク・改変を行っていますが、現在フォークはデタッチしており、オリジナルとの連携・追従は行っていないことを注記しておきます。
- examples/ - 各ライブラリの使い方を示すサンプルコードです。 ライブラリごとにサブディレクトリが別れています。
- src/ - 各ライブラリ(アセンブリ)のソースコードです。 各ディレクトリは、
アセンブリ名
/名前空間
の階層構造になっています。 - tests/ - 各ライブラリ(アセンブリ)のNUnitテストスイートです。 各ディレクトリは、
テスト対象のアセンブリ名
/名前空間
の階層構造になっています。
Smdn.Net.EchonetLiteは、「ECHONET Lite SPECIFICATION 第2部 ECHONET Lite 通信ミドルウェア仕様」(en:Part II ECHONET Lite Communication Middleware Specifications)に記載されている仕様に基づく実装を提供します。
このライブラリでは、同仕様書における通信ミドルウェア(Communication Middleware)に相当する機能を.NETで実装したEchonetClient
など、ECHONET Liteデバイスとの通信を行うためのAPI・抽象化モデルを提供します。
version 2.0.0時点では、同仕様Ver.1.14をもとに、低圧スマート電力量メータ・HEMS コントローラ間アプリケーション通信インタフェース仕様書で要求される機能を中心に実装しています。
Smdn.Net.EchonetLite.RouteBは、「低圧スマート電力量メータ・HEMS コントローラ間アプリケーション通信インタフェース仕様書」(en:Interface Specification for Application Layer Communication between Smart Electric Energy Meters and HEMS Controllers)に記載されている仕様に基づく実装を提供します。
このライブラリでは、低圧スマート電力量メータとの通信を確立するための対向デバイスとなるHEMSコントローラを実装するHemsController
、また機器オブジェクト詳細規定で規定される低圧スマート電力量メータクラスを実装し、実際に値を読み出すためAPIを提供するLowVoltageSmartElectricEnergyMeter
、Bルートでの通信機能と認証情報をIServiceCollection
に追加するためのDI機構を提供する拡張メソッドなどを提供します。
実際にスマートメーターとの通信を行うには、Bルートサービスに接続可能なデバイス、及びそれを操作するRouteBEchonetLiteHandler
の具象クラスが必要です。 具体的には、Smdn.Net.EchonetLite.RouteB.BP35XX
などのライブラリと組み合わせて使用してください。
Smdn.Net.SmartMeterは、スマートメーターから定期的なデータ収集を行うためのAPIを提供します。
SmartMeterDataAggregator
は、スマートメーターに対してバックグラウンドで定期的なデータ収集行い、瞬時電力、瞬時電流、および日間・週間・月間などの期間ごとの積算電力量を一定間隔ごとに継続して収集します。
SmartMeterDataAggregator
は、BackgroundServiceなどで長期間安定して動作させるために、PollyのResiliencePipelineによる例外ハンドリング・タイムアウトとリトライ・再接続による回復などもサポートします。
「ECHONET Lite 通信ミドルウェア仕様」における下位通信層(Lower Communication Layers)との通信エンドポイントを実装するためのインターフェースIEchonetLiteHandler
、「ECHONET SPECIFICATION APPENDIX ECHONET 機器オブジェクト詳細規定」(en:APPENDIX Detailed Requirements for ECHONET Device objects)で定義される機器オブジェクト・プロファイルオブジェクトおよび各ECHONETプロパティの詳細規定を参照するためのインターフェイスIEchonetObjectSpecification
・IEchonetPropertySpecification
を提供します。
Bルートサービスに接続してスマートメーターとの通信を行うための機能を実装するための抽象クラスRouteBEchonetLiteHandler
、およびBルートの認証情報を取得してデバイスに書き込むためのインターフェイスIRouteBCredential
などを提供します。
Smdn.Net.EchonetLite.Appendixは、「ECHONET SPECIFICATION APPENDIX ECHONET 機器オブジェクト詳細規定」(en:APPENDIX Detailed Requirements for ECHONET Device objects)に記載されているクラスグループ・機器オブジェクト・プロパティ構成の定義、およびその定義を参照するためのAPIを提供します。
APPENDIX ECHONET機器オブジェクト詳細規定 Release K (日本語版)をもとに生成したJSONファイルをアセンブリのリソースとして埋め込んでいます。 また、それを読み取るクラス郡を実装しています。
Note
本ライブラリは、オリジナルにおけるEchoDotNetLite.Specifications
をベースにしています。 オリジナルでは手作業によりAPPENDIXからJSONへ変換しているため、その過程で脱字・転記ミス等が発生している可能性あります。
今後のバージョンで、より新しいReleaseへの追従、およびMachine Readable Appendixをベースにした生成手段を使用するよう改善予定です。
オリジナルに存在していたSKSTACK-IP関連の実装は、本プロジェクトでは引き継がずに廃止しています。
SkstackIpDotNetについては、代替実装としてSmdn.Net.SkStackIPを使用することができます。
EchoDotNetLiteSkstackIpBridgeに相当する実装については、今後本プロジェクトでも実装予定です。
udp-handlerは、(Smdn.Net.EchonetLiteの実装確認を目的とした、LAN経由(UDP)で家電を操作するコントローラーの実装例です。 MoekadenRoomでサポートする機器オブジェクトとの相互通信を実装しています。
Warning
このサンプルコードはオリジナルより引き継いだものですが、本プロジェクトとしてはコンパイル可能性までの確認まではしていますが、動作確認はしていません。 したがって、現時点で動作しなくなっている可能性は否定できません。
以下はオリジナルのEchoDotNetLite
についての確認状況です。
- OS:Windows10/Raspbian Stretch
- ミドルウェア:.NET Core 2.1 Runtime v2.1.6
- Wi-SUNモジュール: RL7023 Stick-D/IPS
- 機器オブジェクトエミュレーター:MoekadenRoom
- 低圧スマート電力量メータ:中部電力管内(2機)
本プロジェクトにおけるSmdn.Net.EchonetLite
では、以下の環境での動作を確認しています。
- OS: Ubuntu 24.04
- ミドルウェア: .NET Runtime v8.0.3
- Wi-SUNモジュール: Bルート対応 Wi-SUNモジュール ROHM BP35A1
- 低圧スマート電力量メータ: 東京電力管内・1機
- HEMS-スマートメーターBルート(低圧電力メーター)運用ガイドライン第4.0版
- エコーネット規格 (一般公開)
- GitHub SkyleyNetworks/SKSTACK_API
- MoekadenRoom (機器オブジェクトエミュレーター)
- OpenECHO (ECHONET Liteのjava実装)
Contributions are appreciated!
If there's a feature you would like to add or a bug you would like to fix, please read Contribution guidelines and create an Issue or Pull Request.
IssueやPull Requestを送る際は、Contribution guidelinesをご覧頂ください。 使用言語は日本語で構いません。
(An English translation for the reference follows the text written in Japanese.)
本プロジェクトはMIT Licenseの条件に基づきライセンスされています。
This project is licensed under the terms of the MIT License.
TO BE ADDED
本プロジェクトは、エコーネットコンソーシアム、およびエコーネット対応製品の製造元・供給元・販売元とは無関係の、非公式なものです。
This is an unofficial project that has no affiliation with ECHONET Consortium and the manufacturers/vendors/suppliers of ECHONET compliant products.
「ECHONET」、「エコーネット」、「ECHONET Lite」は、エコーネットコンソーシアムの商標または登録商標です。
ECHONET, エコーネット, ECHONET Lite are registered trademarks or trademarks of ECHONET Consortium.
このプロジェクトはHiroyukiSakoh/EchoDotNetLiteをフォークしたものです。
This is a project forked from HiroyukiSakoh/EchoDotNetLite.
コード中の著作権情報およびライセンス情報に関する正当性については、コミット07b30a0bfc1d32fe589ed172f7d6702dd747a68fおよびプルリクエストsmdn/EchoDotNetLite #1をご参照ください。
For an acknowledgement and legality of the copyright and license information in the code, please refer to the commit 07b30a0bfc1d32fe589ed172f7d6702dd747a68f and pull request smdn/EchoDotNetLite #1.