Fronius Symo liefert keine Daten

Immer gerne. Ich würde damit anfangen, dass der Generator eine Datei erstellt, die sehr nahe an der aktuellen DefaultSunSpecModel.javaist, also mit static imports, etc.

Ein Blocker waren auch immer noch die “Repeating Blocks” von SunSpec. Diese sind bisher nicht oder nur zum Teil implementiert. Die waren auch der Grund, warum aktuell so viele Models “ignored” sind.

1 Like

Das würde mich vermutlich überfordern. Wenn @Sn0w3y einen PR erstellt, ist das sicherlich besser. Ich würde dann übergangsweise um weiter zu kommen vielleicht einfach manuell den generierten Eintrag aus dem Fork von @fanass kopieren.

1 Like

Nach etwas refactoring bleibt mir ein letzter Build-Error, bei dem ich leider keine Idee habe wo er her kommt und wie ich ihn beseitigen kann. Kann mir jemand weiterhelfen? Screenshot anbei, falls ich weitere Infos liefern soll, gerne sagen was es braucht.

Edit: Falls die Warnings relevant sind (mich irritiert etwas der Java 21 vs. 17 missmatch):

Der Fehler kommt daher, weil OpenEMS nicht mehr com.ghande.j2mod nutzt:

1 Like

Nun bekomme ich den die nächste Runtime-Exception. :slight_smile: Es fehlt in meinem Verständnis im Fronius Meter die io.openems.edge.meter.sunspec Abhängigkeit in Version 1.0.0 bis 2.0.0:

