NEWS
[HowTo][Anleitung] Integration und Visualisierung des S10 Hauskraftwerks von E3DC in ioBroker
-
Hi, super Anleitung!
Eine Anmerkung: entprellzeit von 10s obwohl sekündlich Werte reinkommen kann sehr schnell dazu führen das nichts geloggt wird im History/sql Adapter. Entprellzeit immer kleiner wählen.
Es gab zwischendrin buggy versionen von sql/InfluxDB und History die das trotzdem geloggt haben ggf. Aber diese bugs sind in aktuellen Versionen gefixt.
Hier vllt im Artikel korrigieren :-))
-
Hi, super Anleitung!
Eine Anmerkung: entprellzeit von 10s obwohl sekündlich Werte reinkommen kann sehr schnell dazu führen das nichts geloggt wird im History/sql Adapter. Entprellzeit immer kleiner wählen.
Es gab zwischendrin buggy versionen von sql/InfluxDB und History die das trotzdem geloggt haben ggf. Aber diese bugs sind in aktuellen Versionen gefixt.
Hier vllt im Artikel korrigieren :-)) `
Hallo,
das habe ich noch nicht feststellen können. Bei mir funktionierte das so bisher mit jeder Version des sql-Adapters einwandfrei.
Wenn ich den Wert auf 1000ms runter setze, schreibt er mir jede Sekunde einen Wert in die DB. Ich will aber nur alle 10 Sekunden einen Wert haben. Auch wenn ich (für die Echtzeitanzeige) die Werte jede Sekunde abrufe… Wie kann ich das Ziel denn sonst erreichen wenn nicht über die Entprellzeit?
Danke.
MfG,
André
-
Dann „nur Änderungen loggen“ und „gleiche Werte alle 10s loggen“ oder ggf minimal Änderung einstellen.
Wenn sich die Werte sekündlich ändern würden dann würdest du mit einer entprellzeit >1s nie Werte geloggt bekommen.
-
Dann „nur Änderungen loggen“ und „gleiche Werte alle 10s loggen“ oder ggf minimal Änderung einstellen.
Wenn sich die Werte sekündlich ändern würden dann würdest du mit einer entprellzeit >1s nie Werte geloggt bekommen. `
Ok, offensichtlich trifft das für mich nicht zu. Habe das mal getestet. Der Wert den Modbus vom Gerät holt ändert sich in 99% der Fälle bei mir sekündlich (also bei jedem Poll des Modbus-Adapters). Bei einer Entprellzeit von 1000ms wird ziemlich genau jede Sekunde ein Wert in die DB geschrieben. Setze ich die Entprellzeit auf 10000ms, dann werden die Werte unregelmäßig in Abständen zwischen 6 und 9 Sekunden in die DB geschrieben. Dass also nie Werte geloggt werden kann ich nicht bestätigen und wäre mir im Übrigen auch längst aufgefallen…
Wie auch immer. Danke für den Hinweis bei den Unregelmäßigkeiten im Logging und der Aufklärung zur Entprellzeit. Das hatte ich anders verstanden. Ich habe im Zuge der Überarbeitung der Anleitung (Ersetzen der Screenshots mit Admin V3) die entsprechende Passage überarbeitet...
Was mich aber trotzdem interessiert, gibt es dazu schon einen Feature-Request oder sowas ähnliches? Ich mein es sollte doch irgendwie möglich sein, dass man im Logging sagt, dass (im Beispiel) nur alle 10 oder 60 Sekunden ein Eintrag in die Datenbank erfolgen soll, auch wenn sich der Wert jede Sekunde ändert. Gerade für das Loggen im Bereich Stromverbrauchswerte könnte das ja ein Aufblähen der Datenbank verhindern, oder etwa nicht?
Aber das ist ein anderes Thema....
MfG,
André
-
Hallo,
Erst mal ein Lob für die Anleitung
Leider habe ich ein Problem mit dem Import der Holding Register im ModBus.
Es wirft mir immer alle durch einander.
Wäre es möglich das es noch mal jemand Exportiert und hier einfügt?
edit:
Habe es doch hinbekommen, poste den Code hier nochmal als CSV
address;name;description;unit;type;len;factor;offset;role;room;poll;wp 40002;Modbus_Firmware;Modbus-Firmware-Version;;uint16be;1;1;0;value;;true;false 40004;Hersteller;Hersteller;;string;16;1;0;value;;true;false 40020;Modell;Modell;;string;16;1;0;value;;true;false 40036;Seriennummer;Seriennummer;;string;16;1;0;value;;true;false 40052;Firmware;Firmware;Release;string;16;1;0;value;;true;false 40068;PV_Leistung;Photovoltaik-Leistung in Watt;W;int32sw;2;1;0;value;;true;false 40070;Batterie_Leistung;Batterie-Leistung in Watt;W;int32sw;2;1;0;value;;true;false 40072;Hausverbrauch_Leistung;Hausverbrauchs-Leistung in Watt;W;int32sw;2;1;0;value;;true;false 40074;Netz_Leistung;Leistung am Netzübergabepunkt;W;int32sw;2;1;0;value;;true;false 40082;Autarkie_Eigenverbrauch;Autarkie und Eigenverbrauch;;uint16be;1;1;0;value;;true;false 40083;Batterie_SOC;Batterie-SOC in Prozent;%;uint16be;1;1;0;value;;true;false 40084;Emergency_Power_Status;Emergency-Power Status;;uint16be;1;1;0;value;;true;false 40085;EMS_Status;EMS-Status;;uint16be;1;1;0;value;;true;false 40096;DC_String_1_Voltage;Spannung in Volt;V;uint16be;1;1;0;value;;true;false 40097;DC_String_2_Voltage;Spannung in Volt;V;uint16be;1;1;0;value;;true;false 40098;DC_String_3_Voltage;Spannung in Volt;V;uint16be;1;1;0;value;;true;false 40099;DC_String_1_Current;Strom in Ampere;A;uint16be;1;1;0;value;;true;false 40100;DC_String_2_Current;Strom in Ampere;A;uint16be;1;1;0;value;;true;false 40101;DC_String_3_Current;Strom in Ampere;A;uint16be;1;1;0;value;;true;false 40102;DC_String_1_Power;Leistung in Watt;W;uint16be;1;1;0;value;;true;false 40103;DC_String_2_Power;Leistung in Watt;W;uint16be;1;1;0;value;;true;false 40104;DC_String_3_Power;Leistung in Watt;W;uint16be;1;1;0;value;;true;false
Vielen Dank
Grüße Armin
-
Hallo,
auch von mir Lob für die Anleitung.
Ich habe das Problem das die Abfrage zeitweise funktioniert, meistens aber auf einen Fehler läuft, siehe Fehlerlog weiter unten.
Version des Modbus Adapter ist 2.0.7
Hat jemand eine Idee was falsch sein könnte?
__"
2018-08-01 00:00:17.685 - [32minfo[39m: host.ioBroker-RasPi instance system.adapter.modbus.0 started with pid 23670
2018-08-01 00:00:18.923 - [32minfo[39m: modbus.0 States connected to redis: 127.0.0.1:6379
2018-08-01 00:00:18.989 - [32minfo[39m: modbus.0 starting. Version 2.0.7 in /opt/iobroker/node_modules/iobroker.modbus, node: v8.11.3
2018-08-01 00:00:19.414 - [32minfo[39m: modbus.0 Connected to slave 192.168.178.31
2018-08-01 00:00:19.444 - [31merror[39m: modbus.0 uncaught exception: Q is not defined
2018-08-01 00:00:19.444 - [31merror[39m: modbus.0 ReferenceError: Q is not defined
at Object.writeMultipleRegisters (/opt/iobroker/node_modules/iobroker.modbus/lib/jsmodbus/handler/client/WriteMultipleRegisters.js:69:25)
at send (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:402:30)
at writeHelper (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:440:13)
at Master.write (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:452:17)
at Adapter.adapter.on (/opt/iobroker/node_modules/iobroker.modbus/main.js:79:24)
at emitTwo (events.js:126:13)
at Adapter.emit (events.js:214:7)
at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3712:38)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
2018-08-01 00:00:19.476 - [31merror[39m: Caught by controller[0]: ReferenceError: Q is not defined
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at Object.writeMultipleRegisters (/opt/iobroker/node_modules/iobroker.modbus/lib/jsmodbus/handler/client/WriteMultipleRegisters.js:69:25)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at send (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:402:30)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at writeHelper (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:440:13)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at Master.write (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:452:17)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at Adapter.adapter.on (/opt/iobroker/node_modules/iobroker.modbus/main.js:79:24)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at emitTwo (events.js:126:13)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at Adapter.emit (events.js:214:7)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3712:38)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at runCallback (timers.js:810:20)
2018-08-01 00:00:19.477 - [31merror[39m: Caught by controller[0]: at tryOnImmediate (timers.js:768:5)
2018-08-01 00:00:19.477 - [31merror[39m: host.ioBroker-RasPi instance system.adapter.modbus.0 terminated with code 0 (OK)
2018-08-01 00:00:19.478 - [32minfo[39m: host.ioBroker-RasPi Restart adapter system.adapter.modbus.0 because enabled
2018-08-01 00:00:49.502 - [32minfo[39m: host.ioBroker-RasPi instance system.adapter.modbus.0 started with pid 23729
2018-08-01 00:00:50.741 - [32minfo[39m: modbus.0 States connected to redis: 127.0.0.1:6379
2018-08-01 00:00:50.813 - [32minfo[39m: modbus.0 starting. Version 2.0.7 in /opt/iobroker/node_modules/iobroker.modbus, node: v8.11.3
2018-08-01 00:00:51.240 - [32minfo[39m: modbus.0 Connected to slave 192.168.178.31
2018-08-01 00:00:51.270 - [31merror[39m: modbus.0 uncaught exception: Q is not defined
2018-08-01 00:00:51.271 - [31merror[39m: modbus.0 ReferenceError: Q is not defined
"__
Meine aktuelle Testkonfiguration ist:
address name description unit type len factor offset role room poll wp
40068 PV_Leistung Photovoltaik-Leistung in Watt W int32sw 2 1 0 value true false
40070 Batterie_Leistung Batterie-Leistung in Watt W int32sw 2 1 0 value true false
40072 Hausverbrauch_Leistung Hausverbrauchs-Leistung in Watt W int32sw 2 1 0 value true false
-
Hallo,
funktionieren bei euch die Passworter für den VIS View download die hier angegeben sind noch:
https://buanet.de/2018/02/integration-e … obroker/4/
Bei mir leider nicht. Hat jemand die Dateien evtl. schon runtergeladen und kann sie mir zu Verfügung stellen?
Danke
-
Hallo,
funktionieren bei euch die Passworter für den VIS View download die hier angegeben sind noch:
https://buanet.de/2018/02/integration-e … obroker/4/
Bei mir leider nicht. Hat jemand die Dateien evtl. schon runtergeladen und kann sie mir zu Verfügung stellen?
Danke ` Habs gerade probiert. Kennwort ist richtig.
Schreib mir ne Mail übers Kontaktformular der Website dann schick ich dir die Dateien.
MfG,
André
PS: Würde es im Übrigen nicht so schön finden wenn jemand meinen Content herunterlädt und ohne mich zu fragen weiter verbreitet…
Gesendet von Unterwegs...
-
Hallo Andre.
Ich habe mal eine Frage. Ich würde die History-Werte gerne als Wert anzeigen lassen, anstatt grafisch.
Also z.B. PV-Produktion/Hausverbrauch letzte Stunde, letzter Tag, oder jede Stunde aktualisiert kumuliert seit 0 Uhr als Zahl in einer Liste angezeigt anstatt per Graph.
Hast du eine Ahnung, wie man das machen kann? Ich muss ja irgendwie die History-Werte addiert als Zahl ausgeben.
VG lulu
-
Hallo Andre.
Ich habe mal eine Frage. Ich würde die History-Werte gerne als Wert anzeigen lassen, anstatt grafisch.
Also z.B. PV-Produktion/Hausverbrauch letzte Stunde, letzter Tag, oder jede Stunde aktualisiert kumuliert seit 0 Uhr als Zahl in einer Liste angezeigt anstatt per Graph.
Hast du eine Ahnung, wie man das machen kann? Ich muss ja irgendwie die History-Werte addiert als Zahl ausgeben.
VG lulu ` Hört sich gut an, nehme ich.
Bin leider noch nicht dazu gekommen sowas zu machen. Mein Ansatz war ein Script. Bin aber seinerzeit schon am auslesen der Daten aus der DB gescheitert. Da hab ich es auf Eis gelegt.
Würde mir auch gerne die Werte aus dem E3DC Webinterface anzeigen lassen, aber es gibt keine Schnittstelle dazu… Und über mod us kommen keine kummulierten Werte...
Wenn du eine Lösung findest lass es mich wissen.
MfG,
André
Gesendet von Unterwegs...
-
Was ich hinbekommen habe ist die Werte in Blockly "mitzurechnen". Also eine Objektvariable "Summe" erstellt, und dort habe ich dann immer bei Änderung z.B. der PV-Produktion "Summe=alte Summe + neuer PV-Produktionswert" den Wert hochgezählt. Nun müsste man halt z.B. im Script noch jede Stunde den Wert festhalten, oder auch 24. Das geht schon alles, aber recht aufwändig und vor allem weiß ich nicht, wie viel Leistung das ganze kostet, wenn man das für mehrere Werte macht (wenn die jede Sekunde berechnet werden).
Ich hätte gedacht, wenn man eh schon die ganzen Daten in ne Datenbank schreibt, dann müsste man die doch irgendwie zur Anzeige bringen können.
-
Hallo Andre,
ich habe mich auch mal an deine Anleitung gewagt. Läuft eigentlich ganz gut. Erstmal schönen Dank für die Anleitung. Ich habe nur ein Problem, mir werden fast alle Werte im VIS als undefined angezeigt. Woran kann das liegen? Ich habe deine txt Dateien zum Import genutzt.
Vielen Dank
Stephan
8638_e3dc.jpg -
Hallo,
ich habe es gelöst. Es dürfen in der Instanz keine Leerzeichen in dem Namen des Holding Registers eingegeben werden, leider auch nicht hinter dem Namen.
-
Hallo in die Runde,
gibt es schon Neuigkeiten über die History Werte?
Ich versuch mich auch schon daran, habe bislang Erfolglos folgendes getestet:
-
Verbrauchszähler
-
Betriebsstundenzähler
Habt Ihr vielleicht eine Lösung um die Daten direkt über Modbus Sun-Spec Protokoll auszulesen?
Es muss doch irgendwie möglich sein an die History Werte zu kommen.
Danke
Stephan
-
-
Hallo, zuerst einmal vielen Dank für die Bereitstellung der Anleitung. Im Moment bin ich noch rund um mein Haus am Daten sammeln. Ich wollte mich aber schon mal ans Zerlegung des Werte für Autarkie und Eigenverbrauch machen, aber bei mir im Editor bringt er ständig eine Fehlermeldung in Zeile 8.
Was wohl mit den entity names zu tun hat, hier mal ein Printscreen:
Ich verstehe zwar was der Code machen soll, sprich den Wert aus 2 Uint8 zerlegen, aber ich kann es nicht im Beispiel nachvollziehen (roter Kasten). Kann mir hier bitte jemand Hilfestellung geben?
Vielen Dank
und Gruss
Stefan -
@Krami :
Hat sich erledigt, die Zeichenkodierung war es die mir hier einen Strich durch die Rechnung gemacht hat.>>
Bedeutet nicht &>&> sondern >>Ich hatte irgendwie ein Knoten im Kopf, es funktioniert nun einwandfrei und ich bedanke mich noch einmal für die Anleitung
Gruss
Krami -
Hallo an alle,
danke für die wirklich gelungene Anleitung
Beim Script hatte ich dasselbe Problem wie Krami und weiss nicht ob ich es richtig verstanden habe.
Ist das jetzt so richtig ?// 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); }); // Aufteilung "Modbus Firmware Verwsion" var id = 'modbus.0.holdingRegisters.40002_Modbus-Firmware'; createState('e3dc.modbus.MajorVersion'); createState('e3dc.modbus.MinorVersion'); on(id, function (obj) { setState('e3dc.modbus.MajorVersion', (obj.state.val >> 8) & 0xFF, true); setState('e3dc.modbus.MinorVersion', obj.state.val & 0xFF, true); });
Ich habe noch eine Frage zu den Adressen 40097 bis 40104, diese finde ich in der Dokumentation von E3DC nicht und
frage mich nun, ob ich eine alte Dokumentation benutze oder ob diese Adressen nicht dokumentiert wurden.
Meine Version derDoku ist 05.08.2016.Gruß Arno
-
Hallo Arno,
ja es gibt eine neue Doku.
Gruß
Stephan -
@ArnoD
Hallo Arno,
funktioniert das jetzt so, wie Du in den Zeilen 8/9 und 17/18 angenommen hast.
Gruß Thomas -
This post is deleted!