Solaranlage Komplettbeispiel Fronius BYD: Unterschied zwischen den Versionen

Aus FHEMWiki
 
(43 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.


Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.


Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.


Alle notwendigen Readings werden über die vorhandenen Module speziell für dies Paket über Userreadings erzeugt, so das auch andere Erzeuger oder Speicher in das Grundkonstrukt übernommen werden können. Es gibt auch einen weiteren Grund für die Userreadings: Der Wechselrichter der Frima Fronius erzeugt einige Daten in relativ langen Zeitabständen (>10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.
Alle notwendigen Readings werden über die vorhandenen Module speziell für dies Paket über Userreadings erzeugt, so dass auch andere Erzeuger oder Speicher in das Grundkonstrukt übernommen werden können. Es gibt auch einen weiteren Grund für die Userreadings: Der Wechselrichter der Frima Fronius erzeugt einige Daten in relativ langen Zeitabständen (>10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]


=== Vorbedingungen ===
=== Vorbedingungen ===
FHEM läuft und hat genügend Platz für Logdaten (dBLog >1GB/Jahr wenn wirklich alles geloggt wird)
FHEM läuft und hat genügend Platz für Logdaten (dBLog >5GB/Jahr wenn wirklich alles geloggt wird)


Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.


Von Wlan ist abzuraten, weil diese Verbindungen oftmals zu lange Zeitverzögerungen oder auch kurzzeitige Unterbrechungen haben. Es läuft mit Wlan, aber oft nicht stabil genug. Der Aufbau eines Lan zu weiter entfernten Einheiten ist u.U. aufwändig, lohnt aber immer.
Von Wlan ist abzuraten, weil diese Verbindungen oftmals zu lange Zeitverzögerungen oder auch kurzzeitige Unterbrechungen haben. Es läuft mit Wlan-- aber oft nicht stabil genug. Der Aufbau eines Lan zu weiter entfernten Einheiten ist u.U. aufwändig, lohnt aber immer.


Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.


Für den Fronius Wechselrichter ist das Technician Passwort erforderlich, um die Kommunikation z.B. über Modbus zu ermöglichen. Anleitungen dazu stehen in den Handbüchern der Firma Fronius.
Um die Kommunikation z.B. über Modbus zu ermöglichen, reicht es, wenn der Installateur die Modbus-Verbindung freischaltet . Man benötigt keineswegs das Technician-Passwort des WR.


Wenn Fahrzeugladen über eine Wallbox mit eingebunden werden soll kann die Software EVCC, die das Laden eines Fahrzeugs komfortabel steuern kann, installiert werden. (Sie kostet leider etwas  :))
Wenn Fahrzeugladen über eine Wallbox mit eingebunden werden soll, können geeignete Wallboxen das natürlich selbst steuern. Hier ist ein Beispiel für die Integration der Software EVCC die das Laden eines Fahrzeugs komfortabel steuert vorgestellt. Für diese SW (sie kann paralel z.B. mit FHEM auf einem PI laufen) ist für die meisten Wallboxen ein sog. Token erforderlich, der über Github pro Monat für 1$ gekauft werden muss.


=== Grundstruktur ===
=== Grundstruktur ===
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen.
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.
Zeile 40: Zeile 40:
<div class="mw-collapsible mw-collapsed">
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
Code:<div class="mw-collapsible-content">
<pre>
<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">
defmod Fronius_Symo fronius 192.168.xxx.xxx
defmod Fronius_Symo fronius 192.168.xxx.xxx
Zeile 66: Zeile 65:
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,"User_Consumed_EN","")>0?ReadingsVal($name,"User_Consumed_EN",""):0},\
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,"User_Consumed_EN","")>0?ReadingsVal($name,"User_Consumed_EN",""):0},\
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal("$name","User_Consumed_E","0")/3600000}
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal("$name","User_Consumed_E","0")/3600000}
</pre>
</syntaxhighlight>
</div>
</div>
</div>
</div>


==GEN24_MPPT==
==GEN24_MPPT==
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen
Über HTTPMOD können zusätzlich aus dem Fronius '''Device String Werte''' ausgelesen
<div class="mw-collapsible mw-collapsed">
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
Code:<div class="mw-collapsible-content">
Zeile 112: Zeile 111:


== PV_Batterie ==
== PV_Batterie ==
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden
 
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....
<div class="mw-collapsible mw-collapsed">
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
Code:<div class="mw-collapsible-content">
Zeile 238: Zeile 239:


==myBYDBox==
==myBYDBox==
das Modul BYDBox ermöglicht es direkt aus der Batterie einzelne Zelldaten auszulesen, das geht natürlich nur wenn der Speicher direkt über LAN am Netzwerk angebunden ist.
Das Modul BYDBox ermöglicht es, direkt aus der Batterie einzelne Zelldaten auszulesen. Das geht natürlich nur, wenn der Speicher direkt über LAN am Netzwerk angebunden ist.


Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!
<syntaxhighlight lang="perl">define myBYDBox BYDBox 192.168.xxx.xxx 60
<syntaxhighlight lang="perl">define myBYDBox BYDBox 192.168.xxx.xxx 60
attr myBYDBox DbLogExclude .*
attr myBYDBox DbLogExclude .*
Zeile 248: Zeile 249:
attr myBYDBox verbose 0</syntaxhighlight>
attr myBYDBox verbose 0</syntaxhighlight>


Runde Dartellung der BYD Speicherwerte
Runde Darstellung der BYD Speicherwerte
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt
== BYD.Box_view ==
== BYD.Box_view ==
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF<div class="mw-collapsible mw-collapsed">
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
Code:<div class="mw-collapsible-content">
<pre>
<pre>
Zeile 271: Zeile 272:
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox


es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)<syntaxhighlight lang="perl">
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
define BYD_Cells DOIF ##
define BYD_Cells DOIF ##
attr BYD_Cells alias BYD_Cells
attr BYD_Cells alias BYD_Cells
Zeile 386: Zeile 390:
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),"15") |\
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),"15") |\


</syntaxhighlight>
</pre>
</div>
</div>


== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten


zu erzeugen. Zugegeben, das geht auch mit dem Modul Statistics.......<syntaxhighlight lang="perl">
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*
attr Hausverbrauch BasicPricePerAnnum 0
attr Hausverbrauch BasicPricePerAnnum 0
Zeile 462: Zeile 470:
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh
attr Fronius_Bezug verbose 0
attr Fronius_Bezug verbose 0
 
</pre>
</syntaxhighlight>
</div>
</div>


== Autarkie, Eigenverbrauch ==
== Autarkie, Eigenverbrauch ==
zwei Dummys mit dazugehörigen Füllroutinen<syntaxhighlight lang="perl">
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
define AutarkieQuote dummy
define AutarkieQuote dummy
attr AutarkieQuote DbLogExclude .*
attr AutarkieQuote DbLogExclude .*
Zeile 533: Zeile 545:
attr Eigenverbr_Timer DbLogExclude .*
attr Eigenverbr_Timer DbLogExclude .*
attr Eigenverbr_Timer room Energie-Strom
attr Eigenverbr_Timer room Energie-Strom
 
</pre>
</syntaxhighlight>
</div>
</div>


== mySolarStat ==
== mySolarStat ==
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet <syntaxhighlight lang="perl">
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
define mySolarStat readingsGroup <  >,<Heute>,<Gestern>,<Monat>,<Vormonat>,<Jahr> \
define mySolarStat readingsGroup <  >,<Heute>,<Gestern>,<Monat>,<Vormonat>,<Jahr> \
Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay,Fronius_Symo_User_Produced_PV_EnergyDayLast,Fronius_Symo_User_Produced_PV_EnergyMonth,Fronius_Symo_User_Produced_PV_EnergyMonthLast,Fronius_Symo_User_Produced_PV_EnergyYear \
Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay,Fronius_Symo_User_Produced_PV_EnergyDayLast,Fronius_Symo_User_Produced_PV_EnergyMonth,Fronius_Symo_User_Produced_PV_EnergyMonthLast,Fronius_Symo_User_Produced_PV_EnergyYear \
Zeile 550: Zeile 566:
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik
attr mySolarStat valueFormat %.1f
attr mySolarStat valueFormat %.1f
</syntaxhighlight>
</pre>
</div>
</div>


== Grafiken ==
== Grafiken ==
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage
hier "nur" ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen


hier "nur" ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen<syntaxhighlight lang="perl">
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY
attr SVG_myDbLog_1 alias Stromerzeugung
attr SVG_myDbLog_1 alias Stromerzeugung
Zeile 585: Zeile 607:
     "<IN>" using 1:2 axes x1y2 title 'Tageserzeugung <L2> [kWh]' ls l2fill lw 1 with lines
     "<IN>" using 1:2 axes x1y2 title 'Tageserzeugung <L2> [kWh]' ls l2fill lw 1 with lines


</syntaxhighlight>
</pre>
</div>
</div>


== SolarForecast ==
== SolarForecast ==
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]
es müssen vorher unter global die attr longitude und latitude für den Standort der Anlage eingebeben werden damit die einzelnen Wettermodelle funktionieren. Forecast hat ein prima selbsterklärendes Startmenü und man sieht auch gleich die evt. vorhandenen Einstellungsfehler.
Es müssen vorher unter global die attr longitude und latitude für den Standort der Anlage eingegeben werden, damit die einzelnen Wettermodelle funktionieren. Forecast hat ein prima selbsterklärendes Startmenü und man sieht auch gleich die evt. vorhandenen Einstellungsfehler.


Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]<nowiki/>t.
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].


Die dort beschriebene Grafik Solare Vorhersage zeigt die Differenzen zwischen der berechneten Vorhersage und der tatsächlichen PV-Erzeugung eines Tages. Die Werte die in der Anlagenübersicht angezeigt werden. sollten identisch zu denen in dem u.A. ftui2 Widget sein. (Gegenkontrolle)  
Die dort beschriebene Grafik "Solare Vorhersage" zeigt die Differenzen zwischen der berechneten Vorhersage und der tatsächlichen PV-Erzeugung eines Tages. Die Werte, die in der Anlagenübersicht angezeigt werden, sollten identisch zu denen in dem u.A. ftui2 Widget sein (Gegenkontrolle).


In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.<syntaxhighlight lang="perl">
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
define Forecast SolarForecast
define Forecast SolarForecast
attr Forecast DbLogExclude .*
attr Forecast DbLogExclude .*
Zeile 621: Zeile 648:
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API
attr Forecast verbose 0
attr Forecast verbose 0
</syntaxhighlight>
</pre>
</div>
</div>
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]






Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.


==Autoladen über evcc ==
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.


Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.
 
 
 
 
 
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.
 
== Autoladen über evcc ==
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.
 
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.


Weitere Infos dazu in https://evcc.io/
Weitere Infos dazu in https://evcc.io/


