<?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>Hardware Archive - Smart home Ratgeber</title>
	<atom:link href="https://homeitems.de/category/hardware/feed/" rel="self" type="application/rss+xml" />
	<link>https://homeitems.de/category/hardware/</link>
	<description>Einfache Lösungen für zuhause mit Smart home items</description>
	<lastBuildDate>Mon, 29 Dec 2025 15:31:43 +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>Hardware Archive - Smart home Ratgeber</title>
	<link>https://homeitems.de/category/hardware/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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-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;">Hardware</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>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-2"><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-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">{
    "snNumber": "PL1LIKTUN208476",
    "account": "&#122;&#x65;n&#x64;&#x75;&#114;&#x65;&#64;&#x68;&#x6f;&#109;&#x65;i&#x74;&#x65;&#109;&#x73;&#46;&#x64;&#x65;"
}</textarea></div><div class="fusion-text fusion-text-3"><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-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}</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;"><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="" 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-4"><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-5"><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-6"><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-7"><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-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</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;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_3" style="font-size:14px;">Copy to Clipboard</span></div><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="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-8"><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>CO2-Sensor für Smarthome selber bauen</title>
		<link>https://homeitems.de/co2-sensor-selber-bauen-und-auswerten/</link>
					<comments>https://homeitems.de/co2-sensor-selber-bauen-und-auswerten/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sun, 10 Nov 2024 18:57:59 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[Tasmota]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=3367</guid>

					<description><![CDATA[<p>Nicht erst seit Corona ist die Messung des CO2-Gehaltes in der Raumluft eine Möglichkeit festzustellen, ob genügend Frischluft (oder Sauerstoff) in einem Raum vorhanden ist. Ich war teilweise überrascht, wie teuer manche Sensorlösungen verkauft werden und habe mich daher entschlossen, einen eigenen Sensor zu bauen, der sich auch einfach in mein Smarthome  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/co2-sensor-selber-bauen-und-auswerten/">CO2-Sensor für Smarthome selber bauen</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;">Hardware</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-9"><p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">N</span>icht erst seit Corona ist die Messung des CO2-Gehaltes in der Raumluft eine Möglichkeit festzustellen, ob genügend <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Frischluft</span> (oder Sauerstoff) in einem Raum vorhanden ist. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Ich <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">war</span> teilweise überrascht, wie teuer manche Sensorlösungen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">verkauft</span> werden und habe mich daher <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">entschlossen</span>, einen eigenen Sensor <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zu</span> bauen, der <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">sich</span> auch <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">einfach</span> in mein Smarthome <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">integrieren lässt</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Mit einer kleinen LED möchte ich anzeigen, ob ein vorgegebener Grenzwert überschritten wird. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body">D</span>ie <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Daten des Sensors</span> sollen zyklisch <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">an</span> mein Smarthome-System <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gesendet</span> werden.</span></p>
<h2>Benötigte Hardware</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Als Sensor habe ich mich für einen CO2-<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Infrarotsensor</span> MH-Z 19C entschieden. </span><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Der</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Sensor</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">sendet</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">seine</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Informationen</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">über</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">eine</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">UART-Schnittstelle</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">(</span><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Tx</span><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">,</span><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Rx-Kanal</span><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">),</span></span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">besitzt</span> <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">zusätzlich</span></span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">einen</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Temperatursensor</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">und</span> <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">benötigt</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">eine</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Versorgungsspannung</span></span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">von</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">5</span><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">V</span><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">.</span> </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Mit diesen Anschlussmöglichkeiten eignet er sich hervorragend für <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">den</span> Anschluss an einen Wemos D1-Mini (8266 Chip), den ich <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">schon</span> in vielen meiner Projekte verwendet habe. Über <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">diese</span> kann ich dann auch alle Daten an einen MQTT-Broker <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">senden</span> und <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">so</span> die Daten einfach in meinem Smarthome-System <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">weiterverarbeiten</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Den Sensor gibt es in verschiedenen Ausführungen, wobei ich mich für die Version mit den <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Stiftleisten</span> entschieden habe<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">, um den Anschluss zu vereinfachen</span>. </span></p>
<p><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">A</span></span>uf dem D1 Mini verwende ich die Tasmota Version 14.3.0. Um den CO2-<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Infrarotsensor</span> MH-Z 19C <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">an den</span> D1 Mini anschließen und auslesen zu können, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">benötige</span> ich die <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Tasmota Sensor</span> Version (alternativ kann man <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">den MH-Z19C</span> auch einfach in der Standardversion aktivieren und spart dadurch viel <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Speicherplatz</span> auf dem D1 Mini).</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Ich erstelle meine Programme <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gerne</span> mit der <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Skriptsprache</span> von Tasmota. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Da es <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">diese Funktion</span> in den <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">vorkompilierten</span> Versionen von Tasmota nicht gibt, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">kompiliere</span> ich mir <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">selbst</span> eine Version und flashe den D1-Mini <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">damit</span>. </span><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Dies</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">geht</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">sehr</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">einfach</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">und</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">ist</span> <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">im</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">folgenden</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">Artikel</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">von</span></span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">mir</span> <span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">beschrieben</span><span class="--l --r hover:dark:text-blue-next-300 hover:text-blue-next-500 lmt__words_highlight">:</span></span><a href="https://homeitems.de/tasmota-scripting-aktivieren/">Tasmota Scripting aktivieren</a></p>
<p>Ich empfehle, in der Konfiguration des D1-Mini neben dem WLAN auch direkt einen MQTT-Server anzugeben.</p>
<h2>CO2-Sensor anschließen</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">D</span>er Anschluss des CO2-Sensors ist recht einfach. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Als Ergänzung habe ich noch eine rote LED hinzugefügt, die <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">bei Überschreitung eines definierten Grenzwertes aufleuchten soll</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body">D</span>ie gesamte Schaltung ist in <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">der folgenden Abbildung</span> dargestellt:</span></p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung.webp"><img fetchpriority="high" decoding="async" class="alignnone wp-image-3382 size-medium" src="https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-300x241.webp" alt="" width="300" height="241" srcset="https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-177x142.webp 177w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-200x161.webp 200w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-300x241.webp 300w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-400x322.webp 400w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-600x483.webp 600w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-768x618.webp 768w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-800x644.webp 800w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-1024x824.webp 1024w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung-1200x966.webp 1200w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensorschaltung.webp 1435w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">N</span>un muss der Sensor in Tasmota <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">konfiguriert</span> werden. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Dies <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">geschieht</span> über die serielle Schnittstelle mit TX (Sendekanal) und RX (Empfangskanal<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">).</span></span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Unter Configure / Configuration Module wähle ich als Module Type "Generic(18)" (steht <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">meistens</span> ganz unten in der Liste) und speichere das. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body">E</span>rst <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dann</span> kann ich <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">alle</span> meine GPIOs sehen und konfigurieren.</span></p>
<ul>
<li>GPIO1 (TX) wird auf "MHZ Tx (60)" (Sendekanal) gesetzt.</li>
<li>GPIO3 (RX) wird auf "MHZ Rx (61)" (Empfangskanal) gesetzt.</li>
</ul>
<p><em>(Tipp: In der langen Liste stehen die beiden Werte im unteren Dritttel).</em></p>
<p>Um die LED einschalten zu können, wird noch ein Relay benötigt, dass wie folgt definiert werden muss:</p>
<ul>
<li>GPIO5 (D1) wird auf "Relay 1" gesetzt.</li>
</ul>
<p><a href="https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration.webp"><img decoding="async" class="alignnone wp-image-3383 size-medium" src="https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-153x300.webp" alt="" width="153" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-153x300.webp 153w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-200x393.webp 200w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-400x786.webp 400w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-521x1024.webp 521w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-600x1180.webp 600w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-768x1510.webp 768w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-781x1536.webp 781w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration-800x1573.webp 800w, https://homeitems.de/wp-content/uploads/2024/11/CO2-Sensor-Tasmota-Configuration.webp 826w" sizes="(max-width: 153px) 100vw, 153px" /></a></p>
<p>Nach dem Speichern und dem automatischen Neustart sollten Temperatur und CO2 Gehalt wie folgt auf der Tasmota Oberfläche erscheinen:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor.jpg"><img decoding="async" class="alignnone wp-image-3384 size-medium" src="https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor-194x300.jpg" alt="" width="194" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor-194x300.jpg 194w, https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor-200x309.jpg 200w, https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor-400x618.jpg 400w, https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor-600x927.jpg 600w, https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor-663x1024.jpg 663w, https://homeitems.de/wp-content/uploads/2024/11/Tasmota-CO2-Sensor.jpg 759w" sizes="(max-width: 194px) 100vw, 194px" /></a></p>
<p><em>Hinweis: Aufgrund der Vorheizzeit kann es bis zu einer Minute dauern, bevor der Sensor Werte liefert!</em></p>
<h2>Script für LED-Warnung erstellen</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">N</span>atürlich möchte ich, dass eine rote Lampe <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">aufleuchtet</span>, wenn ein Grenzwert überschritten wird. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body">B</span>ezüglich</span> möglicher Grenzwerte verweise ich auf <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">den</span> folgenden</span> <a href="https://www.cik-solutions.com/branchen-anwendungen/co2-im-innenraum/">Artikel</a>. <span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">D</span>azu muss ich den Sensorwert auslesen und in einem kleinen Programm das <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Relais</span> immer dann einschalten, wenn der Grenzwert überschritten wird. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Bei</span> dieser Abfrage prüfe ich, ob die LED schon <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">an</span> ist, damit ich nicht <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">ständig</span> den Einschaltbefehl sende. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body">N</span>atürlich schalte ich die LED <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">wieder</span> aus, wenn der Grenzwert unterschritten wird.</span></p>
</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">>D
tmp1=0
>T
tmp1=MHZ19B#CarbonDioxide
if tmp1>1000 and pwr[1]==0
then =>power1 1
endif
if tmp1<=1000 and pwr[1]==1 
then =>power1 0
endif</textarea></div><div class="fusion-text fusion-text-10"><p>Die Daten können nun vom MQTT-Broker "abgeholt"  und beispielsweise in InfluxDB gespeichert und ausgewertet werden. Wie das geht habe ich in folgenden Artikeln beschrieben</p>
<h2>Möglicher Anpassungen</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Ich versorge den Sensor <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">über ein</span> USB-Kabel mit Strom. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Theoretisch könnte man dies auch mit einer <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Akkulösung</span> realisieren. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Dazu</span> wird dann der Deepsleep-Modus verwendet</span> (siehe hierzu <a href="https://homeitems.de/fuellstandssensor-zisterne-fuer-hmip-selber-bauen/">Füllstandssensor (Zisterne) für HMIP selber bauen</a>). <span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_highlight"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar">W</span>ichtig ist, dass der Sensor eine Vorlaufzeit <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zur</span> Temperaturanpassung benötigt. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Daher sollte der Sensor frühestens nach 1 Minute wieder in <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">den DeepSleep-Modus gehen</span>.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Anstelle</span> einer LED <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">könnte man</span> auch eine mehrfarbige LED <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">verwenden</span>, die den jeweiligen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Zustand</span> anzeigt.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextLengthModification_body sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r word_anchor_highlight__with_key_writeTextLengthModification_body">I</span>nzwischen</span> habe <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">ich</span> den Sensor auf eine Platine gelötet und mir mit dem Drucker <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">ein passendes Gehäuse</span> gedruckt.</span></p>
</div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--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></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/co2-sensor-selber-bauen-und-auswerten/">CO2-Sensor für Smarthome selber bauen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/co2-sensor-selber-bauen-und-auswerten/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bodenfeuchtemessung über weite Strecken mit LoRaWAN</title>
		<link>https://homeitems.de/bodenfeuchtemessung-ueber-weite-strecken-mit-lorawan/</link>
					<comments>https://homeitems.de/bodenfeuchtemessung-ueber-weite-strecken-mit-lorawan/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sun, 28 Jul 2024 14:09:58 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[LoRaWAN]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[Smart Garden]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=3204</guid>

					<description><![CDATA[<p>Eine Bodenfeuchtemessung im Garten ist hilfreich, wenn man Pflanzen oder Rasen rechtzeitig und ausreichend bewässern möchte. Wenn man einen größeren Garten oder z.B. einen Schrebergarten hat, ist oft kein WLAN an allen Stellen verfügbar. Als Alternative bietet sich dann das Versenden der Sensordaten über LoRaWAN an. Die Vorteile habe ich bereits in  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/bodenfeuchtemessung-ueber-weite-strecken-mit-lorawan/">Bodenfeuchtemessung über weite Strecken mit LoRaWAN</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-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-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;">Hardware</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-11"><p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Eine Bodenfeuchtemessung im Garten ist <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">hilfreich</span>, wenn man Pflanzen oder Rasen rechtzeitig und ausreichend <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">bewässern</span> möchte. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Wenn</span> man einen größeren Garten oder z.B. einen Schrebergarten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">hat,</span> ist <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">oft</span> kein WLAN an allen Stellen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">verfügbar</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Als Alternative bietet sich <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dann das Versenden der</span> Sensordaten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">über LoRaWAN an</span>.</span> Die Vorteile habe ich bereits in meinem Beitrag <a href="https://homeitems.de/lorawan/">LoRaWAN mit eigenem Gateway einrichten</a> genannt.</p>
<p>ELV hat hierzu ein interessantes Produkt für einen überschaubaren Preis im Programm. Dazu braucht man das  <a href="https://de.elv.com/p/elv-lorawan-interface-1-elv-lw-int1-P160149/?itemId=160149">LoRaWAN-Interfaces ELV-LW-INT1</a> und den  universellen <a href="https://de.elv.com/p/elv-universeller-bodenfeuchtesensor-somo1-ic-P157930/?itemId=157930">Bodenfeuchtesensor SoMo1, I²C</a>. Beide zusammen sind bei ELV für ca. 75 Euro zu erhalten.</p>
<p>Ich mit diesen Komponenten in einem größeren Garten die Bodenfeuchte und -temperatur gleichzeitig messen und halbstündlich an einen MQTT-Server übertragen. Ich habe dazu in der Nähe ein LoRaWAN-Gateway im TTN-Netz verfügbar.</p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">V</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">or</span> der Inbetriebnahme</span> muss <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">das System</span> konfiguriert werden. </span></span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Da die Konfiguration viele Möglichkeiten anbietet und für den Laien nicht trivial erscheint beschreibe ich, wie man den Sensor für diesen Zweck in Betrieb nehmen kann.<br />
</span></p>
<h2>Installation der Hardware</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">A</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">uch</span> wenn die Platine als „Bausatz“ angeboten wird<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">,</span> sind <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">keine</span> Bestückungs- <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">oder</span> Lötarbeiten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">erforderlich</span>. <span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Das Interface besitzt neben 2 <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Mignon-Batterieslots</span> vom Typ LR6 (AA) auch 2 Sensoranschlüsse mit UART<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">-</span> oder I²<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">C-Schnittstelle</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Obwohl insgesamt nur eine Spannungsversorgung über die Batterien (Akkus) von 3V <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zur Verfügung steht</span>, können trotzdem 3,3 bzw. 5<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">V an die Sensoren</span> ausgegeben werden <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">(über</span> Transistoren). </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Dies ist wichtig, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">da</span> die meisten Sensoren die etwas höhere Spannung <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">für eine korrekte Messung</span> benötig</span>en. <span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">D</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">ie</span> Platine besitzt keine externe Spannungsversorgung und kann <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">daher</span> nur durch Bestückung mit den 2 Mignonzellen in Betrieb genommen werden. <span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Zur Befestigung <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">liegen</span> noch 2 Schrauben und eine Stiftleiste <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">bei</span>, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">über</span> die ein <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Firmware-Update</span> über <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">einen USB-UART-Konverter</span> UM2102N <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">durchgeführt werden kann</span>. Die richtige Firmware ist bereits <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">installiert</span>.</span><br />
</span></span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Der Feuchte- und Temperatursensor ist ebenfalls sofort <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">einsatzbereit</span>, kann Bodenfeuchte und -temperatur messen, besitzt einen AD/DA-Wandler und ist wasserdicht vergossen. Nach dem Einbau in eine Dose kann das Kabel des Sensors </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">über die gekennzeichneten 4 <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Drähte</span> an die Schnittstelle wie folgt angeschlossen werden: </span></p>
<ul>
<li><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">(braun) an +UB2<br />
</span></li>
<li>(schwarz) an GND</li>
<li>(blau) an SDA</li>
<li>(weiß) an SCL</li>
</ul>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Weitere <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Detailinformationen finden sich z.B.</span> in</span> folgendem <a href="https://de.elv.com/p/lorawan-interface-fuer-uart-und-i2c-sensoren-elv-lorawan-interface-1-elv-lw-int1-P254091/?itemId=254091">ELV-Journalartikel</a>.</p>
<p>Wer kein LoRaWAN-Gateway in der nähe hat findet im Artikel <a href="https://homeitems.de/lorawan/">LoRaWAN mit eigenem Gateway einrichten</a> weitere Hinweise zum TTN-Netzwerk oder der Gateway-Einrichtung.</p>
<p>Ich empfehle, die Batterien erst wie im nächsten Kapitel beschrieben einzulegen.</p>
<h2>Device und Applikation in TTN Netzwerk ergänzen</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">N</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">ach</span> dem Einloggen in das TTN-Netzwerk geht man auf den Reiter „Applications“. </span></span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Als erstes erstelle ich</span> eine Application und gebe hier einen aussagekräftigen Namen „Loris-Bodenfeuchte1“ ein. </span></p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/07/Application.webp"><img decoding="async" class="alignnone wp-image-3251 size-medium" src="https://homeitems.de/wp-content/uploads/2024/07/Application-300x138.webp" alt="" width="300" height="138" srcset="https://homeitems.de/wp-content/uploads/2024/07/Application-66x30.webp 66w, https://homeitems.de/wp-content/uploads/2024/07/Application-177x82.webp 177w, https://homeitems.de/wp-content/uploads/2024/07/Application-200x92.webp 200w, https://homeitems.de/wp-content/uploads/2024/07/Application-300x138.webp 300w, https://homeitems.de/wp-content/uploads/2024/07/Application-320x147.webp 320w, https://homeitems.de/wp-content/uploads/2024/07/Application-400x184.webp 400w, https://homeitems.de/wp-content/uploads/2024/07/Application-460x212.webp 460w, https://homeitems.de/wp-content/uploads/2024/07/Application-540x249.webp 540w, https://homeitems.de/wp-content/uploads/2024/07/Application-600x276.webp 600w, https://homeitems.de/wp-content/uploads/2024/07/Application-669x308.webp 669w, https://homeitems.de/wp-content/uploads/2024/07/Application-700x322.webp 700w, https://homeitems.de/wp-content/uploads/2024/07/Application-768x354.webp 768w, https://homeitems.de/wp-content/uploads/2024/07/Application-800x369.webp 800w, https://homeitems.de/wp-content/uploads/2024/07/Application-940x433.webp 940w, https://homeitems.de/wp-content/uploads/2024/07/Application-1024x472.webp 1024w, https://homeitems.de/wp-content/uploads/2024/07/Application-1200x553.webp 1200w, https://homeitems.de/wp-content/uploads/2024/07/Application-1536x708.webp 1536w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Anschließend <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">erstelle</span> ich ein neues Device<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">, indem ich</span> auf „New Device“ <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">klicke</span>.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Bei</span> „<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">End</span> device type“ kann man das <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Device</span> direkt im Repository <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">suchen</span> (Option 1<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">).</span> </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Dazu</span> wählt man ELV aus und findet <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dann</span> schon das LoRaWAN Interface 1. Als Frequency Plan wird SF9 gewählt und nach Eingabe der JoinEUI (<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">liegt dem</span> Interface als kleiner Aufkleber <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">bei</span>) kann man auf Confirm tippen. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Danach werden</span> noch die DevEUI <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">und der</span> AppKey <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">ergänzt</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Die End-Device ID wird automatisch <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">generiert</span> und <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">man</span> kann <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">nun</span> „Register end device“ drücken. <em>(Update Juli 2025: Die End-Device ID wird mittlerweile nicht mehr automatisch generiert. Hier kann man beispielsweise auch die DevEUI in der Notation "eui...." eintragen). </em></span></p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/07/New-Device.webp"><img decoding="async" class="alignnone wp-image-3252 size-medium" src="https://homeitems.de/wp-content/uploads/2024/07/New-Device-260x300.webp" alt="" width="260" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/07/New-Device-66x76.webp 66w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-177x204.webp 177w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-200x230.webp 200w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-260x300.webp 260w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-300x346.webp 300w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-320x369.webp 320w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-400x461.webp 400w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-460x530.webp 460w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-540x622.webp 540w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-600x691.webp 600w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-669x771.webp 669w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-700x806.webp 700w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-768x885.webp 768w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-800x922.webp 800w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-889x1024.webp 889w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-940x1083.webp 940w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-1200x1382.webp 1200w, https://homeitems.de/wp-content/uploads/2024/07/New-Device-1333x1536.webp 1333w, https://homeitems.de/wp-content/uploads/2024/07/New-Device.webp 1520w" sizes="(max-width: 260px) 100vw, 260px" /></a></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Nach dem Einlegen der Batterien oder Akkus blinkt <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">das Board kurz</span> rot/<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gelb und wechselt dann</span> auf grün.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Jetzt</span> kann man unter „Live data“ beobachten<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">,</span> wie das Gerät Kontakt <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zum Netzwerk aufnimmt</span> und <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Nutzdaten</span> sendet. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Zum Dekodieren der Daten benötigt man einen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Payload Parser</span> (ein kleiner Codeblock, der die vom Gerät <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">empfangenen hexadezimalen Bytewerte übersetzt</span>). </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Wenn man </span>das Gerät wie beschrieben aus dem Repository ausgewählt <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">hat</span>, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">wird der</span> Payload-Parser <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">automatisch</span> mitgeliefert. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Dieser befindet sich</span> unter <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dem</span> Device im Reiter "Payload Formatter" "Uplink". </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Hier sollte "Use device Repository formatters" stehen. Den Code von eQ3  kann man sehen (und editieren), wenn man die Device aufruft und im Menü (OBEN!) den Reiter "Payload-formatters" aufruft.</span></p>
<p>Alternativ kann man diesen Code auch auf der ELV-Seite unter Downloads unter dem Link „<a href="ELV-LW-INT1%20Payload-Parser">ELV-LW-INT1 Payload-Parser</a>“ herunterladen.</p>
</div><div class="fusion-text fusion-text-12"><h2>Sensor konfigurieren</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">W</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">er</span> die Installation bis <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">hierhin erfolgreich </span>durchgeführt hat<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">,</span> wird feststellen, dass nur Statusdaten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">der Schnittstelle</span> gesendet werden, aber keine Sensorwerte für Bodenfeuchte und Temperatur. </span></span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Dies liegt daran, dass <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">die Messung</span> und <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Übertragung der Werte von den</span> Sensoren erst aktiviert werden muss. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Das Interface hingegen ist so vorkonfiguriert, dass es alle 30 Minuten eine <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Statusmeldung sendet</span>.</span></p>
<h3>Grundlagen zur Sensorkonfiguration</h3>
<p>Die Befehle und Grundlagen für die Konfiguration der Sensoren und des Interfaces findet man in folgenden Dokumenten:</p>
<ul>
<li><a href="https://media.elv.com/file/160149_elv_lw_int1_tabellen.xlsx">Excel-Tabelle</a> auf zum Interface mit allen Details zu Befehlen, Parametern, etc.</li>
<li><a href="https://media.elv.com/file/160149_km.pdf">Bau- und Bedienungsanleitung</a> des Interfaces</li>
<li><a href="http://downloads.elv.com/downloads/journal/elvjournal_2024_02.pdf">ELV-Journal 2/2024</a> unter Bausätze</li>
</ul>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Grundsätzlich tauscht man Informationen mit <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dem Interface </span>und den Sensoren über <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">eine</span> Payload (eine Bytefolge von hexadezimalen Werten<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">) aus.</span> </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Befehle <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">werden</span> als Payload über einen Downlink-Kanal an ein Gerät <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gesendet</span>, Daten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">werden</span> über einen Uplink-Kanal <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">empfangen</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Kommandos</span> werden als "frame-type" bezeichnet. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">In einem "frame-type" werden Daten wie z.B. Kanal und Parameter <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">übertragen</span>.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Für die zu <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">übertragenden</span> Codes (Bytes) <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">müssen</span> Werte <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">berechnet werden</span>, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">wobei teilweise</span> zwischen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dezimalen</span>, <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">hexadezimalen</span> und <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">binären Zahlenformaten gewechselt wird</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">ELV empfiehlt hierfür den folgenden einfachen <a href="https://www.simonv.fr/TypesConvert/?integers">Konverter</a>.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">In den folgenden Kapiteln werden einzelne Werte <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">auch</span> durch das Setzen von Bits ermittelt. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Dabei gilt<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">, dass</span> die Bits in einem Byte von 0 bis 7 <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gezählt</span> werden und rechts <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">begonnen wird</span>!</span></p>
<h4>Sensoren über Kanäle ansprechen</h4>
<p>Um die Sensoren und das Interface eindeutig anzusprechen benötigt man die Angabe einer Kanalnummer. Das Interface besitzt eine eigene Kanalnummer und neben dem gemeinsam verbauten Bodenfeuchte- und Temperatursensor wird auch ein <a href="https://de.elv.com/p/elv-ultraschall-distanzsensor-dus1-P160762/">Ultraschall-Disstanzsensor DUS1</a> unterstützt.</p>
<p>Folgende Kanalnummern stehen zur Verfügung:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left">Gerätename</th>
<th align="left">Kanal (Hex-Wert)</th>
<th align="left">Erläuterung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Interface (device)</td>
<td align="left">0x00</td>
<td align="left">Dies ist das ELV-LW-INT1 Device</td>
</tr>
<tr>
<td align="left">DUS1</td>
<td align="left">0x01</td>
<td align="left">Dies ist der <a href="https://de.elv.com/p/elv-ultraschall-distanzsensor-dus1-P160762/?itemId=160762">ELV-Ultraschall Distanzsensor DUS1</a> (wenn er angeschlossen sein sollte)</td>
</tr>
<tr>
<td align="left">SoMo1-H</td>
<td align="left">0x02</td>
<td align="left">Das ist der Feuchtessensor des <a href="https://de.elv.com/p/elv-universeller-bodenfeuchtesensor-somo1-ic-P157930/?itemId=157930">SoMo1, I²C</a></td>
</tr>
<tr>
<td align="left">SoMo1-T</td>
<td align="left">0x03</td>
<td align="left">Das ist der Temperatursensor des <a href="https://de.elv.com/p/elv-universeller-bodenfeuchtesensor-somo1-ic-P157930/?itemId=157930">SoMo1, I²C</a></td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-13"><h3>Anzeige von Statusdaten</h3>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">T</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">heoretisch</span> kann jeder Sensor <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">eigene</span> Statusdaten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">senden</span>. </span></span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Standardmäßig sendet</span> das Interface jede halbe Stunde eine <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Statusnachricht</span> und zusätzlich kann ich mir <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">die Statusinformation des Feuchtesensors und des Temperatursensors jeweils</span> in einem eigenen Zeitintervall <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">senden</span> lassen. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Ich möchte aber <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">insbesondere</span> die Feuchte- und <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Temperaturinformationen</span> immer zusammen erhalten und am liebsten noch zusammen mit <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">den Statusinformationen</span> des Interfaces (also insgesamt nur eine Nachricht mit allen Informationen jede halbe Stunde).</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Dies kann <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">ich</span> erreichen<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">,</span> indem ich Statusgruppen verwende, in denen ich <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">die</span> Statusinformationen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zusammenfasse</span> und diese <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zusammengefassten</span> Statusinformationen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dann in eine</span> Statusmeldung <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">einfüge</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">In meinem Fall werden die <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Statusinformationen</span> des <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Feuchtesensors</span> und des Temperatursensors <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">der</span> Statusgruppe 1 zugeordnet.</span> Ich werde für diese Sensoren nicht separat das Übermitteln von Statusinformationen aktivieren sondern werden das Interface so konfigurieren, dass es bei seiner halbstündlichen Statusinformation einfach die Gruppe 1 inkludieren soll. Damit wird die Statusmeldung auch die Informationen der Sensoren beinhalten.</p>
<h3>Befehl zur Konfiguration der Sensoren</h3>
<p>Zur Konfiguration verwende ich den "set single parameters" Befehl, dem ich beliebig viele Parameter übergeben kann. Mit diesem Befehl werden alle Parameteränderungen beginnen.</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left"><strong>Bytewert</strong></th>
<th align="left"><strong>Kommentar</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0x00</td>
<td align="left">frame type 00 ("set single parameters" = Einzelne Parameter setzen)</td>
</tr>
<tr>
<td align="left">0x02</td>
<td align="left">Channel 2 (z.B. Kanal 2 für Feuchtesensor)</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-14"><h3>Feuchtesensor konfigurieren</h3>
<p>Hierfür gelten folgende Punkte:</p>
<ul>
<li><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Messungen müssen aktiviert werden, sonst <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">kann</span> der Feuchtesensor keine Daten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">senden</span>.</span></li>
<li>Man kann gleichzeitig auch das Messen der Temperatur aktivieren, so dass beide Werte synchron ermittelt werden!</li>
<li>Der Bodenfeuchtesensor liefert immer sogenannte Rohwerte im Bereich von 3000 bis 4000 zurück. Diese kann man selber in Prozentwerte umrechnen oder vom Sensor direkt umrechnen lassen. Dazu ist das Ablesen der Sensorwerte im trockenen Zustand sowie in nassem Zustand erforderlich. Die beiden Rohwerte werden dann dem Sensor als Untegrenze für 0% und Obergrenze für 100% mitgeteilt.</li>
</ul>
<p>Mit folgender Bytefolge konfiguriere ich den Feuchtesensor:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left"><strong>Bytewert</strong></th>
<th align="left"><strong>Kommentar</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0x00</td>
<td align="left">frame type 00 ("set single parameters" = Einzelne Parameter setzen)</td>
</tr>
<tr>
<td align="left">0x02</td>
<td align="left">Kanal 2 (für den Feuchtesensor)</td>
</tr>
<tr>
<td align="left">0x03</td>
<td align="left">"measurment interval"-Parameter (zum Einstellen des zeitlichen Abstandes der Messungen)</td>
</tr>
<tr>
<td align="left">0x94</td>
<td align="left">20 Minuten (Um diesen Parameter auf Minuten einzustellen wird Bit 7 gesetzt. Mit den restlichen Bits werden die Minuten angegeben, in meinem Fall setze ich Bit 2 (Dezimalzahl 4) und Bit 4 (Dezimalzahl 16), was insgesamt 10010100 ergibt. Dies ergibt umgerechnet in Hexadezimal die Zahl 0x94.</td>
</tr>
<tr>
<td align="left">0x02</td>
<td align="left">"filter config"-Parameter (hierüber lässt sich die Temperaturmessung gleichzeitig mit der Feuchtemessung aktivieren, ohne den Temperatursensor separat konfigurieren zu müssen)</td>
</tr>
<tr>
<td align="left">0xC0</td>
<td align="left">Parameterwert:</p>
<p>Bit 7 wird gesetzt (Aktivieren der gleichzeitigen Temperaturmessung)</p>
<p>Bit 6 wird gesetzt (zur Kompensation eines möglichen Fehlers durch die Temperatur)</p>
<p>Dies ergibt die Binärzahl 11000000, die Hexadzeimalzahl 0xC0 ergibt.</td>
</tr>
<tr>
<td align="left">0x01</td>
<td align="left">"Statusmode"-Parameter (mit diesem werden festgelegt, ob der Status zyklisch übertragen wird und welche Statusgruppenanzeige und -zugehörigkeit für dieses Gerät gilt)</td>
</tr>
<tr>
<td align="left">0x81</td>
<td align="left">Parameterwert:</p>
<p>Bit 7 setzen ("cyclic interval" = fixes unabhängiges Intervall zur Statussendung (ich verwende hier immer die Voreinstellung))</p>
<p>Bit 0 setzen ("member group 1" = Statuswerte zur Statusgruppe 1 hinzufügen)</p>
<p>Dies ergibt die Binärzahl 10000001, was der Hexadzeimalzahl 0x81 entspricht.</td>
</tr>
<tr>
<td align="left">0x0B</td>
<td align="left">"ref value %0"-Parameter (gibt an, welcher raw-Wert als 0% Bodenfeuchte angesehen wird).</td>
</tr>
<tr>
<td align="left">0x0EC5</td>
<td align="left">Parameterwert:</p>
<p>Gemessener Raw-Wert bei Trockenheit; Dieser wird hier in Form von 2 Bytes angegeben, da er i.d.R. zwischen 3500 und 4000 liegt. Es wird empfohlen, dieses vorab durch Tests zu messen, z.B.  in Becher mit staubtrockener Erde. In meinem Beispiel liegt der Wert bei 3781, was Hexadezimal 0x0D1B ergibt</td>
</tr>
<tr>
<td align="left">0x0C</td>
<td align="left">"ref value %100"-Parameter (gibt an, welcher raw-Wert als 100% Bodenfeuchte angesehen wird).</td>
</tr>
<tr>
<td align="left">0x0D1B</td>
<td align="left">Parameterwert:</p>
<p>Gemessener Raw-Wert bei totaler Feuchtigkeit; Dieser wird hier in Form von 2 Bytes angegeben, da er i.d.R. zwischen 3000 und 3500 liegt. Es wird empfohlen, dieses vorab durch Tests zu messen, z.B.  in Becher mit ganz nasser Erde. In meinem Beispiel liegt der Wert bei 3355, was Hexadezimal 0x0D1B ergibt</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-15"><h3>Temperaturmessung konfigurieren</h3>
<p>Hierfür gelten folgende Punkte:</p>
<ul>
<li><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">D</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">ie</span> Temperaturmessung wurde bereits über die <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Bodenfeuchtemessung</span> aktiviert, so dass die Messzyklen für die Feuchtemessung <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">automatisch</span> gelten. </span></span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Weitere</span> Einstellungen zur Messwerterfassung sind bei diesem Ansatz nicht erforderlich.</span></li>
</ul>
<p>Mit folgender Bytefolge konfiguriere ich den Temperatursensor:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left"><strong>Bytewert</strong></th>
<th align="left"><strong>Kommentar</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0x00</td>
<td align="left">frame type 00 ("set single parameters" = Einzelne Parameter setzen)</td>
</tr>
<tr>
<td align="left">0x03</td>
<td align="left">Kanal 3 (für den Temperatursensor)</td>
</tr>
<tr>
<td align="left">0x01</td>
<td align="left">"Statusmode"-Parameter (mit diesem werden festgelegt, ob der Status zyklisch übertragen wird und welche Statusgruppenanzeige und -zugehörigkeit für dieses Gerät gilt)</td>
</tr>
<tr>
<td align="left">0x81</td>
<td align="left">Parameterwert:</p>
<p>Bit 7 setzen ("cyclic interval" = fixes unabhängiges Intervall zur Statussendung (ich verwende hier immer die Voreinstellung))</p>
<p>Bit 0 setzen ("member group 1" = Statuswerte zur Statusgruppe 1 hinzufügen)</p>
<p>Dies ergibt die Binärzahl 10000001, die Hexadzeimalzahl 0x81 ergibt.</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-16"><h3>Interface konfigurieren</h3>
<p>Hierfür gelten die folgenden Punkte:</p>
<ul>
<li><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Standardmäßig</span> sendet <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">das Interface </span>alle 30 Minuten <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">eine Statusmeldung</span>, so dass <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">dies</span> nicht <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gesondert</span> eingestellt werden muss.</span></span></li>
<li>Zusätzlich zu den eigenen Statusinformation sollen die Statusinformation des Feuchte- und Temperatursensors übermittelt werden.</li>
</ul>
<p>Mit folgender Bytefolge konfiguriere ich das Interface:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left"><strong>Bytewert</strong></th>
<th align="left"><strong>Kommentar</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0x00</td>
<td align="left">frame type 00 ("set single parameters" = Einzelne Parameter setzen)</td>
</tr>
<tr>
<td align="left">0x00</td>
<td align="left">Kanal 0 (für das Interface "SoMo-1 Device")</td>
</tr>
<tr>
<td align="left">0x01</td>
<td align="left">"Statusmode"-Parameter (mit diesem werden festgelegt, ob der Status zyklisch übertragen wird und welche Statusgruppenanzeige und -zugehörigkeit für dieses Gerät gilt)</td>
</tr>
<tr>
<td align="left">0x88</td>
<td align="left">Parameterwert:</p>
<p>Bit 7 setzen (fixes unabhängiges Intervall zur Statussendung);</p>
<p>Bit 3 setzen ("include group 1" = zeige Gruppe 1 zusätzlich zu den Statusinformationen des devices an)</p>
<p>Dies ergibt die Binärzahl 10001000, die Hexadzeimalzahl 0x88 ergibt.</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-17"><h2>Konfigurationsänderung an das Gerät schicken</h2>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives sentence_anchor_highlight__with_key_writeTextInteraction_toolbar sentence_anchor_highlight__with_key_writeTextInteraction_wordAlternatives sentence_highlight"><span class="--l --r bg-blue-next-50 dark:bg-neutral-next-600 lmt__write_text_interaction_range_highlight py-&#091;3px&#093;"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_wordAlternatives"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_toolbar"><span class="--l --r word_anchor_highlight__with_key_writeTextInteraction_sentenceAlternatives"><span class="--l text-interaction-word-at-cursor-anchor">D</span></span></span></span><span class="--r text-interaction-word-at-cursor-anchor">azu</span></span> geht man im <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">TTN-Webinterface</span> unter "End devices" auf das SoMo1-INT1 Gert<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">,</span> wählt den Reiter "Messaging" und dort den Reiter "Downlink". </span></span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Als "FPort" muss nun "10" eingestellt werden. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Danach</span> kann man die in den <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">vorherigen</span> Kapiteln erstellten drei Bytefolgen (Payload) jeweils in das Payload-Feld eintragen (<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">bitte </span> ohne das führende 0x) und anschließend den Button "Schedule downlink" <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">drücken</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Das Kommando</span> wird beim nächsten Verbindungsaufbau <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">zum</span> Gerät <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">gesendet</span> (<span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">durch kurzes Drücken des Buttons an der Schnittstelle</span> kann die Zeit <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">verkürzt werden</span>).</span></p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink.webp"><img decoding="async" class="alignnone wp-image-3253 size-medium" src="https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-256x300.webp" alt="" width="256" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-66x77.webp 66w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-177x207.webp 177w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-200x234.webp 200w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-256x300.webp 256w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-300x351.webp 300w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-320x374.webp 320w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-400x468.webp 400w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-460x538.webp 460w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-540x632.webp 540w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-600x702.webp 600w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-669x783.webp 669w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-700x819.webp 700w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-768x899.webp 768w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-800x936.webp 800w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-875x1024.webp 875w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink-940x1100.webp 940w, https://homeitems.de/wp-content/uploads/2024/07/Schedule-downlink.webp 1188w" sizes="(max-width: 256px) 100vw, 256px" /></a></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Unter "Live data" kann man nun die <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Übertragung</span> der Befehle <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">beobachten</span>. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Wenn dort die "decode downlink data message" Meldung „No decoder defined for codec elv-lw-int1-codec“ <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">erscheint,</span> kann man <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">diese</span> ignorieren. </span><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Es</span> gibt aktuell keinen Payload-Decoder, der <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">in der Lage ist, die gesendete</span> Bytefolge wieder in Klartext <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">umzuwandeln</span>.</span></p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight">Es kann <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">einige Zeit</span> dauern, bis die Einstellungen vorgenommen <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">sind</span>, da normalerweise die eingestellten Sendeintervalle abgewartet werden müssen (in diesem Beispiel bis zu 1 Stunde).</span></p>
<p>Um die Daten an einen MQTT-Server zu schicken verweise ich auf die Erläuterungen in folgendem Beitrag <a href="https://homeitems.de/fuellstandsmessung-mit-lorawan/">Füllstandsmessung mit LoRaWAN</a>.</p>
<p><span class="--l --r lmt__write_highlight_sentence py-&#091;3px&#093; sentence_highlight"><span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">Wenn dann</span> eine Statusinformation gesendet <span class="--l --r border-b-2 border-green-next-100 dark:border-green-next-500 dark:text-green-next-300 lmt__write_highlight relative text-green-next-600">wird</span>, sollte das Ergebnis wie folgt aussehen:</span></p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/07/Statusinfo.webp"><img decoding="async" class="alignnone wp-image-3250 size-medium" src="https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-262x300.webp" alt="" width="262" height="300" srcset="https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-66x76.webp 66w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-177x203.webp 177w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-200x229.webp 200w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-262x300.webp 262w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-300x344.webp 300w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-320x367.webp 320w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-400x458.webp 400w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-460x527.webp 460w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-540x619.webp 540w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-600x688.webp 600w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-669x767.webp 669w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-700x802.webp 700w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-768x880.webp 768w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-800x917.webp 800w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-893x1024.webp 893w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo-940x1077.webp 940w, https://homeitems.de/wp-content/uploads/2024/07/Statusinfo.webp 971w" sizes="(max-width: 262px) 100vw, 262px" /></a></p>
<p>Die Daten können dann z.B. in Node-Red weiterverarbeitet und zur Steuerung von Bewässerungssensoren verwendet werden.</p>
<p><em>HINWEIS: Die Bodentemperatur wird als Zeichenkette (String) geliefert und nicht wie der Feuchtewert als Zahl (float-Typ). Vor der Speicherung in einer Datenbank sollte der Wert daher vorher umgewandelt werden, damit man ihn grafisch darstellen kann.</em></p>
<h2>Optionale weitere Befehle</h2>
<p>In der folgenden Tabelle sind einige weitere Befehle zur Konfiguration der Sensoren aufgelistet:</p>
</div>
<div class="table-1">
<table width="100%">
<thead>
<tr>
<th align="left">Payload</th>
<th align="left">Erläuterung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">00 02 00 00</td>
<td align="left">Statusmeldungen des Bodenfeuchtesensors ausschalten</td>
</tr>
<tr>
<td align="left">00 03 00 00</td>
<td align="left">Statusmeldungen des Temperatursensors ausschalten</td>
</tr>
<tr>
<td align="left">00 02 01 05</td>
<td align="left">Statusmeldungen des Bodenfeuchtesensors alle 5 Minuten schicken</td>
</tr>
<tr>
<td align="left">00 03 01 0F</td>
<td align="left">Statusmeldungen des Temperatursensors alle 15 Minuten schicken</td>
</tr>
</tbody>
</table>
</div>
</div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/bodenfeuchtemessung-ueber-weite-strecken-mit-lorawan/">Bodenfeuchtemessung über weite Strecken mit LoRaWAN</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/bodenfeuchtemessung-ueber-weite-strecken-mit-lorawan/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Strommessung mit Shelly Plus PM Mini und Node-RED</title>
		<link>https://homeitems.de/strommessung-mit-shelly-plus-pm-mini-und-node-red/</link>
					<comments>https://homeitems.de/strommessung-mit-shelly-plus-pm-mini-und-node-red/#comments</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 08:05:15 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[Node-Red]]></category>
		<category><![CDATA[Shelly]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=2740</guid>

					<description><![CDATA[<p>Mit dem kleinen Shelly Plus PM Mini wird eine günstige Möglichkeit geboten, eine Leistungsmessung durchzuführen. Das Gerät ist nur ca. 28 x 32 x 16 mm (HxBxT) groß und passt in viele UP-Dosen z.B. hinter einer Steckdose. Das Gerät unterstützt dabei eine Messung bis zu 16A Leistung (ist leider nicht bei allen  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/strommessung-mit-shelly-plus-pm-mini-und-node-red/">Strommessung mit Shelly Plus PM Mini und Node-RED</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-4 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;">Hardware</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>Mit dem kleinen Shelly Plus PM Mini wird eine günstige Möglichkeit geboten, eine Leistungsmessung durchzuführen. Das Gerät ist nur ca. 28 x 32 x 16 mm (HxBxT) groß und passt in viele UP-Dosen z.B. hinter einer Steckdose. Das Gerät unterstützt dabei eine Messung bis zu <strong>16A</strong> Leistung (ist leider nicht bei allen Shelly Geräten so), so dass man mit dem Gerät theoretisch die Leistung eines Balkonkraftwerks, von Lichtschaltern oder Steckdosen messen kann.</p>
<p>Im folgenden Beitrag beschreibe ich, wie man das PM Mini auch ohne Shelly-App über WLAN und MQTT einbinden und die Daten in Node-Red weiterverarbeiten kann.</p>
<p>Grundsätzlich erfolgt hier der Hinweise, dass das Arbeiten an Elektroleitungen immer nur von Fachleuten (Elektrikern) durchgeführt werden und immer die fünf Sicherheitsregeln der Elektrotechnik berücksichtigt werden sollten.</p>
<h2>Gerät ins Netzwerk einbinden</h2>
<p>Ich möchte auf die Shelly Cloud sowie das Einrichten der Shelly App verzichten, sondern nur eine lokale Nutzung mittels WLAN umsetzen. Nach der Stomversorgung spannt das PM Mini ein eigenes Netz auf (Access Point), mit dem man sich verbinden muss. Das WLAN erkennt man an dem Namen, der mit "ShellyPMMini..." beginnt. Um anschließend in den Shelly-WebAdmin-Oberfläche zu kommen, gibt man im Browser die Adresse "192.168.33.1" ein und schon sollte die administrative Weboberfläche  erscheinen. Bitte berücksichtigt, dass auch die Shelly-Geräte nur das 2,4 GHz WLAN unterstützen. Die Optionen und Anzeigen  in der WebAdmin-Oberfläche sind unter diesem <a href="https://kb.shelly.cloud/knowledge-base/shelly-plus-pm-mini">Link</a> super erklärt.</p>
<p>Nun geht man auf "Configure Wifi-Setting", wählt "Enable Wifi-network" und gibt die SSID (Name des WLANs) sowie das Passwort für das WLAN an und speichert die Einstellungen. Theoretisch kann man das Gerät nun neu starten und es sollte dann unter einer eigenen IP-Adresse in der Netzwerkliste des Routers erscheinen.</p>
<h2>Generelle Einstellungen</h2>
<p>Da es bei älteren Shelly-Firmwareversionen zu Problemen mit der korrekten Leistungsmessung kam, sollte unbedingt die aktuelle Firmware für das PM Mini aufgespielt werden.  Dazu geht man auf "Settings" und "Firmware". Shelly prüft nun automatisch, ob eine neue Version verfügbar ist und bietet an, diese online zu installieren.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small.webp"><img decoding="async" class="alignnone wp-image-3043 size-medium" src="https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-300x208.webp" alt="" width="300" height="208" srcset="https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-200x138.webp 200w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-300x208.webp 300w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-400x277.webp 400w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-600x415.webp 600w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-768x532.webp 768w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small-800x554.webp 800w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_Firmware_Update-small.webp 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nach dem Drücken von "Update" wird die Firmware aufgespielt und das Gerät neu gestartet. Nun sollten folgende Einstellungen vorgenommen werden:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left">Menü</th>
<th align="left">Wert</th>
<th align="left">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">"Settings" und "Device Name"</td>
<td align="left">Sprechender Name des Gerätes</td>
<td align="left">Hilft später bei der Identifikation im Netzwerk und ist gleichzeitig der Topic-Name für MQTT</td>
</tr>
<tr>
<td align="left">"Settings" und "Bluetooth"</td>
<td align="left">"Enable Bluetooth" und "Enable RPC": Haken entfernen</td>
<td align="left">Da nur das WLAN benötigt wird</td>
</tr>
<tr>
<td align="left">"Settings" "Eco"</td>
<td align="left">"Enable Eco Mode": Haken setzen</td>
<td align="left">Aktiviert den Eco-Modus</td>
</tr>
<tr>
<td align="left">"Setting" "Authentication"</td>
<td align="left">Eigenes Passwort setzen</td>
<td align="left">Sperrt den freien Zugang auf die Weboberfläche</td>
</tr>
<tr>
<td align="left">"Settings" und "Access Point"</td>
<td align="left">"Enable AP-Network": Haken entfernen</td>
<td align="left">Deaktiviert den Access Point</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-19"><h2>MQTT-Settings</h2>
<p>Für das erfolgreiche Senden von Nachrichten an einen MQTT-Broker müssen folgende Einstellungen vorgenommen werden:</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left">Menü</th>
<th align="left">Wert</th>
<th align="left">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">"Settings" und "MQTT-Settings"</td>
<td align="left">
<ol>
<li>"Enable MQTT-Network": Haken setzen</li>
<li>"Connection Type" :  No-SSL</li>
<li>"Enable MQTT Control": Haken setzen</li>
<li>"Generic status updat over MQTT": Haken setzen</li>
<li>"Enable RPC over MQTT": Haken entfernen</li>
<li>"RPC Status notification over MQTT": Haken entfernen</li>
<li>"Server": "IP-Adresse des MQTT-Servers: 1883"</li>
</ol>
</td>
<td align="left">
<ol>
<li>MQTT aktivieren, damit Daten gesendet werden</li>
<li>Nur wenn man SSL nicht aktiviert hat, ansonsten das richtige Protokoll wählen</li>
<li>Gibt die Möglichkeit, per MQTT auch Befehle zu senden</li>
<li>Muss gesetzt werden, da sonst nichts vom PM Mini gesendet wird.</li>
</ol>
</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-20"><p><a href="https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small.webp"><img decoding="async" class="alignnone wp-image-3044 size-medium" src="https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-300x199.webp" alt="" width="300" height="199" srcset="https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-200x133.webp 200w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-300x199.webp 300w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-400x266.webp 400w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-600x398.webp 600w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-768x510.webp 768w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small-800x531.webp 800w, https://homeitems.de/wp-content/uploads/2024/04/Shelly_MQTT_Settings_small.webp 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nach dem Speichern der Settings ist das Gerät vollständig konfiguriert und kann über "Settings" "Reboot-Device" neu gestartet werden. Anschließend kann man z.B. mit dem <a href="http://mqtt-explorer.com/">MQTT-Explorer</a> prüfen, welche Informationen an den MQTT-Broker gesendet werden.</p>
<p><em>Tipp: Bei mir wurden zuerst keine Nachrichten gesendet. Erst als ich in den MQTT-Settings den Punkt „Generic Status update over MQTT“  enabled und dann wieder disabled habe, hat es funktioniert.</em></p>
<h2>Daten in Node-Red weiterverarbeiten</h2>
<p>Die Daten können jetzt in Node-Red weiterverarbeitet werden. In meinem Fall speichere ich diese direkt in einer InfluxDB ab.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow.webp"><img decoding="async" class="alignnone wp-image-3040 size-medium" src="https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-300x56.webp" alt="" width="300" height="56" srcset="https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-200x38.webp 200w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-300x56.webp 300w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-400x75.webp 400w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-600x113.webp 600w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-768x145.webp 768w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-800x151.webp 800w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-1024x193.webp 1024w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow-1200x226.webp 1200w, https://homeitems.de/wp-content/uploads/2024/04/Node-Red-Shelly-Flow.webp 1376w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Im mqtt-in-Node frage ich erst einmal das Topic vom MQTT-Server ab. Dieses findet man unter dem Namen, den man dem Shelly-Gerät  gegeben hat (siehe oben), gefolgt von einem "/pm1:0", also in meinem Fall heißt das Topic "EM-Licht/pm1:0". Als Ausgabe wird "Ein analysiertes (parsed) JSON-Objekt." gewählt.</p>
<p>Im Function-Node wird nun die Leistung aus dem JSON-Objekt extrahiert:</p>
<p>Der Code dazu lautet:</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: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_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.aenergy.total;
return msg;</textarea></div><div class="fusion-text fusion-text-21"><p>Das bedeutet, dass sich unter "aenergy.total" der benötigte Wert im payload-Objekt befindet.</p>
<p>Zuletzt speichere ich diesen Wert noch mit einem influxdb-out-Node in die Datenbank. Mit dieser Vorgehensweise kann man auch andere Shelly-Geräte ohne Shelly-App abfragen und deren Daten weiterverarbeiten.</p>
<p>Wie man Node-Red, MQTT und InfluxDB installiert und Daten austauscht steht unter anderem in meinen Beiträgen <a href="https://homeitems.de/mit-node-red-influxdb-und-grafana-daten-auf-einem-synology-nas-sammeln-und-visualisieren-teil-1-2/">Mit Node-Red, InfluxDB und Grafana Daten auf einem Synology NAS sammeln und visualisieren (Teil 1/2)</a> und  <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></p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/strommessung-mit-shelly-plus-pm-mini-und-node-red/">Strommessung mit Shelly Plus PM Mini und Node-RED</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/strommessung-mit-shelly-plus-pm-mini-und-node-red/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Pixelclock als Statusanzeige für smart home</title>
		<link>https://homeitems.de/pixelclock-als-statusanzeige-fuer-smarthome/</link>
					<comments>https://homeitems.de/pixelclock-als-statusanzeige-fuer-smarthome/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sat, 23 Dec 2023 17:40:54 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[Node-Red]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=2515</guid>

					<description><![CDATA[<p>Neulich bin ich wieder auf die die Ulanzi TC001 Pixelclock gestoßen und beschreibe im folgenden Beitrag, wie sich mit dem Display eigene Werte über Node-Red von beliebigen Smart Home Systemen darstellen lassen. Ich habe die Pixelclock direkt bei Ulanzi bestellt. Innerhalb kurzer Zeit wurde sie geliefert. Sie besitzt ein Matrixdisplay aus 256  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/pixelclock-als-statusanzeige-fuer-smarthome/">Pixelclock als Statusanzeige für smart home</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-5 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-5 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-5 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;">Hardware</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-22"><p>Neulich bin ich wieder auf die die Ulanzi TC001 Pixelclock gestoßen und beschreibe im folgenden Beitrag, wie sich mit dem Display eigene Werte über Node-Red von beliebigen Smart Home Systemen darstellen lassen.</p>
<p>Ich habe die Pixelclock direkt bei <a href="https://www.ulanzi.de/products/ulanzi-pixel-smart-uhr-2882">Ulanzi</a> bestellt. Innerhalb kurzer Zeit wurde sie geliefert. Sie besitzt ein Matrixdisplay aus 256 LEDs und versprüht damit einen gewissen Retro Charme. Sie ist mit einem Akku ausgestattet und über einen USB-C Anschluss kann man das Gerät aufladen oder auch mit einem Netzteil betreiben. Ich verwende dazu ein Netzteil, welches ich normalerweise für einen Raspberry PI benutze (5V, 1A).</p>
<p>Auf der Oberseite befinden sich neben einem Lichtsensor drei Tasten, die zur Bedienung der internen Einstellungen dienen. Die Pixelclock zeigt bereits fünf eigene Apps an, zu denen ein Kalender oder die Akkuanzeige gehören.</p>
<h2>Neue Firmware aufspielen</h2>
<p>Um eigene Werte auf der Pixelclock anzeigen zu können, muss eine andere Firmware aufgespielt werden. Diese wird der blueforcer AWTRIX LIGHT Gruppe gepflegt und über diese <a href="https://blueforcer.github.io/awtrix-light/#/flasher">Webseite</a> mit einem Online-Flasher bereitgstellt. Nach dem Anschluss des Gerätes über das mitgelieferte USB-C-Kabel kann das Gerät über die Webseite geflasht werden.  Während dieses Vorgangs piept das Gerät kontinuierlich.</p>
<p><em>ACHTUNG: Der Online Flasher funktioniert lt. Hersteller nur mit Google Chrome und Microsoft Edge. Bei mir hat nur Google Chrome unter OSX funktioniert.</em></p>
<p>Nach erfolgreicher Installation meldet sich die Pixelclock mit einer bunten Anzeige, auf der "AWTRIX sowie die Versionsnummer der Firmware und "AP MODE" angezeigt werden. Dies bedeutet, dass die Pixelclock noch keine Verbindung ins WLAN hat. Da sie in diesem Modus ein eigene WLAN aufspannt kann man sich mit einem beliebigen Gerät mit diesem WLAN verbinden (Name i.d.R. "awtrix....").</p>
<p>Nach Eingabe der SSID und der Passwortes startet das System neu und sollte nun nach dem Versionsschriftzug eine IP-Adresse anzeigen. Unter dieser IP-Adresse ist das AWTRIX-Webinterface ab sofort erreichbar.</p>
<p><em>TIPP: Wer später eine aktuellere Firmware aufspielen möchte kann diese unter folgendem <a href="https://github.com/Blueforcer/awtrix3/releases">Link</a> herunterladen und auf dem Webinterface </em><em>der Pixelclock </em><em>über den Menüpunkt "Update" installieren.</em></p>
<h2>AWTRIX konfigurieren</h2>
<p>Zur Anzeige eigener Werte ist ein MQTT-Broker erforderlich. In meinem Beitrag <a href="https://homeitems.de/mqtt-broker-mosquitto-als-docker-image-auf-nas-installieren/">MQTT-Broker Mosquitto als Docker Image auf einem NAS installieren</a> ist beschrieben, wie man diesen installieren kann.</p>
<p>Ich empfehle, folgende Einstellungen vorzunehmen:</p>
<ul>
<li>Unter "MQTT" die IP-Adresse des MQTT-Brokers (der Port kann i.d.R. auf 1883 bleiben, wenn man den nicht geändert hat)</li>
<li>Unter "Prefix" den Namen, unter dem Daten für das Gerät zu finden sein sollen. In meinem Beispiel verwende ich "awtrix_test"</li>
<li>(optional) Unter "Auth" einen Usernamen und ein Passwort für den Zugriff auf das Webinterface.</li>
</ul>
<p>Nach Änderungen ist es sinnvoll, diese zu sichern.  Das kann man über den Menüpunkt "Backup" erledigen und kann somit später Konfigurationen einfach wiederherstellen.</p>
<p>Auf dem Gerät sollte man darüber hinaus alle Applikationen deaktivieren, die man nicht braucht. Bei mir ist nur der Kalender übrig geblieben. Dazu drückt man etwas länger die mittlere Taste und wählt über die links- oder rechts-Taste das Menü "APPS"  aus. Ein erneutes Drücken der mittleren Taste bietet anschließend die Möglichkeit, mit den Pfeiltasten die vorinstallierten Apps anzuwählen. Diese können über die mittlere Taste auf "ON" oder "OFF" gestellt werden.  Das jeweilige Untermenü verlässt man über das längere Drücken der mittleren Taste.</p>
<p><em>HINWEIS: Man kann auf dem Gerät nur die vorinstallierten Apps aktivieren oder deaktivieren. Eigene Apps werden hier nicht angezeigt, sondern werden nur über die MQTT-Nachrichten gesteuert. </em></p>
</div><div class="fusion-text fusion-text-23"><h2>Icons installieren</h2>
<p>Eigene Daten kann man mit vorangestellten Icons anzeigen lassen. Hierzu gibt es bereits eine riesige Auswahl auf der Seite <a href="https://developer.lametric.com/icons">Lametric</a>. Wunderschön sind insbesondere die animierten Icons z.B. für Stromverbrauch oder Stromerzeugung. Wer hier nichts findet, kann sogar selber eigene Icons erstellen. Ich wähle für mein Beispiel das Icon mit der Nummer 21256 aus.</p>
<p>Nach dem Wechsel in das AWRTIX-Webinterface kann man unter dem Menüpunkt "Icons" durch die Angabe der Icon-Nummer von der Lametric-Seite ein oder mehrere Icons auf die Pixelclock laden.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon.webp"><img decoding="async" class="wp-image-2531 size-medium" src="https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-300x244.webp" alt="" width="300" height="244" srcset="https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-200x163.webp 200w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-300x244.webp 300w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-400x326.webp 400w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-600x488.webp 600w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-768x625.webp 768w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-800x651.webp 800w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-1024x834.webp 1024w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-1200x977.webp 1200w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon-1536x1250.webp 1536w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_Add_Icon.webp 1651w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
</div><div class="fusion-text fusion-text-24"><h2>Eigene Werte anzeigen lassen</h2>
<p>Ich möchte auf der Pixelclock den aktuellen Stromverbrauch meines Smartmeters anzeigen lassen. Wie man diesen ausliest, habe ich in dem Beitrag <a href="https://homeitems.de/smartmeter-mit-tasmota-auslesen/">SmartMeter mit Tasmota auslesen</a> beschrieben.</p>
<p>In Node-Red baue ich dazu einen Flow, der aus folgenden Komponenten besteht:</p>
<p><img decoding="async" class="size-medium wp-image-2529" src="https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-300x62.webp" alt="" width="300" height="62" srcset="https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-200x41.webp 200w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-300x62.webp 300w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-400x82.webp 400w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-600x123.webp 600w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-768x158.webp 768w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-800x164.webp 800w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-1024x210.webp 1024w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock-1200x246.webp 1200w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Flow_Pixelclock.webp 1233w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>Von einer CCU hole ich mir die Variable, in der der aktuelle Stromverbrauch gespeichert ist (das könnte natürlich auch der Wert von einem MQTT-Broker sein). Diesem Wert übermittle ich an einen Change-Node, in der die Nachricht zusammengestellt wird, die an einen MQTT-out-Node weitergegeben wird. Die Nachricht wird als json-String in einer Payload zusammengesetzt und besteht aus folgenden Bestandteilen:</p>
</div>
<div class="table-1" style="--awb-margin-top:;--awb-margin-bottom:1%;">
<table width="100%">
<thead>
<tr>
<th align="left">Regel</th>
<th align="left">Erläuterung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Change</td>
<td align="left">Zuerst wird die "alte" Payload in msg.stromverbrauch gesichert. Diese Vorgehensweise führt dazu, dass das vorhandene payload-Objekt genutzt werden kann und kein neues erzeugt werden muss.</td>
</tr>
<tr>
<td align="left">Setze</td>
<td align="left">In msg.payload.text wird nun der Text "VEBRAUCH W" gespeichert.</td>
</tr>
<tr>
<td align="left">Ändere</td>
<td align="left">Hiermit wird der Text "VEBRAUCH" durch den Wert ausgetauscht, der in msg.stromverbrauch zwischengespeichert wurde.</td>
</tr>
<tr>
<td align="left">Setze</td>
<td align="left">Die Text-Farbe setze ich mit msg.payload.color auf den Wert grün (HEX-Wert)</td>
</tr>
<tr>
<td align="left">Setze</td>
<td align="left">Durch msg.payload.repeat gebe ich an, dass der Text zweimal hintereinander auf dem Display angezeigt werden soll</td>
</tr>
<tr>
<td align="left">Setze</td>
<td align="left">Mit msg.payload.icon gebe ich an, dass das zuvor geladene Icon mit der Nummer 21256 vor dem Text angezeigt werden soll.</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-25"><p>In Node-Red sieht der Change-Node wie folgt aus:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload.webp"><img decoding="async" class="alignnone wp-image-2530 size-medium" src="https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-179x300.webp" alt="" width="179" height="300" srcset="https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-179x300.webp 179w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-200x336.webp 200w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-400x672.webp 400w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-600x1007.webp 600w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-610x1024.webp 610w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload-768x1289.webp 768w, https://homeitems.de/wp-content/uploads/2023/12/Nodered_Awtrix_payload.webp 794w" sizes="(max-width: 179px) 100vw, 179px" /></a></p>
<p><em>TIPP: Es gibt eine große Zahl von Konfigurationsmöglichkeiten für eine Anzeige. Diese sind in der sehr guten Dokumentation unter folgendem <a href="https://blueforcer.github.io/awtrix-light/#/api">Link</a> zu finden.</em></p>
<p>Diese Informationen leite ich anschließend an den MQTT-out-Node weiter. Hier ist darauf zu achten, dass das Topic richtig eingetragen wird. Dieses besteht aus dem in AWTRIX festgelegten Topic (hier "awtrix_test"), gefolgt von dem Text "/custom" sowie einer eigenen Applikationsbezeichnung. In meinem Beispiel lautet das topic "awtrix_test/custom/stromverbrauch". Der letzte Name kann frei gewählt werden ist aber wichtig, damit man die verschiedenen Werte, die man an die Uhr übermittelt, eindeutig unterscheiden kann.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix.webp"><img decoding="async" class="alignnone wp-image-2534 size-medium" src="https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix-300x245.webp" alt="" width="300" height="245" srcset="https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix-200x163.webp 200w, https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix-300x245.webp 300w, https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix-400x326.webp 400w, https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix-600x490.webp 600w, https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix-768x627.webp 768w, https://homeitems.de/wp-content/uploads/2023/12/MQTT-Node_Awtrix.webp 794w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Sobald man den Flow in Node-Red deployed hat, sollte nach kurzer Zeit auf der Pixelclock der definierte Wert angezeigt und ständig aktualisiert werden. Es kann am Anfang ein paar Sekunden dauern, bis die Nachrichten vom Broker empfangen wurden.</p>
</div><div class="fusion-text fusion-text-26"><h2>Senken des Stromverbrauchs</h2>
<p>Bei Messungen habe ich festgestellt, dass die Pixelclock bis zu 8 Watt im Betrieb braucht. Das erschien mir ziemlich viel, so dass ich zwei Maßnahmen empfehle, wie der Verbrauch gesenkt werden kann.</p>
<p>Zuerst sollte die Helligkeit des Displays heruntergestellt werden. Dazu wählt man im Menü der Pixelclock (langes Drücken auf die mittlere Taste) den Menüpunkt "BRIGHTNESS". Nach Drücken der mittleren Taste kann man hier einen eigenen Wert einstellen. Bei mir sind aktuell 10% eingestellt, was auch bei Tageslicht vollkommen ausreicht. Dadurch sank mein Stromverbrauch bereits auf weniger als 5 Watt.</p>
<p>Zusätzlich stelle ich ich die Anzeige z.B. nachts aus. Hierzu wird der Pixelclock einfach ein Befehl geschickt, der diese für eine bestimmte Zeit schlafen legt (Deep Sleep Modus des ESP).</p>
<p>Dazu wird in einem Change-Node die Eigenschaft "sleep" auf die Sekundenzahl gesetzt, die das Gerät im Schlafmodus verbringen soll. In meinem Beispiel sind das 12 Stunden oder 43.200 Sekunden:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep.webp"><img decoding="async" class="alignnone wp-image-2628 size-medium" src="https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep-300x255.webp" alt="" width="300" height="255" srcset="https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep-200x170.webp 200w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep-300x255.webp 300w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep-400x341.webp 400w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep-600x511.webp 600w, https://homeitems.de/wp-content/uploads/2023/12/Awtrix_DeepSleep.webp 694w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Diese Information wird anschließend als Push-Nachricht über einen mqtt-out-Node an den MQTT-Server gesendet, wobei das Topic wie folgt lautet "awtrix_test/sleep".</p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/pixelclock-als-statusanzeige-fuer-smarthome/">Pixelclock als Statusanzeige für smart home</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/pixelclock-als-statusanzeige-fuer-smarthome/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
