<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Photovoltaik Archive - Smart home Ratgeber</title>
	<atom:link href="https://homeitems.de/category/photovoltaik/feed/" rel="self" type="application/rss+xml" />
	<link>https://homeitems.de/category/photovoltaik/</link>
	<description>Einfache Lösungen für zuhause mit Smart home items</description>
	<lastBuildDate>Tue, 06 Jan 2026 11:06:42 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://homeitems.de/wp-content/uploads/2020/10/cropped-wpicon_homeitems-32x32.jpg</url>
	<title>Photovoltaik Archive - Smart home Ratgeber</title>
	<link>https://homeitems.de/category/photovoltaik/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Aus Leistung den Zählerstand berechnen</title>
		<link>https://homeitems.de/aus-leistung-den-zaehlerstand-berechnen/</link>
					<comments>https://homeitems.de/aus-leistung-den-zaehlerstand-berechnen/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Tue, 30 Dec 2025 17:23:34 +0000</pubDate>
				<category><![CDATA[influxdb]]></category>
		<category><![CDATA[Node-Red]]></category>
		<category><![CDATA[Photovoltaik]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=4107</guid>

					<description><![CDATA[<p>Viele Wechselrichter oder Messsteckdosen liefern Momentanwerte der Leistung, beispielsweise 350 W. Ich benötige jedoch häufig nur die kumulierten Werte in Form von Zählerständen, d. h. die kumulierte Energie über einen bestimmten Zeitraum in Kilowattstunden. Dazu braucht man im Prinzip nur die Leistungswerte mit einem Zeitstempel. Im folgenden Artikel beschreibe ich, wie ich  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/aus-leistung-den-zaehlerstand-berechnen/">Aus Leistung den Zählerstand berechnen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1216.8px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-one" style="--awb-margin-top:20px;--awb-margin-bottom:20px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;"><h1 class="fusion-title-heading title-heading-left fusion-responsive-typography-calculated" style="margin:0;--fontSize:32;line-height:1.1;">Photovoltaik</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-1"><p>Viele Wechselrichter oder Messsteckdosen liefern Momentanwerte der Leistung, beispielsweise 350 W. Ich benötige jedoch häufig nur die kumulierten Werte in Form von Zählerständen, d. h. die kumulierte Energie über einen bestimmten Zeitraum in Kilowattstunden.</p>
<p>Dazu braucht man im Prinzip nur die Leistungswerte mit einem Zeitstempel.</p>
<p>Im folgenden Artikel beschreibe ich, wie ich das mit Node-Red gelöst habe. Das Prinzip ist auf viele andere Geräte übertragbar, die keine Zählerstände liefern.</p>
<h2>Grundprinzip</h2>
<p>Ein Zendure-Hyper-2000-Wechselrichter liefert über die Cloud nur die erzeugte Leistung per MQTT zu einem bestimmten Zeitpunkt, nicht aber einen Zählerstand, anhand dessen ich die erzeugte Energie beispielsweise an einem Tag ablesen könnte.</p>
<p>Dabei lassen sich Energie und Zählerstand recht einfach aus der Leistung berechnen. Die dazu benötigten Werte lassen sich physikalisch wie folgt beschreiben (vereinfacht):</p>
<ul data-spread="false">
<li><strong>Leistung (Watt) </strong>= Spannung * Stromstärke (z.B. in Watt)</li>
<li><strong>Energie (kWh)</strong> = Leistung * Zeit in einem Zeitintervall (z.B. in Kilowattstunden)</li>
<li><strong>Zählerstand </strong>=  Summe der Energiewerte in Zeitintervallen (z.B. in Kilowattstunden)</li>
</ul>
<p>Eine Lampe, die eine Stunde lang eingeschaltet ist und 500 Watt benötigt, verbraucht somit eine Energie von 0,5 kWh. Wäre die Lampe dimmbar und würde sie nach einer halben Stunde auf 250 Watt gedimmt werden, würde sie in der ersten halben Stunde 0,25 kWh und in der zweiten halben Stunde 0,125 kWh, also insgesamt 0,375 kWh, verbrauchen.</p>
<p>Ein Wechselrichter produziert in relativ kurzen Zeitabständen unterschiedliche Leistungen, sodass ich die Energie für viele kleine Zeitintervalle berechnen und aufsummieren muss. Mathematisch entspricht dies einer Integralfunktion über ein Rechteck. Da jeder übermittelte Leistungswert einen Zeitstempel besitzt, können die erforderlichen Daten schnell ermittelt werden.</p>
</div><div class="fusion-text fusion-text-2"><h2>Voraussetzungen</h2>
<p>Ich realisiere die Berechnung in Node-Red und speichere die Zählerstände in eine InfluxDB-Datenbank. Grundsätzlich speichere ich nur die resultierenden Zählerstände in der Datenbank ab, indem ich die Energie des letzten Zeitraums hinzufüge.</p>
<p>Im Programm benutze ich einige Flow-Variablen, das heißt, diese speichern Werte zwischen, die beim nächsten Programmdurchlauf verwendet werden, wenn ein neuer Leistungswert geliefert wird. Diese Variablen sind:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left">Variablenname in Node-Red</th>
<th align="left">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">f_letzterZeitstempel</td>
<td align="left">In der Variablen wird der Zeitstempel der letzten Leistungsmessung gespeichert. Wenn eine neue Leistung gemessen wird, kann ich den Zeitraum für die Energieberechnung aus der Differenz der Zeitstempel ermitteln.</td>
</tr>
<tr>
<td align="left">f_letzteEnergeWh</td>
<td align="left">In dieser Variablen wird die letzte Leistung zwischengespeichert. Mein Wechselrichter liefert Wattstunden. Würden kWh geliefert, müssten diese mit 1000 multipliziert werden, um Wattstunden zu erhalten.</td>
</tr>
<tr>
<td align="left">f_LetzterZaehlerstand</td>
<td align="left">In dieser Variable speichere ich den letzten Zählerstand, sodass ich bei der Berechnung nicht jedes Mal die Datenbank abfragen muss. Eine Datenbankabfrage erfolgt nur, wenn die erste Leistung vorliegt, da der Wert sonst 0 ist.</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-alert alert custom alert-custom fusion-alert-left awb-alert-native-link-color" style="--awb-background-color:#fcf8e3;--awb-accent-color:#808080;--awb-border-size:1px;--awb-border-top-left-radius:8px;--awb-border-top-right-radius:8px;--awb-border-bottom-left-radius:8px;--awb-border-bottom-right-radius:8px;" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="fa-info-circle fas" aria-hidden="true"></i></span><span class="fusion-alert-content"><p>Zum Thema Zeitstempel und Zeit habe ich noch folgende Hinweise:</p>
<p>Ich benutze keine Zeitstempel, die mir zusammen mit der Leistung geliefert werden (z. B. von MQTT). Stattdessen nutze ich die Systemzeit zum Zeitpunkt der Datenverarbeitung durch das Programm. Alternativ kann man auch die Zeitstempel des Geräts verwenden, welches die Leistung liefert.</p>
<p>Da die meisten Systeme eine Zeitauflösung im Millisekundenbereich liefern, ergibt die Differenz der verwendeten Zeitstempel ebenfalls Millisekunden. Um diese in Stunden umzurechnen, muss man sie durch 1000 (für Sekunden) und durch 3600 (für Stunden) dividieren.</p>
<p>Bei der Übermittlung von Leistungswerten über eine Cloud (wie bei der Zendure-Lösung) ist eine Zeitverzögerung durch die Laufzeit der Informationen sehr wahrscheinlich. Da diese Laufzeiten schwanken können, ist die Genauigkeit der Energieberechnung bei einer Cloudlösung nicht so hoch wie bei einer Direktabfrage über das lokale Netzwerk. Ich habe jedoch festgestellt, dass die Abweichungen für mich nicht groß genug sind, um die Berechnung zu verändern.</p></span></div></div><div class="fusion-text fusion-text-3"><h2>Flowbeschreibung</h2>
<p>Die Verarbeitung und Speicherung der Daten erfolgt durch einen Flow, dessen Struktur wie folgt ist:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-scaled.webp"><img decoding="async" class="alignnone wp-image-4427 size-medium" src="https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-300x40.webp" alt="" width="300" height="40" srcset="https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-200x27.webp 200w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-300x40.webp 300w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-400x53.webp 400w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-600x80.webp 600w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-768x102.webp 768w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-800x107.webp 800w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-1024x137.webp 1024w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-1200x160.webp 1200w, https://homeitems.de/wp-content/uploads/2025/12/NodeRed-Flow-Zaehlerstand_berechnen-1536x205.webp 1536w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Von meinem Wechselrichter erhalte ich per MQTT-Abfrage eine Vielzahl von Werten als Input. Aus diesen extrahiere ich im nächsten Function-Node zuerst die aktuelle Leistung.</p>
<p>In der Funktion „Energie berechnen” ermittele ich die Energie im letzten Zeitintervall. Mit dem anschließenden Switch-Node teste ich, ob die Variable „f_Zaehlerstand” vorhanden ist (Bedingung für Ausgang 1: „ist nicht Null”, für Ausgang 2: „ansonsten”). Warum mache ich das?</p>
<p>Für die Zählerstandsermittlung hole ich mir initial immer den Zählerstand aus der Datenbank und rechne dann mit Flow-Variablen in Node-Red weiter. Dadurch spare ich mir bei jedem Durchlauf die Datenbankabfrage des letzten Zählerstandes, die nur Zeit kostet. Allerdings muss ich am Anfang (nach einem Neustart von Node-Red) den Zählerstand einmal in die Variable laden. Dies stelle ich mit dem Switch-Node fest, der einfach prüft, ob die Variable „f_Zaehlerstand” einen Wert größer 0 liefert. Falls nicht, führe ich eine Abfrage der InfluxDB-Datenbank mit dem „influxdb in“-Node „Letzten Zählerstand auslesen“ und dem Function Node „Letzten Zählerstand zwischenspeichern“ aus. In diesem speichere ich den letzten Zählerstand aus der Datenbankabfrage in der Variablen „f_Zaehlerstand”.</p>
<p>Liefert der Switch-Node das Ergebnis „&gt;0”, wurde eine korrekte Energieberechnung durchgeführt. Im nächsten Funktionsknoten „Zähler hochsetzen” addiere ich die beiden Variablen „f_letzterZaehlerstand” und „f_energiekWh” und erhalte somit den neuen Zählerstand, den ich im anschließenden „InfluxDB Out”-Knoten in die Datenbank schreibe.</p>
</div><div class="fusion-text fusion-text-4"><h2>Berechnung</h2>
<p>Im Folgenden ist die Vorgehensweise bei der Berechnung in dem Function-Node "Energie berechnen" kurz beschrieben:</p>
<ol>
<li>Zunächst wird die Leistung ausgelesen und ein Zeitstempel erzeugt.</li>
<li>Anschließend werden die Flow-Variablen ausgelesen und zwischengespeichert.</li>
<li>Nun erhalten die Flow-Variablen die aktuelle Leistung und den aktuellen Zeitstempel.</li>
<li>Danach wird geprüft, ob es sich um die erste Messung handelt. Dies kann mittler der Variablen f_Zaehlerstand erfolgen, die bei der ersten Messung noch nicht ermittelt ist (z. B. nach einem Neustart von Node-Red). Falls ja, wird die Funktion abgebrochen (die</li>
<li>Erläuterung erfolgt weiter hinten).</li>
<li>Anschließend wird die Zeitdifferenz zwischen dem letzten und dem aktuellen Zeitwert berechnet (auch in Stunden).</li>
<li>Schließlich kann die Energie in Wattstunden berechnet werden.</li>
<li>Das Ergebnis wird von der Funktion zurückgeliefert.</li>
</ol>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_1" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_1" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_1" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">let leistung = msg.payload; // in Watt
let jetzt = Date.now(); // aktueller Zeitstempel in Millisekunden

let letzterZeitstempel = flow.get("f_letzterZeitstempel") || 0; //letzte Auslesung
let letzteEnergieWh=flow.get("f_letzteEnergieWh") || 0; //letzter Energiewert bei Auslesung

// Ausgelesene Leistung und Zeitstempel sofort speichern
flow.set("f_letzterZeitstempel", jetzt);
flow.set("f_letzteEnergieWh", leistung);

// Falls dies die erste Messung ist, dann Abbruch der Funktion
if (!letzterZeitstempel) {
    return msg;
}

let deltaMillis = jetzt - letzterZeitstempel;
let deltaStunden = deltaMillis / (1000 * 3600); // in Stunden

let energieWh = letzteEnergieWh * deltaStunden;

let energiekWh = energieWh/1000;

flow.set("f_EnergiekWh", energiekWh);

msg.payload = energiekWh;

return msg;</textarea></div><div class="fusion-text fusion-text-5"><p>Der gesamte Ablauf kann selbstverständlich noch vereinfacht werden. Ebenso sind Erweiterungen denkbar. So habe ich beispielsweise eine kleine Absicherung eingebaut, falls die Datenbank nicht beschrieben werden kann (z. B. aufgrund eines Connection-Errors). In diesem Fall werden die Energiewerte zwischengespeichert, bis ein erneutes Schreiben möglich ist.</p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/aus-leistung-den-zaehlerstand-berechnen/">Aus Leistung den Zählerstand berechnen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/aus-leistung-den-zaehlerstand-berechnen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Zendure Batteriespeicher mit Node-Red abfragen</title>
		<link>https://homeitems.de/zendure-batteriespeicher-mit-node-red-abfragen/</link>
					<comments>https://homeitems.de/zendure-batteriespeicher-mit-node-red-abfragen/#comments</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Thu, 11 Sep 2025 12:03:31 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Node-Red]]></category>
		<category><![CDATA[Photovoltaik]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=4221</guid>

					<description><![CDATA[<p>Neben den großen Batteriespeichern für fertige PV-Anlagen setzen sich zunehmend modulare Hybridsysteme mit AC/DC- und DC/AC-Wandlern durch. Diese ermöglichen das Laden mit Gleichstrom aus den Solarpanels sowie das Laden mit überschüssigem Wechselstrom aus dem Hausnetz. Damit kann der Strom aus alten Solaranlagen, die aus der Förderung fallen, ebenso wie der Strom aus  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/zendure-batteriespeicher-mit-node-red-abfragen/">Zendure Batteriespeicher mit Node-Red abfragen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1216.8px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-one" style="--awb-margin-top:20px;--awb-margin-bottom:20px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;"><h1 class="fusion-title-heading title-heading-left fusion-responsive-typography-calculated" style="margin:0;--fontSize:32;line-height:1.1;">Photovoltaik</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-6"><p>Neben den großen Batteriespeichern für fertige PV-Anlagen setzen sich zunehmend modulare Hybridsysteme mit AC/DC- und DC/AC-Wandlern durch. Diese ermöglichen das Laden mit Gleichstrom aus den Solarpanels sowie das Laden mit überschüssigem Wechselstrom aus dem Hausnetz. Damit kann der Strom aus alten Solaranlagen, die aus der Förderung fallen, ebenso wie der Strom aus Balkonkraftwerken, der sonst meist kostenlos ins Netz geht, einfach für den Eigenverbrauch genutzt werden.</p>
<p>Ein großer und seit Jahren aktiver Hersteller ist die Firma<a href="https://www.zendure.de"> Zendure</a> aus dem Silicon Valley.</p>
<p>Für viele Speichermodelle bietet Zendure eine API an, mit der über die Hersteller-Cloud auf Daten des Speichers zugegriffen werden kann. Nach Aussagen des Herstellers funktioniert das für die folgenden Speichertypen</p>
<ul>
<li>SuperBase V (6400, 4600)</li>
<li>Satellite Battery (6400, 4600) und</li>
<li>SolarFlow (800, 800 Pro, 2400 AC, Hyper 2000) und</li>
<li>SuperBase V (6400, 4600).</li>
</ul>
<p>Wer möchte, kann die Cloud auch komplett aussperren. Dies ist beispielsweise in folgendem <a href="https://tbsch.de/post/2025-06-15-zendure-solarflow-lokal-%C3%BCber-mqtt-steuern/">Beitrag von Tobias Schulz</a> beschrieben. Dann hat man jedoch keinen Zugang zur gut gemachten App sowie zur KI-basierten Speicherverwaltung. In diesem Beitrag zeige ich wie ich einen Zendure Hyper 2000 mit Speicher über die Hersteller Cloud mit Node-Red abfrage. Zendure stellt hierzu eine kleine <a href="https://github.com/Zendure/developer-device-data-report?tab=readme-ov-file">Dokumentation</a> unter github zur Verfügung.</p>
</div><div class="fusion-text fusion-text-7"><h2>Cloud Verbindung herstellen</h2>
<p>Für die Inbetriebnahme eines Geräts (Wechselrichter und Batteriespeicher) ist das Anlegen eines Accounts in der Cloud des Herstellers und die Registrierung der Geräte erforderlich (<a href="https://www.zendure.de/account/register">Link</a>). Ebenso muss die Zendure-App installiert werden, um die Geräte anzumelden und notwendige Firmware-Updates auf Speicher und Wechselrichter einzuspielen. Darüber hinaus ermöglicht der Zugang über die App den Abruf sämtlicher Statusdaten und Statistiken der registrierten Geräte. Die App hat mittlerweile einen sehr guten Entwicklungsstand erreicht, der eine komfortable Steuerung und Auswertung der Leistungsdaten ermöglicht. Für weitere Informationen verweise ich auf die Webseite des Herstellers.</p>
<p>Nach der Registrierung und Inbetriebnahme des Hyper2000-Wechselrichters über die App kann durch Klicken auf das Zahnradsymbol oben rechts die Seriennummer des Geräts aufgerufen werden. Diese steht sowohl unter dem Gerätenamen als auch unter dem Menüpunkt „Gerätedaten“.</p>
<p>Grundsätzlich kommunizieren die Zendure Geräte über einen MQTT-Broker, der in meinem Fall in der Zendure-Cloud liegt. Für diesen brauche ich Zugangsdaten, damit ich Daten von meinen Geräten abfragen kann.  Mit der Seriennummer und dem Accountnamen kann nun ein Request an die Zendure-Cloud gesendet werden, um die Zugangsinformationen für eine sichere Abfrage aus Node-Red zu erhalten.</p>
<p>Die Abfrage kann beispielsweise mit einem cURL-Befehl durchgeführt werden. Ich verwende stattdessen eine Abfrage mit Node-Red.Hierzu benötige ich nur 3 Nodes.</p>
<p>Im inject-Node gebe ich als JSON-Objekt die Seriennummer sowie den Accountnamen wie folgt an:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_2" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_2" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_2" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">{
    "snNumber": "PL1LIKTUN208476",
    "account": "&#122;&#x65;n&#100;&#x75;&#114;&#x65;&#64;&#104;&#x6f;m&#x65;&#x69;&#116;&#x65;m&#115;&#x2e;d&#x65;"
}</textarea></div><div class="fusion-text fusion-text-8"><p>Diesen Inhalt schicke ich nun an einen HTTP-Request-Node, und zwar als POST-Befehl an die Adresse https://app.zendure.tech/eu/developer/api/apply.<br />
Für den Output verwende ich einen Debug-Node.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten.webp"><img decoding="async" class="alignnone wp-image-4231 size-medium" src="https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-300x80.webp" alt="" width="300" height="80" srcset="https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-200x54.webp 200w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-300x80.webp 300w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-400x107.webp 400w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-600x161.webp 600w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-768x206.webp 768w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-800x214.webp 800w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-1024x274.webp 1024w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten-1200x321.webp 1200w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Zugangsdaten.webp 1240w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nun erhälte ich im Node-Red Debug-Fenster einen String zurück, der wie folgt aussieht:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-3 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><label for="fusion_syntax_highlighter_3" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_3" data-readOnly="nocursor" data-lineNumbers="" data-lineWrapping="1" data-theme="default" data-mode="text/txt">"{"code":200,"success":true,"data":{"appKey":"qTIo702u","secret":"450EF4C1D34B526D8493C2E723D51AD4","mqttUrl":"mqtt-eu.zen-iot.com","port":1883},"msg":"Successful operation"}"</textarea></div><div class="fusion-text fusion-text-9"><p>Hiervon sind folgende Teile wichtig:</p>
<ul>
<li><strong>appKey</strong>: Der Accountname für die Anmeldung in der Cloud</li>
<li><strong>secret</strong>: Das Passwort für die Anmeldung  in der Cloud</li>
<li><strong>mqttUrl</strong>: Die URL des MQTT-Servers für die Datanabfrage</li>
</ul>
<p>Nun sind alle Daten vorhanden, die man für eine weitere Abfrage benötigt.</p>
<p>von dem folgende Daten wichtig sind:</p>
</div><div class="fusion-text fusion-text-10"><h2>Daten abfragen</h2>
<p>Um die Daten für das Gerät aus der Zendure-Cloud empfangen zu können, muss eine Abfrage beim MQTT-Server von Zendure erfolgen.</p>
<p>Dazu verwendet man einen MQTT-In-Node, für den man zunächst eine Verbindung mit den folgenden Daten einrichtet:</p>
<ul>
<li>Name: beliebig</li>
<li>Server: mqtt-eu.zen-iot.com</li>
<li>Port: 1883</li>
<li>Connect automatically</li>
<li>Protokoll: MQTT V3.1.1</li>
<li>Bereinigte Sitzung verwenden</li>
</ul>
<p>Unter dem Reiter „Sicherheit” werden folgende Daten angegeben:</p>
<ul>
<li>Benutzername: appkey (Der Accountname, den man von Zendure erhalten hat</li>
<li>Passwort: secret (Das Passwort, was man von Zendure erhalten hat)</li>
</ul>
</div><div class="fusion-alert alert custom alert-custom fusion-alert-left awb-alert-native-link-color" style="--awb-background-color:#fcf8e3;--awb-accent-color:#808080;--awb-border-size:1px;--awb-border-top-left-radius:8px;--awb-border-top-right-radius:8px;--awb-border-bottom-left-radius:8px;--awb-border-bottom-right-radius:8px;" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="fa-exclamation-triangle fas" aria-hidden="true"></i></span><span class="fusion-alert-content">Bitte aufpassen, dass man hier aus Versehen nicht die Anmeldedaten für den Zendure Cloudzugang eingibt</span></div></div><div class="fusion-text fusion-text-11"><p>Im MQTT-IN Node werden folgende Eigenschaften eingetragen:</p>
<ul>
<li>Action: Subscribe to single topic</li>
<li>Topic: <em>appkey</em>/#       <em>(z.B. rtP7zHkq/#)</em></li>
<li>QoS: 2</li>
<li>Ausgang: Auto-Erkennung (parsed JSON Objekt, string oder buffer)</li>
</ul>
</div><div class="fusion-alert alert custom alert-custom fusion-alert-left awb-alert-native-link-color" style="--awb-background-color:#fcf8e3;--awb-accent-color:#808080;--awb-border-size:1px;--awb-border-top-left-radius:8px;--awb-border-top-right-radius:8px;--awb-border-bottom-left-radius:8px;--awb-border-bottom-right-radius:8px;" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="fa-exclamation-triangle fas" aria-hidden="true"></i></span><span class="fusion-alert-content">Bitte denkt unbedingt daran, für das Topic den appkey gefolgt von einem „/#“ anzugeben, damit alle Werte von einem Gerät gesendet werden. Ohne den Slash und den Hashtag liefert die Angabe des appkey keine Ergebnisse.</span></div></div><div class="fusion-text fusion-text-12"><p>Nun sollte der Empfang funktionieren und die ersten Wert per payload-Objekt geliefert werden.</p>
<h2>Daten auswerten</h2>
<p>Beim Auswerten der empfangenen Daten stellt man schnell fest, dass immer nur Daten empfangen werden, die sich seit dem letzten Mal verändert haben. Damit enthält die payload immer eine unbestimmte Zahl von Einträgen mit jeweils unterschiedlichen Attributen.  Ebenso kann es durch die Cloudabfrage auch einen Zeitverzug ergeben (der für mich aber irrelevant ist). Ich habe festgestellt, dass für eine Hyper2000 neben der Seriennummer folgende Daten übertragen werden:</p>
<ul>
<li>remainOutTime ( Remaining discharge time in min = verbleibende Entladezeit)</li>
<li>packInputPower (pack input power)</li>
<li>electricLevel (Device battery percentage = Ladezustand der Batterie)</li>
<li>solarPower1 (Solar1 Input Power in Watt = Leistung aus erstem Wechselrichter)</li>
<li>solarPower2 (Solar2 Input Power in Watt = Leistung aus zweiten Wechselrichter)</li>
<li>outputHomePower (output to home power in Watt = abgebene Leistung ins Hausnetz)</li>
<li>hyperTmp (hyperTmp</li>
<li>solarInputPower (solarInputPower = Leistung die gerade durch solarPanels in Speicher geladen wird)</li>
<li>packState (packState = Gibt an, ob in Batterie gerade nichts passiert (0), geladen(1) oder entladen(2) wird)</li>
</ul>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p>Das sind weniger Informationen, als in der App angeboten werden, so dass man ansonsten auf die Cloud-freie Lösung umschwenken muss.</p>
<p>Um die Daten auszuwerten kann man nun mit einer ganz einfache Lösung starten:</p>
</div>
<p>Für jeden Datentyp extrahiert jeweils ein Function Node die Daten aus der payload. Die kann wie folgt aussehen:</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-4 > .CodeMirror, .fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-4 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_4" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_4" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_4" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">msg.payload = msg.payload.remainOutTime
return msg;</textarea></div><div class="fusion-text fusion-text-13"><p>Da es möglich ist, dass der Wert gar nicht geliefert wurde, muss man in einem anschließenden Switch-Node prüfen, ob das Ergebnis NULL ist. Anschließend kann der Wert weiterverarbeitet werden (z. B. in InfluxDB etc.)</p>
<p><a href="https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung.webp"><img decoding="async" class="alignnone wp-image-4251 size-medium" src="https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-300x106.webp" alt="" width="300" height="106" srcset="https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-200x71.webp 200w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-300x106.webp 300w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-400x141.webp 400w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-600x212.webp 600w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-768x271.webp 768w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-800x282.webp 800w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-1024x361.webp 1024w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung-1200x423.webp 1200w, https://homeitems.de/wp-content/uploads/2025/09/Node-Red-Zendure-Datenauswertung.webp 1356w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Dies ist eine sehr einfache Lösung für die Auswertung, die natürlich durch eine effizientere Lösung mit weniger Redundanz ersetzt werden kann.</p>
<p>Interessant ist, dass Zendure keinen Zähler übergibt, der die Menge des von einer direkt angeschlossenen Photovoltaikanlage erzeugten Stroms in kWh misst. In der App ist ein solcher Zähler allerdings vorhanden. Zendure liefert stattdessen die jeweilige Leistung der PV-Module. In einem nächsten Beitrag zeige ich, wie sich aus der Leistung trotzdem Zählerstände berechnen lassen.</p>
</div><div class="fusion-alert alert error alert-danger fusion-alert-center awb-alert-native-link-color" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="awb-icon-exclamation-triangle" aria-hidden="true"></i></span><span class="fusion-alert-content"><p>Beim <strong>Solarflow 2400AC</strong> scheint die beschriebene Vorgehensweise mit dem MQTT-Server nicht zu funktionieren. Hier hat Martin stattdessen folgende Lösung gefunden:</p>
<div class="plain_line"><em>Wenn man im Browser: http://ipAdressedesdesSolarflow/properties/report eingibt, z.B.</em></div>
<div class="plain_line"></div>
<div class="plain_line"><em>http://192.168.177.96/properties/report</em></div>
<div class="plain_line"></div>
<div class="plain_line"><em>bekommt man einen schönen Datenstring auf den Bildschirm. </em><em>Diesen hole ich in Node-Red über einen http Request Node und "GET" rein und parse in einem Function-Node z.B. nach der Batteriekapazität, die heisst da "socLevel". Dessen Wert kann ich im Function-Node einem Ausgang zuführen. Das hilft mir für meine Anwendung weiter und der Weg über MQTT ist für mich dann überflüssig.</em></div>
<div class="plain_line"></div></span></div></div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/zendure-batteriespeicher-mit-node-red-abfragen/">Zendure Batteriespeicher mit Node-Red abfragen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/zendure-batteriespeicher-mit-node-red-abfragen/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Stromüberschuss mit Klimaanlage nutzen</title>
		<link>https://homeitems.de/stromueberschuss-mit-klimaanlage-nutzen/</link>
					<comments>https://homeitems.de/stromueberschuss-mit-klimaanlage-nutzen/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Mon, 17 Jun 2024 13:06:26 +0000</pubDate>
				<category><![CDATA[Node-Red]]></category>
		<category><![CDATA[Photovoltaik]]></category>
		<category><![CDATA[Tado]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=3165</guid>

					<description><![CDATA[<p>Mit einer Photovoltaikanlage wird vor allem in den warmen Monaten mehr Strom erzeugt als gespeichert oder verbraucht werden kann. Da es sich kaum lohnt, den Strom zu verkaufen, ist es besser, ihn zu verbrauchen. Was liegt da näher, als die Räume im Sommer mit Klimaanlagen kostenlos zu kühlen. Der folgende Beitrag zeigt,  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/stromueberschuss-mit-klimaanlage-nutzen/">Stromüberschuss mit Klimaanlage nutzen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1216.8px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-3 fusion-sep-none fusion-title-text fusion-title-size-one" style="--awb-margin-top:20px;--awb-margin-bottom:20px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;"><h1 class="fusion-title-heading title-heading-left fusion-responsive-typography-calculated" style="margin:0;--fontSize:32;line-height:1.1;">Photovoltaik</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-14"><p>Mit einer Photovoltaikanlage wird vor allem in den warmen Monaten mehr Strom erzeugt als gespeichert oder verbraucht werden kann. Da es sich kaum lohnt, den Strom zu verkaufen, ist es besser, ihn zu verbrauchen. Was liegt da näher, als die Räume im Sommer mit Klimaanlagen kostenlos zu kühlen. Der folgende Beitrag zeigt, wie man mit einfachen Mitteln eine Split-Klimaanlage in das Smarthome-System Node-Red integrieren und den Stromüberschuss zum Kühlen nutzen kann.</p>
<h2>Klimaanlage extern steuern</h2>
<p>Die grundsätzliche Frage ist, wie eine Klimaanlage in ein Smarthome-System eingebunden werden kann. Sofern der Hersteller keine spezielle Schnittstelle zur Verfügung stellt (z.B. Modbus, etc.), ist die einfachste Möglichkeit, die Infrarotschnittstelle zur Fernbedienung des Klimagerätes zu nutzen. Die meisten Geräte verfügen über eine Infrarot-Fernbedienung, die bestimmte Infrarotsignale aussendet, um verschiedene Befehle an die Klimaanlage zu senden. Einige Fernbedienungen sind sogar bidirektional, d.h. sie können auch Statusinformationen von der Klimaanlage empfangen. In diesem Beispiel ist eine unidirektionale Fernbedienung ausreichend. Benötigt wird also ein Gerät, das  Signal der Klimaanlagen-Fernbedienung senden und über eine API von außen gesteuert werden kann. Mittlerweile gibt es eine Vielzahl von Geräten, die jedoch nicht mit allen Klimaanlagen funktionieren. Dazu habe ich einige Versuche unternommen.</p>
<h3>1. Versuch</h3>
<p>Als erstes Gerät habe ich den <a href="https://de.elv.com/elv-smart-home-bausatz-ir-sender-elv-sh-irs8-powered-by-homematic-ip-158404?fs=553251246">ELV Smart Home Bausatz IR-Sender ELV-SH-IRS8</a> getestet, da dieser direkt von einer HMIP-CCU angelernt werden kann. Leider stellte sich im Nachhinein heraus, dass meine Mitsubishi Heavy Industries Anlage nicht unterstützt wird. Außerdem muss man etwas Löterfahrung mitbringen, um das Gerät zusammenbauen zu können. Insgesamt ist die Auswahl der unterstützten Klimagerätehersteller überschaubar.</p>
<h3>2. Versuch</h3>
<p>Dann habe ich das <a href="https://www.amazon.de/Broadlink-Universal-Fernbedienung-Infrarot-Controller-Kompatibel/dp/B07DPHG521">BroadLink RM mini 3</a> getestet. Das Gerät heißt nicht nur so, sondern ist auch mini. Allerdings ist die Einrichtung ziemlich kompliziert. Um das WLAN einzurichten und die Klimaanlage anlernen zu können musste ich mehrere Apps benutzen, die teilweise nicht gut gepflegt waren. Die Anleitung selbst war nicht optimal und die blaue Status-LED am Gerät kaum erkennbar. Auch brach die WLAN-Verbindung zwischendurch immer wieder ab. Positiv war, dass eine große Anzahl von Klimaanlagen unterstützt wird. Allerdings habe ich keine brauchbare Node-Palette für Node-Red gefunden, mit der man das Gerät mit Node-Red steuern kann.</p>
<h3>3. tado bietet die bisher beste Lösung</h3>
<p>Schließlich bin ich bei tado gelandet. Diese bieten die <a href="https://www.tado.com/de-de/smarte-klimaanlagen-steuerung">Smarte Klimaanlagen Steuerung V3+</a> an. Um zu prüfen, ob mein Gerät überhaupt unterstützt wird, habe ich vor dem Kauf den Support (gelber Button unten rechts auf der Webseite) kontaktiert, da tado keine Kompatibilitätsliste veröffentlicht hat. Innerhalb kurzer Zeit hat jemand meine Angaben zur Fernbedienung und zum Hersteller der Klimaanlage aufgenommen und nach einem Tag hatte ich die Rückmeldung, dass meine Anlage unterstützt wird.  Die tado Lösung ist eine Cloud-Lösung, d.h. man muss auf jeden Fall einen Account anlegen und eine App installieren. Für Node-Red gibt es  zusätzliche Nodes, um dieses und andere Geräte steuern zu können.</p>
<p>tado legt großen Wert auf Design und einfache Bedienung, was man schon beim Auspacken merkt. Die Einrichtung ist komplett menügeführt und für den  Notfall gibt es auf der Webseite eine Anleitung. Folgende Tipps kann ich noch geben:</p>
<ul>
<li>Sowohl tado als auch broadlink wollen das Gerät mit dem 2,4 GHz WLAN verbinden. Wer sowohl ein 2,4 GHz als auch ein 5 GHz LAN mit dem gleichen Namen nutzt, dem empfehle ich das 5GHz LAN kurzzeitig zu deaktivieren, damit der Verbindungsaufbau fehlerfrei funktioniert.</li>
<li>Bei tado wollte mein Gerät nach Aufbau der WLAN-Verbindung ein Update installieren. Dies funktionierte aber nicht, das Gerät blieb ständig im Installationsmodus. Nach mehreren Stunden kontaktierte ich erneut die tado-Hotline (gelber Button), die aus der Ferne die Installation starten konnte.</li>
</ul>
<p>Danach konnte das Klimagerät mit einem einfachen Tastendruck auf der Fernbedienung identifiziert und automatisch eingerichtet werden. So sollte es sein!</p>
<p>Wer weitere einfach einzurichtende Verbindungen für Klimaanlage kennt, kann diese gerne hier posten!</p>
</div><div class="fusion-text fusion-text-15"><h2>Stromverbrauch auslesen</h2>
<p>Um die Klimaanlage nur bei Stromüberschuss einschalten zu können benötige ich zunächst den jeweils aktuellen Stand meines  Saldos aus Stromverbrauch und Stromerzeugung am Zähler. Wie das geht, habe ich in dem folgenden Artikel beschrieben: <a href="https://homeitems.de/smartmeter-mit-tasmota-auslesen/">SmartMeter mit Tasmota auslesen</a>. Dieser Wert wird automatisch an den MQTT-Broker gesendet. Diesen rufe ich mit Node-Red bei jeder Änderung ab und speichere ihn zwischen. Wie man die Daten von einem MQTT-Server abruft habe ich im folgenden Beitrag <a href="https://homeitems.de/mit-node-red-influxdb-und-grafana-daten-auf-einem-synology-nas-sammeln-und-visualisieren-teil-2-2/">Mit Node-Red, InfluxDB und Grafana Daten auf einem Synology NAS sammeln und visualisieren (Teil 2/2)</a> im Kapitel <strong>MQTT-Nachrichten mit Node-Red auslesen und in influxDB speichern </strong>beschrieben.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern.webp"><img decoding="async" class="alignnone wp-image-3179 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-300x40.webp" alt="" width="300" height="40" srcset="https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-66x9.webp 66w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-177x24.webp 177w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-200x27.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-300x40.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-320x43.webp 320w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-400x53.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-460x61.webp 460w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-540x72.webp 540w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-600x80.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-669x89.webp 669w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-700x93.webp 700w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-768x102.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-800x107.webp 800w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-940x125.webp 940w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-1024x137.webp 1024w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern-1200x160.webp 1200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed-Flow-SVerbrauch-speichern.webp 1229w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Der Code im Function-Node sieht wie folgt aus:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-5 > .CodeMirror, .fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-5 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_5" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_5" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_5" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/x-sh">msg.payload = msg.payload.MT175.Power_curr
flow.set('f_stromverbrauch', msg.payload);
return msg;</textarea></div><div class="fusion-text fusion-text-16"><p>Ich extrahiere den relevanten Wert aus dem MQTT-Objekt und speichere ihn in einer Flow-Variablen. So kann ich auf diesen Wert zugreifen, ohne den MQTT-Broker erneut zu fragen. Das Ergebnis gebe ich zur Kontrolle mit einem Debug-Node im Debug-Fenster aus.</p>
<h2>Anmelden bei tado</h2>
<p>Um das tado-Gerät von Node-Red aus steuern zu können, installiere ich die Erweiterung <a href="https://flows.nodered.org/node/node-red-contrib-tado-client">node-red-contrib-tado-client</a>. Ich rufe den neu installierten Tado-Node auf und gebe als erstes unter "Tado Config" meine Anmeldedaten für die Tado Cloud ein, da ich dort zuvor mein Gerät angelegt habe.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/tado-config-node.webp"><img decoding="async" class="alignnone wp-image-3185 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-300x193.webp" alt="" width="300" height="193" srcset="https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-66x42.webp 66w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-177x114.webp 177w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-200x129.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-300x193.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-320x206.webp 320w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-400x257.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-460x296.webp 460w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-540x347.webp 540w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-600x386.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-669x430.webp 669w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-700x450.webp 700w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node-768x494.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/tado-config-node.webp 792w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2>Wichtige Ergänzung (Juni 2025)</h2>
<p>Tado hat mittlerweile die Authentifizierung geändert und nutzt nun das OAuth2-Verfahren, um einen Zugriff auf die Rest-API zu ermöglichen. Nähere Infos dazu findet man unter:</p>
<p><a href="https://support.tado.com/en/articles/8565472-how-do-i-authenticate-to-access-the-rest-api">https://support.tado.com/en/articles/8565472-how-do-i-authenticate-to-access-the-rest-api</a></p>
<p><a href="https://datatracker.ietf.org/doc/html/rfc6749#page-48">https://datatracker.ietf.org/doc/html/rfc6749#page-48</a></p>
<p>Wer die alte Version der Library noch installiert hat, muss mindestens auf die Version V1.1.4 updaten. Ich empfehle ebenfalls das Lesen der Library-Informationen bzgl. weiterer Neuerungen.</p>
<p>Zur Nutzung sollte der Beispielflow <a href="https://github.com/mattdavis90/node-red-contrib-tado-client/blob/master/examples/tado.json">tado.json</a> von der Library aus GitHub in NodeRed geladen werden, denn hier befinden sich auch weitere Erläuterungen zur Einrichtung.</p>
<p>Auf der Beispiel-Flow-Seite befinden sich nun drei Bereiche:  "Authentication Flow", "Persistent Auth" und "Testing".</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library.webp"><img decoding="async" class="alignnone wp-image-3941 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-300x153.webp" alt="" width="300" height="153" srcset="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-200x102.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-300x153.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-400x204.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-600x306.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-768x391.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-800x408.webp 800w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-1024x522.webp 1024w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-1200x612.webp 1200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado_Library-1536x783.webp 1536w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Durch Drücken des „Inject“-Nodes im Authentication Flow wird ein Debug Output erzeugt. In diesem steht ein Link. Diesen ruft man in einen beliebigen Browser auf. Wenn man noch nicht bei tado angemeldet ist, dann gibt man zuerst seinen Login-Namen und sein Passwort an. Anschließend bestätigt man nur den angezeigten Code und tado meldet „Erfolgreich verbunden“. Nun steht im Debug-Fenster in NodeRed der "Refresh_Token", mit dem man die weiteren API-Aufrufe vornehmen kann (hierzu empfehle ich, das nächste Kapitel zu lesen).</p>
<p>Ein Refresh-Token ist allerdings maximal nur 300 Sekunden gültig, so dass man dann einen Neuen erzeugen müsste (dies wird z.B. auch durch einen Deploy in NodeRed ausgelöst, da der Token dann aus dem Speicher gelöscht wird.</p>
<p>Damit das nicht passiert und der Token erhalten bleibt bzw. automatisch erneuert wird hat der Autor der Library den Beispiel-Flow „Persistent Auth“ beigefügt.</p>
<p>Zur Nutzung werden die Nodes in dem Flow zuerst aktiviert. Anstelle des Nodes „unknown: tado-token“ wird der tado-Node eingetragen und verbunden. In diesem wird für die Eigenschaft "Tado-config" nur die Auswahl "Tado-config" getroffen. Für alle weiteren Abfragen verwende ich ab jetzt nur noch "Tado-config" und nicht mehr "Tado-Cloud" (die folgenden Bilder wurden noch mit der alten Authentifizierungsmethode erstellt).</p>
<p>Parallel dazu wird im NodeRed Data-Verzeichnis eine Datei /data/tado.json angelegt und dort im JSON-Format der letzte verwendete Refresh-Token eingetragen.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication.webp"><img decoding="async" class="alignnone wp-image-3942 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-300x50.webp" alt="" width="300" height="50" srcset="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-200x33.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-300x50.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-400x67.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-600x100.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-768x129.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-800x134.webp 800w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-1024x172.webp 1024w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-1200x201.webp 1200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication-1536x257.webp 1536w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_tado_Persistent_Authentication.webp 1612w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Anschließend sollte der Flow ohne Probleme laufen. Dieser erneuert nun automatsch den Refresh-Token. Laut Angaben des Autors der Library wird der Refresh-Token maximal innerhalb von 30 Tage automatisch erneuert, wenn man nicht auf die API zugreift, bevor man einmal manuell eine Erneuerung auslösen muss. Alternativ reicht es aus, dass innerhalb von 30 Tagen einmal ein API-Zugriff erfolgt. Ich vermute, dass dies auch eine Sicherheitseinstellung von tado ist.</p>
<h2>tado Parameter auslesen</h2>
<p>Für die weiteren API-Aufrufe benötige ich meine Home ID. Diese erhalte ich, wenn ich den API-Aufruf "Get the current user" auswähle und den resultierenden Aufruf mit einem Inject-Node vorne und einem Debug Node hinten ergänze und ausführe. Als Ergebnis erhalte ich im Debug-Fenster ein Datenobjekt, das wie folgt aussieht:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1.webp"><img decoding="async" class="alignnone wp-image-3187 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-300x246.webp" alt="" width="300" height="246" srcset="https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-66x54.webp 66w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-177x145.webp 177w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-200x164.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-300x246.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-320x262.webp 320w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-400x328.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-460x377.webp 460w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-540x443.webp 540w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-600x492.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-669x548.webp 669w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-700x574.webp 700w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-768x629.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-800x656.webp 800w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-940x770.webp 940w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1-1024x839.webp 1024w, https://homeitems.de/wp-content/uploads/2024/06/tado_Datenobjekt1.webp 1048w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Hier brauche ich nun die Zahl, die unter "homes" im Array[0] hinter "id" steht. 2359335 ist meine Home-ID, die ich für die weiteren API-Aufrufe benötige (das Objekt lässt sich durch Klicken auf die Pfeile auf- und zuklappen).</p>
<p>Zusätzlich frage ich noch die Zone ab, in der sich mein Gerät im Tado-Universum befindet (zur Erklärung von Zonen sollte man sich bei tado informieren).</p>
<p>Dazu öffne ich einen neuen tado-Node, wähle diesmal die API-Funktion "Get all zones" und gebe die eben gefundene Home-ID an. Mit Inject und Debug-Node erhalte ich wieder ein Datenobjekt, indem ich durch Aufklappen der Datenstruktur irgendwo den Namen meiner Klimaanlage finde, den ich beim Setup angegeben habe. Die Nummer hinter dem Feldnamen id des Objekteintrags darüber ist die Nummer, die ich brauche.</p>
<p>Wenn ihr nur eine Klimaanlage eingerichtet habt, werdet ihr höchstwahrscheinlich die Nummer "1" als Ergebnis erhalten.</p>
<p>Jetzt habe ich alles zusammen, um die Klimaanlage mit Node-Red ein- und auszuschalten.</p>
<h2>Klimaanlage mit Node-Red steuern</h2>
<p>Um die Klimaanlage einzuschalten, ruft man wieder einen Tado-Node auf und wählt die Funktion "Set a Zone's Overlay". Mit den folgenden Parametern schalte ich die Klimaanlage bei mir ein:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten.webp"><img decoding="async" class="alignnone wp-image-3189 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-199x300.webp" alt="" width="199" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-66x100.webp 66w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-177x267.webp 177w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-199x300.webp 199w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-200x302.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-300x453.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-320x483.webp 320w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-400x604.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-460x695.webp 460w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-540x815.webp 540w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-600x906.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-669x1010.webp 669w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-678x1024.webp 678w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-700x1057.webp 700w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten-768x1160.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/NodeRed_Tado-Klimaanlage_einschalten.webp 798w" sizes="(max-width: 199px) 100vw, 199px" /></a></p>
<p><em>Hinweis: Da ich keine bidirektional sendende Fernbedienung habe, kann Tado nicht erkennen, ob ich die Klimaanlage manuell ein- oder ausgeschaltet habe. Ich kann die von Tado eingeschaltete Anlage zwar mit der Fernbedienung ausschalten, Tado hat intern aber immer noch den Status "ein" gespeichert. Auch die "Auto-"Funktion beim AC-Mode funktioniert bei mi nicht.  Ich gehe ebenfalls davon aus, dass dazu eine bidirektionale Fernbedienung erforderlich ist, die auch Temperaturwerte übermittelt. </em></p>
<p>Analog schalte ich die Klimaanlage aus, wenn ich in die Eigenschaft des Schalters "Heating On/Off" einfach auf "Off" stelle.</p>
</div><div class="fusion-text fusion-text-17"><p>Nun kann ich ein einfaches "Programm" in Node-Red erstellen, das in der folgenden Grafik zu sehen ist:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern.webp"><img decoding="async" class="alignnone wp-image-3191 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-300x91.webp" alt="" width="300" height="91" srcset="https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-66x20.webp 66w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-177x54.webp 177w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-200x61.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-300x91.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-320x97.webp 320w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-400x121.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-460x139.webp 460w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-540x164.webp 540w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-600x182.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-669x203.webp 669w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-700x212.webp 700w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-768x233.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-800x243.webp 800w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-940x285.webp 940w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-1024x310.webp 1024w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-1200x364.webp 1200w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern-1536x466.webp 1536w, https://homeitems.de/wp-content/uploads/2024/06/Node-Red-Flow-Klimaanlage-steuern.webp 1801w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Oben habe ich bereits beschrieben, dass ich den aktuellen Zählerstand immer vom MQTT-Server hole und in einer Variablen zwischenspeichere. Nun füge ich nur noch einen Inject-Node hinzu und stelle dort ein, dass dieser in der Zeit von 8:00 bis 20:00 Uhr an jedem Tage und zu jeder Viertelstunde ein Ereignis auslöst.</p>
<p>Dann prüfe ich im nächsten Switch-Knoten, ob mein aktueller Stromverbrauch (Saldo) einen Überschuss von 400 Watt und mehr aufweist oder darunter liegt. Im ersten Fall schalte ich die Klimaanlage mit dem Tado-Node ein oder mit dem anderen Tado-Node aus. Der Inhalt des switch-Knotens sieht wie folgt aus:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage.webp"><img decoding="async" class="alignnone wp-image-3192 size-medium" src="https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-300x208.webp" alt="" width="300" height="208" srcset="https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-66x46.webp 66w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-177x123.webp 177w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-200x139.webp 200w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-300x208.webp 300w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-320x222.webp 320w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-400x277.webp 400w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-460x319.webp 460w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-540x374.webp 540w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-600x416.webp 600w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-669x464.webp 669w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-700x485.webp 700w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage-768x532.webp 768w, https://homeitems.de/wp-content/uploads/2024/06/Switch-Node-Klimaanlage.webp 782w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Dieses einfache Beispiel kann nun leicht erweitert werden, indem man weitere Klimaanlagen hinzufügt und z.B. die Temperatur vorher kontrolliert.</p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/stromueberschuss-mit-klimaanlage-nutzen/">Stromüberschuss mit Klimaanlage nutzen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/stromueberschuss-mit-klimaanlage-nutzen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lohnt sich ein Batteriespeicher</title>
		<link>https://homeitems.de/lohnt-sich-ein-batteriespeicher/</link>
					<comments>https://homeitems.de/lohnt-sich-ein-batteriespeicher/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sun, 18 Feb 2024 17:39:49 +0000</pubDate>
				<category><![CDATA[Grafana]]></category>
		<category><![CDATA[influxdb]]></category>
		<category><![CDATA[Photovoltaik]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=2580</guid>

					<description><![CDATA[<p>Die Nutzung von Solaranlagen und Balkonkraftwerken führt ja immer wieder zu der Frage, ob und wenn ja ab wann sich ein Batteriespeicher lohnt und in welcher Größe dieser sinnvoll ist. Im Netz und auf Youtube bekommt man dazu bereits eine Vielzahl von Informationen, aber manche Aussagen scheinen mir dann doch zu weit  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/lohnt-sich-ein-batteriespeicher/">Lohnt sich ein Batteriespeicher</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1216.8px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-4 fusion-sep-none fusion-title-text fusion-title-size-one" style="--awb-margin-top:20px;--awb-margin-bottom:20px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;"><h1 class="fusion-title-heading title-heading-left fusion-responsive-typography-calculated" style="margin:0;--fontSize:32;line-height:1.1;">Photovoltaik</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-18"><p>Die Nutzung von Solaranlagen und Balkonkraftwerken führt ja immer wieder zu der Frage, ob und wenn ja ab wann sich ein Batteriespeicher lohnt und in welcher Größe dieser sinnvoll ist. Im Netz und auf Youtube bekommt man dazu bereits eine Vielzahl von Informationen, aber manche Aussagen scheinen mir dann doch zu weit hergeholt. Auch die viele Formeln zur Berechnung lösen bei mir teilweise Misstrauen aus. In meinem Beitrag zeige ich, wie man mit InfluxDB und Grafana interaktiv verschiedene Szenarien durchspielen kann.</p>
<h2>Aufgabenstellung</h2>
<p>Für meine Berechnungsgrundlage verwende ich die protokollierten Ertragsdaten einer PV-Anlage (ohne Batteriespeicher) mit einer Größe von ca. 3,2 kWp. Diese Daten liegen in einer InfluxDB 2.x-Datenbank vor und die folgenden Auswertungen mache ich ausschließlich mit Grafana. Eine wesentliche, aber mir unbekannte Größe ist der nächtliche Verbrauch, denn den möchte ich natürlich mit einem Überschuss tagsüber abdecken. Der Gedanke, über mehrere Tage mit einem Speicher "überleben" zu können, ist zwar nett, erfordert aber einen sehr großen Speicher (mehrfacher Tagesbedarf) und somit einer großen Anzahl von PV-Modulen, die aus meiner Sicht auf privaten Hausdächern kaum unterzubringen ist.</p>
<p>Für meine Berechnungen möchte ich die Größe des Speichers und den Strompreis interaktiv verändern können, ebenso wie die Größe der Anlage, die den Strom produziert.</p>
<p>Als Ergebnisse meines Beispiels sollen</p>
<ul>
<li>der durchschnittlichen Nachtverbrauch</li>
<li>die Menge des gesparten Stroms</li>
<li>der ersparte Wert in Euro</li>
</ul>
<p>ermittelt werden und der Betrachtungszeitraum variabel sein.</p>
</div><div class="fusion-text fusion-text-19"><h2>Grafana Variabeln nutzen</h2>
<p>Für jede Größe eines Stromspeichern könnte ich eine eigene Visualisierung erstellen, aber das ist mir zu umständlich. Ich möchte gerne per Dropdown-Menü die Größe eines möglichen Stromspeichern auswählen und Grafana soll mir anzeigen, was das bringt.</p>
<p>Variabeln werden immer für ein Dashboard angelegt, so dass man diese auch für mehrere Visualisierungen auf dem Dashboard nutzen kann.</p>
<p>Um Variabeln nutzen zu können, muss man das Konfigurationsmenü für das Dashboard auswählen. Dies befindet sich in der oberen Leiste mit dem Dashboard-Name auf der rechten Seite hinter dem Zahnradsymbol.</p>
<p><img decoding="async" class="alignnone wp-image-2708 size-full" src="https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings.webp" alt="" width="1400" height="51" srcset="https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-200x7.webp 200w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-300x11.webp 300w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-400x15.webp 400w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-600x22.webp 600w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-768x28.webp 768w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-800x29.webp 800w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-1024x37.webp 1024w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings-1200x44.webp 1200w, https://homeitems.de/wp-content/uploads/2024/01/Grafana-Dashboard-Settings.webp 1400w" sizes="(max-width: 1400px) 100vw, 1400px" /></p>
<p>Unter "Settings" findet man nun auf der linken Seite den Menüpunkt "Variables".</p>
<p>Nach dem Drücken auf "New Variable" kann man die Variableneigenschaften näher definieren. Da ich eigene Werte zur Auswahl vorgeben möchte wähle ich unter "Variable type" "Custom" aus. Die Variable möchte ich unter dem <strong>Name</strong> "sinterval" in Grafana-Abfragen benutzen. Auf dem Dashboard soll als <strong>Label  </strong>"Speichergröße" erscheinen. Und unter <strong>Custom options</strong> trage ich durch Komma getrennt die Werte ein, die in meiner Dropdownliste erscheinen sollen. Sobald man diese Werte eingetragen hat sieht man die Ergebnisse bereits am untern Bildschirmrand.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings.webp"><img decoding="async" class="alignnone wp-image-2711 size-medium" src="https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-267x300.webp" alt="" width="267" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-200x225.webp 200w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-267x300.webp 267w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-400x449.webp 400w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-600x674.webp 600w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-768x862.webp 768w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-800x898.webp 800w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-912x1024.webp 912w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-1200x1347.webp 1200w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings-1368x1536.webp 1368w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Variable-Settings.webp 1661w" sizes="(max-width: 267px) 100vw, 267px" /></a></p>
<p>Auf diese Weise lege ich drei Variablen an, die Erste für die Größe eines möglichen Batteriespeichers ("sbattery"), die Zweite zur Skalierung der Anlagengröße (und damit des Überschusses ("sscaler") und eine Dritte für den aktuellen Strompreis ("sprice").</p>
<p>Nach dem Anlegen der Variabeln sollte man nicht vergessen, das Dashboard zu speichern.</p>
</div><div class="fusion-text fusion-text-20"><h2>Durchschnittlichen Nachtverbrauch bestimmen</h2>
<p>Ein Batteriespeicher dient primär dazu, Überschuss zu speichern und den Strom dann zu liefern, wenn die Sonne keinen Strom produziert (z.B. nachts). Daher verwendet man häufig die in der Dunkelheit benötigte Menge Strom als Maßstab, um die Mindestgröße eines Batteriespeichers zu bestimmen.</p>
<p>Ich schaue mir also für einen bestimmten Zeitraum an, welche Menge an Strom ich nachts benötige und ermittele hieraus den Mittelwert. Dabei gehe ich davon aus, dass der Zeitraum von Frühjahr (März) bis Herbst (November) ideal für eine Betrachtung ist, da eine Photovoltaikanlage zwischen November und März kaum soviel Leistung erzeugt, dass man Überschüsse erwirtschaftet, die man speichern kann. Als Uhrzeit für den nächtlichen Zeitraum habe ich 21:00 Uhr abends bis 5:00 Uhr morgen definiert.</p>
<p>Die Abfrage für diese Mittelwert sieht wie folgt aus:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-6 > .CodeMirror, .fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-6 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_6" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_6" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_6" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">import "date"
import "timezone"

option location =timezone.location(name: "Europe/Berlin")

from(bucket: "homeitems")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "Verbrauch.Strom.Zaehlerstand")
  |> filter(fn: (r) => r["_field"] == "value")
  |> difference()
  |> hourSelection(start: 21, stop: 5,)
  |> aggregateWindow(every: 1d, fn: sum, createEmpty: false)</textarea></div><div class="fusion-text fusion-text-21"><p>Die "date"-Bibliothek braucht man für die hourSelection()-Funktion. Mittels der "timezone"-Bibliothek und der "location"-option löst man die Übersetzung der  UTC-Zeitangabe in die deutsche Zeit auf (im Winter UTC+1 sonst UTC+2 Stunden)</p>
<p>Den Verbrauch ermittele ich aus der Differenz der nächtlichen Zählerstände des Smartmeters. Wie man das macht findet ihr in folgendem Beitrag: <a href="https://homeitems.de/smartmeter-mit-tasmota-auslesen/">SmartMeter mit Tasmota auslesen</a></p>
<p>Nun schränke ich die ermittelten Differenzen auf die von mir ausgewählte tägliche Zeitspannen mittels der hourSelection()-Funktion ein. Dies erfolgt vor der Aggregat()-Funktion, mit der ich die Summe für die Zählerdifferenzen für jeweils einen Tag bilde.</p>
<p>Und abschließend wird mit der Mean()-Funktion der Mittelwert über alle Nachtverbräuche gebildet. Aus der Auswertung ergibt sich, dass im von mir gewählten Zeitraum (vom März bis Ende Oktober) durchschnittliche 4,1 kWh in der Uhrzeit von 21:00 Uhr bis 5:00 Uhr morgens verbraucht wurden.</p>
</div><div class="fusion-text fusion-text-22"><h2>Einsparung eines Batteriespeichers berechnen</h2>
<p>Im nächsten Schritt berechne ich mittels Grafana, wieviel kWh ich durch einen Batteriespeicher einsparen würde.  Die Werte kann man ebenfalls an einem Smartmeter auslesen, wenn dieser auch die ausgehende Leistung messen kann, die an den Netzbetreiber geliefert wird. Diese Zweirichtungsmessung bieten mittlerweile fast alle Geräte an, wenn man diese Daten für eine Protokollierung freigeschaltet hat.</p>
<p>Der Code hierzu lautet wie folgt:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-7 > .CodeMirror, .fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-7 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_7" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_7" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_7" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">import "date"
import "timezone"

option location =timezone.location(name: "Europe/Berlin")

from(bucket: "homeitems")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "Erzeugung.Strom.Zaehlerstand")
  |> filter(fn: (r) => r["_field"] == "value")
  |> difference()
  |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start", createEmpty: false)
  |> map (fn: (r) => ({r with _value: 
     if r._value > ${sbattery} then 
        // Maximal die Kapazität des Batteriespeichers als Überschuss verwendbar
        float(v:${sbattery})
     else 
        // Überschuss komplett verwendbar, da kleiner als Kapzität des Batteriespeichers
     	r._value
  }))
  
  |> map(fn: (r) => ({ r with _value: r._value  *float(v:${sscaler})}))

|> sum(column: "_value")  </textarea></div><div class="fusion-text fusion-text-23"><p>Wie bei der Ermittlung der Verbräuche bilde ich die Differenzen der Zählerstände und addiere diese für jeden Tag mit der Aggregat()-Funktion.</p>
<p>Anschließend bearbeite ich die Werte mit der map()-Funktion und modifiziere die ermittelten Werte wie folgt:</p>
<p>Die Größe des Batteriespeichers gebe ich (wie oben beschrieben) durch den Wert in der Variabeln  "sinteraval" vor. Daraus ergibt sich, dass ich für alle Tage</p>
<ul>
<li>an denen der Überschuss größer als die Größe des Batteriespeichers in der Variabeln "sinterval" ist nur die Größe des Batteriespeichers</li>
<li>an denen der Überschuss kleiner der Größe des Batteriespeichers in der Variabeln "sinterval" ist den Überschuss des Tages</li>
</ul>
<p>weiterverwenden kann.</p>
<p>Bei der Berechnung muss ich den Wert in der Variabeln "sinterval" in einen float()-Typ umwandeln, da die Multiplikation sonst zum Typkonflikt führt.</p>
<p>Und mit der folgenden map()-Funktion baue ich noch einen Skalierungsfaktor ein, der "simuliert", wie groß mein Ertrag sein könnte, wenn die Anlage (und damit auch der Ertrag) um den Faktor "sscaler" größer wäre. Auch hier erfolgt eine Typumwandlung.</p>
<p>Ich habe noch ein zweites Panel erstellt, mit dem ich den Wert der Ersparnis in Euro ermittele. Dazu benutze ich die dritte Variable "sprice". Durch Austauschen der letzten Zeile in der vorigen Abfrage kann man diesen Wert in einem neuen Panel wie folgt ermitteln:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-8 > .CodeMirror, .fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-8 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_8" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_8" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_8" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/x-sh">|> map(fn: (r) => ({ r with _value: r._value  *float(v:${sscaler})* float(v:${sprice})}))</textarea></div><div class="fusion-text fusion-text-24"><h2>Meine Auswertung</h2>
<p>Das Ergebnis der drei Panels sieht wie folgt aus:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung.webp"><img decoding="async" class="alignnone wp-image-2722 size-medium" src="https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-300x115.webp" alt="" width="300" height="115" srcset="https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-200x77.webp 200w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-300x115.webp 300w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-400x154.webp 400w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-600x231.webp 600w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-768x295.webp 768w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-800x307.webp 800w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-1024x394.webp 1024w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung-1200x461.webp 1200w, https://homeitems.de/wp-content/uploads/2024/02/Grafana-Batteriespeicherauswertung.webp 1400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Diese Daten liefern mit nun Anhaltspunkte für ein Kosten-/Nutzenverhältnis eines Batteriespeichers.  Dabei erhalte ich zuerst die Angabe, dass mein  Batteriespeicher größer ca. 5 kWh groß sein sollte, um den nächtlichen Verbrauch durch den Speicher abdecken zu können. Bei einem Preis von 40  Cent pro kWh würde ich ca. 228 € pro Jahr sparen. Gehe ich davon aus, dass ein Batteriespeicher mind. 2500 Euro kostet würde sich dieser rechnerich nach ca. 11 Jahren amortisieren. Ich gehe bei der Lebensdauer eines Batteriespeichers pessimistisch von 10 Jahren aus, so dass sich dies für den vorliegenden Fall wirtschaftlich nicht lohnen würde, sofern die Strompreise nicht durch die Decke gehen.</p>
<p>Würde ich die Anlage um 1,6 kWp erweitern, dann würde sich ein Batteriespeicher bereits nach 7,5 Jahren lohnen. Den passenden Wechslerichter habe ich hier noch nicht berücksichtigt.</p>
<p>Auch wenn das Modell  Faktoren außen vor lässt, bekommt man ein Gefühlt für die Wirtschaftlichkeit und ich kann die Angebote für diesen Fall jetzt deutlich besser einordnen. Viel Spaß bei den eigenen Berechnungen und Erweiterungen.</p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/lohnt-sich-ein-batteriespeicher/">Lohnt sich ein Batteriespeicher</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/lohnt-sich-ein-batteriespeicher/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