ERROR: Bundle io.openems.edge.meter.fronius [256] Error starting reference:file:/src/openems-sjjh/io.openems.edge.meter.fronius/generated/io.openems.edge.meter.fronius.jar (org.osgi.framework.BundleException: Unable to resolve io.openems.edge.meter.fronius [256](R 256.0): missing requirement [io.openems.edge.meter.fronius [256](R 256.0)] osgi.wiring.package; (&(osgi.wiring.package=io.openems.edge.meter.sunspec)(version>=1.0.0)(!(version>=2.0.0))) Unresolved requirements: [[io.openems.edge.meter.fronius [256](R 256.0)] osgi.wiring.package; (&(osgi.wiring.package=io.openems.edge.meter.sunspec)(version>=1.0.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve io.openems.edge.meter.fronius [256](R 256.0): missing requirement [io.openems.edge.meter.fronius [256](R 256.0)] osgi.wiring.package; (&(osgi.wiring.package=io.openems.edge.meter.sunspec)(version>=1.0.0)(!(version>=2.0.0))) Unresolved requirements: [[io.openems.edge.meter.fronius [256](R 256.0)] osgi.wiring.package; (&(osgi.wiring.package=io.openems.edge.meter.sunspec)(version>=1.0.0)(!(version>=2.0.0)))]
	at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4398)
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566)
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:297)
	at java.base/java.lang.Thread.run(Thread.java:1583)

Im Projekt existiert jedoch die Datei /io.openems.edge.meter.sunspec/src/io/openems/edge/meter/sunspec/package-info.java mit dem Inhalt

@org.osgi.annotation.versioning.Version("1.0.0")
@org.osgi.annotation.bundle.Export
package io.openems.edge.meter.sunspec;

Wie kommt es zu dem Fehler und was muss ich tun um das Problem zu lösen? Danke! :slight_smile:

Ich habe gerade etwas den Faden verloren. Es geht immer noch um diese Implementierung, oder? → openems/io.openems.edge.meter.fronius at feature/MeterFronius · fanass-dev/openems · GitHub

Kannst du/jemand aus dem Branch einen Pull-Request machen mit Bearbeitungsrechten für OpenEMS-Contributor? Dann könnten wir direkt helfen.

Zum Resolve-Fehler: Ich führe nach dem Einfügen eines neuen Bundles immer das Script tools/prepare-commit.sh aus. Das bringt solche Fehler immer frühzeitig ans Licht und löst auch eigenständig ein paar Fehler.

Siehe auch Coding Guidelines: Coding Guidelines :: Open Energy Management System

Gruß,
Stefan

1 Like

Ja.

Natürlich, gern:

Danke für den Hinweis! Das Skript läuft bei mir leider auf einen Fehler.

Macht sinn, da:

Warning: [ant:checkstyle] [WARN] /home/runner/work/openems/openems/io.openems.edge.meter.fronius/src/io/openems/edge/meter/fronius/MeterFroniusImpl.java:96:9: ‘METHOD_DEF’ should be separated from previous line. [EmptyLineSeparator]

Grüße

Ich habe den Branch aktualisiert und prepare-commit.sh läuft jetzt erfolgreich durch.

1 Like

Danke, dann muss ich mal schauen wie ich das nun wieder in meine Repository rüber bekomme und ob es dann zur Laufzeit noch Fehler gibt. Bin die nächsten Tage anderweitig beschäftigt, kann etwas dauern, bis ich die nächsten Schritte schaffe.

So, habe es gerade in Eclipse mal mit einer entsprechenden modbus0 und meter0 Komponente für unseren Fronius-Smartmeter zum Laufen gebracht und bekomme in der Console folgenden Output/Fehler:

2025-08-16T20:49:43,289 [c0f95bf)] INFO  [onent.AbstractOpenemsComponent] [modbus0] Activate Bridge.Modbus.Tcp
2025-08-16T20:49:43,290 [teWorker] WARN  [ponentmanager.EdgeConfigWorker] Component [modbus0] was missing!
025-08-16T20:50:37,932 [3059714)] INFO  [bstractOpenemsSunSpecComponent] [MeterFroniusImpl] Reinitialize SunSpec channels [force=true]
2025-08-16T20:50:37,935 [3059714)] INFO  [onent.AbstractOpenemsComponent] [meter0] Activate Meter.Fronius
2025-08-16T20:50:37,938 [teWorker] WARN  [ponentmanager.EdgeConfigWorker] Component [meter0] was missing!
2025-08-16T20:50:37,940 [3059714)] INFO  [onent.AbstractOpenemsComponent] [meter0] Deactivate Meter.Fronius
2025-08-16T20:50:37,943 [3059714)] INFO  [bstractOpenemsSunSpecComponent] [MeterFroniusImpl] Reinitialize SunSpec channels [force=true]
2025-08-16T20:50:37,943 [3059714)] INFO  [onent.AbstractOpenemsComponent] [meter0] Activate Meter.Fronius
2025-08-16T20:50:41,679 [modbus0 ] INFO  [bstractOpenemsSunSpecComponent] [meter0] Adding SunSpec-Model [1:Common] starting at [40002]
2025-08-16T20:50:44,425 [modbus0 ] INFO  [bstractOpenemsSunSpecComponent] [meter0] Adding SunSpec-Model [213:wye-connect three phase (abcn) meter] starting at [40069]
2025-08-16T20:50:44,427 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [A_SF] for Point [S213_A]
2025-08-16T20:50:44,427 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [A_SF] for Point [S213_APH_A]
2025-08-16T20:50:44,428 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [A_SF] for Point [S213_APH_B]
2025-08-16T20:50:44,428 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [A_SF] for Point [S213_APH_C]
2025-08-16T20:50:44,428 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_PH_V]
2025-08-16T20:50:44,428 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_PH_VPH_A]
2025-08-16T20:50:44,428 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_PH_VPH_B]
2025-08-16T20:50:44,428 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_PH_VPH_C]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_PPV]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_P_P_VPH_A_B]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_P_P_VPH_B_C]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [V_SF] for Point [S213_P_P_VPH_C_A]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [Hz_SF] for Point [S213_HZ]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [W_SF] for Point [S213_W]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [W_SF] for Point [S213_WPH_A]
2025-08-16T20:50:44,429 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [W_SF] for Point [S213_WPH_B]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [W_SF] for Point [S213_WPH_C]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VA_SF] for Point [S213_VA]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VA_SF] for Point [S213_V_APH_A]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VA_SF] for Point [S213_V_APH_B]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VA_SF] for Point [S213_V_APH_C]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VAR_SF] for Point [S213_VAR]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VAR_SF] for Point [S213_V_A_RPH_A]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VAR_SF] for Point [S213_V_A_RPH_B]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [VAR_SF] for Point [S213_V_A_RPH_C]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [PF_SF] for Point [S213_PF]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [PF_SF] for Point [S213_P_FPH_A]
2025-08-16T20:50:44,430 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [PF_SF] for Point [S213_P_FPH_B]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [PF_SF] for Point [S213_P_FPH_C]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_EXP]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_EXP_PH_A]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_EXP_PH_B]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_EXP_PH_C]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_IMP]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_IMP_PH_A]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_IMP_PH_B]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotWh_SF] for Point [S213_TOT_WH_IMP_PH_C]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_EXP]
2025-08-16T20:50:44,431 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_EXP_PH_A]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_EXP_PH_B]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_EXP_PH_C]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_IMP]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_IMP_PH_A]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_IMP_PH_B]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVAh_SF] for Point [S213_TOT_V_AH_IMP_PH_C]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q1]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q1PH_A]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q1PH_B]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q1PH_C]
2025-08-16T20:50:44,432 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q2]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q2PH_A]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q2PH_B]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_IMP_Q2PH_C]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q3]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q3PH_A]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q3PH_B]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q3PH_C]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q4]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q4PH_A]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q4PH_B]
2025-08-16T20:50:44,433 [modbus0 ] ERROR [bstractOpenemsSunSpecComponent] [meter0] Unable to parse Scale-Factor [TotVArh_SF] for Point [S213_TOT_V_ARH_EXP_Q4PH_C]
2025-08-16T20:50:44,435 [modbus0 ] INFO  [meter.fronius.MeterFroniusImpl] [meter0] SunSpec initialization finished. 130 Channels available.

