<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wds1957</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wds1957"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Wds1957"/>
	<updated>2026-04-16T17:57:06Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40724</id>
		<title>Wallboxen Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40724"/>
		<updated>2026-01-12T17:05:55Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite gibt eine tabellarische Übersicht über die Eckdaten verschiedener Wallboxen.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Hersteller!!rowspan=&amp;quot;2&amp;quot;|Typ!!rowspan=&amp;quot;2&amp;quot;|Preis in € ca.!!colspan=&amp;quot;2&amp;quot;|Ladeleistung kW!!rowspan=&amp;quot;2&amp;quot;|FI intern!!rowspan=&amp;quot;2&amp;quot;|Zähler!!rowspan=&amp;quot;2&amp;quot;|Kabel o. Dose!!rowspan=&amp;quot;2&amp;quot;|Netzwerk!!rowspan=&amp;quot;2&amp;quot;|Anbindung FHEM!!rowspan=&amp;quot;2&amp;quot;|Betrieb!!rowspan=&amp;quot;2&amp;quot;|Zugang Kontrolle!!rowspan=&amp;quot;2&amp;quot;|Datum&lt;br /&gt;
|- &lt;br /&gt;
!1-phasig!!3-phasig&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|ABL       ||eMH1               ||  200,00       ||    || 11 ||rowspan=&amp;quot;2&amp;quot;| DC+AC ||rowspan=&amp;quot;2&amp;quot;| MID   || Kabel    ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|eMH2               ||  900,00       ||    || 22  || opt. Kabel   ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|cfos-emobility || Power Brain Wallbox || 549,00 || 3,7 || 11 || DC || ja || Kabel || WLAN || Modbus TCP || max 45°C || App oder RFID || Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox pro 22|| 329,00    ||7,4 * ||bis 22|| DC  ||MID    ||mit Kabel 6,5m||WLAN und LAN, LTE||Modbus TCP  ||max 55°C||RFID ||März. 2025&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,7||11    || DC  ||nein    ||Dose           ||WLAN                    || WebSocket ([[Websocket#Fronius_Wattpilot|Beispielcode]]), Modul ([[Wattpilot]]) ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|go-e     || eCharger Gemini    ||  550,00   ||3,7*  ||11    ||DC  ||MID      ||Dose           || WLAN                   ||REST, MQTT, Modbus TCP, [[GoE Charger|HTTPMOD]], [[GoECharger|Modul 46_GoECharger.pm]] (veraltetes API V1)  ||max. 40°C||RFID,App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Hardy Barth||eCHARGE cPµ2 PRO  || 750,00    ||    ||1,4-11||ja  ||MID extern||Kabel 5m       ||    ||        || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Heidelberg|| Energy Control 11kW || 250,00 zuzgl. wbec Modul 100,00    ||3,7 *||11    ||DC ||ja||Kabel  5m         ||WLAN+LAN mit wbec-Modul                 || REST, MQTT, Modbus TCP  mit wbec-Modul, Lademanagement         || || Browser ||Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Elli = VW || ID.Charger Connect||   800,00     ||rowspan=&amp;quot;2&amp;quot;|7,4 ||rowspan=&amp;quot;2&amp;quot;|11   ||rowspan=&amp;quot;2&amp;quot;|ja  ||nein    ||rowspan=&amp;quot;2&amp;quot;|Kabel ab 4,5m ||rowspan=&amp;quot;2&amp;quot;|WLAN, LAN, LTE, opt. RS485   ||rowspan=&amp;quot;2&amp;quot;|Software evcc auf externem Server bildet EEBUS auf MQTT ab. EEBUS-Interface für FHEM wäre wünschenswert   ||rowspan=&amp;quot;2&amp;quot;|max. 40°C||rowspan=&amp;quot;2&amp;quot;|RFID,App||rowspan=&amp;quot;2&amp;quot;|Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|ID.Charger Pro    || 1050,00     ||ja MID &lt;br /&gt;
|-&lt;br /&gt;
|KEBA     ||KeContact P30 a-series||  200,00    ||    ||1,4-11||ja  ||nein   ||Kabel 4m       ||LAN ||Modbus TCP || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|OpenWB   ||OpenWB series2 Standard || 1100,00  ||rowspan=&amp;quot;2&amp;quot;|    7,4|| rowspan=&amp;quot;2&amp;quot; |11 oder 22||rowspan=&amp;quot;2&amp;quot;|DC  ||  ja|| rowspan=&amp;quot;2&amp;quot; |Kabel ab 3m, optional mit Buchse (custom) || rowspan=&amp;quot;2&amp;quot; |LAN, WLAN || rowspan=&amp;quot;2&amp;quot; |REST, MQTT, Modbus via Adapter&lt;br /&gt;
Lademanagement umfangreich, siehe [[OpenWB#Komplexe Anbindung]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |max 45°C ||        RFID (opt)&lt;br /&gt;
PIN (opt, bei display)&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|OpenWB PRO            || 2100,00  &lt;br /&gt;
|-&lt;br /&gt;
|Vestel   || EVC04-E11-W-C      || colspan=&amp;quot;11&amp;quot; |Baugleich mit E.ON Drive vBox smart 11&lt;br /&gt;
|-&lt;br /&gt;
|Wallbox  || Pulsar Plus        || 700,00    ||    ||11    ||DC  ||ja, nicht MID|| || WLAN, Bluetooth|| || ||RFID, App       ||Dez.2023&lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:left&amp;quot; | &lt;br /&gt;
Bemerkungen: &lt;br /&gt;
* Ein * in der Spalte &amp;quot;Ladeleistung 1-phasig&amp;quot; bedeutet, dass die Phasenumschaltung automatisch erfolgt.&lt;br /&gt;
* FI = Fehlerstromschutzschalter für Gleichstrom (DC) bzw. Typ A für Wechselstrom (AC).&lt;br /&gt;
* Ein interner Zähler kann geeicht sein (nötig nach deutschem Recht für Abrechungen), &amp;quot;nur&amp;quot; MID-konform (internationaler Standard) oder irgendwas...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wallboxen]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40707</id>
		<title>Wallboxen Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40707"/>
		<updated>2026-01-12T08:45:31Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite dient der übersichtlichen Darstellung verschiedener Wallboxen.&lt;br /&gt;
&lt;br /&gt;
Bemerkungen: &lt;br /&gt;
* Ein * in der Spalte &amp;quot;Ladeleistung 1-phasig&amp;quot; bedeutet, dass die Phasenumschaltung automatisch erfolgt.&lt;br /&gt;
* FI = Fehlerstromschutzschalter für Gleichstrom (DC) bzw. Typ A für Wechselstrom (AC).&lt;br /&gt;
* Ein interner Zähler kann geeicht sein (nötig nach deutschem Recht für Abrechungen), &amp;quot;nur&amp;quot; MID-konform (internationaler Standard) oder irgendwas...&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Hersteller!!rowspan=&amp;quot;2&amp;quot;|Typ!!rowspan=&amp;quot;2&amp;quot;|Preis in € ca.!!colspan=&amp;quot;2&amp;quot;|Ladeleistung kW!!rowspan=&amp;quot;2&amp;quot;|FI intern!!rowspan=&amp;quot;2&amp;quot;|Zähler!!rowspan=&amp;quot;2&amp;quot;|Kabel o. Dose!!rowspan=&amp;quot;2&amp;quot;|Netzwerk!!rowspan=&amp;quot;2&amp;quot;|Anbindung FHEM!!rowspan=&amp;quot;2&amp;quot;|Betrieb!!rowspan=&amp;quot;2&amp;quot;|Zugang Kontrolle!!rowspan=&amp;quot;2&amp;quot;|Datum&lt;br /&gt;
|- &lt;br /&gt;
!1-phasig!!3-phasig&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|ABL       ||eMH1               ||  200,00       ||    || 11 ||rowspan=&amp;quot;2&amp;quot;| DC+AC ||rowspan=&amp;quot;2&amp;quot;| MID   || Kabel    ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|eMH2               ||  900,00       ||    || 22  || opt. Kabel   ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|cfos-emobility || Power Brain Wallbox || 549,00 || 3,68 || 11 || DC || ja || Kabel || WLAN || Modbus TCP || max 45°C || App oder RFID || Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox pro 22|| 329,00    ||7,4 ||bis 22|| DC  ||MID    ||mit Kabel 6,5m||WLAN und LAN, LTE||Modbus TCP  ||max 55°C||RFID ||März. 2025&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            WebSocket||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|go-e     || eCharger Gemini    ||  550,00   ||3,7*  ||11    ||DC  ||MID      ||Dose           || WLAN                   ||REST, MQTT, Modbus TCP, Modul 46_GoECharger.pm (veraltetes API V1)  ||max. 40°C||RFID,App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Hardy Barth||eCHARGE cPµ2 PRO  || 750,00    ||    ||1,4-11||ja  ||MID extern||Kabel 5m       ||    ||        || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Heidelberg|| Energy Control 11kW || 250,00 zuzgl. wbec Modul 100,00    ||3,68 *||11    ||DC ||ja||Kabel  5m         ||WLAN+LAN mit wbec-Modul                 || REST, MQTT, Modbus TCP  mit wbec-Modul, Lademanagement         || || Browser ||Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Elli = VW || ID.Charger Connect||   800,00     ||rowspan=&amp;quot;2&amp;quot;|7,4 ||rowspan=&amp;quot;2&amp;quot;|11   ||rowspan=&amp;quot;2&amp;quot;|ja  ||nein    ||rowspan=&amp;quot;2&amp;quot;|Kabel ab 4,5m ||rowspan=&amp;quot;2&amp;quot;|WLAN, LAN, LTE, opt. RS485   ||rowspan=&amp;quot;2&amp;quot;|Software evcc auf externem Server bildet EEBUS auf MQTT ab. EEBUS-Interface für FHEM wäre wünschenswert   ||rowspan=&amp;quot;2&amp;quot;|max. 40°C||rowspan=&amp;quot;2&amp;quot;|RFID,App||rowspan=&amp;quot;2&amp;quot;|Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|ID.Charger Pro    || 1050,00     ||ja MID &lt;br /&gt;
|-&lt;br /&gt;
|KEBA     ||KeContact P30 a-series||  200,00    ||    ||1,4-11||ja  ||nein   ||Kabel 4m       ||LAN ||Modbus TCP || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|OpenWB   ||OpenWB series2 Standard || 1100,00  ||rowspan=&amp;quot;2&amp;quot;|    7,4|| rowspan=&amp;quot;2&amp;quot; |11 oder 22||rowspan=&amp;quot;2&amp;quot;|DC  ||  ja|| rowspan=&amp;quot;2&amp;quot; |Kabel ab 3m, optional mit Buchse (custom) || rowspan=&amp;quot;2&amp;quot; |LAN, WLAN || rowspan=&amp;quot;2&amp;quot; |REST, MQTT, Modbus via Adapter&lt;br /&gt;
Lademanagement umfangreich, siehe [[OpenWB#Komplexe Anbindung]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |max 45°C ||        RFID (opt)&lt;br /&gt;
PIN (opt, bei display)&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|OpenWB PRO            || 2100,00  &lt;br /&gt;
|-&lt;br /&gt;
|Vestel   || EVC04-E11-W-C      || colspan=&amp;quot;11&amp;quot; |Baugleich mit E.ON Drive vBox smart 11&lt;br /&gt;
|-&lt;br /&gt;
|Wallbox  || Pulsar Plus        || 700,00    ||    ||11    ||DC  ||ja, nicht MID|| || WLAN, Bluetooth|| || ||RFID, App       ||Dez.2023&lt;br /&gt;
|-&lt;br /&gt;
|         ||                    ||           ||    ||  ||  ||    ||    ||    ||        ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wallboxen]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40706</id>
		<title>Wallboxen Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40706"/>
		<updated>2026-01-12T08:42:29Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: WebSocket&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite dient der übersichtlichen Darstellung verschiedener Wallboxen.&lt;br /&gt;
&lt;br /&gt;
Bemerkungen: &lt;br /&gt;
* Ein * in der Spalte &amp;quot;Ladeleistung 1-phasig&amp;quot; bedeutet, dass die Phasenumschaltung automatisch erfolgt.&lt;br /&gt;
* FI = Fehlerstromschutzschalter für Gleichstrom (DC) bzw. Typ A für Wechselstrom (AC).&lt;br /&gt;
* Ein interner Zähler kann geeicht sein (nötig nach deutschem Recht für Abrechungen), &amp;quot;nur&amp;quot; MID-konform (internationaler Standard) oder irgendwas...&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Hersteller!!rowspan=&amp;quot;2&amp;quot;|Typ!!rowspan=&amp;quot;2&amp;quot;|Preis in € ca.!!colspan=&amp;quot;2&amp;quot;|Ladeleistung kW!!rowspan=&amp;quot;2&amp;quot;|FI intern!!rowspan=&amp;quot;2&amp;quot;|Zähler!!rowspan=&amp;quot;2&amp;quot;|Kabel o. Dose!!rowspan=&amp;quot;2&amp;quot;|Netzwerk!!rowspan=&amp;quot;2&amp;quot;|Anbindung FHEM!!rowspan=&amp;quot;2&amp;quot;|Betrieb!!rowspan=&amp;quot;2&amp;quot;|Zugang Kontrolle!!rowspan=&amp;quot;2&amp;quot;|Datum&lt;br /&gt;
|- &lt;br /&gt;
!1-phasig!!3-phasig&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|ABL       ||eMH1               ||  200,00       ||    || 11 ||rowspan=&amp;quot;2&amp;quot;| DC+AC ||rowspan=&amp;quot;2&amp;quot;| MID   || Kabel    ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|eMH2               ||  900,00       ||    || 22  || opt. Kabel   ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|cfos-emobility || Power Brain Wallbox || 549,00 || 3,68 || 11 || DC || ja || Kabel || WLAN || Modbus TCP || max 45°C || App oder RFID || Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox pro 22|| 329,00    ||2,4 ||bis 22|| DC  ||MID    ||mit Kabel 6,5m||WLAN und LAN, LTE||Modbus TCP  ||max 55°C||RFID ||März. 2025&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            WebSocket||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|go-e     || eCharger Gemini    ||  550,00   ||3,7*  ||11    ||DC  ||MID      ||Dose           || WLAN                   ||REST, MQTT, Modbus TCP, Modul 46_GoECharger.pm (veraltetes API V1)  ||max. 40°C||RFID,App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Hardy Barth||eCHARGE cPµ2 PRO  || 750,00    ||    ||1,4-11||ja  ||MID extern||Kabel 5m       ||    ||        || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Heidelberg|| Energy Control 11kW || 250,00 zuzgl. wbec Modul 100,00    ||3,68 *||11    ||DC ||ja||Kabel  5m         ||WLAN+LAN mit wbec-Modul                 || REST, MQTT, Modbus TCP  mit wbec-Modul, Lademanagement         || || Browser ||Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Elli = VW || ID.Charger Connect||   800,00     ||rowspan=&amp;quot;2&amp;quot;|7,4 ||rowspan=&amp;quot;2&amp;quot;|11   ||rowspan=&amp;quot;2&amp;quot;|ja  ||nein    ||rowspan=&amp;quot;2&amp;quot;|Kabel ab 4,5m ||rowspan=&amp;quot;2&amp;quot;|WLAN, LAN, LTE, opt. RS485   ||rowspan=&amp;quot;2&amp;quot;|Software evcc auf externem Server bildet EEBUS auf MQTT ab. EEBUS-Interface für FHEM wäre wünschenswert   ||rowspan=&amp;quot;2&amp;quot;|max. 40°C||rowspan=&amp;quot;2&amp;quot;|RFID,App||rowspan=&amp;quot;2&amp;quot;|Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|ID.Charger Pro    || 1050,00     ||ja MID &lt;br /&gt;
|-&lt;br /&gt;
|KEBA     ||KeContact P30 a-series||  200,00    ||    ||1,4-11||ja  ||nein   ||Kabel 4m       ||LAN ||Modbus TCP || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|OpenWB   ||OpenWB series2 Standard || 1100,00  ||rowspan=&amp;quot;2&amp;quot;|    7,4|| rowspan=&amp;quot;2&amp;quot; |11 oder 22||rowspan=&amp;quot;2&amp;quot;|DC  ||  ja|| rowspan=&amp;quot;2&amp;quot; |Kabel ab 3m, optional mit Buchse (custom) || rowspan=&amp;quot;2&amp;quot; |LAN, WLAN || rowspan=&amp;quot;2&amp;quot; |REST, MQTT, Modbus via Adapter&lt;br /&gt;
Lademanagement umfangreich, siehe [[OpenWB#Komplexe Anbindung]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |max 45°C ||        RFID (opt)&lt;br /&gt;
PIN (opt, bei display)&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|OpenWB PRO            || 2100,00  &lt;br /&gt;
|-&lt;br /&gt;
|Vestel   || EVC04-E11-W-C      || colspan=&amp;quot;11&amp;quot; |Baugleich mit E.ON Drive vBox smart 11&lt;br /&gt;
|-&lt;br /&gt;
|Wallbox  || Pulsar Plus        || 700,00    ||    ||11    ||DC  ||ja, nicht MID|| || WLAN, Bluetooth|| || ||RFID, App       ||Dez.2023&lt;br /&gt;
|-&lt;br /&gt;
|         ||                    ||           ||    ||  ||  ||    ||    ||    ||        ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wallboxen]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40701</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40701"/>
		<updated>2026-01-11T16:56:17Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells nach den Laden]]&lt;br /&gt;
[[Datei:BYD-Cels.jpg|mini|Balancing nahezu abgeschlossen]]&lt;br /&gt;
&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier oder fünf Zellengruppen definiert, ggf anpassen. Weiterhin ist das Cell Balancing des BMS zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40700</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40700"/>
		<updated>2026-01-11T16:26:06Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells nach den Laden]]&lt;br /&gt;
[[Datei:BYD-Cels.jpg|mini|Balancing nahezu abgeschlossen]]&lt;br /&gt;
&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier oder fünf Zellengruppen definiert, ggf anpassen. Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;[https://de.wikipedia.org/wiki/Balancer Zellausgleich]&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40699</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40699"/>
		<updated>2026-01-11T16:22:09Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells nach den Laden]]&lt;br /&gt;
[[Datei:BYD-Cels.jpg|mini|Balancing nahezu abgeschlossen]]&lt;br /&gt;
&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier oder fünf Zellengruppen definiert, ggf anpassen. Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40698</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40698"/>
		<updated>2026-01-11T16:20:19Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells nach den Laden]]&lt;br /&gt;
[[Datei:BYD-Cels.jpg|mini|Balancing nahezu abgeschlossen]]&lt;br /&gt;
&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD) Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40697</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40697"/>
		<updated>2026-01-11T16:19:50Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
[[Datei:BYD-Cels.jpg|mini|Balancing nahezu abgeschlossen]]&lt;br /&gt;
&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD) Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:BYD-Cels.jpg&amp;diff=40696</id>
		<title>Datei:BYD-Cels.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:BYD-Cels.jpg&amp;diff=40696"/>
		<updated>2026-01-11T16:18:23Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BYD-Cels&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40695</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40695"/>
		<updated>2026-01-11T16:06:48Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* myBYDBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD) Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40694</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40694"/>
		<updated>2026-01-11T16:06:04Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Fronius_Symo in FHEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;= 10-&amp;gt;15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD) Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40693</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40693"/>
		<updated>2026-01-11T16:05:13Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Fronius_Symo in FHEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&lt;br /&gt;
Über Integrale werden einige Strommengen als laufend erhöhende Zähler erzeugt. Dies ist für die weitere Verarbeitung in den Modulen ElectricityCalculator (v.Sailor) erforderlich. Die Zähler sind auch im Fronius Datensatz enthalten, sie werden aber in Abständen &amp;gt;10-15 Minuten dort aktualisiert und sind somit für eine Wandanzeige ungeeignet.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD) Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40692</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40692"/>
		<updated>2026-01-11T15:57:36Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox. Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD) Weiterhin ist das Cell Balancing (&amp;lt;mark&amp;gt;Zellausgleich&amp;lt;/mark&amp;gt;) des BMS prima zu erkennen. Erst einige Zeit nach Ende des Ladevorgangs ist die Energie nahezu gleich auf alle Zellen verteilt.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40691</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40691"/>
		<updated>2026-01-11T15:44:37Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Screenshot_20250612_192318_Fully_Kiosk_Browser.jpg&amp;diff=40690</id>
		<title>Datei:Screenshot 20250612 192318 Fully Kiosk Browser.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Screenshot_20250612_192318_Fully_Kiosk_Browser.jpg&amp;diff=40690"/>
		<updated>2026-01-11T15:44:03Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Solaranlage&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40676</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40676"/>
		<updated>2026-01-06T14:53:30Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* myBYDBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Kombi Fronius -&amp;gt; BYD-Box funktioniert damit einwandfrei weil deren nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40655</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40655"/>
		<updated>2026-01-04T10:43:28Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Und Widget SolarForecast für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Box funktioniert damit einwandfrei weil die nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40654</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40654"/>
		<updated>2026-01-04T10:41:59Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* myBYDBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Box funktioniert damit einwandfrei weil die nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40653</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40653"/>
		<updated>2026-01-04T10:39:50Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* myBYDBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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. Um ein den Kontakt mit dem Hersteller in China zu unterbinden, kann diese Verbindung Problemlos im Hausnetz z.B. mittels einer Kindersicherung versehen werden. Die Box funktioniert damit einwandfrei weil die nötige Kommunikation mit dem Wechselrichter über Modbus-Kabel erfolgt.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40651</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40651"/>
		<updated>2026-01-04T09:39:25Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* SolarForecast */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Code siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=BYDBox&amp;diff=40649</id>
		<title>BYDBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=BYDBox&amp;diff=40649"/>
		<updated>2026-01-04T09:28:08Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Unterstützung für die BYD Battery Box&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Solaranlagen&lt;br /&gt;
|ModFTopic=121643&lt;br /&gt;
|ModTechName=23_BYDBox.pm&lt;br /&gt;
|ModOwner={{Link2FU|36612|MiniBlister}}&lt;br /&gt;
}}&lt;br /&gt;
Das Modul [[BYDBox]] erlaubt es, die Battery Box des chinesischen Herstellers [https://www.byd.com BYD] in FHEM einzubinden.&lt;br /&gt;
&lt;br /&gt;
Die jeweils aktuelle Version dieses Moduls sollte im ersten Beitrag des in der Infobox genannten Forenthemas zu finden sein, es ist leider auch schon (mindestens) ein Modulupdate (auch von anderen Benutzern) in späteren Beiträgen aufgetaucht (z.B. in {{Link2Forum|Topic=121643|Msg=1321693|LinkText=Beitrag 281}}).&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
&lt;br /&gt;
== Unterstützte Speicherkonfigurationen ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.byd.com Webseite des Herstellers BYD]&lt;br /&gt;
* [[Solaranlage Komplettbeispiel Fronius BYD]] Anwendungsbeispiel und ergänzende Darstellungen der Daten über DOIF`s : Übersicht und einzelne Zellen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektromobilität]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solar-/PV-%C3%9Cbersicht&amp;diff=40648</id>
		<title>Solar-/PV-Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solar-/PV-%C3%9Cbersicht&amp;diff=40648"/>
		<updated>2026-01-04T09:19:19Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Monitoring/Auswertung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right;margin-left:10px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Seite [[Solar-/PV-Übersicht]] soll einen schnellen Einstieg in die für Solar-/Photovoltaik-Betreiber relevanten Seiten und Threads ermöglichen. Bitte bei Bedarf selbständig ergänzen.&lt;br /&gt;
&lt;br /&gt;
==Forum==&lt;br /&gt;
Der Forenbereich {{Link2Forum|Area=Solaranlagen}} enthält Themen rund um Solaranlagen zur Wärme- oder Stromgewinnung.&lt;br /&gt;
&lt;br /&gt;
Unter der Überschrift {{Link2Forum|Topic=116747|LinkText=&amp;quot;Frevel: Die Idee einheitlicher Devicenamen und Readings&amp;quot;}} findet gerade eine Diskussion zum Thema Namenskonventionen für Readings statt.&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [[Fotovoltaikanlage]]&lt;br /&gt;
* Viele Seiten der Kategorie [[:Kategorie:Energieerzeugungsmessung|Energieerzeugungsmessung]]&lt;br /&gt;
&lt;br /&gt;
==Wechselrichter==&lt;br /&gt;
===Kostal===&lt;br /&gt;
* [[KostalPiko]]&lt;br /&gt;
* [[Kostal Plenticore 10 Plus]]&lt;br /&gt;
&lt;br /&gt;
===SMA===&lt;br /&gt;
* [[SMAWechselrichter]]&lt;br /&gt;
&lt;br /&gt;
===Solar Edge===&lt;br /&gt;
* [[SolarEdge Wechselrichter]]&lt;br /&gt;
&lt;br /&gt;
===Sunways===&lt;br /&gt;
* [[NT5000]]&lt;br /&gt;
&lt;br /&gt;
==Speicher==&lt;br /&gt;
* [[Sonnenspeicher]]&lt;br /&gt;
* [[Tesla Powerwall]]&lt;br /&gt;
&lt;br /&gt;
==Monitoring/Auswertung==&lt;br /&gt;
* [[Enecsys Monitoring System]]&lt;br /&gt;
* [[SunnyHomeManager]]&lt;br /&gt;
* [[Datenbankgestützte Erstellung der Energiebilanz einer SMA PV-Anlage mit Überschusseinspeisung]]&lt;br /&gt;
* [[SolarLog]]&lt;br /&gt;
* [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung]]&lt;br /&gt;
* [[Solaranlage Komplettbeispiel Fronius BYD]]&lt;br /&gt;
* [[Kostal_Plenticore_10_Plus#Wetter-/Leistungs-Prognose|Wetter-/Leistungs-Prognose - KI_Prognose mit DbLog/DbRep und RandomForestRegressor]]&lt;br /&gt;
&lt;br /&gt;
==Angrenzende Themen==&lt;br /&gt;
Verwandte Themen, &amp;quot;gern verwendete&amp;quot; oder erforderliche Module, etc.:&lt;br /&gt;
* [[ModbusAttr]]&lt;br /&gt;
* [[HTTPMOD]]&lt;br /&gt;
* [[SMLUSB]]&lt;br /&gt;
* [[EBUS-ECMD]]&lt;br /&gt;
* [[Stromzähler auslesen]]&lt;br /&gt;
* Externer Link [https://www.photovoltaikforum.com/ Photovoltaik-Forum]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40636</id>
		<title>Diskussion:Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40636"/>
		<updated>2026-01-02T17:07:06Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Linkliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So Leute, die Grundstruktur steht erst mal.&lt;br /&gt;
Soll der Titel so bleiben, oder geändert werden?&lt;br /&gt;
:Der Titel kann so bleiben - was Du noch machen solltest: an geeigneten Stellen auf diese Beispiel verweisen (kannst Dich vielleicht an [[Spezial:Linkliste/SolarForecast_-_Solare_Prognose_(PV_Erzeugung)_und_Verbrauchersteuerung]] orientieren), damit der Beitrag nicht nur &amp;quot;zufällig&amp;quot; oder über einen Verweis aus den Forum gefunden wird. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 11:34, 5. Nov. 2025 (CET)&lt;br /&gt;
&lt;br /&gt;
== Abhängigkeit von Autolade_Calculator ==&lt;br /&gt;
Wenn man den Code im Abschnitt &amp;quot;Fronius_Symo in FHEM&amp;quot; 1:1 übernimmt, führt eine Abhängigkeit von &amp;quot;Autolade_Calculator&amp;quot; in userReadings zu Einträgen im logfile, wenn kein device &amp;quot;Autolade_Calculator&amp;quot; definiert ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ich schlage vor, die Zeile zu entfernen (oder zu erläutern, welches device da verlangt wird).&lt;br /&gt;
&lt;br /&gt;
(Anmerkung: Bei mir irritierte zusätzlich, dass die log-Einträge selbst mit verbose=0 auftraten)&lt;br /&gt;
&lt;br /&gt;
== Linkliste ==&lt;br /&gt;
&lt;br /&gt;
Habe die Linkliste geprüft, alles soweit ok.&lt;br /&gt;
Änderungen in anderen WIKI zu Links hierauf werde ich noch nicht erstellen.&lt;br /&gt;
Muss das System WIKI erst mal verstehen.....&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40635</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40635"/>
		<updated>2026-01-02T17:03:11Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: Änderungen der Struktur&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert. &#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Es ist ein Autolade_Calculator in den userReadings vorhanden. Wenn der Abschnitt mit Autoladen nicht verwendet wird, bitte die Einträge entfernen. Die dienen nur der korrekten Berechnung und Anzeige des Hausverbrauchs (ohne Autoladen!).&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 DbLogInclude loadpoints_1_chargePower&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 comment Achtung: EVCC greift per Modbus auf Fronius zu Port 502 Adr. 200&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 event-on-update-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode | loadpoints_1_chargePower W&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { ((ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)-10)*0.67) },\&lt;br /&gt;
Ladeleistung { (ReadingsVal($name,&#039;loadpoints_1_chargePower&#039;,&#039;&#039;)/1000) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
defmod Autolade_Calculator ElectricityCalculator MQTT2_evcc1:loadpoints_1_chargeTotalImport.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132.84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 1&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 1&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Heute: MQTT2_evcc1_loadpoints_1_chargeTotalImport_EnergyDay kWh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40634</id>
		<title>Diskussion:Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40634"/>
		<updated>2026-01-02T16:52:14Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: Neuer Abschnitt /* Linkliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So Leute, die Grundstruktur steht erst mal.&lt;br /&gt;
Soll der Titel so bleiben, oder geändert werden?&lt;br /&gt;
:Der Titel kann so bleiben - was Du noch machen solltest: an geeigneten Stellen auf diese Beispiel verweisen (kannst Dich vielleicht an [[Spezial:Linkliste/SolarForecast_-_Solare_Prognose_(PV_Erzeugung)_und_Verbrauchersteuerung]] orientieren), damit der Beitrag nicht nur &amp;quot;zufällig&amp;quot; oder über einen Verweis aus den Forum gefunden wird. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 11:34, 5. Nov. 2025 (CET)&lt;br /&gt;
&lt;br /&gt;
== Abhängigkeit von Autolade_Calculator ==&lt;br /&gt;
Wenn man den Code im Abschnitt &amp;quot;Fronius_Symo in FHEM&amp;quot; 1:1 übernimmt, führt eine Abhängigkeit von &amp;quot;Autolade_Calculator&amp;quot; in userReadings zu Einträgen im logfile, wenn kein device &amp;quot;Autolade_Calculator&amp;quot; definiert ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ich schlage vor, die Zeile zu entfernen (oder zu erläutern, welches device da verlangt wird).&lt;br /&gt;
&lt;br /&gt;
(Anmerkung: Bei mir irritierte zusätzlich, dass die log-Einträge selbst mit verbose=0 auftraten)&lt;br /&gt;
&lt;br /&gt;
== Linkliste ==&lt;br /&gt;
&lt;br /&gt;
Habe die Linkliste geprüft, alles soweit ok.&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40631</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40631"/>
		<updated>2026-01-02T14:23:44Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM. (Stand 02.01.2026)&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator mqttPublish power|energy:topic={&amp;quot;$device/$name&amp;quot;}&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40630</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40630"/>
		<updated>2026-01-02T14:22:21Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* GEN24_MPPT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Diese Beispielanlage besteht aus 4 Strings. Zwei sind an den Fronius WR und zwei weitere an zwei Growatt 2KW WR angschlossen. Weiterhin gibt es einen zusätzlichen Fronius Prower Meter (1 Phasig) für die beiden Growatt WR. &lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt, ebenso werden damit auch die Daten der zusätzlichen WR ausgelesen und addiert.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude User_Consumed_E,Einspeisung,Bezug,Akku_Laden,Akku_Entladen,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Meter_1_PowerReal_P_Sum&lt;br /&gt;
attr Fronius_Symo IntervalRealtimeData 60&lt;br /&gt;
attr Fronius_Symo comment Auf dem Dach sind 15.6kWp installiert\&lt;br /&gt;
Str1: 7640W Süd+Carport\&lt;br /&gt;
Str2: 3480W Ost\&lt;br /&gt;
Grow1: 2200W West\&lt;br /&gt;
Grow2: 2320W GH\&lt;br /&gt;
userReadings User_Produced_FPV nur für SolarForecast&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon inverter&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))/3600000},\&lt;br /&gt;
User_Produced_FPV:PowerFlow_Site_P_PV.* integral {(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;&amp;quot;)-(ReadingsVal(&amp;quot;MQTT2_evcc1&amp;quot;,&amp;quot;Ladeleistung&amp;quot;,&amp;quot;&amp;quot;)*1000)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000},&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FroniusPowerFlow==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen (für FTUI Anzeigen z.B.)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod FroniusPowerFlow HTTPMOD http://192.168.xxx.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi 10&lt;br /&gt;
attr FroniusPowerFlow userattr reading1Name reading1JSON&lt;br /&gt;
attr FroniusPowerFlow DbLogExclude .*&lt;br /&gt;
attr FroniusPowerFlow extractAllJSON 1&lt;br /&gt;
attr FroniusPowerFlow group Fronius&lt;br /&gt;
attr FroniusPowerFlow icon inverter&lt;br /&gt;
attr FroniusPowerFlow room Energie-Strom&lt;br /&gt;
attr FroniusPowerFlow stateFormat Leistung: PV_Produktion W&lt;br /&gt;
attr FroniusPowerFlow userReadings Neg_Einspeisung:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:Body_Data_Site_P_Grid.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:Body_Data_Site_P_Akku.* {ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;Body_Data_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
PV_Produktion:Body_Data_Site_P_Grid.* {((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;Body_Data_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;))+(ReadingsVal(&amp;quot;Fronius_Symo&amp;quot;,&amp;quot;Meter_1_PowerReal_P_Sum&amp;quot;,&amp;quot;0&amp;quot;)))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod PV_Batterie ModbusAttr 1 10 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie DbLogInclude DCPowerMPPT1,DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast consumer01 MQTT2_evcc1 type=charger power=0 exconfc=1 icon=electric_car_icon pcurr=loadpoints_1_chargePower :W&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlNextHoursSoCForecastReadings 07,08,09,10,11,12,13,14,15,16,17,18,19,20,21&lt;br /&gt;
attr Forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,conForecastTillNextSunrise,dayAfterTomorrowPVforecast,todayConsumption,todayConsumptionForecast,todayConsumptionForecastDay,todayGridConsumption,todayGridFeedIn,tomorrowConsumptionForecast&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicControl energyUnit=kWh headerDetail=all,pv&lt;br /&gt;
attr Forecast graphicHistoryHour 8&lt;br /&gt;
attr Forecast graphicSelect forecast&lt;br /&gt;
attr Forecast graphicShowNight 01&lt;br /&gt;
attr Forecast plantControl showLink=1&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev01 PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh show=1 cap=12800 charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pvOut=PowerFlow_Site_P_PV:W etotal=User_Produced_FPV:kWh capacity=11000 strings:Ostseite,Suedseite&lt;br /&gt;
attr Forecast setupInverterDev02 Fronius_Symo pvOut=Meter_1_PowerReal_P_Sum:W etotal=Meter_1_EnergyReal_WAC_Sum_Produced:Wh capacity=4000 strings:Westseite,GH_Ost,GH_West&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite,Ostseite,GH_West,GH_Ost&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast setupStringAzimuth Suedseite=0 Westseite=90 Ostseite=-90 GH_Ost=-90 GH_West=90&lt;br /&gt;
attr Forecast setupStringDeclination Suedseite=35 Westseite=60 Ostseite=45 GH_West=18 GH_Ost=18&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2 Ostseite=3.48 GH_Ost=1.74 GH_West=0.58&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWD_D2-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator mqttPublish power|energy:topic={&amp;quot;$device/$name&amp;quot;}&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40629</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40629"/>
		<updated>2026-01-02T13:59:18Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: Änderung 40628 von Wds1957 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator mqttPublish power|energy:topic={&amp;quot;$device/$name&amp;quot;}&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40628</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=40628"/>
		<updated>2026-01-02T13:57:21Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* GEN24_MPPT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator mqttPublish power|energy:topic={&amp;quot;$device/$name&amp;quot;}&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40074</id>
		<title>Wallboxen Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40074"/>
		<updated>2025-03-26T15:01:21Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: E.On pro zugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite dient der übersichtlichen Darstellung verschiedener Wallboxen.&lt;br /&gt;
&lt;br /&gt;
Bemerkungen: &lt;br /&gt;
* Ein * in der Spalte &amp;quot;Ladeleistung 1-phasig&amp;quot; bedeutet, dass die Phasenumschaltung automatisch erfolgt.&lt;br /&gt;
* FI = Fehlerstromschutzschalter für Gleichstrom (DC) bzw. Typ A für Wechselstrom (AC).&lt;br /&gt;
* Ein interner Zähler kann geeicht sein (nötig nach deutschem Recht für Abrechungen), &amp;quot;nur&amp;quot; MID-konform (internationaler Standard) oder irgendwas...&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Hersteller!!rowspan=&amp;quot;2&amp;quot;|Typ!!rowspan=&amp;quot;2&amp;quot;|Preis in € ca.!!colspan=&amp;quot;2&amp;quot;|Ladeleistung kW!!rowspan=&amp;quot;2&amp;quot;|FI intern!!rowspan=&amp;quot;2&amp;quot;|Zähler!!rowspan=&amp;quot;2&amp;quot;|Kabel o. Dose!!rowspan=&amp;quot;2&amp;quot;|Netzwerk!!rowspan=&amp;quot;2&amp;quot;|Anbindung FHEM!!rowspan=&amp;quot;2&amp;quot;|Betrieb!!rowspan=&amp;quot;2&amp;quot;|Zugang Kontrolle!!rowspan=&amp;quot;2&amp;quot;|Datum&lt;br /&gt;
|- &lt;br /&gt;
!1-phasig!!3-phasig&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|ABL       ||eMH1               ||  200,00       ||    || 11 ||rowspan=&amp;quot;2&amp;quot;| DC+AC ||rowspan=&amp;quot;2&amp;quot;| MID   || Kabel    ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|eMH2               ||  900,00       ||    || 22  || opt. Kabel   ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|cfos-emobility || Power Brain Wallbox || 549,00 || 3,68 || 11 || DC || ja || Kabel || WLAN || Modbus TCP || max 45°C || App oder RFID || Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox pro 22|| 329,00    ||2,4 ||bis 22|| DC  ||MID    ||mit Kabel 6,5m||WLAN und LAN, LTE||Modbus TCP  ||max 55°C||RFID ||März. 2025&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|go-e     || eCharger Gemini    ||  550,00   ||3,7*  ||11    ||DC  ||MID      ||Dose           || WLAN                   ||REST, MQTT, Modbus TCP, Modul 46_GoECharger.pm (veraltetes API V1)  ||max. 40°C||RFID,App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Hardy Barth||eCHARGE cPµ2 PRO  || 750,00    ||    ||1,4-11||ja  ||MID extern||Kabel 5m       ||    ||        || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Heidelberg|| Energy Control 11kW || 250,00 zuzgl. wbec Modul 100,00    ||3,68 *||11    ||DC ||ja||Kabel  5m         ||WLAN+LAN mit wbec-Modul                 || REST, MQTT, Modbus TCP  mit wbec-Modul, Lademanagement         || || Browser ||Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Elli = VW || ID.Charger Connect||   800,00     ||rowspan=&amp;quot;2&amp;quot;|7,4 ||rowspan=&amp;quot;2&amp;quot;|11   ||rowspan=&amp;quot;2&amp;quot;|ja  ||nein    ||rowspan=&amp;quot;2&amp;quot;|Kabel ab 4,5m ||rowspan=&amp;quot;2&amp;quot;|WLAN, LAN, LTE, opt. RS485   ||rowspan=&amp;quot;2&amp;quot;|Software evcc auf externem Server bildet EEBUS auf MQTT ab. EEBUS-Interface für FHEM wäre wünschenswert   ||rowspan=&amp;quot;2&amp;quot;|max. 40°C||rowspan=&amp;quot;2&amp;quot;|RFID,App||rowspan=&amp;quot;2&amp;quot;|Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|ID.Charger Pro    || 1050,00     ||ja MID &lt;br /&gt;
|-&lt;br /&gt;
|KEBA     ||KeContact P30 a-series||  200,00    ||    ||1,4-11||ja  ||nein   ||Kabel 4m       ||LAN ||Modbus TCP || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|OpenWB   ||OpenWB series2 Standard || 1100,00  ||rowspan=&amp;quot;2&amp;quot;|    7,4|| rowspan=&amp;quot;2&amp;quot; |11 oder 22||rowspan=&amp;quot;2&amp;quot;|DC  ||  ja|| rowspan=&amp;quot;2&amp;quot; |Kabel ab 3m, optional mit Buchse (custom) || rowspan=&amp;quot;2&amp;quot; |LAN, WLAN || rowspan=&amp;quot;2&amp;quot; |REST, MQTT, Modbus via Adapter&lt;br /&gt;
Lademanagement umfangreich, siehe [[OpenWB#Komplexe Anbindung]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |max 45°C ||        RFID (opt)&lt;br /&gt;
PIN (opt, bei display)&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|OpenWB PRO            || 2100,00  &lt;br /&gt;
|-&lt;br /&gt;
|Vestel   || EVC04-E11-W-C      || colspan=&amp;quot;11&amp;quot; |Baugleich mit E.ON Drive vBox smart 11&lt;br /&gt;
|-&lt;br /&gt;
|Wallbox  || Pulsar Plus        || 700,00    ||    ||11    ||DC  ||ja, nicht MID|| || WLAN, Bluetooth|| || ||RFID, App       ||Dez.2023&lt;br /&gt;
|-&lt;br /&gt;
|         ||                    ||           ||    ||  ||  ||    ||    ||    ||        ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wallboxen]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40073</id>
		<title>Wallboxen Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40073"/>
		<updated>2025-03-26T14:56:07Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite dient der übersichtlichen Darstellung verschiedener Wallboxen.&lt;br /&gt;
&lt;br /&gt;
Bemerkungen: &lt;br /&gt;
* Ein * in der Spalte &amp;quot;Ladeleistung 1-phasig&amp;quot; bedeutet, dass die Phasenumschaltung automatisch erfolgt.&lt;br /&gt;
* FI = Fehlerstromschutzschalter für Gleichstrom (DC) bzw. Typ A für Wechselstrom (AC).&lt;br /&gt;
* Ein interner Zähler kann geeicht sein (nötig nach deutschem Recht für Abrechungen), &amp;quot;nur&amp;quot; MID-konform (internationaler Standard) oder irgendwas...&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Hersteller!!rowspan=&amp;quot;2&amp;quot;|Typ!!rowspan=&amp;quot;2&amp;quot;|Preis in € ca.!!colspan=&amp;quot;2&amp;quot;|Ladeleistung kW!!rowspan=&amp;quot;2&amp;quot;|FI intern!!rowspan=&amp;quot;2&amp;quot;|Zähler!!rowspan=&amp;quot;2&amp;quot;|Kabel o. Dose!!rowspan=&amp;quot;2&amp;quot;|Netzwerk!!rowspan=&amp;quot;2&amp;quot;|Anbindung FHEM!!rowspan=&amp;quot;2&amp;quot;|Betrieb!!rowspan=&amp;quot;2&amp;quot;|Zugang Kontrolle!!rowspan=&amp;quot;2&amp;quot;|Datum&lt;br /&gt;
|- &lt;br /&gt;
!1-phasig!!3-phasig&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|ABL       ||eMH1               ||  200,00       ||    || 11 ||rowspan=&amp;quot;2&amp;quot;| DC+AC ||rowspan=&amp;quot;2&amp;quot;| MID   || Kabel    ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|eMH2               ||  900,00       ||    || 22  || opt. Kabel   ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|cfos-emobility || Power Brain Wallbox || 549,00 || 3,68 || 11 || DC || ja || Kabel || WLAN || Modbus TCP || max 45°C || App oder RFID || Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|go-e     || eCharger Gemini    ||  550,00   ||3,7*  ||11    ||DC  ||MID      ||Dose           || WLAN                   ||REST, MQTT, Modbus TCP, Modul 46_GoECharger.pm (veraltetes API V1)  ||max. 40°C||RFID,App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Hardy Barth||eCHARGE cPµ2 PRO  || 750,00    ||    ||1,4-11||ja  ||MID extern||Kabel 5m       ||    ||        || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Heidelberg|| Energy Control 11kW || 250,00 zuzgl. wbec Modul 100,00    ||3,68 *||11    ||DC ||ja||Kabel  5m         ||WLAN+LAN mit wbec-Modul                 || REST, MQTT, Modbus TCP  mit wbec-Modul, Lademanagement         || || Browser ||Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Elli = VW || ID.Charger Connect||   800,00     ||rowspan=&amp;quot;2&amp;quot;|7,4 ||rowspan=&amp;quot;2&amp;quot;|11   ||rowspan=&amp;quot;2&amp;quot;|ja  ||nein    ||rowspan=&amp;quot;2&amp;quot;|Kabel ab 4,5m ||rowspan=&amp;quot;2&amp;quot;|WLAN, LAN, LTE, opt. RS485   ||rowspan=&amp;quot;2&amp;quot;|Software evcc auf externem Server bildet EEBUS auf MQTT ab. EEBUS-Interface für FHEM wäre wünschenswert   ||rowspan=&amp;quot;2&amp;quot;|max. 40°C||rowspan=&amp;quot;2&amp;quot;|RFID,App||rowspan=&amp;quot;2&amp;quot;|Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|ID.Charger Pro    || 1050,00     ||ja MID &lt;br /&gt;
|-&lt;br /&gt;
|KEBA     ||KeContact P30 a-series||  200,00    ||    ||1,4-11||ja  ||nein   ||Kabel 4m       ||LAN ||Modbus TCP || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|OpenWB   ||OpenWB series2 Standard || 1100,00  ||rowspan=&amp;quot;2&amp;quot;|    7,4|| rowspan=&amp;quot;2&amp;quot; |11 oder 22||rowspan=&amp;quot;2&amp;quot;|DC  ||  ja|| rowspan=&amp;quot;2&amp;quot; |Kabel ab 3m, optional mit Buchse (custom) || rowspan=&amp;quot;2&amp;quot; |LAN, WLAN || rowspan=&amp;quot;2&amp;quot; |REST, MQTT, Modbus via Adapter&lt;br /&gt;
Lademanagement umfangreich, siehe [[OpenWB#Komplexe Anbindung]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |max 45°C ||        RFID (opt)&lt;br /&gt;
PIN (opt, bei display)&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|OpenWB PRO            || 2100,00  &lt;br /&gt;
|-&lt;br /&gt;
|Vestel   || EVC04-E11-W-C      || colspan=&amp;quot;11&amp;quot; |Baugleich mit E.ON Drive vBox smart 11&lt;br /&gt;
|-&lt;br /&gt;
|Wallbox  || Pulsar Plus        || 700,00    ||    ||11    ||DC  ||ja, nicht MID|| || WLAN, Bluetooth|| || ||RFID, App       ||Dez.2023&lt;br /&gt;
|-&lt;br /&gt;
|         ||                    ||           ||    ||  ||  ||    ||    ||    ||        ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wallboxen]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40072</id>
		<title>Wallboxen Übersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wallboxen_%C3%9Cbersicht&amp;diff=40072"/>
		<updated>2025-03-26T14:55:01Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: neue box hizugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite dient der übersichtlichen Darstellung verschiedener Wallboxen.&lt;br /&gt;
&lt;br /&gt;
Bemerkungen: &lt;br /&gt;
* Ein * in der Spalte &amp;quot;Ladeleistung 1-phasig&amp;quot; bedeutet, dass die Phasenumschaltung automatisch erfolgt.&lt;br /&gt;
* FI = Fehlerstromschutzschalter für Gleichstrom (DC) bzw. Typ A für Wechselstrom (AC).&lt;br /&gt;
* Ein interner Zähler kann geeicht sein (nötig nach deutschem Recht für Abrechungen), &amp;quot;nur&amp;quot; MID-konform (internationaler Standard) oder irgendwas...&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Hersteller!!rowspan=&amp;quot;2&amp;quot;|Typ!!rowspan=&amp;quot;2&amp;quot;|Preis in € ca.!!colspan=&amp;quot;2&amp;quot;|Ladeleistung kW!!rowspan=&amp;quot;2&amp;quot;|FI intern!!rowspan=&amp;quot;2&amp;quot;|Zähler!!rowspan=&amp;quot;2&amp;quot;|Kabel o. Dose!!rowspan=&amp;quot;2&amp;quot;|Netzwerk!!rowspan=&amp;quot;2&amp;quot;|Anbindung FHEM!!rowspan=&amp;quot;2&amp;quot;|Betrieb!!rowspan=&amp;quot;2&amp;quot;|Zugang Kontrolle!!rowspan=&amp;quot;2&amp;quot;|Datum&lt;br /&gt;
|- &lt;br /&gt;
!1-phasig!!3-phasig&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|ABL       ||eMH1               ||  200,00       ||    || 11 ||rowspan=&amp;quot;2&amp;quot;| DC+AC ||rowspan=&amp;quot;2&amp;quot;| MID   || Kabel    ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|eMH2               ||  900,00       ||    || 22  || opt. Kabel   ||    ||        ||&lt;br /&gt;
|-&lt;br /&gt;
|cfos-emobility || Power Brain Wallbox || 549,00 || 3,68 || 11 || DC || ja || Kabel || WLAN || Modbus TCP || max 45°C || App oder RFID || Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|E.ON     || Drive vBox smart 11|| 490,00    ||3,7 ||1,4-11|| DC  ||nein    ||opt. Kabel 4,5m||WLAN und LAN, opt. RS485||Modbus TCP  ||max 55°C||RFID ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Fronius  || Wattpilot Home 11J || 770,00    ||3,68||11    || DC  ||nein    ||Dose           ||WLAN                    ||            ||max 40°C|| App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|go-e     || eCharger Gemini    ||  550,00   ||3,7*  ||11    ||DC  ||MID      ||Dose           || WLAN                   ||REST, MQTT, Modbus TCP, Modul 46_GoECharger.pm (veraltetes API V1)  ||max. 40°C||RFID,App||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Hardy Barth||eCHARGE cPµ2 PRO  || 750,00    ||    ||1,4-11||ja  ||MID extern||Kabel 5m       ||    ||        || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|Heidelberg|| Energy Control 11kW || 250,00 zuzgl. wbec Modul 100,00    ||3,68 *||11    ||DC ||ja||Kabel  5m         ||WLAN+LAN mit wbec-Modul                 || REST, MQTT, Modbus TCP  mit wbec-Modul, Lademanagement         || || Browser ||Dez. 2023 {{Link2Forum|Topic=136113|Message=1298136|LinkText=(F)}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Elli = VW || ID.Charger Connect||   800,00     ||rowspan=&amp;quot;2&amp;quot;|7,4 ||rowspan=&amp;quot;2&amp;quot;|11   ||rowspan=&amp;quot;2&amp;quot;|ja  ||nein    ||rowspan=&amp;quot;2&amp;quot;|Kabel ab 4,5m ||rowspan=&amp;quot;2&amp;quot;|WLAN, LAN, LTE, opt. RS485   ||rowspan=&amp;quot;2&amp;quot;|Software evcc auf externem Server bildet EEBUS auf MQTT ab. EEBUS-Interface für FHEM wäre wünschenswert   ||rowspan=&amp;quot;2&amp;quot;|max. 40°C||rowspan=&amp;quot;2&amp;quot;|RFID,App||rowspan=&amp;quot;2&amp;quot;|Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|ID.Charger Pro    || 1050,00     ||ja MID &lt;br /&gt;
|-&lt;br /&gt;
|KEBA     ||KeContact P30 a-series||  200,00    ||    ||1,4-11||ja  ||nein   ||Kabel 4m       ||LAN ||Modbus TCP || || ||Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|OpenWB   ||OpenWB series2 Standard || 1100,00  ||rowspan=&amp;quot;2&amp;quot;|    7,4|| rowspan=&amp;quot;2&amp;quot; |11 oder 22||rowspan=&amp;quot;2&amp;quot;|DC  ||  ja|| rowspan=&amp;quot;2&amp;quot; |Kabel ab 3m, optional mit Buchse (custom) || rowspan=&amp;quot;2&amp;quot; |LAN, WLAN || rowspan=&amp;quot;2&amp;quot; |REST, MQTT, Modbus via Adapter&lt;br /&gt;
Lademanagement umfangreich, siehe [[OpenWB#Komplexe Anbindung]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |max 45°C ||        RFID (opt)&lt;br /&gt;
PIN (opt, bei display)&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Dez. 2023&lt;br /&gt;
|-&lt;br /&gt;
|OpenWB PRO            || 2100,00  &lt;br /&gt;
|-&lt;br /&gt;
|Vestel   || EVC04-E11-W-C      || colspan=&amp;quot;11&amp;quot; |Baugleich mit E.ON Drive vBox smart 11&lt;br /&gt;
|-&lt;br /&gt;
|Wallbox  || Pulsar Plus        || 700,00    ||    ||11    ||DC  ||ja, nicht MID|| || WLAN, Bluetooth|| || ||RFID, App       ||Dez.2023&lt;br /&gt;
|-&lt;br /&gt;
|         ||                    ||           ||    ||  ||  ||    ||    ||    ||        ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wallboxen]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39988</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39988"/>
		<updated>2025-02-18T15:44:36Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Autoladen über evcc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM Systemrechner und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&lt;br /&gt;
Dieser übergibt seine Autoladungswerte über mqttPublish zurück an fhem.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator mqttPublish power|energy:topic={&amp;quot;$device/$name&amp;quot;}&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39984</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39984"/>
		<updated>2025-02-18T09:49:31Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Autoladen über evcc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&lt;br /&gt;
&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39983</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39983"/>
		<updated>2025-02-18T09:47:34Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Autoladen über evcc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39904</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39904"/>
		<updated>2025-02-02T18:23:29Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* ftui2 Widgets zur Darstellung auf einem Tablet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39903</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39903"/>
		<updated>2025-02-02T18:22:22Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Autoladen über evcc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in FHEM vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zur Aufladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Darstellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Darstellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
Es sind vier Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere readingsGroup als Übersichtstabelle, passt auch gut in ftui2 aufs Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecast]].&lt;br /&gt;
&lt;br /&gt;
Die dort beschriebene Grafik &amp;quot;Solare Vorhersage&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingestellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung können in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem FHEM System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das {{Link2Forum|Topic=119440|Message=1320903|LinkText=Widget}} selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39873</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39873"/>
		<updated>2025-01-23T15:18:40Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Autoladen über evcc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zu Auzfladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug kann über das Programm evcc gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39872</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39872"/>
		<updated>2025-01-23T15:17:03Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* mySolarStat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zu Auzfladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
Eine größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39871</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39871"/>
		<updated>2025-01-23T15:16:30Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Autarkie, Eigenverbrauch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zu Auzfladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
Zwei Dummys mit dazugehörigen Füllroutinen werden angelegt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39870</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39870"/>
		<updated>2025-01-23T15:15:59Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zu Auzfladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39869</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39869"/>
		<updated>2025-01-23T15:15:01Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* BYD_Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zu Auzfladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (Beispiel 10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39868</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39868"/>
		<updated>2025-01-23T15:13:55Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* PV_Batterie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
min SOC Winter/Sommer oder auch das Verhindern einer Sofortentladung bei Anschluss eines Fahrzeugs zu Auzfladung....&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39867</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39867"/>
		<updated>2025-01-23T15:11:08Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* GEN24_MPPT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD können zusätzlich aus dem Fronius &#039;&#039;&#039;Device String Werte&#039;&#039;&#039; ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39866</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39866"/>
		<updated>2025-01-23T15:07:27Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Vorbedingungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39865</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39865"/>
		<updated>2025-01-23T15:06:45Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Vorbedingungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;5GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39864</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39864"/>
		<updated>2025-01-23T14:33:42Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Vorbedingungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;1GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen, diese sind aber nicht für die Berechnungen notwendig.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39863</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39863"/>
		<updated>2025-01-23T14:23:48Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Vorbedingungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;1GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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  :))&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39862</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39862"/>
		<updated>2025-01-23T14:17:59Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* Und Widget SolarForecast für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;1GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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  :))&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;(Nur der der Vollständigkeit wegen)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39861</id>
		<title>Solaranlage Komplettbeispiel Fronius BYD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Solaranlage_Komplettbeispiel_Fronius_BYD&amp;diff=39861"/>
		<updated>2025-01-23T14:17:06Z</updated>

		<summary type="html">&lt;p&gt;Wds1957: /* ftui2 Widgets zur Darstellung auf einem Tablet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einbindung eines Fronius-Wechselrichters, BYD-Speicher, SolarForecast, evcc-Autoladen und FTUI 2 Darstellung in FHEM==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|Übersicht]]&lt;br /&gt;
Dies Wiki beschreibt die beispielhafte Einbindung einer Solaranlage in FHEM.&lt;br /&gt;
&lt;br /&gt;
Alle Module zur Steuerung der Komponenten sind bereits in fhem vorhanden bzw. werden gerade weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein Wechselrichter der Fa Fronius aus Österreich sowie der China-Speicher von BYD sind oft die Grundeinheiten einer Einfamilienhauslösung.&lt;br /&gt;
&lt;br /&gt;
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 (&amp;gt;10 Min) so dass diese z.B. nicht für Intergrale zur Leistungsanzeige benutzt werden können.&lt;br /&gt;
[[Datei:Screenshot 2024-09-25 191422.jpg|mini|ftui2 Übersicht]]&lt;br /&gt;
&lt;br /&gt;
=== Vorbedingungen ===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Logdaten (dBLog &amp;gt;1GB/Jahr wenn wirklich alles geloggt wird)&lt;br /&gt;
&lt;br /&gt;
Der Wechselrichter sowie der Speicher sind über Lan oder eine sehr stabile(!) Wlan Verbindung erreichbar.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Alle Daten werden über [[DbLog]] gespeichert und die Graphen daraus gewonnen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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  :))&lt;br /&gt;
&lt;br /&gt;
=== Grundstruktur ===&lt;br /&gt;
* Der Wechselrichter wird über das Modul [[fronius]] ausgelesen, dabei werden diverse [[userReadings]] erzeugt.&lt;br /&gt;
* Zusätzlich werden über [[HTTPMOD]] weitere Daten ausgelesen.&lt;br /&gt;
* Der Speicher ist über den Wechselrichter per [[ModbusAttr]] erreichbar sowie auch direkt über das Modul [[BYDBox]].&lt;br /&gt;
* Daraus ergeben sich zusätzliche Darstellungen des Batteriezustands.&lt;br /&gt;
* Bezug, Einspeisung, Erzeugung und Hausverbrauch werden über vier [[ElectricityCalculator|ElectricityCalculator]] Devices erzeugt,&lt;br /&gt;
* diese Module erzeugen auch die gesammten Statistikdaten. (Heute, Gestern, Monat, Vormonat, Jahr)&lt;br /&gt;
* Zwei weitere Dummys plus Berechnungsroutinen erhalten die Daten Eigenverbrauchsquote und Autarkiegrad.&lt;br /&gt;
* Das sehr umfangreiche [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Modul SolarForecast]] wird integriert und es können viele Graphen dargestellt werden.&lt;br /&gt;
* Eine größere [[readingsGroup]] stellt die Gesamtstatistik der Anlage dar.&lt;br /&gt;
* Das optinonale Programm EVCC kann integriert und auch gesteuert werden.&lt;br /&gt;
* Einige FTUI2 Beispiele runden die Darstellung auf einem Tablet ab.&lt;br /&gt;
&lt;br /&gt;
==Fronius_Symo in FHEM==&lt;br /&gt;
In FHEM wird das Modul fronius angelegt und darin diverse userReadings erzeugt&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod Fronius_Symo fronius 192.168.xxx.xxx&lt;br /&gt;
attr Fronius_Symo DbLogExclude .*&lt;br /&gt;
attr Fronius_Symo DbLogInclude PowerFlow_Site_P_PV,PowerFlow_Site_P_Grid,PowerFlow_Site_P_Load,Akku_Laden,Akku_Entladen,User_Consumed_E&lt;br /&gt;
attr Fronius_Symo group Fronius&lt;br /&gt;
attr Fronius_Symo icon measure_photovoltaic_inst&lt;br /&gt;
attr Fronius_Symo room Energie-Strom&lt;br /&gt;
attr Fronius_Symo stateFormat {return &amp;quot;Status: &amp;quot;.ReadingsVal($name,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;&amp;lt;br&amp;gt;\&lt;br /&gt;
PV-aktuell: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
PV Einspeisung: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Einspeisung&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Netzbezug: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Bezug&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Laden: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Laden&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Akku Entladen: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Akku_Entladen&amp;quot;,0)).&amp;quot; W&amp;lt;br&amp;gt;\&lt;br /&gt;
Ladestand Akku: &amp;quot;.sprintf(&amp;quot;%.0f&amp;quot;,ReadingsVal($name,&amp;quot;Storage_0_Controller_StateOfCharge_Relative&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
Autarkiegrad: &amp;quot;.sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_rel_Autonomy&amp;quot;,0)).&amp;quot; %&amp;lt;br&amp;gt;\&lt;br /&gt;
PV gesamt: &amp;quot;.sprintf(&amp;quot;%.2f&amp;quot;,ReadingsVal($name,&amp;quot;PowerFlow_Site_E_Total&amp;quot;,0)/1000).&amp;quot; kWh&amp;quot;;;;;}&lt;br /&gt;
attr Fronius_Symo userReadings Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Neg_Einspeisung:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Bezug:PowerFlow_Site_P_Grid.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
Akku_Laden:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;lt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)*-1:0},\&lt;br /&gt;
Akku_Entladen:PowerFlow_Site_P_Akku.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;0&amp;quot;)/3600000},\&lt;br /&gt;
User_Consumed_EN:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;PowerFlow_Site_P_PV&amp;quot;,&amp;quot;&amp;quot;)-ReadingsVal(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_Ladung_av&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Grid&amp;quot;,&amp;quot;&amp;quot;)+ReadingsVal($name,&amp;quot;PowerFlow_Site_P_Akku&amp;quot;,&amp;quot;&amp;quot;)},\&lt;br /&gt;
User_Consumed_E:PowerFlow_Site_P_PV.* {ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;)&amp;gt;0?ReadingsVal($name,&amp;quot;User_Consumed_EN&amp;quot;,&amp;quot;&amp;quot;):0},\&lt;br /&gt;
User_Consumed_Energie_C:User_Consumed_E.* integral {ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;User_Consumed_E&amp;quot;,&amp;quot;0&amp;quot;)/3600000}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GEN24_MPPT==&lt;br /&gt;
Über HTTPMOD werden aus dem Fronius Device String Werte ausgelesen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define GEN24_MPPT HTTPMOD http://192.168.xxx.xxx/components/cache/readable 30&lt;br /&gt;
attr GEN24_MPPT alignTime 00:00&lt;br /&gt;
attr GEN24_MPPT event-on-update-reading .*&lt;br /&gt;
attr GEN24_MPPT group Fronius&lt;br /&gt;
attr GEN24_MPPT icon inverter&lt;br /&gt;
attr GEN24_MPPT reading1Name MPPT1_DC_W&lt;br /&gt;
attr GEN24_MPPT reading1OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading1OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading1Regex &amp;quot;PV_POWERACTIVE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading2Name MPPT2_DC_W&lt;br /&gt;
attr GEN24_MPPT reading2OExpr {sprintf(&amp;quot;%.0f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading2OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading2Regex &amp;quot;PV_POWERACTIVE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading3Name MPPT1_DC_A&lt;br /&gt;
attr GEN24_MPPT reading3OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading3OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading3Regex &amp;quot;PV_CURRENT_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading4Name MPPT1_DC_V&lt;br /&gt;
attr GEN24_MPPT reading4OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading4OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading4Regex &amp;quot;PV_VOLTAGE_MEAN_01_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading5Name MPPT2_DC_A&lt;br /&gt;
attr GEN24_MPPT reading5OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading5OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading5Regex &amp;quot;PV_CURRENT_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT reading6Name MPPT2_DC_V&lt;br /&gt;
attr GEN24_MPPT reading6OExpr {sprintf(&amp;quot;%.3f&amp;quot;, $val)}&lt;br /&gt;
attr GEN24_MPPT reading6OMap null:0&lt;br /&gt;
attr GEN24_MPPT reading6Regex &amp;quot;PV_VOLTAGE_MEAN_02_F32&amp;quot;[ : \t]+([-+]?[a-z\d\.]+)&lt;br /&gt;
attr GEN24_MPPT room Energie-Strom&lt;br /&gt;
attr GEN24_MPPT showError 1&lt;br /&gt;
attr GEN24_MPPT stateFormat Süd: MPPT1_DC_W W, MPPT1_DC_V V, MPPT1_DC_A A West: MPPT2_DC_W W, MPPT2_DC_V V, MPPT2_DC_A A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PV_Batterie ==&lt;br /&gt;
Per [[ModbusAttr]] werden Daten der Batterie aus dem Fronius gelesen und es können so auch Einstellungen daran vorgenommen werden&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define PV_Batterie ModbusAttr 1 60 192.168.xxx.xxx:502 TCP&lt;br /&gt;
attr PV_Batterie DbLogExclude .*&lt;br /&gt;
attr PV_Batterie dev-h-combine 125&lt;br /&gt;
attr PV_Batterie dev-h-defFormat %.1f&lt;br /&gt;
attr PV_Batterie dev-h-defLen 2&lt;br /&gt;
attr PV_Batterie dev-h-defPoll 1&lt;br /&gt;
attr PV_Batterie dev-h-defUnpack f&amp;gt;&lt;br /&gt;
attr PV_Batterie devStateStyle style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
attr PV_Batterie disable 0&lt;br /&gt;
attr PV_Batterie event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200&lt;br /&gt;
attr PV_Batterie event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*charge.*:1,BatteryState&lt;br /&gt;
attr PV_Batterie group Fronius&lt;br /&gt;
attr PV_Batterie icon measure_battery_100&lt;br /&gt;
attr PV_Batterie obj-h40073-reading ACCurrentPhaseA&lt;br /&gt;
attr PV_Batterie obj-h40075-reading ACCurrentPhaseB&lt;br /&gt;
attr PV_Batterie obj-h40077-reading ACCurrentPhaseC&lt;br /&gt;
attr PV_Batterie obj-h40085-reading ACVoltagePhaseA&lt;br /&gt;
attr PV_Batterie obj-h40087-reading ACVoltagePhaseB&lt;br /&gt;
attr PV_Batterie obj-h40089-reading ACVoltagePhaseC&lt;br /&gt;
attr PV_Batterie obj-h40091-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40091-reading ACPower&lt;br /&gt;
attr PV_Batterie obj-h40093-reading ACFrequency&lt;br /&gt;
attr PV_Batterie obj-h40109-reading CabinetTemperature&lt;br /&gt;
attr PV_Batterie obj-h40117-format %s&lt;br /&gt;
attr PV_Batterie obj-h40117-len 1&lt;br /&gt;
attr PV_Batterie obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby&lt;br /&gt;
attr PV_Batterie obj-h40117-reading status&lt;br /&gt;
attr PV_Batterie obj-h40117-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40196-expr $val / 1000&lt;br /&gt;
attr PV_Batterie obj-h40196-format %.2f&lt;br /&gt;
attr PV_Batterie obj-h40196-len 4&lt;br /&gt;
attr PV_Batterie obj-h40196-reading ACActEnergy&lt;br /&gt;
attr PV_Batterie obj-h40196-unpack Q&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40267-format %d&lt;br /&gt;
attr PV_Batterie obj-h40267-group 1-1&lt;br /&gt;
attr PV_Batterie obj-h40267-len 1&lt;br /&gt;
attr PV_Batterie obj-h40267-reading DCPowerScale&lt;br /&gt;
attr PV_Batterie obj-h40267-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40284-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40284-group 1-2&lt;br /&gt;
attr PV_Batterie obj-h40284-len 1&lt;br /&gt;
attr PV_Batterie obj-h40284-reading DCPowerMPPT1&lt;br /&gt;
attr PV_Batterie obj-h40284-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40304-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40304-group 1-3&lt;br /&gt;
attr PV_Batterie obj-h40304-len 1&lt;br /&gt;
attr PV_Batterie obj-h40304-reading DCPowerMPPT2&lt;br /&gt;
attr PV_Batterie obj-h40304-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40324-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40324-group 1-4&lt;br /&gt;
attr PV_Batterie obj-h40324-len 1&lt;br /&gt;
attr PV_Batterie obj-h40324-reading BatteryChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40324-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40325-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40325-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40325-len 2&lt;br /&gt;
attr PV_Batterie obj-h40325-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40325-reading Summe_Ladung&lt;br /&gt;
attr PV_Batterie obj-h40325-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40344-expr $val * 10 ** ReadingsVal($name, &#039;DCPowerScale&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40344-group 1-5&lt;br /&gt;
attr PV_Batterie obj-h40344-len 1&lt;br /&gt;
attr PV_Batterie obj-h40344-reading BatteryDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40344-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40345-expr $val/1000000&lt;br /&gt;
attr PV_Batterie obj-h40345-ignoreExpr $val &amp;lt; 100&lt;br /&gt;
attr PV_Batterie obj-h40345-len 2&lt;br /&gt;
attr PV_Batterie obj-h40345-poll 300&lt;br /&gt;
attr PV_Batterie obj-h40345-reading Summe_Entladung&lt;br /&gt;
attr PV_Batterie obj-h40345-unpack N&lt;br /&gt;
attr PV_Batterie obj-h40355-len 1&lt;br /&gt;
attr PV_Batterie obj-h40355-reading BatConfigMaxReferenceWatt&lt;br /&gt;
attr PV_Batterie obj-h40355-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40358-format %s&lt;br /&gt;
attr PV_Batterie obj-h40358-len 1&lt;br /&gt;
attr PV_Batterie obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax&lt;br /&gt;
attr PV_Batterie obj-h40358-reading BatConfigMaxEnabled&lt;br /&gt;
attr PV_Batterie obj-h40358-set 1&lt;br /&gt;
attr PV_Batterie obj-h40358-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40360-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40360-format %.0f&lt;br /&gt;
attr PV_Batterie obj-h40360-len 1&lt;br /&gt;
attr PV_Batterie obj-h40360-poll 60&lt;br /&gt;
attr PV_Batterie obj-h40360-reading BatConfigReserve&lt;br /&gt;
attr PV_Batterie obj-h40360-set 1&lt;br /&gt;
attr PV_Batterie obj-h40360-setexpr $val * 100&lt;br /&gt;
attr PV_Batterie obj-h40360-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40361-expr $val / 100&lt;br /&gt;
attr PV_Batterie obj-h40361-len 1&lt;br /&gt;
attr PV_Batterie obj-h40361-reading BatteryChargePercent&lt;br /&gt;
attr PV_Batterie obj-h40361-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40364-format %s&lt;br /&gt;
attr PV_Batterie obj-h40364-len 1&lt;br /&gt;
attr PV_Batterie obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing&lt;br /&gt;
attr PV_Batterie obj-h40364-reading BatteryState&lt;br /&gt;
attr PV_Batterie obj-h40364-unpack n&lt;br /&gt;
attr PV_Batterie obj-h40365-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-len 1&lt;br /&gt;
attr PV_Batterie obj-h40365-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40365-reading BatConfigMaxDischargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40365-set 1&lt;br /&gt;
attr PV_Batterie obj-h40365-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40365-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie obj-h40366-expr $val / 10000 * ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-len 1&lt;br /&gt;
attr PV_Batterie obj-h40366-max ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-min -ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1)&lt;br /&gt;
attr PV_Batterie obj-h40366-reading BatConfigMaxChargeWatt&lt;br /&gt;
attr PV_Batterie obj-h40366-set 1&lt;br /&gt;
attr PV_Batterie obj-h40366-setexpr $val / ReadingsVal($name, &#039;BatConfigMaxReferenceWatt&#039;, 1) * 10000&lt;br /&gt;
attr PV_Batterie obj-h40366-unpack s&amp;gt;&lt;br /&gt;
attr PV_Batterie room Energie-Strom&lt;br /&gt;
attr PV_Batterie stateFormat Status: BatteryState &amp;lt;br/&amp;gt;\&lt;br /&gt;
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %&amp;lt;br/&amp;gt;\&lt;br /&gt;
Temp: CabinetTemperature °C&amp;lt;br/&amp;gt;\&lt;br /&gt;
Summe Entladung: Summe_Entladung kWh | Summe Ladung: Summe_Ladung kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==myBYDBox==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Achtung: IP der BYD-Box nehmen, nicht die vom Fronius !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define myBYDBox BYDBox 192.168.xxx.xxx 60&lt;br /&gt;
attr myBYDBox DbLogExclude .*&lt;br /&gt;
attr myBYDBox detail-level 1&lt;br /&gt;
attr myBYDBox disable 0&lt;br /&gt;
attr myBYDBox room Energie-Strom&lt;br /&gt;
attr myBYDBox verbose 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Runde Dartellung der BYD Speicherwerte&lt;br /&gt;
Darstellung der Batterie über ein DOIF aus myBYDBox die ui_Table dazu genutzt&lt;br /&gt;
== BYD.Box_view ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164959.jpg|mini|BYD.Box_view]]Dartellung der BYD-Box über ein DOIF&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD.Box_viev DOIF ##&lt;br /&gt;
attr BYD.Box_viev alias BYD.Box_viev&lt;br /&gt;
attr BYD.Box_viev room Energie-Strom&lt;br /&gt;
attr BYD.Box_viev uiTable {package ui_Table;;}\&lt;br /&gt;
&amp;quot;BYDB-Box&amp;quot;| ring2([myBYDBox:BatteryPower],-6000,6000,120,0,&amp;quot;W&amp;quot;,200,[(0,120,500,90,6000,60)],&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_SOC],0,100,0,120,&amp;quot;%&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,1,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryCurrent],-20,20,120,0,&amp;quot;A&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryOutVoltage],300,400,0,120,&amp;quot;V&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;,undef,undef,&amp;quot;0,,,0,1&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:Battery_1_MaxmVolt],2800,3500,120,0,&amp;quot;mV&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:Battery_1_MinmVolt],2800,3500,0,120,&amp;quot;mV&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;) |\&lt;br /&gt;
ring2([myBYDBox:BatteryMaxTemp],10,30,120,0,&amp;quot;°C&amp;quot;,200,undef,&amp;quot;1,font-weight:normal&amp;quot;,[myBYDBox:BatteryMinTemp],10,30,0,120,&amp;quot;°C&amp;quot;,undef,&amp;quot;1,font-weight:normal&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BYD_Cells ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165025.jpg|mini|BYD_Cells]]&lt;br /&gt;
Ladezustand der einzelnen Zellen einer BYD-Box über ein DOIF aus myBYDBox&lt;br /&gt;
&lt;br /&gt;
es sind 4 Zellengruppen definiert, ggf anpassen (10.2 kWh BYD)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define BYD_Cells DOIF ##&lt;br /&gt;
attr BYD_Cells alias BYD_Cells&lt;br /&gt;
attr BYD_Cells room Energie-Strom&lt;br /&gt;
attr BYD_Cells uiTable {package ui_Table;;\&lt;br /&gt;
\&lt;br /&gt;
sub floor_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::floor($zahl / 10) * 10) - 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub ceil_round {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
return(POSIX::ceil($zahl / 10) * 10) + 10;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
sub colorBYD {\&lt;br /&gt;
my ($zahl)=@_;;\&lt;br /&gt;
my $min = 2800;;\&lt;br /&gt;
my $max = 3550;;\&lt;br /&gt;
my $mid = 3000;;\&lt;br /&gt;
my $mid2 = 3400;;\&lt;br /&gt;
my $color_green = 120;;\&lt;br /&gt;
\&lt;br /&gt;
my $num = 0;;\&lt;br /&gt;
\&lt;br /&gt;
if($zahl &amp;gt;= $mid2 &amp;amp;&amp;amp; $zahl &amp;lt; $max)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = $color_green - (($zahl-$mid2)/($max-$mid2) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;lt; $mid)\&lt;br /&gt;
{\&lt;br /&gt;
	$num = (($zahl-$min)/($mid-$min) * $color_green);;\&lt;br /&gt;
}\&lt;br /&gt;
elsif($zahl &amp;gt;= $mid)\&lt;br /&gt;
{\&lt;br /&gt;
    $num = $color_green;;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
return(POSIX::ceil($num));;\&lt;br /&gt;
}\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 1&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 2&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_016],colorBYD([myBYDBox:Battery_1_VoltsperCell_016]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_017],colorBYD([myBYDBox:Battery_1_VoltsperCell_017]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_018],colorBYD([myBYDBox:Battery_1_VoltsperCell_018]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_019],colorBYD([myBYDBox:Battery_1_VoltsperCell_019]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_020],colorBYD([myBYDBox:Battery_1_VoltsperCell_020]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_021],colorBYD([myBYDBox:Battery_1_VoltsperCell_021]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_022],colorBYD([myBYDBox:Battery_1_VoltsperCell_022]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_023],colorBYD([myBYDBox:Battery_1_VoltsperCell_023]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_024],colorBYD([myBYDBox:Battery_1_VoltsperCell_024]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_025],colorBYD([myBYDBox:Battery_1_VoltsperCell_025]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_026],colorBYD([myBYDBox:Battery_1_VoltsperCell_026]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_027],colorBYD([myBYDBox:Battery_1_VoltsperCell_027]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_028],colorBYD([myBYDBox:Battery_1_VoltsperCell_028]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_029],colorBYD([myBYDBox:Battery_1_VoltsperCell_029]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_030],colorBYD([myBYDBox:Battery_1_VoltsperCell_030]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_031],colorBYD([myBYDBox:Battery_1_VoltsperCell_031]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 3&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_032],colorBYD([myBYDBox:Battery_1_VoltsperCell_032]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_033],colorBYD([myBYDBox:Battery_1_VoltsperCell_033]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_034],colorBYD([myBYDBox:Battery_1_VoltsperCell_034]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_035],colorBYD([myBYDBox:Battery_1_VoltsperCell_035]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_036],colorBYD([myBYDBox:Battery_1_VoltsperCell_036]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_037],colorBYD([myBYDBox:Battery_1_VoltsperCell_037]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_038],colorBYD([myBYDBox:Battery_1_VoltsperCell_038]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_039],colorBYD([myBYDBox:Battery_1_VoltsperCell_039]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_040],colorBYD([myBYDBox:Battery_1_VoltsperCell_040]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_041],colorBYD([myBYDBox:Battery_1_VoltsperCell_041]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_042],colorBYD([myBYDBox:Battery_1_VoltsperCell_042]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_043],colorBYD([myBYDBox:Battery_1_VoltsperCell_043]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_044],colorBYD([myBYDBox:Battery_1_VoltsperCell_044]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_045],colorBYD([myBYDBox:Battery_1_VoltsperCell_045]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_046],colorBYD([myBYDBox:Battery_1_VoltsperCell_046]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_047],colorBYD([myBYDBox:Battery_1_VoltsperCell_047]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
\&lt;br /&gt;
cylinder_bars(&amp;quot;BYD Modul 4&amp;quot;,floor_round([myBYDBox:Battery_1_MinmVolt]),ceil_round([myBYDBox:Battery_1_MaxmVolt]),&amp;quot;mV&amp;quot;,250,undef,undef,0,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_048],colorBYD([myBYDBox:Battery_1_VoltsperCell_048]),&amp;quot;0&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_049],colorBYD([myBYDBox:Battery_1_VoltsperCell_049]),&amp;quot;1&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_050],colorBYD([myBYDBox:Battery_1_VoltsperCell_050]),&amp;quot;2&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_051],colorBYD([myBYDBox:Battery_1_VoltsperCell_051]),&amp;quot;3&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_052],colorBYD([myBYDBox:Battery_1_VoltsperCell_052]),&amp;quot;4&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_053],colorBYD([myBYDBox:Battery_1_VoltsperCell_053]),&amp;quot;5&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_054],colorBYD([myBYDBox:Battery_1_VoltsperCell_054]),&amp;quot;6&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_055],colorBYD([myBYDBox:Battery_1_VoltsperCell_055]),&amp;quot;7&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_056],colorBYD([myBYDBox:Battery_1_VoltsperCell_056]),&amp;quot;8&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_057],colorBYD([myBYDBox:Battery_1_VoltsperCell_057]),&amp;quot;9&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_058],colorBYD([myBYDBox:Battery_1_VoltsperCell_058]),&amp;quot;10&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_059],colorBYD([myBYDBox:Battery_1_VoltsperCell_059]),&amp;quot;11&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_060],colorBYD([myBYDBox:Battery_1_VoltsperCell_060]),&amp;quot;12&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_061],colorBYD([myBYDBox:Battery_1_VoltsperCell_061]),&amp;quot;13&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_062],colorBYD([myBYDBox:Battery_1_VoltsperCell_062]),&amp;quot;14&amp;quot;,\&lt;br /&gt;
[myBYDBox:Battery_1_VoltsperCell_063],colorBYD([myBYDBox:Battery_1_VoltsperCell_063]),&amp;quot;15&amp;quot;) |\&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anlegen der ElectricityCalculator für Bezug, Einspeisung, Erzeugung und Hausverbrauch ==&lt;br /&gt;
vier Module ElectricityCalculator (v.Sailor) werden angelegt um die gesammten Statistikdaten&lt;br /&gt;
&lt;br /&gt;
(Heute, Gestern, Monat, Vormonat, Jahr) zu erzeugen. Das geht auch mit dem Modul Statistics.&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Hausverbrauch ElectricityCalculator Fronius_Symo:User_Consumed_Energie_C.*&lt;br /&gt;
attr Hausverbrauch BasicPricePerAnnum 0&lt;br /&gt;
attr Hausverbrauch Currency &amp;amp;#8364;;&lt;br /&gt;
attr Hausverbrauch DbLogExclude .*&lt;br /&gt;
attr Hausverbrauch DbLogInclude Fronius_Symo_User_Consumed_Energie_C_EnergyDay&lt;br /&gt;
attr Hausverbrauch DecimalPlace 3&lt;br /&gt;
attr Hausverbrauch ElectricityCounterOffset 0&lt;br /&gt;
attr Hausverbrauch ElectricityKwhPerCounts 1&lt;br /&gt;
attr Hausverbrauch ElectricityPricePerKWh 0.2567&lt;br /&gt;
attr Hausverbrauch MonthOfAnnualReading 1&lt;br /&gt;
attr Hausverbrauch MonthlyPayment 0&lt;br /&gt;
attr Hausverbrauch ReadingDestination CalculatorDevice&lt;br /&gt;
attr Hausverbrauch SiPrefixPower W&lt;br /&gt;
attr Hausverbrauch room Energie-Strom&lt;br /&gt;
attr Hausverbrauch stateFormat Fronius_Symo_User_Consumed_Energie_C_EnergyDay kWh&lt;br /&gt;
attr Hausverbrauch verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Erzeugung ElectricityCalculator Fronius_Symo:User_Produced_PV.*&lt;br /&gt;
attr Fronius_Erzeugung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Erzeugung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Erzeugung DbLogExclude .*&lt;br /&gt;
attr Fronius_Erzeugung DbLogInclude Fronius_Symo_User_Produced_PV_EnergyDay&lt;br /&gt;
attr Fronius_Erzeugung DecimalPlace 3&lt;br /&gt;
attr Fronius_Erzeugung ElectricityCounterOffset -0.148&lt;br /&gt;
attr Fronius_Erzeugung ElectricityKwhPerCounts 1&lt;br /&gt;
attr Fronius_Erzeugung ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Erzeugung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Erzeugung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Erzeugung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Erzeugung SiPrefixPower W&lt;br /&gt;
attr Fronius_Erzeugung alias Erzeugung&lt;br /&gt;
attr Fronius_Erzeugung room Energie-Strom&lt;br /&gt;
attr Fronius_Erzeugung stateFormat Fronius_Symo_User_Produced_PV_EnergyDay kWh&lt;br /&gt;
attr Fronius_Erzeugung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Einspeisung ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Minus_Absolute.*&lt;br /&gt;
attr Fronius_Einspeisung BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Einspeisung Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Einspeisung DbLogExclude .*&lt;br /&gt;
attr Fronius_Einspeisung DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_PowerCurrent,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&lt;br /&gt;
attr Fronius_Einspeisung DecimalPlace 3&lt;br /&gt;
attr Fronius_Einspeisung ElectricityCounterOffset 0&lt;br /&gt;
attr Fronius_Einspeisung ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Einspeisung ElectricityPricePerKWh 0.083&lt;br /&gt;
attr Fronius_Einspeisung MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Einspeisung MonthlyPayment 0&lt;br /&gt;
attr Fronius_Einspeisung ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Einspeisung SiPrefixPower W&lt;br /&gt;
attr Fronius_Einspeisung alias Einspeisung&lt;br /&gt;
attr Fronius_Einspeisung room Energie-Strom&lt;br /&gt;
attr Fronius_Einspeisung stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Einspeisung verbose 0&lt;br /&gt;
&lt;br /&gt;
define Fronius_Bezug ElectricityCalculator Fronius_Symo:Meter_0_EnergyReal_WAC_Plus_Absolute.*&lt;br /&gt;
attr Fronius_Bezug BasicPricePerAnnum 0&lt;br /&gt;
attr Fronius_Bezug Currency &amp;amp;#8364;;&lt;br /&gt;
attr Fronius_Bezug DbLogExclude .*&lt;br /&gt;
attr Fronius_Bezug DbLogInclude Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_PowerCurrent&lt;br /&gt;
attr Fronius_Bezug DecimalPlace 3&lt;br /&gt;
attr Fronius_Bezug ElectricityCounterOffset -36.075&lt;br /&gt;
attr Fronius_Bezug ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Fronius_Bezug ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Fronius_Bezug MonthOfAnnualReading 1&lt;br /&gt;
attr Fronius_Bezug MonthlyPayment 0&lt;br /&gt;
attr Fronius_Bezug ReadingDestination CalculatorDevice&lt;br /&gt;
attr Fronius_Bezug SiPrefixPower W&lt;br /&gt;
attr Fronius_Bezug alias Bezug&lt;br /&gt;
attr Fronius_Bezug room Energie-Strom&lt;br /&gt;
attr Fronius_Bezug stateFormat Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay kWh&lt;br /&gt;
attr Fronius_Bezug verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autarkie, Eigenverbrauch ==&lt;br /&gt;
zwei Dummys mit dazugehörigen Füllroutinen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define AutarkieQuote dummy&lt;br /&gt;
attr AutarkieQuote DbLogExclude .*&lt;br /&gt;
attr AutarkieQuote alias Autarkie&lt;br /&gt;
attr AutarkieQuote group Fronius&lt;br /&gt;
attr AutarkieQuote room Energie-Strom&lt;br /&gt;
attr AutarkieQuote stateFormat Heute&lt;br /&gt;
attr AutarkieQuote userReadings Heute {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_autarkie ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Bezug&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
define EigenverbrQuote dummy&lt;br /&gt;
attr EigenverbrQuote DbLogExclude .*&lt;br /&gt;
attr EigenverbrQuote alias Eigenverbr.&lt;br /&gt;
attr EigenverbrQuote group Fronius&lt;br /&gt;
attr EigenverbrQuote room Energie-Strom&lt;br /&gt;
attr EigenverbrQuote stateFormat Heute&lt;br /&gt;
attr EigenverbrQuote userReadings Heute {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;,0) )},\&lt;br /&gt;
Gestern {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyDayLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast&amp;quot;,0) )},\&lt;br /&gt;
Monat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonth&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth&amp;quot;,0) )},\&lt;br /&gt;
Vormonat {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyMonthLast&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast&amp;quot;,0) )},\&lt;br /&gt;
Jahr {get_eigenverbrauch ( ReadingsVal(&amp;quot;Fronius_Erzeugung&amp;quot;,&amp;quot;Fronius_Symo_User_Produced_PV_EnergyYear&amp;quot;,0) , ReadingsVal(&amp;quot;Fronius_Einspeisung&amp;quot;,&amp;quot;Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear&amp;quot;,0) )}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In die Datei 99_myUtils.pm die Berechnungsroutinen eintragen:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub get_eigenverbrauch &lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung) = @_;&lt;br /&gt;
	return(100) if ($erzeugung)&amp;lt;=0;&lt;br /&gt;
my($eigenverbrauch)=(($erzeugung)-($einspeisung))/($erzeugung)*100;&lt;br /&gt;
    return($eigenverbrauch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub get_autarkie&lt;br /&gt;
{&lt;br /&gt;
  my($erzeugung,$einspeisung,$bezug) = @_;&lt;br /&gt;
  my($autarkie)=(($erzeugung)-($einspeisung))/(($erzeugung)-($einspeisung)+($bezug))*100;&lt;br /&gt;
  return($autarkie);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zusätzliche Routinen in 99_myUtils.pm um zu kleine oder auch zu große Werte auszusondern. Das &amp;quot;verschönert&amp;quot; die Graphen; kann auch weggelassen werden. Hintergrund: Diffential/Integralberechnungen unter/übersteuern beim Start.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub reduce_max_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $max_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return($max_value) if (ReadingsVal($device, $reading,0) &amp;gt; $max_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub reduce_min_value&lt;br /&gt;
{&lt;br /&gt;
  my($device, $reading, $min_value)=@_;&lt;br /&gt;
  # Begrenzung der Ausgabewerte für Graphen&lt;br /&gt;
  my($Grenzwert) = ReadingsVal($device,$reading, 0);&lt;br /&gt;
   return(0) if (ReadingsVal($device, $reading,0) &amp;lt;= $min_value );&lt;br /&gt;
  return($Grenzwert); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Alle 15 Min erneute Berechnung der Werte (oder eine längere Zeit setzen...)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autarkie_Timer at +*00:15:00 {fhem &amp;quot;setreading AutarkieQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Autarkie_Timer DbLogExclude .*&lt;br /&gt;
attr Autarkie_Timer room Energie-Strom&lt;br /&gt;
&lt;br /&gt;
define Eigenverbr_Timer at +*00:15:00 {fhem &amp;quot;setreading EigenverbrQuote Heute 1&amp;quot;}&lt;br /&gt;
attr Eigenverbr_Timer DbLogExclude .*&lt;br /&gt;
attr Eigenverbr_Timer room Energie-Strom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mySolarStat ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164746.jpg|mini|ReadingsGroup]]&lt;br /&gt;
größere radingsGroup als Übersichtstabelle, passt auch gut in ftui2 auf`s Tablet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define mySolarStat readingsGroup &amp;lt;  &amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Monat&amp;gt;,&amp;lt;Vormonat&amp;gt;,&amp;lt;Jahr&amp;gt; \&lt;br /&gt;
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 \&lt;br /&gt;
Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyYear \&lt;br /&gt;
Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDayLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonth,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyMonthLast,Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyYear \&lt;br /&gt;
Hausverbrauch:Fronius_Symo_User_Consumed_Energie_C_EnergyDay,Fronius_Symo_User_Consumed_Energie_C_EnergyDayLast,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyMonth,Fronius_Symo_User_Consumed_Energie_C_EnergyYear\&lt;br /&gt;
Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay,C_STROM_GAS_counters.A_EnergyDayLast,C_STROM_GAS_counters.A_EnergyMonth,C_STROM_GAS_counters.A_EnergyMonthLast,C_STROM_GAS_counters.A_EnergyYear \&lt;br /&gt;
AutarkieQuote:Heute,Gestern,Monat,Vormonat,Jahr \&lt;br /&gt;
EigenverbrQuote:Heute,Gestern,Monat,Vormonat,Jahr&lt;br /&gt;
attr mySolarStat alias Solarstromstatistik kWh / %&lt;br /&gt;
attr mySolarStat room Energie-Auto,Energie-Strom,Statistik&lt;br /&gt;
attr mySolarStat valueFormat %.1f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grafiken ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 164925.jpg|mini|Erzeugung]]&lt;br /&gt;
Strombezug, Stromeinspeisung, Stromerzeugung, Stromverbrauch, Solare Vorhersage&lt;br /&gt;
hier &amp;quot;nur&amp;quot; ein Beispiel Stromerzeugung, die anderen Graphen dementsprechend anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defmod SVG_myDbLog_1 SVG myDbLog:SVG_myDbLog_1:HISTORY&lt;br /&gt;
attr SVG_myDbLog_1 alias Stromerzeugung&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieerzeugung 415,204,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 fp_Energieverbrauch 204,164,1,SVG_myDbLog_1,&lt;br /&gt;
attr SVG_myDbLog_1 label $data{currval1}::$data{currval2}::$data{currval3}::$data{currval4}::$data{currval5}::&lt;br /&gt;
attr SVG_myDbLog_1 plotReplace L1={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval1})} L2={sprintf(&amp;quot;%.1f&amp;quot;, $data{currval2})}&lt;br /&gt;
attr SVG_myDbLog_1 room Energie-Strom&lt;br /&gt;
attr SVG_myDbLog_1 title &amp;quot;Stromerzeugung&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;und dazu die .gplot Datei:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2024-10-31 18:49:58&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;TL&amp;gt; &amp;lt;L1&amp;gt; W &amp;lt;L2&amp;gt;kWh&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Momentanleistung [W]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Tageserzeugung [kWh]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog Fronius_Symo:PowerFlow_Site_P_PV:::&lt;br /&gt;
#myDbLog Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay:::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentanleistung &amp;lt;L1&amp;gt; [W]&#039; ls l3 lw 2 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tageserzeugung &amp;lt;L2&amp;gt; [kWh]&#039; ls l2fill lw 1 with lines&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SolarForecast ==&lt;br /&gt;
[[Datei:Screenshot 2024-11-15 173408.jpg|mini|SolarForecast Darstellung]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Weiteres dazu im umfangreichen [[SolarForecast - Solare Prognose (PV Erzeugung) und Verbrauchersteuerung|Wiki Solarforecas]]&amp;lt;nowiki/&amp;gt;t.&lt;br /&gt;
&lt;br /&gt;
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) &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist ein Interner consumer01 (Autoladen) eingstellt, dessen Werte nicht mit in den Forecast einbezogen werden.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Forecast SolarForecast&lt;br /&gt;
attr Forecast DbLogExclude .*&lt;br /&gt;
attr Forecast DbLogInclude LastHourPVforecast,LastHourPVreal,AllPVforecastsToEvent&lt;br /&gt;
attr Forecast affectConsForecastIdentWeekdays 0&lt;br /&gt;
attr Forecast consumer01 Autolade_Calculator type=charger power=2400 exconfc=1 icon=electric_car_icon pcurr=Auto_Ladung_av:kW etotal=C_STROM_GAS_counters.A_EnergyDay:kWh&lt;br /&gt;
attr Forecast ctrlLanguage DE&lt;br /&gt;
attr Forecast ctrlShowLink 1&lt;br /&gt;
attr Forecast ctrlStatisticReadings todayBatIn,todayBatOut,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn&lt;br /&gt;
attr Forecast event-on-change-reading .*&lt;br /&gt;
attr Forecast graphicBeam3Content gridconsumption&lt;br /&gt;
attr Forecast graphicBeam4Content consumptionForecast&lt;br /&gt;
attr Forecast graphicEnergyUnit kWh&lt;br /&gt;
attr Forecast graphicHeaderDetail all&lt;br /&gt;
attr Forecast graphicHeaderShow 1&lt;br /&gt;
attr Forecast graphicHistoryHour 9&lt;br /&gt;
attr Forecast graphicLayoutType double&lt;br /&gt;
attr Forecast room Energie-Strom&lt;br /&gt;
attr Forecast setupBatteryDev PV_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=10.26:kWh charge=BatteryChargePercent&lt;br /&gt;
attr Forecast setupInverterDev01 Fronius_Symo pv=PowerFlow_Site_P_PV:W etotal=User_Produced_PV:kWh capacity=10200&lt;br /&gt;
attr Forecast setupInverterStrings Suedseite,Westseite&lt;br /&gt;
attr Forecast setupMeterDev Fronius_Symo gcon=Bezug:W contotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh gfeedin=Einspeisung feedtotal=Meter_0_EnergyReal_WAC_Plus_Absolute:Wh conprice=powerCost:€ feedprice=0.083:€&lt;br /&gt;
attr Forecast setupRadiationAPI OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast setupStringPeak Suedseite=7.66 Westseite=2.2&lt;br /&gt;
attr Forecast setupWeatherDev1 OpenMeteoDWDEnsemble-API&lt;br /&gt;
attr Forecast verbose 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:Screenshot 2024-11-14 165143.jpg|mini|SolarForecast Diff. Grafik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede vom Forecast zur reellen Erzeugung kann in einer Grafik dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Autoladen über evcc ==&lt;br /&gt;
Integration und Steuerung der Wallbox, Wechselrichter, Batterie sowie zu ladendes Fahrzeug wird über das Programm evcc gemacht.&lt;br /&gt;
&lt;br /&gt;
Die Software evcc läuft problemlos parallel auf dem fhem System und kann über MQTT2 eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos dazu in https://evcc.io/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Clou ist hiebei ist die Hausbatterie entsprechend der evcc Möglichkeiten zu schalten und auch das Programm zu steuern&lt;br /&gt;
&lt;br /&gt;
auf welche Art das Fz geladen werden soll: Sofort, nur PV Überschuss, Minimal + PV oder Aus&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ein weiterer ElectricityCalculator für die Autoladestatistik der Wallbox.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define MQTT2_evcc1 MQTT2_DEVICE evcc1&lt;br /&gt;
attr MQTT2_evcc1 DbLogExclude .*&lt;br /&gt;
attr MQTT2_evcc1 alias Wally&lt;br /&gt;
attr MQTT2_evcc1 autocreate 1&lt;br /&gt;
attr MQTT2_evcc1 event-on-change-reading .*&lt;br /&gt;
attr MQTT2_evcc1 icon wallbox&lt;br /&gt;
attr MQTT2_evcc1 readingList evcc1:evcc/updated:.* updated\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargePower:.* loadpoints_1_chargePower\&lt;br /&gt;
evcc1:evcc/site/pvPower:.* pvPower\&lt;br /&gt;
evcc1:evcc/site/pvEnergy:.* pvEnergy\&lt;br /&gt;
evcc1:evcc/site/pv:.* pv\&lt;br /&gt;
evcc1:evcc/site/pv/1/power:.* pv_1_power\&lt;br /&gt;
evcc1:evcc/site/pv/1/energy:.* pv_1_energy\&lt;br /&gt;
evcc1:evcc/site/batteryCapacity:.* batteryCapacity\&lt;br /&gt;
evcc1:evcc/site/batterySoc:.* batterySoc\&lt;br /&gt;
evcc1:evcc/site/batteryPower:.* batteryPower\&lt;br /&gt;
evcc1:evcc/site/batteryEnergy:.* batteryEnergy\&lt;br /&gt;
evcc1:evcc/site/battery:.* battery\&lt;br /&gt;
evcc1:evcc/site/battery/1/power:.* battery_1_power\&lt;br /&gt;
evcc1:evcc/site/battery/1/energy:.* battery_1_energy\&lt;br /&gt;
evcc1:evcc/site/battery/1/soc:.* battery_1_soc\&lt;br /&gt;
evcc1:evcc/site/battery/1/capacity:.* battery_1_capacity\&lt;br /&gt;
evcc1:evcc/site/battery/1/controllable:.* battery_1_controllable\&lt;br /&gt;
evcc1:evcc/site/gridPower:.* gridPower\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridCurrents:.* gridCurrents\&lt;br /&gt;
evcc1:evcc/site/gridEnergy:.* gridEnergy\&lt;br /&gt;
evcc1:evcc/site/homePower:.* homePower\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostActive:.* loadpoints_1_smartCostActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/smartCostNextStart:.* loadpoints_1_smartCostNextStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrent:.* loadpoints_1_chargeCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionEnergy:.* loadpoints_1_sessionEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionSolarPercentage:.* loadpoints_1_sessionSolarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPricePerKWh:.* loadpoints_1_sessionPricePerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionPrice:.* loadpoints_1_sessionPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/sessionCo2PerKWh:.* loadpoints_1_sessionCo2PerKWh\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargedEnergy:.* loadpoints_1_chargedEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeDuration:.* loadpoints_1_chargeDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePriority:.* loadpoints_1_effectivePriority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanTime:.* loadpoints_1_effectivePlanTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectivePlanSoc:.* loadpoints_1_effectivePlanSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMinCurrent:.* loadpoints_1_effectiveMinCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveMaxCurrent:.* loadpoints_1_effectiveMaxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/effectiveLimitSoc:.* loadpoints_1_effectiveLimitSoc\&lt;br /&gt;
evcc1:evcc/site/greenShareHome:.* greenShareHome\&lt;br /&gt;
evcc1:evcc/site/greenShareLoadpoints:.* greenShareLoadpoints\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode:.* loadpoints_1_mode\&lt;br /&gt;
evcc1:evcc/loadpoints/1/mode/set:.* set\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/30d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/365d/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/total/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/site/statistics/total/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/total/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connectedDuration:.* loadpoints_1_connectedDuration\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvAction:.* loadpoints_1_pvAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/pvRemaining:.* loadpoints_1_pvRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleWelcomeActive:.* loadpoints_1_vehicleWelcomeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/connected:.* loadpoints_1_connected\&lt;br /&gt;
evcc1:evcc/loadpoints/1/charging:.* loadpoints_1_charging\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleSoc:.* loadpoints_1_vehicleSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingEnergy:.* loadpoints_1_chargeRemainingEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleRange:.* loadpoints_1_vehicleRange\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enabled:.* loadpoints_1_enabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedStart:.* loadpoints_1_planProjectedStart\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planProjectedEnd:.* loadpoints_1_planProjectedEnd\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planOverrun:.* loadpoints_1_planOverrun\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleOdometer:.* loadpoints_1_vehicleOdometer\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesActive:.* loadpoints_1_phasesActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleDetectionActive:.* loadpoints_1_vehicleDetectionActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleName:.* loadpoints_1_vehicleName\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleClimaterActive:.* loadpoints_1_vehicleClimaterActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleLimitSoc:.* loadpoints_1_vehicleLimitSoc\&lt;br /&gt;
evcc1:evcc/site/availableVersion:.* availableVersion\&lt;br /&gt;
evcc1:evcc/loadpoints/1/vehicleIdentity:.* loadpoints_1_vehicleIdentity\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeRemainingDuration:.* loadpoints_1_chargeRemainingDuration\&lt;br /&gt;
evcc1:evcc/status:.* status\&lt;br /&gt;
evcc1:evcc/loadpoints:.* loadpoints\&lt;br /&gt;
evcc1:evcc/vehicles:.* vehicles\&lt;br /&gt;
evcc1:evcc/site/pv/0:.* pv_0\&lt;br /&gt;
evcc1:evcc/site/battery/0:.* battery_0\&lt;br /&gt;
evcc1:evcc/site/vehicles/0:.* vehicles_0\&lt;br /&gt;
evcc1:evcc/site/pv/1:.* pv_1\&lt;br /&gt;
evcc1:evcc/site/battery/1:.* battery_1\&lt;br /&gt;
evcc1:evcc/site/vehicles/1:.* vehicles_1\&lt;br /&gt;
evcc1:evcc/site/pv/2:.* pv_2\&lt;br /&gt;
evcc1:evcc/site/battery/2:.* battery_2\&lt;br /&gt;
evcc1:evcc/site/vehicles/2:.* vehicles_2\&lt;br /&gt;
evcc1:evcc/site/pv/3:.* pv_3\&lt;br /&gt;
evcc1:evcc/site/battery/3:.* battery_3\&lt;br /&gt;
evcc1:evcc/site/vehicles/3:.* vehicles_3\&lt;br /&gt;
evcc1:evcc/site/pv/4:.* pv_4\&lt;br /&gt;
evcc1:evcc/site/battery/4:.* battery_4\&lt;br /&gt;
evcc1:evcc/site/vehicles/4:.* vehicles_4\&lt;br /&gt;
evcc1:evcc/site/pv/5:.* pv_5\&lt;br /&gt;
evcc1:evcc/site/battery/5:.* battery_5\&lt;br /&gt;
evcc1:evcc/site/vehicles/5:.* vehicles_5\&lt;br /&gt;
evcc1:evcc/site/pv/6:.* pv_6\&lt;br /&gt;
evcc1:evcc/site/battery/6:.* battery_6\&lt;br /&gt;
evcc1:evcc/site/vehicles/6:.* vehicles_6\&lt;br /&gt;
evcc1:evcc/site/pv/7:.* pv_7\&lt;br /&gt;
evcc1:evcc/site/battery/7:.* battery_7\&lt;br /&gt;
evcc1:evcc/site/vehicles/7:.* vehicles_7\&lt;br /&gt;
evcc1:evcc/site/pv/8:.* pv_8\&lt;br /&gt;
evcc1:evcc/site/battery/8:.* battery_8\&lt;br /&gt;
evcc1:evcc/site/vehicles/8:.* vehicles_8\&lt;br /&gt;
evcc1:evcc/site/pv/9:.* pv_9\&lt;br /&gt;
evcc1:evcc/site/battery/9:.* battery_9\&lt;br /&gt;
evcc1:evcc/site/vehicles/9:.* vehicles_9\&lt;br /&gt;
evcc1:evcc/site/version:.* version\&lt;br /&gt;
evcc1:evcc/site/bufferSoc:.* bufferSoc\&lt;br /&gt;
evcc1:evcc/site/bufferStartSoc:.* bufferStartSoc\&lt;br /&gt;
evcc1:evcc/site/prioritySoc:.* prioritySoc\&lt;br /&gt;
evcc1:evcc/site/siteTitle:.* siteTitle\&lt;br /&gt;
evcc1:evcc/site/gridConfigured:.* gridConfigured\&lt;br /&gt;
evcc1:evcc/site/maxGridSupplyWhileBatteryCharging:.* maxGridSupplyWhileBatteryCharging\&lt;br /&gt;
evcc1:evcc/site/batteryMode:.* batteryMode\&lt;br /&gt;
evcc1:evcc/site/batteryDischargeControl:.* batteryDischargeControl\&lt;br /&gt;
evcc1:evcc/site/residualPower:.* residualPower\&lt;br /&gt;
evcc1:evcc/site/currency:.* currency\&lt;br /&gt;
evcc1:evcc/site/smartCostType:.* smartCostType\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/title:.* title\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/icon:.* icon\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/capacity:.* capacity\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minSoc:.* minSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/limitSoc:.* limitSoc\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features:.* features\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/plans:.* plans\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesConfigured:.* loadpoints_1_phasesConfigured\&lt;br /&gt;
evcc1:evcc/loadpoints/1/minCurrent:.* loadpoints_1_minCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent:.* loadpoints_1_maxCurrent\&lt;br /&gt;
evcc1:evcc/loadpoints/1/title:.* loadpoints_1_title\&lt;br /&gt;
evcc1:evcc/loadpoints/1/priority:.* loadpoints_1_priority\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableThreshold:.* loadpoints_1_enableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableThreshold:.* loadpoints_1_disableThreshold\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhases1p3p:.* loadpoints_1_chargerPhases1p3p\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phasesEnabled:.* loadpoints_1_phasesEnabled\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseAction:.* loadpoints_1_phaseAction\&lt;br /&gt;
evcc1:evcc/loadpoints/1/phaseRemaining:.* loadpoints_1_phaseRemaining\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerPhysicalPhases:.* loadpoints_1_chargerPhysicalPhases\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureIntegratedDevice:.* loadpoints_1_chargerFeatureIntegratedDevice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerFeatureHeating:.* loadpoints_1_chargerFeatureHeating\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerIcon:.* loadpoints_1_chargerIcon\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planTime:.* loadpoints_1_planTime\&lt;br /&gt;
evcc1:evcc/loadpoints/1/planEnergy:.* loadpoints_1_planEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitSoc:.* loadpoints_1_limitSoc\&lt;br /&gt;
evcc1:evcc/loadpoints/1/limitEnergy:.* loadpoints_1_limitEnergy\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeCurrents:.* loadpoints_1_chargeCurrents\&lt;br /&gt;
evcc1:evcc/site/batteryGridChargeActive:.* batteryGridChargeActive\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeTotalImport:.* loadpoints_1_chargeTotalImport\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgCo2:.* avgCo2\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/solarPercentage:.* solarPercentage\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/chargedKWh:.* chargedKWh\&lt;br /&gt;
evcc1:evcc/site/statistics/thisYear/avgPrice:.* avgPrice\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l1:.* l1\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l2:.* l2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages/l3:.* l3\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargeVoltages:.* loadpoints_1_chargeVoltages\&lt;br /&gt;
evcc1:evcc/loadpoints/1/chargerStatusReason:.* loadpoints_1_chargerStatusReason\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/1:.* features_1\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/features/2:.* features_2\&lt;br /&gt;
evcc1:evcc/loadpoints/1/maxCurrent/set:.* set\&lt;br /&gt;
evcc1:evcc/loadpoints/1/enableDelay:.* loadpoints_1_enableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/disableDelay:.* loadpoints_1_disableDelay\&lt;br /&gt;
evcc1:evcc/loadpoints/1/batteryBoost:.* loadpoints_1_batteryBoost\&lt;br /&gt;
evcc1:evcc/site/pv/1/excessDCPower:.* pv_1_excessDCPower\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/phases:.* phases\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/minCurrent:.* minCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/maxCurrent:.* maxCurrent\&lt;br /&gt;
evcc1:evcc/vehicles/ev4/priority:.* priority\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l1:.* l1\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l2:.* l2\&lt;br /&gt;
evcc1:evcc/site/gridPowers/l3:.* l3\&lt;br /&gt;
evcc1:evcc/site/gridPowers:.* gridPowers&lt;br /&gt;
attr MQTT2_evcc1 room Energie-Auto&lt;br /&gt;
attr MQTT2_evcc1 setList ChargeMode:Now,Min+PV,PV,Stop { my %h=(Now=&amp;gt;&#039;now&#039;,&#039;Min+PV&#039;=&amp;gt;&#039;minpv&#039;,PV=&amp;gt;&#039;pv&#039;,Stop=&amp;gt;&#039;off&#039;);; qq(evcc/loadpoints/1/mode/set $h{$EVTPART1});; } \&lt;br /&gt;
PvPriority:Home,Car,FillCar { my %h=(Home=&amp;gt;&#039;95&#039;,&#039;Car&#039;=&amp;gt;&#039;35&#039;,&#039;FillCar&#039;=&amp;gt;&#039;15&#039;);; qq(evcc/site/prioritySoc/set $h{$EVTPART1});; }\&lt;br /&gt;
MaxCurrent:11,14,16,20,24,32 { qq(evcc/loadpoints/1/maxCurrent/set $EVTPART1);; }&lt;br /&gt;
attr MQTT2_evcc1 stateFormat Auto_Status | loadpoints_1_mode&lt;br /&gt;
attr MQTT2_evcc1 userReadings Auto_Status { (ReadingsVal($name,&#039;loadpoints_1_connected&#039;,&#039;&#039;) eq &#039;true&#039; ? 2 : 0) },\&lt;br /&gt;
Reichweite { (ReadingsVal($name,&#039;loadpoints_1_vehicleSoc&#039;,&#039;&#039;)*0.6) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und nun noch ein ElectricityCalculator, zur Berechnung der Strommenge:&lt;br /&gt;
&lt;br /&gt;
Die Stromwerte kommen aus einem 1-Wire Counter der einen extra Zähler über den SO Port zählt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Wallbox einen Stromzähler hat, geht das natürlich einfacher; nur die Statistikwerte dieses Zählers werden benötigt.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define Autolade_Calculator ElectricityCalculator C_STROM_GAS:counters.A.*&lt;br /&gt;
attr Autolade_Calculator BasicPricePerAnnum 132,84&lt;br /&gt;
attr Autolade_Calculator Currency €&lt;br /&gt;
attr Autolade_Calculator DbLogExclude .*&lt;br /&gt;
attr Autolade_Calculator DbLogInclude C_STROM_GAS_counters.A_EnergyDay, Auto_Ladung_av&lt;br /&gt;
attr Autolade_Calculator DecimalPlace 3&lt;br /&gt;
attr Autolade_Calculator ElectricityCounterOffset 0&lt;br /&gt;
attr Autolade_Calculator ElectricityKwhPerCounts 0.001&lt;br /&gt;
attr Autolade_Calculator ElectricityPricePerKWh 0.3305&lt;br /&gt;
attr Autolade_Calculator MonthOfAnnualReading 9&lt;br /&gt;
attr Autolade_Calculator MonthlyPayment 121&lt;br /&gt;
attr Autolade_Calculator ReadingDestination CalculatorDevice&lt;br /&gt;
attr Autolade_Calculator SiPrefixPower kW&lt;br /&gt;
attr Autolade_Calculator alias Autoladen&lt;br /&gt;
attr Autolade_Calculator room Energie-Auto,Steuerung&lt;br /&gt;
attr Autolade_Calculator stateFormat Auto Aktuell: Auto_Ladung_av kW | Heute: C_STROM_GAS_counters.A_EnergyDay kWh&amp;lt;br/&amp;gt;&lt;br /&gt;
attr Autolade_Calculator userReadings Auto_reduce { reduce_min_value (&#039;Autolade_Calculator&#039;, &#039;C_STROM_GAS_counters.A_PowerCurrent&#039;, 0.070);;},\&lt;br /&gt;
Auto_Ladung_av {movingAverage(&amp;quot;Autolade_Calculator&amp;quot;,&amp;quot;Auto_reduce&amp;quot;,60)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ftui2 Widgets zur Darstellung auf einem Tablet==&lt;br /&gt;
Widget pvvis und angepasste Daten zur Darstellung[[Datei:Solaranlage-ftui.jpg|mini|Solaranlagenübersicht]]&lt;br /&gt;
&lt;br /&gt;
Einige Werte werden intern berechnet, das [https://forum.fhem.de/index.php?topic=119440.375 Widget] selbst kann im Forum geladen werden.&lt;br /&gt;
&lt;br /&gt;
Widget&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Solaranlage und Batterie&amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;pvvis&amp;quot; data-device=&amp;quot;Fronius_Symo&amp;quot;&lt;br /&gt;
						data-get=&amp;quot;Fronius_Symo:Bezug&amp;quot;&lt;br /&gt;
						data-feed=&amp;quot;Fronius_Symo:Neg_Einspeisung&amp;quot;&lt;br /&gt;
						data-lp1=&amp;quot;MQTT2_evcc1:Auto_Status&amp;quot;&lt;br /&gt;
						data-lp1pow=&amp;quot;Autolade_Calculator:Auto_reduce&amp;quot;&lt;br /&gt;
						data-carsoc=&amp;quot;MQTT2_evcc1:loadpoints_1_vehicleSoc&amp;quot;&lt;br /&gt;
						data-carvol=&amp;quot;Autolade_Calculator:C_STROM_GAS_counters.A_EnergyDay&amp;quot;&lt;br /&gt;
						data-carrange=&amp;quot;MQTT2_evcc1:Reichweite&amp;quot;&lt;br /&gt;
						data-charge=&amp;quot;Fronius_Symo:Akku_Laden&amp;quot;&lt;br /&gt;
						data-discharge=&amp;quot;Fronius_Symo:Akku_Entladen&amp;quot;&lt;br /&gt;
						data-produce=&amp;quot;Fronius_Symo:PowerFlow_Site_P_PV&amp;quot;&lt;br /&gt;
						data-sumproduceday=&amp;quot;Fronius_Erzeugung:Fronius_Symo_User_Produced_PV_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumgridday=&amp;quot;Fronius_Bezug:Fronius_Symo_Meter_0_EnergyReal_WAC_Plus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-sumfeedday=&amp;quot;Fronius_Einspeisung:Fronius_Symo_Meter_0_EnergyReal_WAC_Minus_Absolute_EnergyDay&amp;quot;&lt;br /&gt;
						data-soc=&amp;quot;Fronius_Symo:PowerFlow_Inverters_1_SOC&amp;quot;&lt;br /&gt;
						data-chargedischarge=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Akku&amp;quot;&lt;br /&gt;
						data-pv-max=&amp;quot;10000&amp;quot;&lt;br /&gt;
						data-batt-max=&amp;quot;10240&amp;quot;&lt;br /&gt;
						data-autarky=&amp;quot;AutarkieQuote:Heute&amp;quot;&lt;br /&gt;
						data-pvhome=&amp;quot;Fronius_Symo:PowerFlow_Site_P_Load&amp;quot;&lt;br /&gt;
						data-width=&amp;quot;450&amp;quot; data-height=&amp;quot;450&amp;quot; class=&amp;quot;centered&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und [[SolarForecast FTUI Widget|Widget SolarForecast]] für die Vorschau auf ftui2, darunter die Differenz Vorhersage/reale Erzeugung: ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Code:&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;content_forecast&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		 &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;header&amp;gt;Solar Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div data-type=&amp;quot;smaportalspg&amp;quot; data-device=&amp;quot;Forecast&amp;quot; data-get=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt; &lt;br /&gt;
		&amp;lt;li data-row=&amp;quot;9&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;9&amp;quot; data-sizey=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;header&amp;gt;Vorhersage&amp;lt;/header&amp;gt;&lt;br /&gt;
			&amp;lt;div data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
			data-device=&amp;quot;Hausverbrauch&amp;quot;&lt;br /&gt;
			data-logdevice=&#039;[&amp;quot;myDbLog&amp;quot;]&#039;&lt;br /&gt;
			data-logfile=&#039;[&amp;quot;HISTORY&amp;quot;]&#039;&lt;br /&gt;
			data-columnspec=&#039;[&amp;quot;Forecast:LastHourPVreal&amp;quot;,&amp;quot;Forecast:LastHourPVforecast&amp;quot;]&#039;&lt;br /&gt;
			data-style=&#039;[&amp;quot;ftui l6fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;]&#039;&lt;br /&gt;
			data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;]&#039;&lt;br /&gt;
			data-legend=&#039;[&amp;quot;Akt.Erzeugung&amp;quot;,&amp;quot;Akt.Vorhersage&amp;quot;]&#039;&lt;br /&gt;
			data-yunit=&amp;quot;°kWh&amp;quot;&lt;br /&gt;
			data-ytext=&amp;quot;Menge&amp;quot;&lt;br /&gt;
				data-width=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-height=&amp;quot;100%&amp;quot;&lt;br /&gt;
				data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
				data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
				data-daysago_start=&amp;quot;-6H&amp;quot;&lt;br /&gt;
				data-daysago_end=&amp;quot;-22H&amp;quot;&lt;br /&gt;
				data-xticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Fortsetzung folgt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wechselrichter]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Wds1957</name></author>
	</entry>
</feed>