Perpustakaan ini tidak berafiliasi, terkait, disahkan, didukung oleh, atau dengan cara apa pun terhubung secara resmi dengan SMA Solar Technology AG, atau anak perusahaan atau afiliasinya.
SMA-Speedwire adalah api untuk berkomunikasi dengan produk SMA melalui Ethernet menggunakan antarmuka speedwire.
Ini memungkinkan mendengarkan data yang dipertukarkan antara perangkat Anda dan mencatat pembacaan meteran.
Dokumen teknis yang mencakup Speedwire dapat ditemukan di bawah:
Pengukur Energi SMA
Manajer Rumah Cerah (2.0)
...
Saya berencana menerapkan lebih banyak produk, namun saya memerlukan bantuan Anda untuk ini!
Kontribusikan implementasi Telegram untuk perangkat Anda dengan membuka Pull Request atau bantu proses pengembangan dengan membagikan tangkapan paket. Buka masalah dengan perangkat Anda untuk memulai.
Speedwire menggunakan UDP sebagai protokol transport untuk mengirimkan paket ke grup multicast.
Oleh karena itu, Anda perlu memastikan bahwa router antara perangkat yang ingin Anda ajak berkomunikasi, dan perangkat Anda telah mengaktifkan penerusan multicast.
Beberapa switch murah juga diketahui menyebabkan masalah dengan multicast (seperti memblokir grup acak atau tidak mengizinkannya sama sekali), jadi pastikan perangkat keras Anda mendukungnya.
Saya menyarankan Anda untuk terlebih dahulu menguji pembuatan koneksi menggunakan sampel DeviceDiscovery.
Membaca data yang masuk dari 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 ();
Untuk informasi lebih lanjut, baca javadoc yang terdokumentasi dengan baik atau lihat contohnya.
Pustaka ini tersedia di maven central, cukup tambahkan yang berikut ini ke dependensi Anda:
< dependency >
< groupId >io.github.joblo2213</ groupId >
< artifactId >sma.speedwire</ artifactId >
< version >1.0.2</ version >
</ dependency >
Pustaka sumber terbuka berikut digunakan untuk membuat api ini: