SMAEM & SMAInverter/SMASTP: Berechnung Direktverbrauch / Gesamtverbrauch

Begonnen von Xguide, 01 September 2016, 15:14:09

Vorheriges Thema - Nächstes Thema

Xguide

Hallo zuammen,

ich bin dabei das SHM (SunnyHomeManager) Modul mit Hilfe der neuen Module SMAEM und SMAInverter abzulösen.
Die beiden Moule laufen seit 2 Tagen perfekt - Danke an die Verantwortlichen.
Meine Konfiguration ist ähnlich wie bei dem ein oder anderen hier im Forum, ich habe einen SMA TriPower, ein SMA EnergyMeter und einen SMA Sunny Island.
Die beiden Wechselrichter habe ich mit dem Modul SMAInverter eingebunden und das EnergyMeter über SMAEM.

Meine Frage, da kein direkter Bezug zu den jeweiligen Modulen im extra Thread, ist die Folgende. Wie realisiert ihr die Berechnung des Direktverbrauchs, respektive Gesamtverbrauchs?
Konfig:

  • SMA_TriPower10 = PV-Wechselrichter (76_SMAInverter)
  • SMA_SunnyIsland = Batterie-Wechselrichter (76_SMAInverter)
  • SMA_EnergyMeter= EnergyMeter (77_SMAEM)

Meine Theorie ist folgende, aber vielleicht habe ich mich ja auch verrannt...
Direktverbrauch =  SMA_TriPower10.SPOT_PACTOT - SMA_EnergyMeter.Einspeisung_Wirkleistung - SMA_SunnyIsland.POWER_IN;
Gesamtverbrauch = Direktverbrauch + SMA_SunnyIsland.POWER_OUT + SMA_EnergyMeter.Bezug_Wirkleistung

Ich habe das o.g. Schema als userReading im SMA_EnergyMeter angelegt, habe aber das Problem, das die Werte nicht synchronisiert auflaufen.

Summe_Direktverbrauch { sprintf("%.2f",ReadingsVal("SMA_TriPower10", "SPOT_PACTOT",0)-ReadingsVal("SMA_EnergyMeter", "Einspeisung_Wirkleistung",0)-ReadingsVal("SMA_SunnyIsland", "POWER_IN",0)); },
Summe_Gesamtverbrauch { sprintf("%.2f",ReadingsVal("SMA_EnergyMeter", "Summe_Direktverbrauch",0)+ReadingsVal("SMA_SunnyIsland", "POWER_OUT",0)+ReadingsVal("SMA_EnergyMeter", "Bezug_Wirkleistung",0)); }


Hat jemand eine Idee wie das eleganter gelöst werden kann?

Danke für eure Hilfe und viele Grüße aus Bochum
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

Volker Kettenbach

Hi Xguide,

dass die Werte nicht synchron auflaufen ist ein nicht zu lösendes Problem.
Ich für meinen Teil habe einen Dummy angelegt, dessen Readings ich immer wenn entweder SMAEM oder SMAInverter aktualisiert werden per notify neu berechnen lasse. Dabei ist zwar letztlich immer eine der beiden Quellen "veraltet", aber damit kann ich leben. Im Notify berechne ich meine anlagenspezifischen Kennzahlen wie z.B. eine Gesamtbilanz sowie diverse Teilbilanzen unter Zuhilfenahme einer Reihe von weiteren KNX-Zählern, die den Verbrauch meiner Kunden zählen.
Deine Formeln sehen zumindest ganz logisch aus, auch wenn ich Deine Anlage nicht genau kenne. So ähnlich ist das bei mir auch, wobei ich keine Batterie habe.

Gruß
VK

DS_Starter

Hi Volker,

nach meinem Urlaub will ich mal zusehen dem Invertermodul von Thomas ein set-Befehl zu spendieren und es damit ermöglichen den Datenabruf per Notify in Abhängigkeit von SMAEM (zb. state) zu initiieren. Der Datenversatz sollte sich dann nur noch im einstelligen Sekundenbereich bewegen, mal schauen.
Sieh hier: https://forum.fhem.de/index.php/topic,56082.msg487807.html#msg487807

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo miteinander,

zur der diskutierten Problematik habe ich ein erfolgreiches Konstrukt getestet welches ich euch kurz beschreiben möchte.
Ich betreibe einen STP 5000 WR , ein SMA Energy Meter und einen SHM dessen Informationen ja durch das beschrieben Verfahren obsolet werden sollen.

Momentan verwende ich noch das Modul 99_SMAUtils.pm in Verbindung mit SBFSpot in meiner produktiven Instanz. Im SMAInvertermodul fehlt mir noch die Umschaltung der Readings in den SBFSpot-Style damit historische Energiewerte nicht "verloren" gehen.

Damit die Messungen von SMAEM (für den Energy Meter) und der Wechselrichterwerte synchron laufen habe ich in das Modul 99_SMAUtils neben der bereits erfolgten Umprogrammierung in eine nonblocking Arbeitsweise einen "get data"-Befehl eigebaut (Attribut "mode"=manual).
Der Inverter-Datenabruf wird durch ein Notify getriggt, sobald das Reading "Saldo_Wirkleistung" im EM upgedated wurde.


define N.STP_5000.getdata notify SMA_Energymeter:Saldo_Wirkleistung:.* get STP_5000 data
attr N.STP_5000.getdata room Energie


Für die Berechnung des Eigenverbrauchs (TotalConsumption) wird zunächst ein Dummy-Device angelegt:


define Dum.Energy dummy
attr Dum.Energy DbLogExclude GridConsumption,GridFeedIn
attr Dum.Energy alias aktuelle Energiebilanz
attr Dum.Energy event-on-change-reading PV,GridConsumption,GridFeedIn
attr Dum.Energy event-on-update-reading TotalConsumption
attr Dum.Energy group Energie Übersicht
attr Dum.Energy room Energie
attr Dum.Energy sortby 2
attr Dum.Energy stateFormat { "Energieverbrauch: ".ReadingsVal("$name","TotalConsumption", undef)." W, Messung am: ".ReadingsTimestamp("$name", "TotalConsumption", undef) }


Die Werte für GridConsumption,GridFeedIn werden bereits durch das Modul SMAEM für den Energy Meter mitgeloggt und werden deshalb mit DbLogExclude vom DB-Logging ausgeschlossen.

Im SMAEM-Modul werden die Readings Bezug_Wirkleistung, Saldo_Wirkleistung und Einspeisung_Wirkleistung in ein event-on-update-reading eingeschlossen damit bei jeder Messung des EM ein Signal erzeugt wird. Diese Events werden zur Steuerung der Werteübenahme in den Dummy genutzt.

Die Energy Meter Readings "Bezug_Wirkleistung" und "Einspeisung_Wirkleistung" werden im Dummy "Dum.Energy" als Readings "GridConsumption" bzw. "GridFeedIn" abgebildet. Das geschieht durch zwei angelegte Notifies:


define N.GridConsumption.Dum.Energy notify SMA_Energymeter:Bezug_Wirkleistung:.* { fhem "setreading Dum.Energy GridConsumption "."$EVTPART1"}
attr N.GridConsumption.Dum.Energy room Energie

define N.GridFeedIn.Dum.Energy notify SMA_Energymeter:Einspeisung_Wirkleistung:.* { fhem "setreading Dum.Energy GridFeedIn "."$EVTPART1"}
attr N.GridFeedIn.Dum.Energy room Energie


Durch ein weiters Notify erfolgt die Übertragung von "total_pac" in das Dummy-Reading "PV" und gleichermaßen die Berechnung des Eigenverbrauchs (Reading TotalConsumtion).


define N.PV.TotalConsumption.Dum.Energy notify STP_5000:summary.* { fhem "setreading Dum.Energy PV ".sprintf("%.1f",(ReadingsVal("STP_5000","total_pac",0)*1000));;\
my $tc = sprintf("%.1f",ReadingsVal("Dum.Energy","PV",0)+ReadingsVal("Dum.Energy","GridConsumption",0)-ReadingsVal("Dum.Energy","GridFeedIn",0));; \
fhem ("sleep 0.1;; setreading Dum.Energy TotalConsumption ".$tc);;}
attr N.PV.TotalConsumption.Dum.Energy room Energie


Als Triggerevent wird das Reading "summary" des WR verwendet da es immer (auch wenn keine Energie erzeugt wird) upgedated wird. Um die Einheiten des SMAEM und des WR zu harmonisieren (SMAEM liefert Watt, SMAUtils mit SBFSpot liefert kW) wird Dum.Energy PV entsprechend umgerechnet.

