ห้องสมุดนี้ไม่มีส่วนเกี่ยวข้อง เกี่ยวข้อง ได้รับอนุญาต รับรองโดย หรือเชื่อมต่ออย่างเป็นทางการในทางใดทางหนึ่งกับ SMA Solar Technology AG หรือบริษัทสาขาหรือบริษัทในเครือใด ๆ
SMA-Speedwire เป็น API สำหรับการสื่อสารกับผลิตภัณฑ์ SMA ผ่านอีเธอร์เน็ตโดยใช้อินเทอร์เฟซ Speedwire
ช่วยให้สามารถฟังข้อมูลที่แลกเปลี่ยนระหว่างอุปกรณ์ของคุณและการอ่านค่ามิเตอร์บันทึก
เอกสารทางเทคนิคที่ครอบคลุม Speedwire สามารถพบได้ที่:
เครื่องวัดพลังงาน SMA
ซันนี่โฮมเมเนเจอร์ (2.0)
-
ฉันกำลังพิจารณาใช้ผลิตภัณฑ์เพิ่มเติม แต่ฉันต้องการความช่วยเหลือจากคุณ
สนับสนุนการใช้งาน Telegram สำหรับอุปกรณ์ของคุณโดยเปิด Pull Request หรือช่วยในกระบวนการพัฒนาโดยการแบ่งปันการจับแพ็กเก็ต เปิดปัญหากับอุปกรณ์ของคุณเพื่อเริ่มต้น
Speedwire ใช้ UDP เป็นโปรโตคอลการขนส่งสำหรับการส่งแพ็กเก็ตไปยังกลุ่มมัลติคาสต์
ดังนั้น คุณจะต้องตรวจสอบให้แน่ใจว่าเราเตอร์ระหว่างอุปกรณ์ที่คุณต้องการสื่อสารด้วย และอุปกรณ์ของคุณได้เปิดใช้งานการส่งต่อแบบหลายผู้รับแล้ว
เป็นที่รู้กันว่าสวิตช์ราคาถูกบางตัวทำให้เกิดปัญหากับมัลติคาสต์ (เช่น การบล็อกกลุ่มสุ่มหรือไม่อนุญาตเลย) ดังนั้นตรวจสอบให้แน่ใจว่าฮาร์ดแวร์ของคุณรองรับ
ฉันขอแนะนำให้คุณทดสอบการสร้างการเชื่อมต่อโดยใช้ตัวอย่าง DeviceDiscovery ก่อน
การอ่านข้อมูลที่เข้ามาจากเครื่องวัดพลังงาน SMA / 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 นี้: