NEWS
[HowTo][Anleitung] Integration und Visualisierung des S10 Hauskraftwerks von E3DC in ioBroker
-
@Christian-Hornhues Ah, du bist auch im Photovoltaikforum, hab' deinen Post dort gesehen. :-)
Wie komme ich zu dem Adapter Sourceanalytix? Wenn ich auf der Adapterseite danach filtere, dann wird nichts gefunden...
Und wie greife ich dann auf den kumulierten Wert zu, wenn ich das mal aktiviert hätte? Unter dem Register findet man ja erstmal weiterhin die aktuelle Leistung... -
@stevie77 Hast Du das Problem lösen können? Bei mir ist es genauso und ich komme nicht weiter :anguished:
-
Hallo zusammen,
ich habe seit ein paar Tagen einen e3dc Pro am laufen. Ich bekommen im ioBroker den Adapter nicht auf grün.
Modbus ist im e3dc aktiviert. Im Adapter habe ich die folgenden Einstellungen vorgenommen:

und das zeigt dann der Log:

Der Adapter geht kurz auf grün und dann auf gelb. Hattet Ihr das schonmal bzw. habe ich bei den Holdings etwas falsch erfasst??
Grüße
Rafael -
@loni78
Hallo. Ist das Problem "kurz grün, dann gelb" gelöst? Ich habe das auch mit einem S10Pro.
VGEigentlich sollte es ja nicht so schwer sein, aber es funktioniert bei mir nicht. :confused:
Der Modbus Adapter ist richtig eingerichtet und grün; bringt auch alle 2 Sekunden neue Werte:

Das Script habe ich eingebunden:
// Aufteilung der Datenpunkte mit doppelten Informationen // Aufteilung "Autarkie und Eigenverbrauch in Prozent" var id = 'modbus.0.holdingRegisters.40082_Autarkie_Eigenverbrauch'; createState('e3dc.modbus.Autarkie'); createState('e3dc.modbus.Eigenverbrauch'); on(id, function (obj) { setState('e3dc.modbus.Autarkie', (obj.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.Eigenverbrauch', obj.state.val & 0xFF, true); console.log(obj.state.val); }); // Aufteilung "Modbus Firmware Version" var id1 = 'modbus.0.holdingRegisters.40002_Modbus_Firmware'; createState('e3dc.modbus.MajorVersion'); createState('e3dc.modbus.MinorVersion'); on(id1, function (obj1) { setState('e3dc.modbus.MajorVersion', (obj1.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.MinorVersion', obj1.state.val & 0xFF, true); }); // EMS var id2 = 'modbus.0.holdingRegisters.40085_EMS_Status'; createState('e3dc.modbus.Ladesperre'); createState('e3dc.modbus.Entladesperre'); createState('e3dc.modbus.NotstrommodusMoeglich'); createState('e3dc.modbus.WetterbasiertesLaden'); createState('e3dc.modbus.Abregelstatus'); on(id2, function (obj2) { setState('e3dc.modbus.Ladesperre', (obj2.state.val >> 1) & 0xFF, true); setState('e3dc.modbus.Entladesperre', (obj2.state.val >> 2) & 0xFF, true);/* setState('e3dc.modbus.NotstrommodusMoeglich', (obj2.state.val >> 3) & 0xFF, true); setState('e3dc.modbus.WetterbasiertesLaden', (obj2.state.val >> 4) & 0xFF, true); setState('e3dc.modbus.Abregelstatus', (obj2.state.val >> 5) & 0xFF, true); */ });Doch es werden "nur" Werte vom Skipt für Autarkie und Eigenverbrauch aktualisiert.

Hat wer eine Idee? -
Eigentlich sollte es ja nicht so schwer sein, aber es funktioniert bei mir nicht. :confused:
Der Modbus Adapter ist richtig eingerichtet und grün; bringt auch alle 2 Sekunden neue Werte:

Das Script habe ich eingebunden:
// Aufteilung der Datenpunkte mit doppelten Informationen // Aufteilung "Autarkie und Eigenverbrauch in Prozent" var id = 'modbus.0.holdingRegisters.40082_Autarkie_Eigenverbrauch'; createState('e3dc.modbus.Autarkie'); createState('e3dc.modbus.Eigenverbrauch'); on(id, function (obj) { setState('e3dc.modbus.Autarkie', (obj.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.Eigenverbrauch', obj.state.val & 0xFF, true); console.log(obj.state.val); }); // Aufteilung "Modbus Firmware Version" var id1 = 'modbus.0.holdingRegisters.40002_Modbus_Firmware'; createState('e3dc.modbus.MajorVersion'); createState('e3dc.modbus.MinorVersion'); on(id1, function (obj1) { setState('e3dc.modbus.MajorVersion', (obj1.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.MinorVersion', obj1.state.val & 0xFF, true); }); // EMS var id2 = 'modbus.0.holdingRegisters.40085_EMS_Status'; createState('e3dc.modbus.Ladesperre'); createState('e3dc.modbus.Entladesperre'); createState('e3dc.modbus.NotstrommodusMoeglich'); createState('e3dc.modbus.WetterbasiertesLaden'); createState('e3dc.modbus.Abregelstatus'); on(id2, function (obj2) { setState('e3dc.modbus.Ladesperre', (obj2.state.val >> 1) & 0xFF, true); setState('e3dc.modbus.Entladesperre', (obj2.state.val >> 2) & 0xFF, true);/* setState('e3dc.modbus.NotstrommodusMoeglich', (obj2.state.val >> 3) & 0xFF, true); setState('e3dc.modbus.WetterbasiertesLaden', (obj2.state.val >> 4) & 0xFF, true); setState('e3dc.modbus.Abregelstatus', (obj2.state.val >> 5) & 0xFF, true); */ });Doch es werden "nur" Werte vom Skipt für Autarkie und Eigenverbrauch aktualisiert.

Hat wer eine Idee? -
Eigentlich sollte es ja nicht so schwer sein, aber es funktioniert bei mir nicht. :confused:
Der Modbus Adapter ist richtig eingerichtet und grün; bringt auch alle 2 Sekunden neue Werte:

Das Script habe ich eingebunden:
// Aufteilung der Datenpunkte mit doppelten Informationen // Aufteilung "Autarkie und Eigenverbrauch in Prozent" var id = 'modbus.0.holdingRegisters.40082_Autarkie_Eigenverbrauch'; createState('e3dc.modbus.Autarkie'); createState('e3dc.modbus.Eigenverbrauch'); on(id, function (obj) { setState('e3dc.modbus.Autarkie', (obj.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.Eigenverbrauch', obj.state.val & 0xFF, true); console.log(obj.state.val); }); // Aufteilung "Modbus Firmware Version" var id1 = 'modbus.0.holdingRegisters.40002_Modbus_Firmware'; createState('e3dc.modbus.MajorVersion'); createState('e3dc.modbus.MinorVersion'); on(id1, function (obj1) { setState('e3dc.modbus.MajorVersion', (obj1.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.MinorVersion', obj1.state.val & 0xFF, true); }); // EMS var id2 = 'modbus.0.holdingRegisters.40085_EMS_Status'; createState('e3dc.modbus.Ladesperre'); createState('e3dc.modbus.Entladesperre'); createState('e3dc.modbus.NotstrommodusMoeglich'); createState('e3dc.modbus.WetterbasiertesLaden'); createState('e3dc.modbus.Abregelstatus'); on(id2, function (obj2) { setState('e3dc.modbus.Ladesperre', (obj2.state.val >> 1) & 0xFF, true); setState('e3dc.modbus.Entladesperre', (obj2.state.val >> 2) & 0xFF, true);/* setState('e3dc.modbus.NotstrommodusMoeglich', (obj2.state.val >> 3) & 0xFF, true); setState('e3dc.modbus.WetterbasiertesLaden', (obj2.state.val >> 4) & 0xFF, true); setState('e3dc.modbus.Abregelstatus', (obj2.state.val >> 5) & 0xFF, true); */ });Doch es werden "nur" Werte vom Skipt für Autarkie und Eigenverbrauch aktualisiert.

Hat wer eine Idee?@ecki945 sagte in [HowTo][Anleitung] Integration und Visualisierung des S10 Hauskraftwerks von E3DC in ioBroker:
Doch es werden "nur" Werte vom Skipt für Autarkie und Eigenverbrauch aktualisiert.
Wenn sich am Wert vom Register 40002 nichts ändert, wird auch nichts aktualisiert. Einfach einmal manuell überschreiben.
-
Danke @ArnoD hat geklappt. Zu dem von @andre geposteten Script auf github habe ich noch ne Frage:
Laut der E3DC Modbus Doku ist die Codierung im Wert EMS-Status wie folgt aufgebaut:

Bit 0 = Ladesperre
Bit 1 = Entladesperre, ....Wenn nun wie im Script von @andre
setState('adapterdatenpunkte.modbus.Ladesperre', (obj.state.val >> 1) & 0xFF, true); setState('adapterdatenpunkte.modbus.Entladesperre', (obj.state.val >> 2) & 0xFF, true);Der Wert vom Modbus übertragene Wert des EMS-Status 1 Bit nach Rechts geschoben wird, ist doch die Information über die Ladesperre und Entladesperre nicht mehr vorhanden bzw es wird das falsche Bit ausgewertet.
Müsste es nicht so implementiert sein:
setState('e3dc.modbus.Ladesperre', (obj.state.val) & 0x01, true); setState('e3dc.modbus.Entladesperre', (obj.state.val>> 1) & 0x01, true);Oder hab ich wieder nen Denkfehler?
-
@olaf42
Stehen Speicher und IoBroker im gleichen Subnetz? E3DC erlaubt als "Feature" keine Kommunikation von Modbus über Subnetze, hatte das gleiche Problem und ich habe mein IoBroker VM eine VLAN im IOT Netz gegeben wo der Speicher steht, dann klappt es. -
@olaf42
Stehen Speicher und IoBroker im gleichen Subnetz? E3DC erlaubt als "Feature" keine Kommunikation von Modbus über Subnetze, hatte das gleiche Problem und ich habe mein IoBroker VM eine VLAN im IOT Netz gegeben wo der Speicher steht, dann klappt es.Hi,
ich würde mir gern einen Datenpunkt erstellen (PVGesamt) welcher die Summe aus dem Positiven Wert des Zusatzwechselrichters (wird wie weiter vorn per Script *-1 genommen) und der PV-Leistung bildet, Quasi die Gesamte PV-Leistung der Anlage.
Kann da jemand helfen?Gruß
-
Hi,
ich würde mir gern einen Datenpunkt erstellen (PVGesamt) welcher die Summe aus dem Positiven Wert des Zusatzwechselrichters (wird wie weiter vorn per Script *-1 genommen) und der PV-Leistung bildet, Quasi die Gesamte PV-Leistung der Anlage.
Kann da jemand helfen?Gruß
@musik231
Da musst du nur den Wert "modbus.0.holdingRegisters.40068_PV_Leistung" mit dem Wert "modbus.0.holdingRegisters.40076_Zusaetzliche_Einspeiser_Leistung" zusammenzählen.
Naturlich musst du dabei beachten das beim Regiester 40076 immer negative Werte angezeigt werden, also diesen Wert in eine positive Zahl vorher mit Math.abs() umwandeln. -
Hi,
ich würde mir gern einen Datenpunkt erstellen (PVGesamt) welcher die Summe aus dem Positiven Wert des Zusatzwechselrichters (wird wie weiter vorn per Script *-1 genommen) und der PV-Leistung bildet, Quasi die Gesamte PV-Leistung der Anlage.
Kann da jemand helfen?Gruß
-
@musik231
Wenn du ein Beispiel benötigst wie man das Programmieren kann, dann sieh dir mal mein Script hier an:
https://forum.iobroker.net/topic/32976/e3dc-hauskraftwerk-steuernIn dem Script mache ich genau das was du suchst.
-
Hallo,
ich bin auf der Suche nach einer Möglichkeit den Ladestrom der easyWallbox per Modbus zu verändern.
Gibt es da eine Möglichkeit? -
Hallo,
mein Plot des "Flot-Adapters" zeigt leider alle Werte der Zukunft als Linie, kann man dies unterbinden?

Gruß Mirco
-
@glitzi
Das Kannst in den Einstellungen beim jeweiligen Diagramm unter Zeit einstellen.
Einfach als Zeit Spanne Ende "jetzt" einstellen. -
Nachdem ich nun schon einige Zeit Dank der tollen Anleitung von @andre meinem S10 auslese und visualisiere, möchte ich einfach Dank sagen für die Arbeit. Es war sogar der Startschuss, mich überhaupt mit iobroker zu befassen und einzusteigen :-)
So sieht es bei mir aktuell auf der PV-Detailseite aus:

-
Super Anleitung!
Ich vermisse noch eine Möglichkeit die externen Quellen (bei mir ein zweiter Wechselrichter und ein BHKW) getrennt auszulesen. In der E3DC App/Webseite kann ich bei Klick auf die externen Quellen die Werte von Leistungsmesser 1 bis 3, die ich im Hauskraftwerk in "Fronius" und "BHKW" umbenannt habe, ansehen.
Ich dachte zunächst, daß die Werte ab 40105 dafür zuständig wären. Da bekomme ich aber entweder 0 oder Phantasiewerte angezeigt.
Ist eine Möglichkeit bekannt die Werte der Leistungsmesser korrekt zu visualisieren?
-
Super Anleitung!
Ich vermisse noch eine Möglichkeit die externen Quellen (bei mir ein zweiter Wechselrichter und ein BHKW) getrennt auszulesen. In der E3DC App/Webseite kann ich bei Klick auf die externen Quellen die Werte von Leistungsmesser 1 bis 3, die ich im Hauskraftwerk in "Fronius" und "BHKW" umbenannt habe, ansehen.
Ich dachte zunächst, daß die Werte ab 40105 dafür zuständig wären. Da bekomme ich aber entweder 0 oder Phantasiewerte angezeigt.
Ist eine Möglichkeit bekannt die Werte der Leistungsmesser korrekt zu visualisieren?
@xwing Ich weiß nicht mehr genau warum, aber ich mache das so und es funktioniert wohl (wobei ich bisher nur einphasig benötigt habe).
// Addierung Leistungsmesser Wallbox const lmWallboxP1 = 'modbus.0.holdingRegisters.40114_Leistungsmesser_2_L1'; const lmWallboxP2 = 'modbus.0.holdingRegisters.40115_Leistungsmesser_2_L2'; const lmWallboxP3 = 'modbus.0.holdingRegisters.40116_Leistungsmesser_2_L3'; createState('javascript.0.e3dc.lmWallbox'); on(lmWallboxP1, calculateCompleteWallboxPower); on(lmWallboxP2, calculateCompleteWallboxPower); on(lmWallboxP3, calculateCompleteWallboxPower); function calculateCompleteWallboxPower(){ var wallboxPower = getState(lmWallboxP1).val + getState(lmWallboxP2).val + getState(lmWallboxP3).val; setState('javascript.0.e3dc.lmWallbox', wallboxPower, true); } // Addierung Leistungsmesser Wärmepumpe const lmWaermepumpeP1 = 'modbus.0.holdingRegisters.40118_Leistungsmesser_3_L1'; const lmWaermepumpeP2 = 'modbus.0.holdingRegisters.40119_Leistungsmesser_3_L2'; const lmWaermepumpeP3 = 'modbus.0.holdingRegisters.40120_Leistungsmesser_3_L3'; createState('javascript.0.e3dc.lmWaermepumpe'); on(lmWaermepumpeP1, calculateCompleteWaermepumpePower); on(lmWaermepumpeP2, calculateCompleteWaermepumpePower); on(lmWaermepumpeP3, calculateCompleteWaermepumpePower); function calculateCompleteWaermepumpePower(){ var waermepumpePower = getState(lmWaermepumpeP1).val + getState(lmWaermepumpeP2).val + getState(lmWaermepumpeP3).val; setState('javascript.0.e3dc.lmWaermepumpe', waermepumpePower, true); } -
Super Anleitung!
Ich vermisse noch eine Möglichkeit die externen Quellen (bei mir ein zweiter Wechselrichter und ein BHKW) getrennt auszulesen. In der E3DC App/Webseite kann ich bei Klick auf die externen Quellen die Werte von Leistungsmesser 1 bis 3, die ich im Hauskraftwerk in "Fronius" und "BHKW" umbenannt habe, ansehen.
Ich dachte zunächst, daß die Werte ab 40105 dafür zuständig wären. Da bekomme ich aber entweder 0 oder Phantasiewerte angezeigt.
Ist eine Möglichkeit bekannt die Werte der Leistungsmesser korrekt zu visualisieren?
@xwing
Kann es sein das deine Einstellungen im Modbus Adapter Holding-Register nicht stimmen?
Register 40105 Leistungsmesser_0 enthält den Typ und hat nichts mit Watt zu tun.
1 Wurzelleistungsmesser
2 Externe Produktion
3 Zweirichtungszähler
4 Externer Verbrauch
5 Farm
6 Wird nicht verwendet
7 Wallbox
8 Externer Leistungsmesser Farm
9 Datenanzeige
10 Regelungsbypass
Es fehlen aber Register 40106 40107 40108 die vom Leistungsmesser_0 die Watt Werte der drei Phasen enthalten.Bei Register 40109 beginnt dann Leistungsmesser_1
Die Holding-Register Modbus Adapter zum Importieren kannst du hier downloaden bzw. kopieren:
https://github.com/ArnoD15/iobroker_E3DC
Die Datei Modbus_E3DC_Import.tsv herunterladen.Im E3DC Portal findest du die Modbus Beschreibung "ModBus_E3DC_Speichersysteme_V1.80_2021-07-07.pdf"