Berechnung des Eigenverbrauchs erfolgt nach der Formel:

TotalConsumption = WR-Erzeugung (PV) + Netzbezug (GridConsumption) - Netzeinspeisung (GridFeedIn)

Die Zeitabweichung zwischen den Messungen des EM und des WR bzw. der Ergebnisberechnung liegen bei mir typisch unter einer Sekunde, maximal = eine Sekunde.
Alle Readingwerte speichere ich in einer DbLog-Datenbank, die ich mit dem DbRep-Modul auswerte bzw. eine zum Sunny Home Manager identischen SVG-Diagramm darstelle. Zum Vergleich sind im Anhang einige Snapshots enthalten.

Nach dem erfogreichen Test mit dem SMAUtils-Modul bin ich recht zuversichtlich dass es mit SMAInverter.pm ebenfalls mit entsprechenden Anpassungen möglich sein sollte die Darstellung/Berechnung des Eigenverbrauchs zu bauen.

Anmerkung: alle oben angegebenen Definitionen sind aus der fhem.cfg herauskopiert (Escapes beachten).

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Hallo Heiko,

das sieht wirklich gut aus. Toll wäre das "get data" auch im SMAInverter-Modul.
Da ich momentan den PV-WR und den Batterie-WR erfolgreich mit diesem Modul auslese, ist die Motivation auf SMAUtils umzustellen sehr gering  :)

@Volker, die Asynchronität hat schon einen deutlichen Einfluss auf die Genauigkeit der berechneten Werte, siehe Anhang.
Im Consumption Plot sind die berechneten Werte "Total Consumption" und "Direct Consumption" dargestellt. Im Zeitbereich von einer Stunde sieht man deutlich, das diese Werte häufiger negativ werden.

Ich werde jetzt mal negative Werte verwerfen, dann sieht es zumindest schon mal etwas besser aus  >:(
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

ZitatToll wäre das "get data" auch im SMAInverter-Modul

Ja, das ist das Ziel .... nach meinem Urlaub  ;)

Ich werde mir das mal vornehmen Thomas für das SMAInverter-modul einen "get data"-Patch als auch einen Patch für die Bereitstellung der "SBFSpot"-Readingnamen vorschlagen. Vielelicht liest er ja mit und ist schneller als ich, bei mir dauerts noch ein bisschen.

SMAUtils will ich auch durch SMAInverter ablösen. Aber erst wenn die Funktionalität 100% oder besser als von SMAUtils ist.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Guten Morgen Heiko,

das freut mich zu hören. Dir einen schönen Urlaub!
Nachdem ich nun negative Werte verwerfem sieht der Trend auch schon besser aus. Bleibt für mich nur zu hoffen, dass nicht wieder gilt: "Nichts hält länger als ein Provisorium" :)
Gruß Marcel
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Hallo zusammen, hallo Marcel,

ich habe endlich die Zeit gefunden und das SMAInverter-Modul angepasst und einiges geändert. An der Grundfunktionalität hat sich natürlich nichts geändert.
Aber es ist eine get-Funktion implementiert mit der man die Werte manuell abfragen kann.

Weiterhin gibt es  Attribute:

* disable -  schaltet das Modul in den disabled Modus
* mode - manual oder automatic (automatic fragt das Modul wie bisher gemäß Intervall ab)
* SBFSpotComp - stellt den Style wie bei SBFSpot um

Das Modul ist nur umzubenennen und FHEM restarten !  (ein reload reicht nicht).
Ich werde die Version noch in dem Thread "76_SMAInverter.pm - Abfrage von SMA Wechselrichter" zur Übernahme vorschlagen.

Weiterhin habe ich noch vor das Modul komplett auf non-blocking umzubauen. Mal sehen wann ich das schaffe.
Damit ist es nun möglich die Synchronität mit dem SMAEM wie oben beschrieben auch mit SMAInverter.pm zu erreichen.


Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Habe noch etwas verändert / erweitert:

* die Textwerte der Readings wie z.B. für INV_CLASS werden in Abhängigkeit vom global Attribut "language" entweder englisch (Standard) oder in deutsch gesetzt
* für ca. 80 WR-Geräte habe ich die entsprechenden Gerätetypen und Klassen hinterlegt. Dadurch werden in den Readings die richtigen Gerätetypen statt der Codenummern
   ausgegeben sofern für den speziellen Typ hintelegt.
* weitere Anpassungen im SBFComp-Modus (z.B. kW statt W, 3 Nachkommastellen usw.)

Die Version 1.5 habe ich im Inverterthread:  https://forum.fhem.de/index.php/topic,56080.msg517877.html#msg517877  eingehängt.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

mkoerner

Hallo zusammen,

ich verstehe die Berechnungen, die Ihr macht bzw. die Werte, die das SMAEM-Modul liefert nicht. Vielleciht kann mir ja mal einer helfen.
Was ich möchte ist den Gesamtverbrauch, deTL-n Direktverbrauch und die Autarkie, also was habe ich vom verbrauchten Strom selbst erzeugt, berechnen.
Was ich habe ist ein Solar-Wechselrichter STP 8000TL-20, eine Akku mit passendem Wechselrichter SI6.0H-11 und natürliche einen EnergieMeter mit der Firmware 1.02.04.R.
Nun habe ich folgende Devices:
define SMA SMAInverter 0000 192.168.178.25
define SMABatterie SMAInverter 0000 192.168.178.43
define SmartMeter SMAEM

Alle drei Devices laufen sauber. Ich habe aber keinen blassen Schimmer im Moment, wie ich daus meine Werte berechnen kann.
Kann mir da jemand helfen?

Danke

M

DS_Starter

Hallo M,

ich hatte mal eine recht ausführliche Anleitung wie man eine Energiebilanz erstellen kann im Wiki beschrieben:
https://wiki.fhem.de/wiki/Datenbankgest%C3%BCtzte_Erstellung_der_Energiebilanz_einer_SMA_PV-Anlage_mit_%C3%9Cberschusseinspeisung

Allerdings ohne Batteriewechselrichter da ich den nicht habe. Vielleicht hilft dir das schon etwas weiter.
Kannst du deine Frage sonst etwas genauer formulieren ? Welche Werte verstehst du nicht die der SMAEM liefert ?
Auf jeden Fall liefert er nur das was ins Netz eingespeist oder aus ihm gezogen wird. Alles andere muss man dann verknüpfen wie die erzeugte Eigenenergie.

Plots siehe auch hier: https://forum.fhem.de/index.php/topic,51569.msg680879.html#msg680879

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Nabend M,

das entspricht genau meiner Konfiguration.
Den Gesamt-Eigenverbrauch kannst Du nicht einfach ablesen und auch nicht berechnen, da der SI nicht über einen Totalizer wie SPOT_ETODAY beim STP verfügt.
Ergo, in der Differenz zwischen Erzeugung und Einspeisung ist auch die Einpufferung in die Batterie enthalten.
Ich hatte meine Konfig schon mal hier vorgestellt - beginnend hier, mal ein bisschen lesen...:
https://forum.fhem.de/index.php/topic,51569.msg635939.html#msg635939

Heikos Ansatz mit DBlog ist viel eleganter, aber dazu bin ich noch nicht gekommen!

Wie es bei mir aussieht, siehe Anhang.

PS: Die SHM-Werte werden nur sehr selten aktualisiert und sind nicht verlässlich und laufen deswegen auseinander, da geht es mir haupsächlich um die Prognose!

Grüße aus Bochum,

Marcel
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

mkoerner

Hallo Marcel,

danke für die Info. Der darin verlinkte Wiki-Artikel hat das gebracht, was ich wollte.

Gruß

M

Xguide

FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

godicser

Moin,
erst einmal Danke für den WIKI Eintrag, hat mir sehr geholfen.
Eine Frage hätte ich dann aber doch noch. Prinzipiell laufen alle Module und zeigen auch die Werte an. Einzig der Inverter, den verstehe ich nicht.
1. im state zeigt er "    manualSCALAR(0x5352d60) mit 0,000 kw - was heist das?
2. in der Energiebilanz Anzeige werden alle Werte angezeigt, ausser werte von PV aktuell

Ich bin kein Perl Experte, eher Abschreiber und Nichtversteher in dem Bereich.  ;D
Vielleicht kann mir da von euch jemand helfen.

Danke