このライブラリは、SMA Solar Technology AG、またはその子会社または関連会社と提携、提携、認可、承認されておらず、いかなる形でも公式に関係していません。
SMA-Speedwire は、speedwire インターフェイスを使用してイーサネット経由で SMA 製品と通信するための API です。
これにより、デバイス間で交換されたデータをリッスンし、メーターの測定値を記録することができます。
Speedwire に関する技術文書は次の場所にあります。
SMA エネルギーメーター
サニーホームマネージャー (2.0)
...
さらに多くの製品の導入を検討していますが、そのためにはあなたの助けが必要です。
プル リクエストを開いてデバイスの Telegram 実装に貢献したり、パケット キャプチャを共有して開発プロセスを支援したりできます。開始するには、デバイスに関する問題を開いてください。
Speedwire は、マルチキャスト グループにパケットを送信するためのトランスポート プロトコルとして UDP を使用します。
したがって、通信したいデバイスとデバイス間のルーターでマルチキャスト転送が有効になっていることを確認する必要があります。
一部の安価なスイッチは、マルチキャストに関する問題 (ランダム グループをブロックする、またはまったく許可しないなど) を引き起こすことが知られているため、ハードウェアがマルチキャストをサポートしていることを確認してください。
まず、DeviceDiscovery サンプルを使用して接続の確立をテストすることをお勧めします。
SMA Energy Meter / SMA Sunny Home Manager からの受信データの読み取り:
Speedwire speedwire = new Speedwire ();
speedwire . onError ( Exception :: printStackTrace );
speedwire . onTimeout (() -> System . err . println ( "speedwire timeout" ));
speedwire . onData ( data -> {
if ( data instanceof EnergyMeterTelegram ) {
EnergyMeterTelegram em = ( EnergyMeterTelegram ) data ;
//device information
int SUSyID = em . getSUSyID ();
long SerNo = em . getSerNo (). longValueExact ();
String ip = em . getOrigin (). getHostAddress ();
System . out . printf ( "Device %d %d on port %s%n" , SUSyID , SerNo , ip );
//current power draw (in W)
Quantity < Power > w = em . getData ( EnergyMeterChannels . TOTAL_P_IN ). to ( Units . WATT );
System . out . printf ( "Ingress Power: %s%n" , w );
//energy meter total power reading (in kWh)
Quantity < Energy > powerReading = em . getData ( EnergyMeterChannels . TOTAL_P_IN_SUM )
. to ( MetricPrefix . KILO ( Units . WATT ). multiply ( Units . HOUR ). asType ( Energy . class ));
System . out . printf ( "Total power reading: %s%n" , powerReading );
}
});
speedwire . start ();
詳細については、詳しく文書化された javadoc を読むか、サンプルを参照してください。
このライブラリは Maven Central で利用できます。依存関係に以下を追加するだけです。
< dependency >
< groupId >io.github.joblo2213</ groupId >
< artifactId >sma.speedwire</ artifactId >
< version >1.0.2</ version >
</ dependency >
この API の作成には、次のオープン ソース ライブラリが使用されました。