Der Nachteil dieser (externen) Software ist der Preis. Es wird mit Open-Source-Software geworben, jedoch die meisten Module z.B. zum Steuern eines Fahrzeugs oder einer Wallbox gehen nur über einen sog. Sponsortoken, den man für 1$ pro Monat erwerben kann. Aber solange ein solches Modul mit ähnlich umfangreichen Möglichkeiten bei fhem nicht zur Verfügung steht, hier die Möglichkeit der Integration in fhem.
Der Nachteil dieser (externen) Software ist der Preis. Es wird mit Open-Source-Software geworben, jedoch die meisten Module z.B. zum Steuern eines Fahrzeugs oder einer Wallbox gehen nur über einen sogenannten Sponsortoken, den man für 1$ pro Monat erwerben kann. Aber solange ein solches Modul mit ähnlich umfangreichen Möglichkeiten bei FHEM nicht zur Verfügung steht, hier die Möglichkeit der Integration in FHEM.


Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern
Zeile 641: Zeile 677:
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus


Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.<syntaxhighlight lang="perl">
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.
 
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
define MQTT2_evcc1 MQTT2_DEVICE evcc1
define MQTT2_evcc1 MQTT2_DEVICE evcc1
attr MQTT2_evcc1 DbLogExclude .*
attr MQTT2_evcc1 DbLogExclude .*
Zeile 648: Zeile 689:
attr MQTT2_evcc1 event-on-change-reading .*
attr MQTT2_evcc1 event-on-change-reading .*
attr MQTT2_evcc1 icon wallbox
attr MQTT2_evcc1 icon wallbox
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\
evcc1:evcc/site/pvPower:.* pvPower\
evcc1:evcc/site/pvEnergy:.* pvEnergy\
evcc1:evcc/site/pv:.* pv\
evcc1:evcc/site/pv/1/power:.* pv_1_power\
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\
evcc1:evcc/site/batterySoc:.* batterySoc\
evcc1:evcc/site/batteryPower:.* batteryPower\
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\
evcc1:evcc/site/battery:.* battery\
evcc1:evcc/site/battery/1/power:.* battery_1_power\
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\
evcc1:evcc/site/gridPower:.* gridPower\
evcc1:evcc/site/gridCurrents/l1:.* l1\
evcc1:evcc/site/gridCurrents/l2:.* l2\
evcc1:evcc/site/gridCurrents/l3:.* l3\
evcc1:evcc/site/gridCurrents:.* gridCurrents\
evcc1:evcc/site/gridEnergy:.* gridEnergy\
evcc1:evcc/site/homePower:.* homePower\
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\
evcc1:evcc/site/greenShareHome:.* greenShareHome\
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\
evcc1:evcc/loadpoints/1/mode/set:.* set\
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\
evcc1:evcc/site/availableVersion:.* availableVersion\
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\
evcc1:evcc/status:.* status\
evcc1:evcc/loadpoints:.* loadpoints\
evcc1:evcc/vehicles:.* vehicles\
evcc1:evcc/site/pv/0:.* pv_0\
evcc1:evcc/site/battery/0:.* battery_0\
evcc1:evcc/site/vehicles/0:.* vehicles_0\
evcc1:evcc/site/pv/1:.* pv_1\
evcc1:evcc/site/battery/1:.* battery_1\
evcc1:evcc/site/vehicles/1:.* vehicles_1\
evcc1:evcc/site/pv/2:.* pv_2\
evcc1:evcc/site/battery/2:.* battery_2\
evcc1:evcc/site/vehicles/2:.* vehicles_2\
evcc1:evcc/site/pv/3:.* pv_3\
evcc1:evcc/site/battery/3:.* battery_3\
evcc1:evcc/site/vehicles/3:.* vehicles_3\
evcc1:evcc/site/pv/4:.* pv_4\
evcc1:evcc/site/battery/4:.* battery_4\
evcc1:evcc/site/vehicles/4:.* vehicles_4\
evcc1:evcc/site/pv/5:.* pv_5\
evcc1:evcc/site/battery/5:.* battery_5\
evcc1:evcc/site/vehicles/5:.* vehicles_5\
evcc1:evcc/site/pv/6:.* pv_6\
evcc1:evcc/site/battery/6:.* battery_6\
evcc1:evcc/site/vehicles/6:.* vehicles_6\
evcc1:evcc/site/pv/7:.* pv_7\
evcc1:evcc/site/battery/7:.* battery_7\
evcc1:evcc/site/vehicles/7:.* vehicles_7\
evcc1:evcc/site/pv/8:.* pv_8\
evcc1:evcc/site/battery/8:.* battery_8\
evcc1:evcc/site/vehicles/8:.* vehicles_8\
evcc1:evcc/site/pv/9:.* pv_9\
evcc1:evcc/site/battery/9:.* battery_9\
evcc1:evcc/site/vehicles/9:.* vehicles_9\
evcc1:evcc/site/version:.* version\
evcc1:evcc/site/bufferSoc:.* bufferSoc\
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\
evcc1:evcc/site/prioritySoc:.* prioritySoc\
evcc1:evcc/site/siteTitle:.* siteTitle\
evcc1:evcc/site/gridConfigured:.* gridConfigured\
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\
evcc1:evcc/site/batteryMode:.* batteryMode\
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\
evcc1:evcc/site/residualPower:.* residualPower\
evcc1:evcc/site/currency:.* currency\
evcc1:evcc/site/smartCostType:.* smartCostType\
evcc1:evcc/vehicles/ev4/title:.* title\
evcc1:evcc/vehicles/ev4/icon:.* icon\
evcc1:evcc/vehicles/ev4/capacity:.* capacity\
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\
evcc1:evcc/vehicles/ev4/features:.* features\
evcc1:evcc/vehicles/ev4/plans:.* plans\
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\
evcc1:evcc/vehicles/ev4/features/1:.* features_1\
evcc1:evcc/vehicles/ev4/features/2:.* features_2\
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\
evcc1:evcc/vehicles/ev4/phases:.* phases\
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\
evcc1:evcc/vehicles/ev4/priority:.* priority\
evcc1:evcc/site/gridPowers/l1:.* l1\
evcc1:evcc/site/gridPowers/l2:.* l2\
evcc1:evcc/site/gridPowers/l3:.* l3\
evcc1:evcc/site/gridPowers:.* gridPowers
attr MQTT2_evcc1 room Energie-Auto
attr MQTT2_evcc1 room Energie-Auto
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=>'now','Min+PV'=>'minpv',PV=>'pv',Stop=>'off');; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=>'now','Min+PV'=>'minpv',PV=>'pv',Stop=>'off');; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \
Zeile 835: Zeile 697:
Reichweite { (ReadingsVal($name,'loadpoints_1_vehicleSoc','')*0.6) }
Reichweite { (ReadingsVal($name,'loadpoints_1_vehicleSoc','')*0.6) }