Ich vermute, der Unable to parse Scale-Factor-Fehler ist noch nicht so gut. :slight_smile: Kann mir jemand sagen, wie ich da weiter debuggen kann?

Testweise habe ich am WR die Modbus-Einstellungen von float auf int + SF umgestellt:


Das ergibt eine geänderte Ausgabe:

2025-08-17T11:15:40,828 [teWorker] INFO  [onent.AbstractOpenemsComponent] [modbus0] Activate Bridge.Modbus.Tcp
2025-08-17T11:15:40,831 [teWorker] WARN  [ponentmanager.EdgeConfigWorker] Component [modbus0] was missing!
2025-08-17T11:15:55,750 [orker-15] INFO  [appmanager.ResolveDependencies] Resolved dependencies.
2025-08-17T11:16:25,261 [fb8792a)] INFO  [onent.AbstractOpenemsComponent] [modbus0] Deactivate Bridge.Modbus.Tcp
2025-08-17T11:16:25,266 [modbus0 ] INFO  [ridge.modbus.api.task.WaitTask] WaitDelayTask [delay=610] interrupted: sleep interrupted
2025-08-17T11:16:40,521 [108f757)] INFO  [onent.AbstractOpenemsComponent] [modbus0] Activate Bridge.Modbus.Tcp
2025-08-17T11:16:40,522 [teWorker] WARN  [ponentmanager.EdgeConfigWorker] Component [modbus0] was missing!
2025-08-17T11:16:57,227 [298534d)] INFO  [bstractOpenemsSunSpecComponent] [MeterFroniusImpl] Reinitialize SunSpec channels [force=true]
2025-08-17T11:16:57,235 [298534d)] INFO  [onent.AbstractOpenemsComponent] [meter0] Activate Meter.Fronius
2025-08-17T11:16:57,240 [teWorker] WARN  [ponentmanager.EdgeConfigWorker] Component [meter0] was missing!
2025-08-17T11:16:57,244 [298534d)] INFO  [onent.AbstractOpenemsComponent] [meter0] Deactivate Meter.Fronius
2025-08-17T11:16:57,249 [teWorker] INFO  [bstractOpenemsSunSpecComponent] [MeterFroniusImpl] Reinitialize SunSpec channels [force=true]
2025-08-17T11:16:57,251 [teWorker] INFO  [onent.AbstractOpenemsComponent] [meter0] Activate Meter.Fronius
2025-08-17T11:17:01,519 [modbus0 ] INFO  [bstractOpenemsSunSpecComponent] [meter0] Adding SunSpec-Model [1:Common] starting at [40002]
2025-08-17T11:17:04,074 [modbus0 ] INFO  [bstractOpenemsSunSpecComponent] [meter0] Ignoring SunSpec-Model [203] starting at [40069]
2025-08-17T11:17:06,320 [modbus0 ] INFO  [meter.fronius.MeterFroniusImpl] [meter0] SunSpec initialization finished. 40 Channels available.

Und es führt gleichzeitig dazu, dass in OpenEMS der WR keine Daten mehr liefert – sprich für den WR ist es wohl relevant, dass die Einstellung auf float bleiben. Float scheint mir auch für den EnergyMeter (EM) richtig, siehe enum S213 in DefaultSunspecModel.java:

A(new ScaledValuePoint(//
	"S213_A", //
	"Amps", //
	"Total AC Current", //
	FLOAT32, //
	true, //
	READ_ONLY, //
	Unit.AMPERE, //
	"A_SF")), //

Die Einstellung float würde ich dann noch in der readme.adoc ergänzen.

@fanass noch eine Frage zum grundsätzlichen Set-Up (ohne zu wissen wie relevant es ist), du hast den EM auch hinter dem WR hängen und fragst den EM mittels Modbus TCP via dem WR ab? Oder greifst du direkt mittels Modbus RTU auf den EM zu?

Edit 1:
Ich habe im WebUI des WR auch noch keinen Hinweis auf die Modbus Unit-ID des EM gefunden, um zu prüfen ob die 240 korrekt ist. Wobei die im vorherigen Post genannte Fehlermeldung nur bei dieser Unit-ID auftritt und vielleicht ein Hinweis darauf ist, dass sie stimmt. :smiley:

Edit 2:
In der Hoffnung, dass es hilft das Problem zu lösen: Ich habe mir mal die Modbus-Register-Dokumentation in der Datei Meter_Register_Map_Float_v1.0.xlsx aus dem Fronius-Download-ZIP genommen und folgende Config-Datei für modpoll erstellt (die als register not supported kommentierten Register habe ich ausgelassen, für Register 73 habe ich den Datentyp uint32 genutzt da bitfield32 von modpoll laut Doku nicht unterstützt wird):

device,emfronius01,240,,
poll,holding_register,40000,121,BE_BE
ref,holding_reg001:_SID____________,40000,uint32,r
ref,holding_reg002:_ID_____________,40002,uint16,r
ref,holding_reg003:_L______________,40003,uint16,r,Registers
ref,holding_reg004:_Mn_____________,40004,string32,r
ref,holding_reg005:_Md_____________,40020,string21,r
ref,holding_reg006:_Opt____________,40036,string16,r
ref,holding_reg007:_Vr_____________,40044,string16,r
ref,holding_reg008:_SN_____________,40052,string32,r
ref,holding_reg009:_DA_____________,40068,uint16,r
ref,holding_reg010:_ID_____________,40069,uint16,r
ref,holding_reg011:_L______________,40070,uint16,r,Registers
ref,holding_reg012:_A______________,40071,float32,r,A
ref,holding_reg013:_AphA___________,40073,float32,r,A
ref,holding_reg014:_AphB___________,40075,float32,r,A
ref,holding_reg015:_AphC___________,40077,float32,r,A
ref,holding_reg016:_PhV____________,40079,float32,r,V
ref,holding_reg017:_PhVphA_________,40081,float32,r,V
ref,holding_reg018:_PhVphB_________,40083,float32,r,V
ref,holding_reg019:_PhVphC_________,40085,float32,r,V
ref,holding_reg020:_PPV____________,40087,float32,r,V
ref,holding_reg021:_PPVphAB________,40089,float32,r,V
ref,holding_reg022:_PPVphBC________,40091,float32,r,V
ref,holding_reg023:_PPVphCA________,40093,float32,r,V
ref,holding_reg024:_Hz_____________,40095,float32,r,Hz
ref,holding_reg025:_W______________,40097,float32,r,W
ref,holding_reg026:_WphA___________,40099,float32,r,W
ref,holding_reg027:_WphB___________,40101,float32,r,W
ref,holding_reg028:_WphC___________,40103,float32,r,W
ref,holding_reg029:_VA_____________,40105,float32,r,VA
ref,holding_reg030:_VAphA__________,40107,float32,r,VA
ref,holding_reg031:_VAphB__________,40109,float32,r,VA
ref,holding_reg032:_VAphC__________,40111,float32,r,VA
ref,holding_reg033:_VAR____________,40113,float32,r,VAr
ref,holding_reg034:_VARphA_________,40115,float32,r,VAr
ref,holding_reg035:_VARphB_________,40117,float32,r,VAr
ref,holding_reg036:_VARphC_________,40119,float32,r,VAr
poll,holding_register,40121,76,BE_BE
ref,holding_reg037:_PF_____________,40121,float32,r,cos()
ref,holding_reg038:_PFphA__________,40123,float32,r,cos()
ref,holding_reg039:_PFphB__________,40125,float32,r,cos()
ref,holding_reg040:_PFphC__________,40127,float32,r,cos()
ref,holding_reg041:_TotWhExp_______,40129,float32,r,Wh
ref,holding_reg045:_TotWhImp_______,40137,float32,r,Wh
ref,holding_reg049:_TotVAhExp______,40145,float32,r,VAh
ref,holding_reg053:_TotVAhImp______,40153,float32,r,VAh
ref,holding_reg073:_Evt____________,40193,uint32,r
ref,holding_reg074:_ID_____________,40195,uint16,r
ref,holding_reg075:_L______________,40196,uint16,r,Registers

Ich habe also nirgends einen Skalierungsfaktor angegeben (wie in Register Map angegeben). Damit bekomme ich folgende Ausgabe:

Modpoll v1.5.0 - A New Command-line Tool for Modbus and MQTT

2025-08-17 16:43:18,630 | I | modpoll.main | No MQTT host specified, skip MQTT setup.
2025-08-17 16:43:18,630 | I | modpoll.modbus_task | Loading config from: fronius.csv
2025-08-17 16:43:18,631 | I | modpoll.modbus_task | Added 1 device(s)...
2025-08-17 16:43:18,631 | I | modpoll.main | Loaded 1 Modbus config(s).
2025-08-17 16:43:18,631 | I | modpoll.main |  === Modpoll is polling at rate:10.0s, actual:10.0s ===

Device: emfronius01
+---------------------------------+----------------------+-----------+
| Reference                       |                Value | Unit      |
+---------------------------------+----------------------+-----------+
| holding_reg001:_SID____________ |           1400204883 |           |
| holding_reg002:_ID_____________ |                    1 |           |
| holding_reg003:_L______________ |                   65 | Registers |
| holding_reg004:_Mn_____________ |              Fronius |           |
| holding_reg005:_Md_____________ | Smart Meter TS 5kA-3 |           |
| holding_reg006:_Opt____________ |             3.32.1-2 |           |
| holding_reg007:_Vr_____________ |                  1.5 |           |
| holding_reg008:_SN_____________ |           0123456789 |           |
| holding_reg009:_DA_____________ |                  240 |           |
| holding_reg010:_ID_____________ |                  213 |           |
| holding_reg011:_L______________ |                  124 | Registers |
| holding_reg012:_A______________ |               -127.8 | A         |
| holding_reg013:_AphA___________ |               -32.16 | A         |
| holding_reg014:_AphB___________ |                -48.0 | A         |
| holding_reg015:_AphC___________ |               -47.64 | A         |
| holding_reg016:_PhV____________ |                241.1 | V         |
| holding_reg017:_PhVphA_________ |                240.0 | V         |
| holding_reg018:_PhVphB_________ |                242.1 | V         |
| holding_reg019:_PhVphC_________ |                241.2 | V         |
| holding_reg020:_PPV____________ |              417.567 | V         |
| holding_reg021:_PPVphAB________ |                417.5 | V         |
| holding_reg022:_PPVphBC________ |                418.5 | V         |
| holding_reg023:_PPVphCA________ |                416.7 | V         |
| holding_reg024:_Hz_____________ |                 49.9 | Hz        |
| holding_reg025:_W______________ |           -29516.801 | W         |
| holding_reg026:_WphA___________ |              -6816.1 | W         |
| holding_reg027:_WphB___________ |             -11446.6 | W         |
| holding_reg028:_WphC___________ |             -11253.9 | W         |
| holding_reg029:_VA_____________ |            30358.801 | VA        |
| holding_reg030:_VAphA__________ |               7601.9 | VA        |
| holding_reg031:_VAphB__________ |              11448.2 | VA        |
| holding_reg032:_VAphC__________ |              11308.5 | VA        |
| holding_reg033:_VAR____________ |               4667.5 | VAr       |
| holding_reg034:_VARphA_________ |               3366.0 | VAr       |
| holding_reg035:_VARphB_________ |                191.6 | VAr       |
| holding_reg036:_VARphC_________ |               1109.8 | VAr       |
| holding_reg037:_PF_____________ |                0.988 | cos()     |
| holding_reg038:_PFphA__________ |                0.896 | cos()     |
| holding_reg039:_PFphB__________ |                  1.0 | cos()     |
| holding_reg040:_PFphC__________ |                0.995 | cos()     |
| holding_reg041:_TotWhExp_______ |           82063192.0 | Wh        |
| holding_reg045:_TotWhImp_______ |          486680896.0 | Wh        |
| holding_reg049:_TotVAhExp______ |                  nan | VAh       |
| holding_reg053:_TotVAhImp______ |                  nan | VAh       |
| holding_reg073:_Evt____________ |                    0 |           |
| holding_reg074:_ID_____________ |                65535 |           |
| holding_reg075:_L______________ |                    0 | Registers |
+---------------------------------+----------------------+-----------+

Der Wert in Register 25 stimmt mit dem im Web-UI des WR angezeigten Wert überein (negativer Wert = Einspeisung).
Register 49 und 53 geben nan zurück. Wenn ich die Registeradresse um eins verschiebe (bspw. für Register 49 von 40145 auf 40146), bekomme ich 0.0 zurück. Ich weiß nicht, ob dies ein Problem ist.

Register 9 ist dann wohl ein Hinweis darauf, dass 240 stimmt. :slight_smile:

@sjjh Sowohl bei meiner älteren Anlage mit einem Fronius Symo wie auch bei der neuen mit Gen24 hängt das SmartMeter per Modbus RTU am Wechselrichter. Abgefragt wird es bei mir in beiden Fällen mit Modbus/TCP über die IP-Adresse des Wechselrichters.

Die Wechselrichter-Daten erhält man dann über die ID 1. Die Daten des SmartMeters erhalte ich bei der Anlage mit dem Symo über die ID 240, beim Gen24 mit der ID 200.

Im UI des Symo-Wechselrichters sehe ich keine Einstellmöglichkeit für die ID. Beim Gen24 jedoch schon, dort ist bei mir explizit 200 eingetragen. Ich weiß nicht, ob dieser Wert für Gen24 Default ist oder der Elektriker nur Lust hatte den Wert bei der Einrichtung einzutragen.

Ich habe in beiden Anlagen auch mal von float auf int+sf umgestellt und es ging nichts mehr. Float ist seitens OpenEMS wohl angesagt. Bei mir ist das ein Dilemma, da meine Wärmepumpe int+sf mit dem WR sprechen möchte. Aber das wurde meine ich hier schon mal diskutiert.

1 Like

Danke für die Rückmeldung, dann deckt sich das mit dem Setup und den Erfahrungen auf meiner Seite.

Ich brauche dann nun leider etwas Unterstützung beim Debuggen des Fehlers. Meine ersten Debug-Versuche in Eclipse waren nicht so erfolgreich, @stefan.feilmeier hast du vielleicht einen Tipp an welcher Stelle ein Breakpoint sinnvoll oder ein Blick auf den Code hilfreich wäre um der Ursache auf die Spur zu kommen?

Es sieht so aus als würde dein SunSpecGenerator noch nicht richtig funktionieren. Dein generierter Code definiert einen Scalefactor für das PF Register (-> openems/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/DefaultSunSpecModel.java at 87452e2275e5e86e6c872a5027666ce65bb9eb6a · OpenEMS/openems · GitHub)

Die JSON Spezifikation von SunSpec hat hier aber keinen Scale-Factor - bei Float-Werten ist der ja auch nicht sinnvoll (→ models/json/model_213.json at master · sunspec/models · GitHub)

Im Vergleich dazu das Standard-Modell 120: hier gibt es einen Scale-Factor in der JSON und im generierten Code (→ models/json/model_120.json at master · sunspec/models · GitHub)

Gruß,
Stefan

1 Like

Danke dir! Habe meinen PR aktualisiert. Super, nun läuft es fehlerfrei. :slight_smile: Mit einer ctrlDetailLog-Komponente für meter0 bekomme ich folgende Log-Ausgabe:

2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] =======================================
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ID                             : meter0
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ---------------------------------------
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ActivePower                    :           25930 W   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ActivePowerL1                  :            9857 W   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ActivePowerL2                  :            7155 W   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ActivePowerL3                  :            8918 W   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ActiveProductionEnergy         :       488025920 Wh_Σ 
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] Current                        :          121920 mA  
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] CurrentL1                      :           40680 mA  
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] CurrentL2                      :           38400 mA  
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] Frequency                      :           49900 mHz 
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ReactivePower                  :           -8013 var 
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ReactivePowerL1                :             371 var 
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ReactivePowerL2                :           -4765 var 
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ReactivePowerL3                :           -3618 var 
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213A                          :          121.92 A   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213AphA                       :           40.68 A   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213AphB                       :            38.4 A   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213Hz                         :            49.9 Hz  
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PFphB                      :           0.823     
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PFphC                      :           0.925     
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PPVphAB                    :           403.3 V   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PPVphBC                    :           406.8 V   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PPVphCA                    :           401.3 V   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213Pf                         :           0.946     
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PhV                        :       233.16667 V   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PhVphA                     :           232.0 V   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PhVphB                     :           233.7 V   
2025-08-21T16:52:52,374 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213PhVphC                     :           233.8 V   
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213Ppv                        :           403.8 V   
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213TotWhImp                   :     4.8802592E8 Wh_Σ 
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213VARphA                     :           371.0 var 
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213VARphB                     :         -4765.7 var 
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213VARphC                     :         -3618.8 var 
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213VAphA                      :          9864.4 VA  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213VAphB                      :          8597.0 VA  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213VAphC                      :          9624.5 VA  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213Va                         :         28086.0 VA  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213Var                        :         -8013.5 var 
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213W                          :         25930.9 W   
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213WphA                       :          9857.4 W   
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213WphB                       :          7155.2 W   
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] S213WphC                       :          8918.2 W   
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] Voltage                        :          233166 mV  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] VoltageL1                      :          232000 mV  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] VoltageL2                      :          233700 mV  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] VoltageL3                      :          233800 mV  
2025-08-21T16:52:52,375 [_cycle  ] INFO  [ControllerDebugDetailedLogImpl] [ctrlDetailedLog0] ---------------------------------------

