<?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>Arduino Archive - Smartebude</title>
	<atom:link href="https://smartebude.de/category/arduino/feed/" rel="self" type="application/rss+xml" />
	<link>https://smartebude.de/category/arduino/</link>
	<description>Smart Home Deals, Homeassistant und ESP8266 Basteleien</description>
	<lastBuildDate>Sat, 28 Jan 2023 20:36:04 +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://smartebude.de/wp-content/uploads/2023/01/cropped-smart_logo_favicon-32x32.png</url>
	<title>Arduino Archive - Smartebude</title>
	<link>https://smartebude.de/category/arduino/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wasserzähler mit EspCAM auslesen</title>
		<link>https://smartebude.de/wasserzaehler-mit-espcam-auslesen/</link>
					<comments>https://smartebude.de/wasserzaehler-mit-espcam-auslesen/#comments</comments>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sun, 06 Jun 2021 05:15:15 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Haustechnik]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<guid isPermaLink="false">https://derfrickler.de/?p=537</guid>

					<description><![CDATA[<p>Den analogen Wasserzähler automatisiert ablesen und ins Smart Home einbinden, das geht mit einer günstigen ESPCAM und etwas Bastelaufwand. Durch Zufall bin ich auf ein interessantes Projekt gestoßen, das mir endlich meinen Wunsch erfüllt, meinen bestehenden Wasserzähler auszulesen. Den Wert des Wasserzählers würde ich gern aus folgenden Gründen erfassen: Besseres Verständnis des eigenen Wasserkonsums und [...]</p>
<p>Der Beitrag <a href="https://smartebude.de/wasserzaehler-mit-espcam-auslesen/">Wasserzähler mit EspCAM auslesen</a> erschien zuerst auf <a href="https://smartebude.de">Smartebude</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Den analogen Wasserzähler automatisiert ablesen und ins Smart Home einbinden, das geht mit einer günstigen ESPCAM und etwas Bastelaufwand.</p>



<p class="wp-block-paragraph">Durch Zufall bin ich auf ein interessantes Projekt gestoßen, das mir endlich meinen Wunsch erfüllt, meinen bestehenden Wasserzähler auszulesen. Den Wert des Wasserzählers würde ich gern aus folgenden Gründen erfassen:</p>



<p class="wp-block-paragraph">Besseres Verständnis des eigenen Wasserkonsums und damit mehr Bewusstsein<br>Erkennung von Defekten und damit Schadensprävention durch rechtzeitiges Abdrehen des Wassers.</p>



<p class="wp-block-paragraph"><em>Seit Release 2022.11 kann man den Verbrauch auch im Energie-Dashboard in Home Assistant erfassen. Weitere Informationen findest du dazu hier:<a href="https://smartebude.de/wasserverbrauch-im-energie-dashboard-so-musst-du-den-sensor-konfigurieren/"> Wasserverbrauch im Energie Dashboard</a>.</em></p>





<p class="wp-block-paragraph">Möglich wird dies durch ein Projekt von JomJol, der es geschafft hat eine kleine AI auf einem ESP32 laufen zu lassen, die gängige Wasserzähler anhand eines Fotos auswerten kann. Nach etwas Tüftelei funktioniert dies bei meinem Elster Wasserzähler gut.</p>



<p class="wp-block-paragraph">Die Daten sende ich via MQTT an mein Homeassistant und errechne mir dort meinen Wasserverbrauch für den heutigen Tag.</p>



<p class="wp-block-paragraph">Benötigte Hardcare: Eine Kombi aus . Kostet rund 13 bis 15 Euro mit Versand aus Deutschland.</p>



<p class="wp-block-paragraph">Auf dieses kleine Stück Hardware muss anschließend die Firmware geflasht werden. Wie das geht, ergänze ich die Tage.</p>



<p class="wp-block-paragraph">Zum Projekt: <strong><a rel="noreferrer noopener" href="https://github.com/jomjol/AI-on-the-edge-device" target="_blank">https://github.com/jomjol/AI-on-the-edge-device</a></strong></p>



<p class="wp-block-paragraph">



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Adapter für Elster Wasserzähler</h2>



<p class="wp-block-paragraph">Leider haben alle 3d gedruckten Adapter auf meiner Elster Wasseruhr nicht gut funktioniert. Daher habe ich mich daran versucht, ein entsprechendes 3D Modell zu entwerfen und zu drucken. Inzwischen habe ich eine Version, die gut funktioniert und optisch okay aussieht.</p>



<figure class="wp-block-image size-large is-style-default"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-1024x683.jpeg" alt="" class="wp-image-1015" srcset="https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-1024x683.jpeg 1024w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-300x200.jpeg 300w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-768x512.jpeg 768w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-30x20.jpeg 30w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-75x50.jpeg 75w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-110x73.jpeg 110w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-160x107.jpeg 160w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-500x333.jpeg 500w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-50x33.jpeg 50w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-100x67.jpeg 100w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-200x133.jpeg 200w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-1536x1024.jpeg 1536w, https://smartebude.de/wp-content/uploads/2022/08/3BEC0511-2D51-4E01-9567-004C2CE5D182-2048x1365.jpeg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Adapter für Elster Wasserzähler aus dem 3D Drucker. </figcaption></figure>



<p class="wp-block-paragraph">Das Modell ist noch nicht ganz fertig, aber fast.<s> Wenn ich damit fertig bin, werde ich es auf Thingiverse einstellen.</s> Inzwischen ist die Datei auch auf Thingiverse:<a href="https://www.thingiverse.com/thing:5674591" target="_blank" rel="noreferrer noopener"> https://www.thingiverse.com/thing:5674591</a></p>



<p class="wp-block-paragraph">Falls du keinen 3D-Drucker zu Hand hast, gern bei mir melden</p>



<p class="wp-block-paragraph">Letzte Sache, die noch zu tun ist, einen abnehmbaren Deckel zu entwerfen, damit der Fokus der Kamera besser einstellbar ist. Desertieren wollte ich testen, ob man mit einem kleinen Reflektor das Problem der Reflexion umgehen kann.</p>



<h2 class="wp-block-heading">Flashvorgang – wie Ai on the Edge auf ESPCAM installiert wird</h2>



<ol class="wp-block-list">
<li>Release downloaden und entpacken</li>



<li>Firmware auf ESP32 Cam Flaschen</li>



<li>SD-Karte mit den Datensätzen für die AI beschreiben</li>



<li>WLAN Config auf SD-Karte schreiben</li>



<li>Positionieren und Referenzbild + auszulesende Positionen konfigurieren</li>
</ol>



<p class="wp-block-paragraph">Wenn du Python auf deinem System installiert hast, ist der Vorgang sehr einfach und schnell. Das funktioniert auf Mac und Windows.</p>



<p class="wp-block-paragraph">pip 3 install esptool</p>



<p class="wp-block-paragraph">Esptool flash etc</p>



<p class="wp-block-paragraph">Alternativ gibt es für Windows noch ein Flash Tool. Den kompletten Vorgang, wie es dann zu handhaben ist, kannst du im offiziellen Wiki finden.</p>



<h2 class="wp-block-heading">Konfiguration</h2>



<p class="wp-block-paragraph">Hat alles geklappt, dann solltest du dein Wasser-Zähler-Ausles-Gerät 😀 nun irgendwo im Netzwerk finden. Das findest du entweder in deinem Router, in einer Netzwerk-Scan-Anwendung oder du hast eine statische IP vergeben und weißt, wie du es aufrufen kannst.</p>



<p class="wp-block-paragraph">Durch Aufrufen der IP in dem Browser deiner Wahl, kannst du die Cam konfigurieren. Der Startbildschirm sollte in etwa so aussehen:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="795" src="https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-1024x795.png" alt="Wasserzähler in AI on the Edge erfasst" class="wp-image-994" srcset="https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-1024x795.png 1024w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-300x233.png 300w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-768x596.png 768w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-30x23.png 30w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-75x58.png 75w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-110x85.png 110w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-160x124.png 160w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-500x388.png 500w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-50x39.png 50w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-100x78.png 100w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-200x155.png 200w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x-1536x1192.png 1536w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.44.39@2x.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Basisbild ausrichten und Regions of Interests makieren</h4>



<p class="wp-block-paragraph">Zu Beginn solltest du kontrollieren, ob dein Bild scharf ist und alle Messwerte vorhanden sind. Fehlt etwas oder sind die Messwerte nicht scharf, dann musst du die Kamera noch etwas feinjustieren in der Position.</p>



<p class="wp-block-paragraph">Ist das Bild <strong>unscharf,</strong> dann kannst du über die drehbare Linse (Achtung verklebt! Den sichtbaren Kleber kann man mit einem Messer entfernen) den Fokus einstellen. Hier ist leider ausprobieren das einzige Hilfsmittel. Halbe Runde drehen, neues Foto machen, vergleichen, wiederholen.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="867" src="https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-1024x867.png" alt="" class="wp-image-996" srcset="https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-1024x867.png 1024w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-300x254.png 300w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-768x651.png 768w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-30x25.png 30w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-75x64.png 75w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-110x93.png 110w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-160x136.png 160w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-500x424.png 500w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-50x42.png 50w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-100x85.png 100w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-200x169.png 200w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x-1536x1301.png 1536w, https://smartebude.de/wp-content/uploads/2022/08/CleanShot-2022-08-23-at-05.46.09@2x.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Algin Marks setzen um die Ausrichtung immer richtig setzen zu können. </figcaption></figure>



<p class="wp-block-paragraph">Passt jetzt alles, können 2 Align Marks gesetzt werden. Diese dienen dazu, das Bild richtig zu drehen / zu positionieren, damit die AI auch richtig arbeiten kann.<br>Dazu klicke auf Align Marks und markiere Bereiche, die am Wasserzähler prägnant, gleichbleibend sind. Also keine Wertanzeigen oder runde Punkte, sondern eher Firmennamen, Seriennummern oder Ähnliches.</p>



<p class="wp-block-paragraph">Wenn das gesetzt ist, musst du noch die ROIs (Regions of interest) setzen. Das sind die eigentlichen Zähler-Werte. Im Konfigrationsmodus oben auf <em>Regions of Interests</em> klicken. Die Konfiguration ist ähnlich wie bei den Align Marks.</p>



<p class="wp-block-paragraph">Jetzt nacheinander alle digitalen Zahlen von links nach rechts anlegen. Bei meinem Set-up funktionieren etwas größere Rahmen besser als kleine. Hierbei ist aber etwas probieren notwendig.</p>



<p class="wp-block-paragraph">Nachdem alle digitalen angelegt sind, gilt es noch die analogen Zählelemente anzulegen. Die Vorgehensweise ist hier wieder identisch.</p>



<p class="wp-block-paragraph">Danach kannst du auf der Startseite prüfen, ob dein Zähler korrekt ausgelesen wird. Feintuning der einzelnen Parameter kann helfen, wenn du keine perfekten Resultate bekommst.</p>



<p class="wp-block-paragraph">Bei mir tauchen immer noch falsch erkannte Werte auf, die durch das Filtering dann aber nicht gesendet werden. Mit diesen kann ich gut leben.</p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Empfohlene Einstellungen</h3>



<p class="wp-block-paragraph">Folgende Einstellungen habe ich gemacht, damit ich zuverlässige Ergebnisse bekomme. Viele Einstellungen sind nur sichtbar wenn der <strong>EXPERT MODE</strong> oben rechts aktiviert wird.</p>



<p class="wp-block-paragraph">Als <strong>Model</strong> zur Zeichenerkennung verwende ich „dig-class-11-1411-sq-q“ für meinen Elster Wasserzähler. Damit habe ich die beste Trefferquote.</p>



<p class="wp-block-paragraph">Um Reflektionen zu vermieden habe ich den Wert bei <strong>LEDIntensity</strong>auf 15 gestellt.</p>



<p class="wp-block-paragraph"><strong>PreValueUse</strong> habe ich aktiviert, damit wird immer ein vergleich zur vorherigen Value gezogen. Ist <strong>AllowNegativeRates</strong> deaktiviert, so sind negative Veränderungen zum vorherigen Wert nicht möglich.</p>



<p class="wp-block-paragraph">Um große Sprünge bei eventueller Falscherkennung zu vermeiden, habe ich <strong>MaxRateValue</strong> auf 10 und <strong>MaxRateType</strong> auf RateChange gesetzt.</p>



<h2 class="wp-block-heading">Wasserzähler mit Smart Home verbinden</h2>



<p class="wp-block-paragraph">Wenn jetzt alles passt, kann der Zähler in dein Smart Home verbunden werden.  Dafür stehen dir drei Möglichkeiten zur Verfügung.  </p>



<ol class="wp-block-list">
<li>ESPCam sendet via MQTT Richtung deines Mqtt Brokers und kann in deiner Zentrale verarbeitet werden</li>



<li>Die Smart Home Zentrale liest die REST-API aus</li>



<li>ESPCam schreibt in eine InfluxDB und du verwendest die Werte aus dieser Datenbank in deiner Smart Home Zentrale</li>
</ol>



<p class="wp-block-paragraph">In den meisten Fällen wird sicher MQTT verwendet. Dazu gehe wieder in die Konfiguration und dort auf „edit configuration“.</p>



<p class="wp-block-paragraph">Weiter unten gibt es einen Bereich für MQTT, hier aktiviere vorn die Checkbox. Jetzt kannst du die Werte deines Brokers angeben.</p>



<p class="wp-block-paragraph">Uri: mqtt://deine-broker-Adresse:1883<br>MainTopic: dein gewählter Name für den Wasserzähler<br>UserName: …<br>Passwort: …</p>



<p class="wp-block-paragraph">Mit dieser minimal Konfiguration bist du bei Homeassistant mit dem Mosquitto Broker schon sende-bereit und die ersten Werte sollten auftauchen.</p>



<p class="wp-block-paragraph">Um das zu prüfen, kann man mit einem MQTT Client sich ebenso auf den Broker connecten. Hier sollte, wenn AI on the Edge einen gültigen Zählerstand extrahiert hat, nach kurzer Zeit ein Wert für dein gewähltes Topic auftauchen.</p>



<h2 class="wp-block-heading">Zusammenfassung</h2>



<p class="wp-block-paragraph">Insgesamt ein super Projekt von JomJol. Ich finde es beeindruckend was inzwischen auf einem ESP verarbeitet werden kann und welche Einsatzzwecke sich für solche Mini-KIs in Zukunft noch ergeben können.<br> Vor allem freut es mich aber, dass ich endlich auch etwas über meinen Wasserverbrauch erfahre. Jetzt sind Wassermengen für Badewanne, Blumen gießen, Spülmaschine in Litern pro Tag greifbarer als einmal pro Jahr eine Abrechnung zu bekommen über sein verbrauchtes Wasser.</p>



<p class="wp-block-paragraph">Was ich unterschätzt habe ist der Zeitaufwand. Bis ich die Position, den Fokus, etc. richtig hatte, ist mehr Zeit vergangen als ich angenommen hätte.</p>
<p>Der Beitrag <a href="https://smartebude.de/wasserzaehler-mit-espcam-auslesen/">Wasserzähler mit EspCAM auslesen</a> erschien zuerst auf <a href="https://smartebude.de">Smartebude</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://smartebude.de/wasserzaehler-mit-espcam-auslesen/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>DIY Windsensor mit MQTT mit Esp8266 für IObroker</title>
		<link>https://smartebude.de/diy-windsensor-mit-mqtt-mit-esp8266-fuer-iobroker/</link>
					<comments>https://smartebude.de/diy-windsensor-mit-mqtt-mit-esp8266-fuer-iobroker/#comments</comments>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Tue, 10 Sep 2019 07:57:44 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[IOBroker]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[esp8266]]></category>
		<category><![CDATA[iobroker]]></category>
		<category><![CDATA[mqtt]]></category>
		<category><![CDATA[sensor]]></category>
		<guid isPermaLink="false">https://derfrickler.de/?p=235</guid>

					<description><![CDATA[<p>Ein Windsensor für meine Haussteuerung steht schon lange auf meiner ToDo Liste. Diesen brauche ich vor allem als Sicherheitsfunktion für die automatische Steuerung der Raffstores &#8211; und aus Datensammelwut. Als Basis habe ich mir einen Ventus Ersatzsensor entkernt und dort einen ESP8266 + Arduino Mini Pro 3,3V untergebracht. Die Komponenten Folgende Komponenten habe ich verbaut: [...]</p>
<p>Der Beitrag <a href="https://smartebude.de/diy-windsensor-mit-mqtt-mit-esp8266-fuer-iobroker/">DIY Windsensor mit MQTT mit Esp8266 für IObroker</a> erschien zuerst auf <a href="https://smartebude.de">Smartebude</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="768" src="https://derfrickler.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-1024x768.jpg" alt="" class="wp-image-238" srcset="https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-1024x768.jpg 1024w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-300x225.jpg 300w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-768x576.jpg 768w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-30x22.jpg 30w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-75x56.jpg 75w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-110x82.jpg 110w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-160x120.jpg 160w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-500x375.jpg 500w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-1536x1152.jpg 1536w, https://smartebude.de/wp-content/uploads/2019/09/MVIMG_20190909_075416-2048x1536.jpg 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Ein Windsensor für meine Haussteuerung steht schon lange auf meiner ToDo Liste. Diesen brauche ich vor allem als Sicherheitsfunktion für die automatische Steuerung der Raffstores &#8211; und aus Datensammelwut. </p>



<p class="wp-block-paragraph">Als Basis habe ich mir einen Ventus Ersatzsensor entkernt und dort einen ESP8266 + Arduino Mini Pro 3,3V untergebracht. </p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>Die Komponenten</strong></p>



<p class="wp-block-paragraph">Folgende Komponenten habe ich verbaut: </p>



<ul class="wp-block-list">
<li>Ventus Ersatzwindmesser (<a href="https://www.reichelt.de/de/de/ersatz-windmesser-fuer-funkwetterstation-ventus-w132-p132595.html?r=1">link</a>)  ca. 23 € bei Reichelt .de</li>



<li>Arduino Pro 3,3V 8Mhz (<a href="https://amzn.to/2nCkogf">link</a>)  ca. 4 € bei Amazon.de</li>



<li>Wemos D1 Mini (<a href="https://amzn.to/2mUT4tb">link</a>) ca. 5 € bei Amazon.de</li>



<li>3 Volt Solarzelle (<a href="https://amzn.to/2mWt8xt">link</a>) für 8 € bei Amazon.de</li>



<li>100k Widerstand zur Spannungsmessung</li>
</ul>



<p class="wp-block-paragraph">Macht insgesamt ca.  40 € für einen smarten Windsensor mit Batteriebetrieb. Deutlich Billiger als alle Modelle die auf dem Markt sind und auch etwas besser  zu befestigen als die Stab-Bauweise von Homematic. </p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>Warum 2 Boards?</strong><br>Für die Akkulaufzeit &#8211; den ESP8266 kann ich nicht mit einem externen Interrupt wecken ohne einen vollen Reboot zur durchlaufen. Der Arduino kann jedoch an 2 Interrupt Pins geweckt werden und anschließend wieder schlafen, ohne einen Reboot zu durchlaufen. </p>



<p class="wp-block-paragraph">Der Ablauf ist eigentlich recht einfach, der Arduino zählt an PIN 2 alle Umdrehung des Windsensors und lauscht auf PIN3 ob ein Low vom Wemos gesetzt wird. Kommt das Signal auf PIN3 erfolgt eine Serielle Ausgabe des Aktuellen Windcounters. </p>



<p class="wp-block-paragraph">Der Wemos Rebootet alle 30 Sekunden neu, liest den Serial Input und sendet ggf. Daten via MQTT an IObroker. Ansonsten sind beide Geräte im Deep Sleep und verbrauchen nur Minimal Strom.  </p>



<p class="wp-block-paragraph">Der Ablauf nochmal grafisch dargestellt: </p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="908" height="684" src="https://derfrickler.de/wp-content/uploads/2019/09/New-Arduino-flowchart.png" alt="" class="wp-image-237" srcset="https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart.png 908w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-300x226.png 300w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-768x579.png 768w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-30x23.png 30w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-75x56.png 75w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-110x83.png 110w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-160x121.png 160w, https://smartebude.de/wp-content/uploads/2019/09/New-Arduino-flowchart-500x377.png 500w" sizes="auto, (max-width: 908px) 100vw, 908px" /></figure>



<p class="wp-block-paragraph">Aktuell läuft das ganze noch im Testbetrieb, um zu sehen, wie sich die Batterielaufzeit verhält. Um möglichst lange Betriebszeiten zu erreichen werden 2 NiMH Akkus durch eine 3V Solarzelle geladen &#8211; ohne Laderegler. Den Laderegler halte ich für überflüssig, da NiMH Zellen ein überladen mit geringer Stärke gut verkraften. Ich habe die Akkus vorher einem Kapazitätstest unterzogen und werde im Frühjahr einen weiteren Test mache. </p>



<figure class="wp-block-image"><img decoding="async" src="blob:https://derfrickler.de/4cbf11e3-3098-4e7d-9795-242985a8109f" alt=""/><figcaption class="wp-element-caption">&#8222;Durchdachtes&#8220; Kabelmanagement im Prototyp</figcaption></figure>



<p class="wp-block-paragraph"><strong>Code Arduino Pro mini</strong></p>



<pre class="wp-block-code"><code lang="yaml" class="language-yaml">#include &lt;LowPower.h&gt;


#define WIND_INTERRUPT 0
#define ESP_INTERRUPT 1
#define WIND_INTERRUPT_PIN 3
#define ESP_INTERRUPT_PIN 2


volatile int pulses = 0;
volatile long last_interrupt_time = 0;
volatile int sendcheck = false;


void pulse() {

  unsigned long interrupt_time = millis();

  // If interrupts come faster than 200ms, assume it's a bounce and ignore
  if (interrupt_time - last_interrupt_time &gt; 10)
  {
    ++pulses;

  }
  last_interrupt_time = interrupt_time;
}


void ESP_awake() {
  sendcheck = true;
}


void sendWind() {

  int temppulse = pulses;

  delay(200);
  Serial.println("-");
  Serial.print("pulses:");
  Serial.println(temppulse);

  // gesendete vom Global Counter abziehen
  pulses -= temppulse;

}

void setup() {
  pinMode(WIND_INTERRUPT_PIN, INPUT_PULLUP);
  pinMode(ESP_INTERRUPT_PIN, INPUT);

  Serial.begin(9600);

  attachInterrupt(digitalPinToInterrupt(WIND_INTERRUPT_PIN), pulse, RISING);
  attachInterrupt(digitalPinToInterrupt(ESP_INTERRUPT_PIN), ESP_awake, FALLING);

}


void loop() {

  delay(100);
  LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);


  // Wake up ab hier
  if (sendcheck) {
    sendcheck = false;
    sendWind();
  }
}</code></pre>



<p class="wp-block-paragraph"><strong>Code Wemos  / Esp8266</strong></p>



<pre class="wp-block-code"><code lang="yaml" class="language-yaml">
#include &lt;ESP8266WiFi.h&gt;
#include &lt;ESP8266HTTPClient.h&gt;
#include &lt;PubSubClient.h&gt;
#include &lt;RTCVars.h&gt;
RTCVars state; // create the state object

int reset_counter;
int program_step;
int sumwindcount;

unsigned int raw = 0;
float volt = 0.0;

WiFiClient espClient;
PubSubClient client(espClient);


const char* ssid = "****";
const char* password = "****";

const char* mqttServer = "192.168.****";
const int   mqttPort = 1886;
const char* mqttUser = "*****";
const char* mqttPassword = "*****";


int sleepTimeS = 30;
volatile unsigned long ContactBounceTime; // Timer to avoid contact bounce in interrupt routine


void setup() {
  Serial.begin(9600);

  state.registerVar( &amp;reset_counter );
  state.registerVar( &amp;sumwindcount );

  if (state.loadFromRTC()) {
    reset_counter++;
  } else {
    reset_counter = 0;
    sumwindcount = 0;
    program_step = 0;
  }

  // Pin 4 Aktivieren / Deaktiveren &gt;&gt; Signal für Arudino Interrupt
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  delay(500);
  digitalWrite(4, LOW);

}


String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = { 0, -1 };
  int maxIndex = data.length() - 1;

  for (int i = 0; i &lt;= maxIndex &amp;&amp; found &lt;= index; i++) {
    if (data.charAt(i) == separator || i == maxIndex) {
      found++;
      strIndex[0] = strIndex[1] + 1;
      strIndex[1] = (i == maxIndex) ? i + 1 : i;
    }
  }
  return found &gt; index ? data.substring(strIndex[0], strIndex[1]) : "";
}



void senddata(int windspeed, int boe, float battery) {

  WiFi.begin(ssid, password);
  byte wifiCNT = 0;
  byte mqttCNT = 0;


  while (WiFi.status() != WL_CONNECTED  &amp;&amp; wifiCNT &lt; 10) {
    delay(500);
    wifiCNT++;
    Serial.println("Connecting to WiFi..");
  }

  Serial.println("Connected to the WiFi network");


  client.setServer(mqttServer, mqttPort);
  while (!client.connected() &amp;&amp; mqttCNT &lt; 10) {
    mqttCNT++;
    Serial.println("Connecting to MQTT...");
    if (client.connect("windsensor", mqttUser, mqttPassword )) {
      Serial.println("connected");
    } else {
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(200);

    }
  }


  if (windspeed != -1) {
    boolean rc = client.publish("windsensor/windspeed", String(windspeed).c_str());
  }

  if (battery != -1) {
    client.publish("windsensor/battery", String(battery).c_str());
  }
  if (boe != -1) {
    client.publish("windsensor/boe", String(boe).c_str());

  }

  delay(100);
}
void loop() {
  Serial.begin(9600);

  delay(100);
  String a;
  int aktwindcount = -1;

  while (Serial.available()) {
    Serial.println("wait for data");
    a = Serial.readString(); // read the incoming data as
    Serial.println(a);
    if (a.indexOf("pulses") &gt; 0) {
      a.replace("\n", "");
      a.replace("⸮-", "");
      a = getValue(a, ':', 1);

      Serial.println(a);
      aktwindcount = a.toInt();
      break;
    }

    delay(100);

  }


  if (aktwindcount &gt; 150) {
    senddata(-1, aktwindcount, -1);
  }

  // summe windcount erhöhen
  sumwindcount =  aktwindcount + sumwindcount;

  // aller 12 durchgänge senden oder wenn starker wind
  if (reset_counter &gt;= 12) {
    int raw = analogRead(A0);
    int windavg = sumwindcount / reset_counter;
    volt = raw / 1023.0;
    volt = volt * 4.2;


    senddata(windavg, -1, volt);
    reset_counter = 0;
    sumwindcount = 0;

  }

  state.saveToRTC();
  delay(100);
  ESP.deepSleep(29e6); // 20e6 is 20 microseconds


}




</code></pre>
<p>Der Beitrag <a href="https://smartebude.de/diy-windsensor-mit-mqtt-mit-esp8266-fuer-iobroker/">DIY Windsensor mit MQTT mit Esp8266 für IObroker</a> erschien zuerst auf <a href="https://smartebude.de">Smartebude</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://smartebude.de/diy-windsensor-mit-mqtt-mit-esp8266-fuer-iobroker/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