</syntaxhighlight>Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.


Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.


Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.<syntaxhighlight lang="perl">
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*
attr Autolade_Calculator BasicPricePerAnnum 132,84
attr Autolade_Calculator BasicPricePerAnnum 132,84
Zeile 854: Zeile 716:
attr Autolade_Calculator SiPrefixPower kW
attr Autolade_Calculator SiPrefixPower kW
attr Autolade_Calculator alias Autoladen
attr Autolade_Calculator alias Autoladen
attr Autolade_Calculator mqttPublish power|energy:topic={"$device/$name"}
attr Autolade_Calculator room Energie-Auto,Steuerung
attr Autolade_Calculator room Energie-Auto,Steuerung
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh<br/>
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh<br/>
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value ('Autolade_Calculator', 'C_STROM_GAS_counters.A_PowerCurrent', 0.070);;},\
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value ('Autolade_Calculator', 'C_STROM_GAS_counters.A_PowerCurrent', 0.070);;},\
Auto_Ladung_av {movingAverage("Autolade_Calculator","Auto_reduce",60)}
Auto_Ladung_av {movingAverage("Autolade_Calculator","Auto_reduce",60)}
</syntaxhighlight>
</pre>
</div>
</div>
 
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]
 


==ftui2 Widgets zur Darstellung auf einem Tablet==
==ftui2 Widgets zur Darstellung auf einem Tablet==
Widget pvvis und angepasste Daten zur Darstellung
Widget pvvis und angepasste Daten zur Darstellung
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]


Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.<syntaxhighlight lang="javascript">
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.
 
Widget
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content"><pre>
<header>Solaranlage und Batterie</header>
<header>Solaranlage und Batterie</header>


Zeile 890: Zeile 761:
</div>
</div>


</syntaxhighlight>Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung:<syntaxhighlight lang="javascript">
 
</pre>
</div>
</div>
 
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==
<div class="mw-collapsible mw-collapsed">
Code:<div class="mw-collapsible-content">
<pre>
<div class="page" id="content_forecast">
<div class="page" id="content_forecast">
<div class="gridster">
<div class="gridster">
Zeile 928: Zeile 807:
</div>
</div>
</div>
</div>
</syntaxhighlight><!-- Fortsetzung folgt -->
</pre>(Nur der der Vollständigkeit wegen)
</div>
</div><!-- Fortsetzung folgt -->


[[Kategorie:Wechselrichter]]
[[Kategorie:Wechselrichter]]
[[Kategorie:Energieerzeugungsmessung]]
[[Kategorie:Energieerzeugungsmessung]]

Aktuelle Version vom 18. Februar 2025, 17:44 Uhr

Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM

Übersicht

Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.

Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.

Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.