Der Wert von ActivePower passt zum angezeigten Wert in der Weboberfläche.

Eine Sache, die mir auffällt: Die Log-Ausgabe variiert je Ausgabe, da manchmal einige Felder nicht auftauchen. Zum Beispiel ist das Feld ActiveProductionEnergy nur alle paar Log-Ausgaben sichtbar, auch VoltageL<n> wird manchmal komplett mit L1, L2, L3 ausgegeben, manchmal aber auch nur zwei der drei. Ich weiß nicht ob dies normal ist oder noch behoben werden muss, und wo die Ursache wohl liegt (SW, Netzwerk).
Sichtbar ist das Phänomen in der Datei mit mehr Zeilen (txt-Datei!): froniusLog.txt.pdf (78.2 KB)

@fanass könntest du den PR bei dir in deinem Setup auch einmal ausprobieren?

Hallo sjjh,

das von dir beschriebene Verhalten ist das gewünschte Verhalten, wenn man den “Debug Detailled Logger” verwendet. Ich verwende diesen Logger wenn ich einen tiefen Einblick in eine andere Komponente bekommen möchte. Manche Komponenten haben hunderte Kanäle und es würde schnell unübersichtlich werden, wenn die Werte jede Sekunde ausgegeben werden würden. Stattdessen werden Kanäle nur geloggt, wenn sie sich geändert haben. Wenn also eine neue Zeile ausgegeben wird, dann weißt du, dass sich der Wert in diesem Kanal gerade geändert hat.

Wenn du zyklische Ausgaben bevorzugst, solltest du den “Debug Logger” verwenden und dort in der debugLog()Methode, die von dir gewünschten Channel hinzufügen. Dieser Logger gibt die Infos jede Sekunde aus, unabhängig davon ob sie sich geändert haben oder nicht.

1 Like

Danke für die Info @c.lehne!

Kannst du mir einen Tipp geben, wie ich den Channel-Namen herausfinde? Da die Komponenten-ID meter0 ist, hatte ich es bspw. mit meter0.FREQUENCY probiert – das klappt aber nicht. Zugehöriger Quelltext:

Ich verstehe deine Frage leider nicht. Wenn du das Mapping so machst, wie im Screenshot angegeben, dann sollte die Frequenz ausgelesen werden. Und wenn ich in dein Logfile vom DebugDetailLogger schaue, sehe ich dort auch eine Frequenz. Das funktioniert also.

Meinst du evtl. wie du an diesen Wert in deinem Code üblicherweise herankommst?

Wenn du im Eclipse im Code in der entsprechenden Klasse an den Wert herankommen möchtest, kannst du dir von der IDE helfen lassen. Tippe einfach mal this.get ein und warte 2s, dann bekommst du eine (relativ vollständige) Liste aller zur Verfügung stehenden Kanäle, z.B. hier der Output für this.getF:

Wenn du die Frequenz dann analog der ActivePower hinzufügst, würdest du im “Debug Logger” zyklisch die Frequenz ausgegeben bekommen.
Anderes Beispiel: Im DebugDetailLog oben siehst du z.B. die VoltageL1. Mit Eclipse bist du dann relativ schnell bei der Methode this.getVoltageL1().

Sorry, ich probiers noch mal. Ich hatte dich so verstanden, dass ich im Edge die Komponente Controller Debug Log für eine zyklische Ausgabe nutzen solle und dort die Channels angeben soll:


Und das ist mir nicht gelungen.

Aber vielleicht habe ich dich missverstanden und du meintest, ich solle im Quelltext in der Methode public String debugLog() die Ausgabe um die Werte/Channel ergänzen. Das gelingt mir. :slight_smile:

@stefan.feilmeier was sind die nächsten Schritte um den PR #3269 zu mergen?