<?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>MQTT Archive - Smart home Ratgeber</title>
	<atom:link href="https://homeitems.de/category/mqtt/feed/" rel="self" type="application/rss+xml" />
	<link>https://homeitems.de/category/mqtt/</link>
	<description>Einfache Lösungen für zuhause mit Smart home items</description>
	<lastBuildDate>Tue, 09 Jun 2026 16:25:22 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://homeitems.de/wp-content/uploads/2020/10/cropped-wpicon_homeitems-32x32.jpg</url>
	<title>MQTT Archive - Smart home Ratgeber</title>
	<link>https://homeitems.de/category/mqtt/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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-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;">MQTT</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><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-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">>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-2"><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-1 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-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-2 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-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;">MQTT</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-3"><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-4"><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-5"><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-6"><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-7"><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-8"><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-9"><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-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;">MQTT</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-10"><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-11"><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-12"><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-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_2" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_2" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_2" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/x-sh">msg.payload=msg.payload.aenergy.total;
return msg;</textarea></div><div class="fusion-text fusion-text-13"><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-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;">MQTT</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-14"><p>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-15"><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-16"><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-17"><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-18"><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>
		<item>
		<title>Füllstandsmessung mit LoRaWAN</title>
		<link>https://homeitems.de/fuellstandsmessung-mit-lorawan/</link>
					<comments>https://homeitems.de/fuellstandsmessung-mit-lorawan/#comments</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sun, 02 Apr 2023 11:29:24 +0000</pubDate>
				<category><![CDATA[LoRaWAN]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[Node-Red]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=2009</guid>

					<description><![CDATA[<p>Im Artikel Füllstandssensor (Zisterne) für HMIP selber bauen habe ich beschrieben, wie ich mit einem D1 Mini und einem SR04T Distanzsensor eine Füllstandsmessung für eine Zisterne realisiert habe. Nach fast einem Jahr stelle ich fest, dass die Lösung für meine Zwecke zu unzuverlässig ist. Hierzu gehört insbesondere, dass eine WLAN-Verbindung im Außenbereich teils  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/fuellstandsmessung-mit-lorawan/">Füllstandsmessung 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-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;">MQTT</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-19"><p>Im Artikel <a href="https://homeitems.de/fuellstandssensor-zisterne-fuer-hmip-selber-bauen/">Füllstandssensor (Zisterne) für HMIP selber bauen</a> habe ich beschrieben, wie ich mit einem D1 Mini und einem SR04T Distanzsensor eine Füllstandsmessung für eine Zisterne realisiert habe.  Nach  fast einem Jahr stelle ich fest, dass die Lösung für meine Zwecke zu unzuverlässig ist. Hierzu gehört insbesondere, dass eine WLAN-Verbindung im Außenbereich teils nicht funktioniert. Darüber hinaus verträgt auch der Sensor SR04-T die feuchte Luft in der Zisterne nicht gut, obwohl er hierfür gemacht wurde. Ebenso habe ich immer wieder Messunschärfen, da sich im Messbereich des Sensors auch der Zulauf befindet und dieser Abstand manchmal dominiert. Mein Ziel war es, einen Sensor zu finden, der präziser ist, langlebiger und vor allen Dingen ohne WLAN auskommt. Bei der Übertragungstechnik LoRaWAN bin ich fündig geworden.</p>
<h2>LoRaWAN Entfernungssensor</h2>
<p>Da man mit LoRaWAN auch extrem weite Strecken überbrücken kann war klar, dass es ein LoRaWa Sensor sein soll. Auf dem Markt gibt es für die Messung von Abständen zu Oberflächen ein erstaunlich großes Angebot in diesem Segment, allerdings teilweise auch mit astronomischen Preisen. Ich bin aber fündig geworden und haben den Dragino LDDS 75 entdeckt, den man z.B. bei <a href="https://www.reichelt.de/lorawan-distanzsensor-dra-ldds75-8-p311269.html">Reichelt</a> beziehen kann. Wenn man den Sensor kauft sollte dieser für die europäischen 863 -867 MHz Netze ausgelegt sein.</p>
<p>Der Sensor hat mich aus folgenden Gründen überzeugt:</p>
<ul>
<li>Er ist IP66 geschützt, d.h. ein starker Wasserstrahl sollte nicht zum Eindringen von Wasser führen (in einer Zisterne ist es maximal Spritzwasser)</li>
<li>Er hat eine Akku-Laufzeit von bis zu 10 Jahren</li>
<li>Er ist relativ klein</li>
<li>Er fokussiert die Messung auf einen kleinen Bereich</li>
<li>Er kann Distanzen bis zu 4 Metern erkennen</li>
<li>Er ist nicht teuer (&lt;80 Euro)</li>
</ul>
<p>Beim Öffnen des Hauptgehäuses ist mir ebenfalls noch aufgefallen, dass der Akku ausgetauscht werden kann. Dies ist ein Vorteil, denn manche LoRaWAN Sensoren werden mit einem vergossenen Gehäuse angeboten, so dass das ganze Gerät beim Ausfall des Akkus getauscht werden muss.</p>
<p>Interessant bleibt die Frage, ob der Sensor in einer geschlossenen Tonne funktioniert, denn hier bildet sich insbesondere im Frühjahr und Herbst Kondenswasser, welches insbesondere Ultraschallsensoren beeinflussen kann. Aber das werde ich jetzt ausprobieren.</p>
<p><i>Ergänzung vom Juni 2026 zur Akkulaufzeit: </i></p>
<p><i>Etwas mehr als 3 Jahre nach der Installation ist die Batterie ausgefallen bzw. war leer. Da diese nicht wiederaufladbar ist muss sie ersetzt werden, was auch einfach geht. Auch den Batterietyp erhält man ohne große Suche von verschiedenen Händlern. Ob die (kurze) Lebensdauer der Batterie an meinen vielen Tests liegt oder an den klimatischen Bedingungen (der Akku ist halt auch bei Minustemperaturen und bei großer Hitze draußen) bleibt dabei offen. </i></p>
<h2>Einrichtung des Sensor</h2>
<p>Um den Sensor in Betrieb zu nehmen, muss er erst geöffnet werden. Dazu schraubt man die vier Gehäuseschrauben los und öffnet das Gehäuse. Im Gehäuse wird anschließend der gelbe Jumper umgesteckt (siehe Anleitung) und der Sensor meldet sich mit blauem Blinken.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup.webp"><img decoding="async" class="alignnone wp-image-2041 size-medium" src="https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-300x225.webp" alt="" width="300" height="225" srcset="https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-200x150.webp 200w, https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-300x225.webp 300w, https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-400x300.webp 400w, https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-600x450.webp 600w, https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-768x576.webp 768w, https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup-800x600.webp 800w, https://homeitems.de/wp-content/uploads/2023/01/LDDS75-Setup.webp 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Die Einrichtung eines LoRaWAN Gateways und eines Account im LoRaWAN-Netzwerk habe ich bereits im Artikel <a href="https://homeitems.de/lorawan/">LoRaWAN mit eigenem Gateway einrichten</a> beschrieben und beziehe mich in der folgenden Beschreibung darauf.</p>
<p>In der TTN/TTS Oberfläche wird für den Füllstandssensor zuerst eine neue Application erzeugt. Dazu geht man auf den Reiter "Applications" und erstellt über den Button "Create Application" eine neue Applikation mit einer aussagekräftigen Application-ID.</p>
<p>Nachdem man die neue Application erzeugt hat, schaut man in das Menü "End devices" (auf der linken Bildschirmseite) und wählt in diesem den Button "Register End device". Da der Dragino Sensor bereits im Repository steht, kann man zur Einrichtung die Option "Select the device in the LoRaWAN Device Repository" stehen lassen. Alternativ kann man die Einrichtung auch manuell vornehmen (zweite Option)</p>
<p>Folgende Parameter sollten gewählt werden (wenn sie nicht schon automatisch vorgegeben sind):</p>
</div>
<div class="table-1">
<table width="100%">
<thead>
<tr>
<th align="left">Parameter</th>
<th align="left">Wert</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Frequency Plan</td>
<td align="left">Europe 863-870 MHz (SF12 for RX2)</td>
</tr>
<tr>
<td align="left">LoRaWAN Version</td>
<td align="left">LoRaWAN Sepcification 1.0.3</td>
</tr>
<tr>
<td align="left">Regional Parameter Version</td>
<td align="left">RP001 Regional Parameter 1.0.3. revision A (wird in der Regel durch LoWaWAN Version schon gesetzt)</td>
</tr>
<tr>
<td align="left">Join EUI (DEV EUI)</td>
<td align="left">Die auf dem Gerät oder Karton aufgedruckte Nummer</td>
</tr>
<tr>
<td align="left">APP EUI</td>
<td align="left">Die auf dem Gerät oder Karton aufgedruckte Nummer</td>
</tr>
<tr>
<td align="left">APP KEY</td>
<td align="left">Die auf dem Gerät oder Karton aufgedruckte Nummer</td>
</tr>
<tr>
<td align="left">Firmware Version</td>
<td align="left">
<pre>V1.1.4 (nur notwendig, wenn explizit danach gefragt wird)</pre>
</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-20"><p>Die Anlage einer Device ist unter folgendem<a href="https://www.thethingsindustries.com/docs/devices/adding-devices/"> Link</a> gut erklärt. Die Firmware Versionen können bei Bedarf von <a href="https://www.dropbox.com/sh/47fsmpbfv4qrw2d/AACy5NcU8MCMFVpYITSUfVLPa?dl=0">Dropbox</a> heruntergeladen werden.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2.jpg"><img decoding="async" class="alignnone wp-image-2034 size-medium" src="https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-300x287.jpg" alt="" width="300" height="287" srcset="https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-200x191.jpg 200w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-300x287.jpg 300w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-400x382.jpg 400w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-600x573.jpg 600w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-768x734.jpg 768w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-800x764.jpg 800w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-1024x978.jpg 1024w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-1200x1146.jpg 1200w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2-1536x1467.jpg 1536w, https://homeitems.de/wp-content/uploads/2023/01/TTN-Einrichtung2.jpg 1653w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nach der Anlage der Device sollte der Server versuchen, eine Verbindung aufzubauen. Dies kann man entweder im Fenster "Device overviwe" oder unter "Live data" beobachten. Wenn ein Connect erfolgreich verläuft, dann sollten hier mindestens folgende Zeilen auftauchen:</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-scaled.jpg"><img decoding="async" class="alignnone wp-image-2032 size-medium" src="https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-300x30.jpg" alt="" width="300" height="30" srcset="https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-200x20.jpg 200w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-300x30.jpg 300w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-400x39.jpg 400w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-600x59.jpg 600w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-768x76.jpg 768w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-800x79.jpg 800w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-1024x101.jpg 1024w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-1200x118.jpg 1200w, https://homeitems.de/wp-content/uploads/2023/01/Successful-Connection-1536x152.jpg 1536w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Wenn hier irgendetwas nicht funktioniert, dann ist fast immer igrendein Parameter bei der Device Anlage falsch angegeben worden.</p>
</div><div class="fusion-text fusion-text-21"><h2>Uplink Payload formatieren</h2>
<p>Der Hex-Code, der vom Sensor zurückgeliefert wird ist erst einmal nicht lesbar und muss daher aufbereitet werden. Aus diesem Grund wird zu jeder Application (und der dazugehörigen Device) ein Payload Formatter angelegt, der definiert, wie der Hex-Code aufbereitet werden soll. Zusätzlich wird über die Application definiert, an wen die decodierten Nachrichten weiterversendet werden sollen.  Die Payload-Information des sogenannten Uplink-Kanals besteht insgesamt aus 8 Bytes, die sich wie folgt unterscheiden</p>
</div>
<div class="table-1">
<table width="100%">
<thead>
<tr>
<th align="left"><strong>BYTES</strong></th>
<th align="left">INHALT</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">1 &amp; 2&nbsp; <strong><br />
</strong></td>
<td align="left">Batterie Ladestand in mV</td>
</tr>
<tr>
<td align="left">3 &amp; 4</td>
<td align="left">Distanz in mm</td>
</tr>
<tr>
<td align="left">5</td>
<td align="left">Digital Interrupt (kann optional angeben, warum ein Interrupt ausgelöst wurde)</td>
</tr>
<tr>
<td align="left">6 &amp; 7</td>
<td align="left">Temperatur (nur verfügbar, falls optionaler Temperatursensor vorhanden ist)</td>
</tr>
<tr>
<td align="left">8</td>
<td align="left">Sensor Flag (gibt an, ob Sensor gefunden oder nicht gefunden wurde (z.B. wenn Sensor zu nahe an der Seitenwand angebracht wurde und keine Messung stattfinden konnte)</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-22"><p>Für den Payload Decoder zum LDDS75 und andere Sensoren verweist Dragino auf das folgende <a href="https://www.dragino.com/downloads/index.php?dir=LoRa_End_Node/LSE01/Payload_Decoder/">Verzeichnis </a></p>
<p>ACHTUNG: Der Code von Dragino ist fehlerhaft, denn dieser geht davon aus, dass nur 6 anstelle von 8 Bytes vom Sensor zurückgeliefert werden. Der korrigierte Code lautet:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.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">function Decoder(bytes, port) {
  // Decode an uplink message from a buffer
  // (array) of bytes to an object of fields.
  var len=bytes.length;
  var value=(bytes[0]<<8 | bytes[1]) & 0x3FFF;
  var batV=value/1000;//Battery,units:V
  
  var distance = 0;
  if(len==8)  
  {
   value=bytes[2]<<8 | bytes[3];
   distance=(value);//distance,units:mm
   if(value<20)
    distance = "Invalid Reading";
  }
  else
   distance = "No Sensor";
   
  var interrupt = bytes[len-1]; 
  return {
       Bat:batV ,
       Distance:distance,
       Interrupt_status:interrupt
  };
}</textarea></div><div class="fusion-text fusion-text-23"><p>Der Code wird nun unter Application / Payload /Formatters / Uplink in das Feld "Formatter Code" kopiert und gespeichert. Als Formatter Type sollte "Custom Javascript formatter" ausgewählt sein.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter.jpg"><img decoding="async" class="alignnone wp-image-2027 size-medium" src="https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-300x238.jpg" alt="" width="300" height="238" srcset="https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-200x159.jpg 200w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-300x238.jpg 300w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-400x318.jpg 400w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-600x477.jpg 600w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-768x610.jpg 768w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-800x636.jpg 800w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-1024x814.jpg 1024w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-1200x954.jpg 1200w, https://homeitems.de/wp-content/uploads/2023/01/Payload-Formatter-1536x1221.jpg 1536w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nun sollten die Nachrichten dekodiert werden (das kann auch erst beim nächsten Sensorwertempfang sein) und wie folgt erscheinen:</p>
<p><img decoding="async" class="alignnone wp-image-2026 size-large" src="https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-1024x65.jpg" alt="" width="1024" height="65" srcset="https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-200x13.jpg 200w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-300x19.jpg 300w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-400x25.jpg 400w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-600x38.jpg 600w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-768x49.jpg 768w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-800x51.jpg 800w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-1024x65.jpg 1024w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message-1200x76.jpg 1200w, https://homeitems.de/wp-content/uploads/2023/01/Example-Payload-Message.jpg 1465w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
</div><div class="fusion-text fusion-text-24"><h2>Intervall bis zur Datensendung (Uplink) verändern</h2>
<p>Lt. Dragino wird der Sensor alle 20 Minuten aktiv und sendet seine Werte an das TTN Netzwerk. Ich möchte diese Zeitspanne gerne verlängern, denn für mich reicht eine Messung jede Stunde aus. Darüber hinaus sparen längere Messintervalle Batterie, so dass die Laufzeit des Akkus hierdurch verlängert wird.</p>
<p>Dragino verweist auf zwei Möglichkeiten diesen Wert zu verändern</p>
<ul>
<li>Mittels AT-Befehlen (das schließe ich aus, denn dazu muss ich mir einen TTL-USB Adapter beschaffen)</li>
<li>Mittels Downlink Befehl (dies wäre meine präferierte Lösung)</li>
</ul>
<p>Hierzu verweist Dragino auf folgende <a href="http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/">FAQ  </a>aus der sich die folgenden Punkte ergeben:</p>
<ul>
<li>Zur Steuerung von Devices werden über TTN HEX-Codes verwendet.</li>
<li>Der Befehl besteht aus 4 Bytes</li>
<li>Das erste Byte gibt die Funktion zum Ändern der Uplink Intervals an und ist "01"</li>
<li>Die nächsten 3 Bytes beinhalten die Zeitdauer in Sekunden (im Hex Format) also z.B. für 60 Minuten (3600 Sekunden) "00 0E 10"</li>
</ul>
<p>Zur Einstellung wähle ich in TTN meine Device aus (Füllstandssensor), gehe dort auf den Reiter "Messaging" und wähle den Reiter "Downlink" aus. Hier füge ich nur den Payload "01 00 0E 10" ein und aktiviere die Checkbox "Confirmed downlink".</p>
<p>Nun wird der Befehl in die Warteschlange aufgenommen und beim nächsten Connect (Uplink-Intervall) an den Füllstandssensor übermittelt.</p>
<p>Der Befehl erst dann ausgeführt, wenn das Device die nächste Uplink-Message schickt.</p>
</div><div class="fusion-text fusion-text-25"><h2>Sensor montieren</h2>
<p>Ich habe den Sensor an einen Winkelverbinder montiert, welchen ich in der Regentonne befestigt habe. Da der Sensor mit zwei Überwurfmuttern zum Festschrauben geliefert wird habe ich einen passenden Halter entworfen und mit einem 3D-Drucker ausgedruckt, so dass ich an diesem den Sensor festschrauben kann. Den Sender mit der Antenne habe ich abschließend mit Kabelbindern an dem Winkelverbinder befestigt.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002.webp"><img decoding="async" class="alignnone wp-image-2038 size-medium" src="https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-300x294.webp" alt="" width="300" height="294" srcset="https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-66x66.webp 66w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-200x196.webp 200w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-300x294.webp 300w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-400x392.webp 400w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-600x588.webp 600w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-768x752.webp 768w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002-800x784.webp 800w, https://homeitems.de/wp-content/uploads/2023/01/IMG_0821-002.webp 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
</div><div class="fusion-text fusion-text-26"><h2>Daten an MQTT-Server senden</h2>
<p>Um die Daten weiterverarbeiten zu können, schicke ich diese an einen MQTT-Server. Hierzu verwende ich den MQTT-Server, der von The Things Stack angeboten wird.</p>
<p>Dazu lege man unter Applications /Integrations / MQTT einfach einen neuen API-Key an, der für eine sichere Authentifizierung der Verbindung sorgt (hat man früher schon einen API-Key angelegt, kann man diesen natürlich auch verwenden). Die Servervorgaben für den MQTT-TTN-Server können übernommen werden, der Username wird ebenfalls vom System vorgegeben und besteht aus <code>@.</code></p>
<p>Ab sofort sendet der Sensor die Daten über den Application Server an den MQTT-Server.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration.webp"><img decoding="async" class="alignnone wp-image-2050 size-medium" src="https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-300x134.webp" alt="" width="300" height="134" srcset="https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-200x89.webp 200w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-300x134.webp 300w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-400x179.webp 400w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-600x268.webp 600w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-768x343.webp 768w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-800x358.webp 800w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-1024x458.webp 1024w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration-1200x537.webp 1200w, https://homeitems.de/wp-content/uploads/2023/02/MQTT-Integration.webp 1400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2>Daten mit NodeRed verarbeiten</h2>
<p>Nun müssen die Daten von dem TTN MQTT Server abgeholt werden. Hierzu verweise ich auf die wirklich gute Anleitung von The Things Stack zu Node-Red, die man unter folgendem <strong><a href="https://www.thethingsindustries.com/docs/integrations/node-red/">Link</a></strong> findet.</p>
<p>Ich frage in Node-Red alle Daten vom MQTT-Server ab und löse dann den payload mit einer Funktion für den Abstand (ich rechne das direkt auf Zentimeter um) sowie einer Funktion für die Batteriespannung auf und schreibe diese Daten dann direkt in eine InfluxDB.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT.webp"><img decoding="async" class="alignnone wp-image-2051 size-medium" src="https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-300x92.webp" alt="" width="300" height="92" srcset="https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-200x61.webp 200w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-300x92.webp 300w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-400x122.webp 400w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-600x183.webp 600w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-768x234.webp 768w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-800x244.webp 800w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-1024x312.webp 1024w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT-1200x366.webp 1200w, https://homeitems.de/wp-content/uploads/2023/02/RedNode-LoRaWAN-MQTT.webp 1400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Wie das funktioniert steht 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/fuellstandsmessung-mit-lorawan/">Füllstandsmessung mit LoRaWAN</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/fuellstandsmessung-mit-lorawan/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>MQTT-Broker Mosquitto als Docker Image auf einem NAS installieren</title>
		<link>https://homeitems.de/mqtt-broker-mosquitto-als-docker-image-auf-nas-installieren/</link>
					<comments>https://homeitems.de/mqtt-broker-mosquitto-als-docker-image-auf-nas-installieren/#comments</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Thu, 29 Sep 2022 18:59:38 +0000</pubDate>
				<category><![CDATA[MQTT]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=1895</guid>

					<description><![CDATA[<p>Da mir mein Raspi neulich den Dienst verweigert hat und daher eine Reihe von Daten nciht mehr erfasst wurden, habe ich einen alternativen "Betreiber" für dem MQTT-Broker Mosquitto gesucht. Dabei bin ich wieder bei Docker gelandet, welcher aals Service auf meinem Synology NAS läuft. Im Folgenden beschreibe ich kurz, welche Einstellungen ich  [...]</p>
<p>Der 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> 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-6 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-6 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-6 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;">MQTT</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-27"><p>Da mir mein Raspi neulich den Dienst verweigert hat und daher eine Reihe von Daten nciht mehr erfasst wurden, habe ich einen alternativen "Betreiber" für dem MQTT-Broker Mosquitto gesucht. Dabei bin ich wieder bei Docker gelandet, welcher aals Service auf meinem Synology NAS läuft. Im Folgenden beschreibe ich kurz, welche Einstellungen ich vorgenommen habe, damit Mosquitto fehlerfrei läuft.</p>
<h2>Installation</h2>
<p>Als Paket wird "eclipse-mosquitto" in der "Latest-Version" heruntergeladen.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package.jpg"><img decoding="async" class="alignnone wp-image-1899 size-medium" src="https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-300x136.jpg" alt="" width="300" height="136" srcset="https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-200x90.jpg 200w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-300x136.jpg 300w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-400x181.jpg 400w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-600x271.jpg 600w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-768x348.jpg 768w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-800x362.jpg 800w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-1024x463.jpg 1024w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package-1200x543.jpg 1200w, https://homeitems.de/wp-content/uploads/2022/09/mosquitto_package.jpg 1452w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Unter dem Verzeichnis Docker wird dann das Verzeichnis "mosquitto" sowie darunter die folgenden Unterverzeichnisse angelegt:</p>
<ul>
<li>config</li>
<li>data</li>
<li>log</li>
</ul>
<p>im Verzeichnis config wird nun eine Datei "mosquitto.conf" erstellt, die folgenden Inhalt hat:</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">persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883</textarea></div><div class="fusion-text fusion-text-28"><p>Entweder man lädt die erstellte Datei einfach in das Verzeichnis hoch oder nutzt den Texteditor vom Synology DSM, um diese zu erstellen. Insbesondere die vierte Zeile ist wichtig, da sich sonst niemand beim Broker anmelden kann.</p>
<p>Die Pfade für das Docker Image werden dann wie folgt gesetzt:</p>
</div>
<div class="table-1">
<table width="100%">
<thead>
<tr>
<th align="left">File/Folder</th>
<th align="left">Mount Path</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">docker/mosquitto/config/mosquitto.conf</td>
<td align="left">/mosquitto.conf</td>
</tr>
<tr>
<td align="left">docker/mosquitto/config</td>
<td align="left">/mosquitto/config</td>
</tr>
<tr>
<td align="left">docker/mosquitto/data</td>
<td align="left">/mosquitto/data</td>
</tr>
<tr>
<td align="left">docker/mosquitto/log</td>
<td align="left">/mosquitto/log</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-29"><p>Nun müssen für den Container nur noch folgende Daten angegeben werden:</p>
<ul>
<li>Beliebiger Name für den Container</li>
<li>Netzwerk: bridge</li>
<li>Automatischen Neustart aktivieren</li>
<li>Lokaler Port 1883 und Container Port 1883, TCP</li>
<li>Lokaler Port 9001 und Container Port 9001, TCP</li>
</ul>
<p>In den Umgebungsvariabeln setze ich immer zusätzlich die Timezone, da die automatische Übernahme vom Synology DSM schon mal nicht funktioniert hat:</p>
<ul>
<li>TZ  Europe/Berlin</li>
</ul>
<p>Das wars. Nach dem Starten sollte der Broker laufen und ansprechbar sein. Ich überprüfe das beispielsweise mit dem MQTT-Explorer.</p>
</div></div></div></div></div>
<p>Der 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> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/mqtt-broker-mosquitto-als-docker-image-auf-nas-installieren/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>MQTT Nachrichten in Openhab empfangen</title>
		<link>https://homeitems.de/mqtt-nachrichten-in-openhab-empfangen/</link>
					<comments>https://homeitems.de/mqtt-nachrichten-in-openhab-empfangen/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sun, 06 Feb 2022 15:25:58 +0000</pubDate>
				<category><![CDATA[MQTT]]></category>
		<category><![CDATA[openHAB]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=1718</guid>

					<description><![CDATA[<p>Für die Kommunikation von IoT insbesondere auch von SmartHome Sensoren und Aktoren hat sich MQTT (Message Queuing Telemetry Transport) als Standardprotokoll etabliert. Dazu werden Informationen über einen Gerätestatus an einen MQTT Broker gesendet, der diese Daten an sogenannte Abonnenten verteilt. Hierzu werden unter einem Thema (Topic) Statusinformationen an den MQTT Broker geschickt,  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/mqtt-nachrichten-in-openhab-empfangen/">MQTT Nachrichten in Openhab empfangen</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-7 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-7 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-7 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;">MQTT</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-30" style="--awb-text-transform:none;"><p>Für die Kommunikation von IoT insbesondere auch von SmartHome Sensoren und Aktoren hat sich MQTT (<span class="ILfuVd">Message Queuing Telemetry Transport</span>) als Standardprotokoll etabliert. Dazu werden Informationen über einen Gerätestatus an einen MQTT Broker gesendet, der diese Daten an sogenannte Abonnenten verteilt. Hierzu werden unter einem Thema (Topic) Statusinformationen an den MQTT Broker geschickt, der diese Themen, den Abonnenten zum Abruf zur Verfügung stellt. Informationen zu den Grundlagen und der Funktionsweise sind massig im Netz zu finden. Für mich stellte sich die Frage, wie ich komplexere MQTT Nachrichten in Openhab3 in Items umwandeln kann.</p>
<h2>Anforderung</h2>
<p>Ich erfasse die Werte eines Smartmeters mittels eine Infrarotsensors und übermittele diese mit einem WEMOS D1 mini an einen MQTT Broker. Als MQTT Broker ist bei mir eine MOSQUITO Server installiert, den es für jede Plattform kostenfrei gibt. Die Daten möchte ich aber über Openhab3 weiter verarbeiten und insbesondere anschließend in einer Datenbank InfluxDB protokollieren und mit Grafana auswerten.</p>
<p>Mein Sensor schickt folgende Daten an den MQTT-Broker:</p>
<p><em>tele/Keller_SmartMeter/SENSOR = </em></p>
<p>Ich möchte aus diesen nun über Openhab3 den Sensorwert Total_in verwenden.</p>
<h2>MQTT Binding und MQTT Broker Thing installieren</h2>
<p>Als erstes muss das MQTT Binding in Openhab 3 installiert werden.</p>
<p>Geht man in Openhab3 unter Administration / Einstellungen in den Bindings Bereich und das "MQTT Binding aus". Nach dem Klick auf Install wird das Binding installiert. Nun muss als erstes ein Thing für den MQTT Broker erstellt werden,m damit man diesen ansprechen kann.</p>
<p>Dazu erzeugt man unter dem Menü Things manuell ein neues Thing mit dem Binding  "MQTT Binding" und wählt anschließend den Typ "MQTT Broker". Nach und freien Vergabe der "Unique Id", des "Labels" und der "Broker Hostename/IP"  sollte dieses Thing angelegt und sofort als "Online" dargestellt werden. Mein Thing hat den Namen "MQTT Broker" erhalten.</p>
<p>Eine detaillierte Erläuterung des Installationsvorgangs ist auch auf folgender <a href="https://bloggingwelt.de/mqtt-in-openhab-3-einrichten/">Seite</a> zu finden.</p>
<p>Ich habe nun die Grundlagen für die Kommunikation mit dem Broker geschaffen.</p>
<h2>Thing anlegen</h2>
<p>Ich muss als nächstes in Openhab ein Thing anlegen, dass meinem Sensor am SmartMeter entspricht. Ebenso erzeuge ich die Kanäle, d.h. die Verbindungen zu den späteren Items, die die Werte des Gerätes zur Verfügung stellen. Über die Items kann ich später auf diese Kanäle zugreifen,.  Das Prinzip der Things, Channels und Items ist ausführlich auf dern <a href="https://www.openhab.org/docs/">Openhab3 Seite</a> erläutert.</p>
<p>Um ein Thing für meinen SmartMeter anzulegen erzeuge ich wiederum ein manuelles Thing für das "MQTT Binding" mit dem Typ "Generic MQTT Thing". Als "Unique ID" und "Label" vergebe ich den Namen "Energiezaehler", als Parent Bridge wähle ich meinen im vorigen Schritt angelegten "MQTT Broker" aus.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2022/01/GenericThing1.jpg"><img decoding="async" class="alignnone wp-image-1719 size-medium" src="https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-300x203.jpg" alt="" width="300" height="203" srcset="https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-200x135.jpg 200w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-300x203.jpg 300w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-400x270.jpg 400w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-600x405.jpg 600w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-768x519.jpg 768w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-800x541.jpg 800w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-1024x692.jpg 1024w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1-1200x811.jpg 1200w, https://homeitems.de/wp-content/uploads/2022/01/GenericThing1.jpg 1363w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2>Kanäle anlegen und Items verbinden</h2>
<p>Bevor ich die Kanäle anlege ist noch eine wichtige Sache zu erledigen. Zuerst benötige ich das Topic, unter dem meine Werte gesendet werden. Da ich per Tasmota die Werte von meinem Sensor übermittele sehe ich genau in der TASMOTA Konsole, wie mein Topic lautet:</p>
<p><em>tele/Keller_SmartMeter/SENSOR</em></p>
<p>Wer dies nicht weiß, dem empfehle ich das Programm<a href="http://mqtt-explorer.com/"> MQTT Explorer</a>, mit dem man alle Informationen, die ein MQTT-Broker bereitstellt oder empfängt ausführlich transparent machen kann.</p>
<p>Unter dem Topicnamen wird folgende Nachricht bereitgestellt:</p>
<p><em></em></p>
<p>Diese Nachricht, ist ein String, in dem sich verschiedene Sensorwerte befinden, die ich benötige. Um diese zu extrahieren gibt es die Java Bibliothek JSONPath, mit der ich das sehr einfach machen kann. Diese muss man in Openhab allerdings separat installieren, damit diese Funktion verwendet werden kann.</p>
<p>Dazu wählt man wieder in Openhab unter Administration / Einstellungen das Icon "Other Add-ons" und sucht hier das JSONPath Transformation Add-On. Nach dessen Installation steht es zur weiteren Verwendung in Openhab ab sofort zur Verfügung.</p>
<p>Nun kann ich in der Liste der Things, den "Energiezaehler" aufrufen. Ich wähle im oberen Bereich des Bildschirms zum "Energiezaehler" den Reiter "Channels und gehe hier auf "Add Channel". Als "Unique_ID" sowie "Label" verwende ich "Stromzaehlerstand" und als "Channel-Type" wähle ich "Number value" aus.</p>
<p>Unter "MQTT State Topic" trage ich meinen Topicnamen ein, unter dem die MQTT Message abgerufen wird: "<em>tele/Keller_SmartMeter/SENSOR"</em></p>
<p><a href="https://homeitems.de/wp-content/uploads/2022/01/Channel1.jpg"><img decoding="async" class="alignnone wp-image-1721 size-medium" src="https://homeitems.de/wp-content/uploads/2022/01/Channel1-249x300.jpg" alt="" width="249" height="300" srcset="https://homeitems.de/wp-content/uploads/2022/01/Channel1-200x241.jpg 200w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-249x300.jpg 249w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-400x482.jpg 400w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-600x722.jpg 600w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-768x925.jpg 768w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-800x963.jpg 800w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-850x1024.jpg 850w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-1200x1445.jpg 1200w, https://homeitems.de/wp-content/uploads/2022/01/Channel1-1276x1536.jpg 1276w, https://homeitems.de/wp-content/uploads/2022/01/Channel1.jpg 1348w" sizes="(max-width: 249px) 100vw, 249px" /></a></p>
<p>Jetzt muss ich dem Kanal noch mitteilen, dass er aus dem String oben nur den Wert hinter dem Doppelpunkt von Total_in extrahiert und das Ergebnis immer in diesem Kanal zur Verfügung stellt. Dazu aktiviere ich die Checkbox "Show advanced" und trage unter "Incoming Value Transformations" den Befehl "JSONPATH:$.MT175.Total_in" ein.</p>
<p>Dieser macht im Prinzip folgendes: Er extrahiert aus dem String alles nach dem MT175 Teil und davon auch nur den Teil, der hinter dem Total_in Substring steht. Schön ist in Openhab, dass der Aufruf der Funktion den Wert direkt in den richtigen Datentype (hier numerisch) umwandelt.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2022/01/Channel2.jpg"><img decoding="async" class="alignnone wp-image-1722 size-medium" src="https://homeitems.de/wp-content/uploads/2022/01/Channel2-232x300.jpg" alt="" width="232" height="300" srcset="https://homeitems.de/wp-content/uploads/2022/01/Channel2-200x259.jpg 200w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-232x300.jpg 232w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-400x518.jpg 400w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-600x778.jpg 600w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-768x995.jpg 768w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-790x1024.jpg 790w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-800x1037.jpg 800w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-1185x1536.jpg 1185w, https://homeitems.de/wp-content/uploads/2022/01/Channel2-1200x1555.jpg 1200w, https://homeitems.de/wp-content/uploads/2022/01/Channel2.jpg 1369w" sizes="(max-width: 232px) 100vw, 232px" /></a></p>
<p>Die genaue Erläuterung, wie JASONPath funktioniert findet man <a href="https://github.com/json-path/JsonPath">hier</a>. Und wer vorher ausprobieren möchte, was aus einem String extrahiert wird, kann das mit dem <a href="https://jsonpath.com/">JASONPath Online Evaluator</a> direkt ausprobieren.</p>
<p>Zum Schluss kann ein Item erzeugt und mit dem Kanal verbunden werden. Dies kann man über die Openhab Oberfläche oder über das Editieren eines .items-Datei z.B. mit Visual Studio Code machen. Anschließend wird dem Item immer der aktuelle Wert des Sensors angezeigt.</p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/mqtt-nachrichten-in-openhab-empfangen/">MQTT Nachrichten in Openhab empfangen</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/mqtt-nachrichten-in-openhab-empfangen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