Alle notwendigen Readings werden über die vorhandenen Module speziell für dies Paket über Userreadings erzeugt, so dass auch andere Erzeuger oder Speicher in das Grundkonstrukt übernommen werden können. Es gibt auch einen weiteren Grund für die Userreadings: Der Wechselrichter der Frima Fronius erzeugt einige Daten in relativ langen Zeitabständen (>10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.

ftui2 Übersicht

Vorbedingungen

FHEM läuft und hat genügend Platz für Logdaten (dBLog >5GB/Jahr wenn wirklich alles geloggt wird)

Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.

Von Wlan ist abzuraten, weil diese Verbindungen oftmals zu lange Zeitverzögerungen oder auch kurzzeitige Unterbrechungen haben. Es läuft mit Wlan-- aber oft nicht stabil genug. Der Aufbau eines Lan zu weiter entfernten Einheiten ist u.U. aufwändig, lohnt aber immer.

Alle Daten werden über DbLog gespeichert und die Graphen daraus gewonnen.

Um die Kommunikation z.B. über Modbus zu ermöglichen, reicht es, wenn der Installateur die Modbus-Verbindung freischaltet . Man benötigt keineswegs das Technician-Passwort des WR.

Wenn Fahrzeugladen über eine Wallbox mit eingebunden werden soll, können geeignete Wallboxen das natürlich selbst steuern. Hier ist ein Beispiel für die Integration der Software EVCC die das Laden eines Fahrzeugs komfortabel steuert vorgestellt. Für diese SW (sie kann paralel z.B. mit FHEM auf einem PI laufen) ist für die meisten Wallboxen ein sog. Token erforderlich, der über Github pro Monat für 1$ gekauft werden muss.

Grundstruktur

  • Der Wechselrichter wird über das Modul fronius ausgelesen, dabei werden diverse userReadings erzeugt.
  • Zusätzlich werden über HTTPMOD weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.
  • Der Speicher ist über den Wechselrichter per ModbusAttr erreichbar sowie auch direkt über das Modul BYDBox.
  • Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.
  • Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier ElectricityCalculator Devices erzeugt,
  • diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)
  • Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.
  • Das sehr umfangreiche Modul SolarForecast wird integriert und es können viele Graphen dargestellt werden.
  • Eine größere readingsGroup stellt die Gesamtstatistik der Anlage dar.
  • Das optinonale Programm EVCC kann integriert und auch gesteuert werden.
  • Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.

Fronius_Symo in FHEM

In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt

Code:

GEN24_MPPT

Über HTTPMOD können zusätzlich aus dem Fronius Device String Werte ausgelesen

Code:

PV_Batterie

Per ModbusAttr werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden

min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....

Code:

myBYDBox

Das Modul BYDBox ermöglicht es, direkt aus der Batterie einzelne Zelldaten auszulesen. Das geht natürlich nur, wenn der Speicher direkt über LAN am Netzwerk angebunden ist.

Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!

define myBYDBox BYDBox 192.168.xxx.xxx 60
attr myBYDBox DbLogExclude .*
attr myBYDBox detail-level 1
attr myBYDBox disable 0
attr myBYDBox room Energie-Strom
attr myBYDBox verbose 0

Runde Darstellung der BYD Speicherwerte Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt

BYD.Box_view

BYD.Box_view

Darstellung der BYD-Box über ein DOIF

Code:

BYD_Cells

BYD_Cells

Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox

Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)

Code:

Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch

vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten

(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.

Code:

Autarkie, Eigenverbrauch

Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt

Code:

mySolarStat

ReadingsGroup

Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet

Code:

Grafiken

Erzeugung

Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage hier "nur" ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen


Code:

SolarForecast

SolarForecast Darstellung

Es müssen vorher unter global die attr longitude und latitude für den Standort der Anlage eingegeben werden, damit die einzelnen Wettermodelle funktionieren. Forecast hat ein prima selbsterklärendes Startmenü und man sieht auch gleich die evt. vorhandenen Einstellungsfehler.

Weiteres dazu im umfangreichen Wiki Solarforecast.

Die dort beschriebene Grafik "Solare Vorhersage" zeigt die Differenzen zwischen der berechneten Vorhersage und der tatsächlichen PV-Erzeugung eines Tages. Die Werte, die in der Anlagenübersicht angezeigt werden, sollten identisch zu denen in dem u.A. ftui2 Widget sein (Gegenkontrolle).

In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.

Code:
SolarForecast Diff. Grafik






Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.

Autoladen über evcc

Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.

Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.

Weitere Infos dazu in https://evcc.io/

Der Nachteil dieser (externen) Software ist der Preis. Es wird mit Open-Source-Software geworben, jedoch die meisten Module z.B. zum Steuern eines Fahrzeugs oder einer Wallbox gehen nur über einen sogenannten Sponsortoken, den man für 1$ pro Monat erwerben kann. Aber solange ein solches Modul mit ähnlich umfangreichen Möglichkeiten bei FHEM nicht zur Verfügung steht, hier die Möglichkeit der Integration in FHEM.

Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern

auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus

Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.

Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.

Code:
Solaranlagenübersicht


ftui2 Widgets zur Darstellung auf einem Tablet

Widget pvvis und angepasste Daten zur Darstellung

Einige Werte werden intern berechnet, das Widget selbst kann im Forum geladen werden.

Widget

Code:

Und Widget SolarForecast für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung:

Code: