リポジトリ: IAMMETER-simulator
ご意見・ご感想はこちらでお聞かせください。Integrate a virtual 3-phase energy meter (open source) into HA,use it to optimize your solar pv system
このシミュレーターの開発を始めるきっかけとなったのは、こちらの投稿です。https://imeter.club/topic/320
お客様の一人が、Home Assistant を使って太陽光の余剰出力を最適に活用しようと試みています。IAMMETER のエネルギー・メーターで太陽光の余剰出力を監視し、Home Assistant で Tesla の充電を制御します(余剰太陽光をできるだけ多く利用します)。
私たちもこのプロジェクトに参加し、制御ロジックを一緒に最適化したいと考えています。しかし、現在オフィスには Tesla とインバーターがありません。そこで、このような作業を実現するためのシミュレーターを開発するというアイデアが生まれました。
このシミュレーターを通じて、シミュレートされた WEM3080T を入手できます。
A 相は太陽光インバーター出力の測定結果です(この結果はシミュレーターで完全にシミュレートすることも、実際のエネルギー・メーターから取得することもできます)。
負荷プロファイルはシミュレーター内で設定され、さまざまな負荷モデル(固定、タイマー、設定可能)があります。
そしてシミュレーターは、太陽光の測定結果(シミュレートまたは実測)と負荷(シミュレート)プロファイルからグリッド消費量を自動的に計算し、その結果を B 相に出力します。

このシミュレーターを使うと、次のような興味深い作業ができます。
シミュレートされた三相エネルギー・メーターは、実際のハードウェアと同じように Home Assistant や IAMMETER に追加することもできます。

このシミュレーターは「ASP.NET Core」で開発されており、オープンソースです。
このコードを実行すると、次のように三相エネルギー・メーター(WEM3080T)が設置されているものと見なされます。

シミュレーターは、実際の三相エネルギー・メーターと同様に「monitorjson」API もサポートしています。
シミュレーターの A 相のデータは、完全にシミュレートされたデータ(シミュレートされたインバーターの最大電力を設定できます)、実際のエネルギー・メーター(WEM3080T)、または何らかのプラットフォーム(PVoutput など)の API 戻り値から取得できます。


負荷モデルは実際の電力消費をシミュレートするために使用され、現在サポートされている負荷モデルは次の 3 種類です。
このシミュレーターに独自の制御ロジックを導入して、このような負荷モデルを制御できます。 例えば、オフピーク料金の時間帯に大きな負荷を動作させたり、太陽光の余剰出力をできるだけ多く利用したりできます。
もちろん、実際の状況をシミュレートできる負荷モデルを提供することは簡単なことではありません。 このコードをオープンソース化した後、このプロジェクトに興味がある皆さんが協力して負荷モデルを改善し、実際の状況に近づけられることを願っています。
この使用方法では、すべてのデータはこのシミュレーターによってシミュレートされます。太陽光発電出力と負荷プロファイルの両方が、設定に応じてシミュレートされます。
シミュレーターは PV 出力をシミュレートし、そのデータを A 相に出力します。 シミュレートされた負荷プロファイルを出力します。 シミュレートされた A 相の PV データとシミュレートされた負荷プロファイルからグリッド出力を計算し、B 相に出力します。


実際のエネルギー・メーターがサポートするのと同じ API(「monitorjson」)を使用して、シミュレーターからデータを取得できます


シミュレートされたエネルギー・メーターを Home Assistant に統合するのは意味がないように思えるかもしれませんが、このシミュレーターをよく理解するのに役立ちます。そうすれば、使用方法 2 と使用方法 3 でシミュレーターをよりうまく活用できるでしょう。
現在、2 つのインターフェースのみをサポートしています。実際の WEM3080T から読み取るか、IAMMETER の API から読み取ります。

実際には、太陽光出力データを含む任意のインターフェース(実際のメーターから読み取るか、オンライン API から取得するかに関係なく)をデータソースと見なして、ここに追加できます。
他のインターフェースに詳しい方は、リポジトリ への PR を歓迎します。
実際の状況にできるだけ近い負荷プロファイルをシミュレーターで設定してみてください。
次に、シミュレーターは次の式に従ってグリッド消費量を計算します。 グリッド電力 = 太陽光出力電力 - 負荷電力 また、それに応じてグリッド kWh データ(買電エネルギーと売電エネルギーの両方)も計算します。
シミュレーターは、グリッドデータの結果(実際の太陽光とシミュレートされた負荷で計算)を B 相に出力します。
このシミュレートされたグリッド結果は、ローカル API「monitorjson」で読み取り、使い慣れた任意のプラットフォームに統合できます。
負荷モデルが実際の状況に十分近ければ、最適な制御ロジック(アルゴリズム)を見つけるのに役立つかもしれません。 この制御ロジックは次のことに役立ちます:
余剰太陽光でできるだけ多く負荷に電力を供給します。
負荷を太陽光で賄えない場合(夜間)は、できるだけオフピークの時間帯に電力を供給します。
以下を参照してください。
負荷プロファイルを作成して Home Assistant に統合する方法
ソースコードまたは Docker でこのシミュレーターを実行する