<?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 &#8211; Markus Görres</title>
	<atom:link href="https://www.markus-goerres.de/tag/arduino/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.markus-goerres.de</link>
	<description>Engineer (lighting, IoT, languages, data analytics)</description>
	<lastBuildDate>Mon, 08 Feb 2021 18:08:27 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.markus-goerres.de/wp-content/uploads/2023/11/cropped-Markus-Goerres_2023_512-512-32x32.jpg</url>
	<title>Arduino &#8211; Markus Görres</title>
	<link>https://www.markus-goerres.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CO2-Sensor und Lüftung</title>
		<link>https://www.markus-goerres.de/2021/01/10/co2-sensor-und-lueftung/</link>
		
		<dc:creator><![CDATA[markus]]></dc:creator>
		<pubDate>Sun, 10 Jan 2021 17:15:06 +0000</pubDate>
				<category><![CDATA[IoT, Open Source, Data Analytics, Gadgets]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[CO2]]></category>
		<category><![CDATA[CO2-Sensor]]></category>
		<category><![CDATA[Covid19]]></category>
		<category><![CDATA[Grafana]]></category>
		<category><![CDATA[InfluxDB]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Lüftung]]></category>
		<category><![CDATA[Lüftungsanlage]]></category>
		<guid isPermaLink="false">https://www.markus-goerres.de/?p=1860</guid>

					<description><![CDATA[Einsatzgebiete / Anwendungen Ein CO2-Sensor eignet sich hervorragend, bei Überschreiten definierter Grenzwerte auf manuelles Lüften hinzuweisen, häufig in Form einer Ampelanzeige, wie sie aktuell in Schulen zum Einsatz kommt, um damit auch die Virenbelastung (#Covid19) zu reduzieren. In meinem Fall,]]></description>
										<content:encoded><![CDATA[
<h4 class="wp-block-heading">Einsatzgebiete / Anwendungen</h4>



<div class="wp-block-cover has-background-dim" style="background-image:url(https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210104_174613260-scaled-e1610282531123-1024x768.jpg)"><div class="wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow">
<p class="has-text-align-center has-large-font-size">CO2: alles im grünen Bereich</p>
</div></div>



<p>Ein CO2-Sensor eignet sich hervorragend, bei Überschreiten definierter Grenzwerte auf manuelles Lüften hinzuweisen, häufig in Form einer Ampelanzeige, wie sie aktuell in Schulen zum Einsatz kommt, um damit auch die Virenbelastung (#Covid19) zu reduzieren. In meinem Fall, bei einer existierenden mechanischen Wohnungslüftungsanlage mit Wärmerückgewinnung, zeichnet er den CO2-Gehalt über die Zeit auf und erlaubt somit die Kontrolle bzw. Feinjustierung der Lüftungsanlage.</p>



<h4 class="wp-block-heading">Aufbau der Hardware</h4>



<p>Folgende Komponenten habe ich verwendet (siehe Foto):<br>&#8211; Octopus Maker Platine, kostenlose Aktion des <a rel="noreferrer noopener" href="https://www.heise.de/news/Aktion-Make-verschenkt-Platinen-fuer-die-CO2-Ampel-4938738.html" target="_blank">Heise Verlages</a> (leider nur bis November 2020)<br>&#8211; <a rel="noreferrer noopener" href="https://amzn.to/3bkzZrA" target="_blank">Wemos D1 mini pro</a><br>&#8211; RGB-LED (hatte ich noch aus einem Conrad Adventskalender)<br>&#8211; <a rel="noreferrer noopener" href="https://shop.watterott.com/Sensirion-SCD30-CO2-Kohlendioxid-Sensor" target="_blank">CO2-Sensor SCD30</a><br>Es gibt die Platine mit Sensor und NodeMCU auch als <a rel="noreferrer noopener" href="https://www.tindie.com/products/FabLab/diy-octopus-with-scd30-and-nodemcu-v2/" target="_blank">fertiges Kit bei Tindie</a> von Fab-Lab zu kaufen. Die Komponenten lassen sich natürlich auch ohne die Platine zusammenbauen, allerdings nicht so komfortabel. Bei Tindie finden sich auch verschiedene <a href="https://d3s5r33r268y59.cloudfront.net/datasheets/21632/2020-11-04-21-01-48/Best%C3%BCckung_-_CO2_Ampel_v1.pdf" target="_blank" rel="noreferrer noopener">Anleitungen</a> mit alternativen Bauteilen.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210103_124119943-1024x768.jpg" alt="" class="wp-image-1861" srcset="https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210103_124119943-1024x768.jpg 1024w, https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210103_124119943-300x225.jpg 300w, https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210103_124119943-768x576.jpg 768w, https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210103_124119943-1536x1152.jpg 1536w, https://www.markus-goerres.de/wp-content/uploads/2021/01/PXL_20210103_124119943-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">Software und Programmierung</h4>



<p>Die Programmierung erfolgt mit der Arduino-Entwicklungsumgebung. Als Basis habe ich den Source Code der <a rel="noreferrer noopener" href="https://github.com/make-IoT/CO2-Ampel" target="_blank">CO2-Ampel von make-IoT</a> verwendet. Der CO2-Sensor liefert neben CO2 auch Temperatur und Feuchtigkeit. Um diese Werte auszulesen, muss folgende Bibliothek installiert und eingebunden werden: <code>SparkFun_SCD30_Arduino_Library.h</code>.</p>



<p>Für meinen Anwendungsfall, der Speicherung der CO2-Konzentration über die Zeit, eignet sich hervorragend <a rel="noreferrer noopener" href="https://www.influxdata.com/" target="_blank">InfluxDB</a>, eine auf Messdaten über Zeit spezialisierte Datenbank. </p>



<h4 class="wp-block-heading">Speicherung auf InfluxDB</h4>



<p>Zur lokalen Speicherung und Darstellung genügt ein Raspberry Pi vollkommen. Eine gute und einfache Anleitung gibt es von <a rel="noreferrer noopener" href="https://simonhearne.com/2020/pi-influx-grafana/" target="_blank">Simon Hearne</a>, der die Installation von Influx, Version 1, und Grafana  auf einem Raspberry Pi beschreibt. Wenn jedoch eine Nutzung außerhalb der eigenen vier Wände gewünscht wird, gibt es für Hobby-Anwendung einen kostenlosen Cloud-Zugang zu InfluxDB, dort wird dann die neue Version 2 verwendet. Für beide Varianten muss die Bibliothek <code>InfluxDbClient.h</code> in der Arduino-IDE installiert und eingebunden werden. Die verschiedenen Schritte und Befehle sind auf <a rel="noreferrer noopener" href="https://github.com/tobiasschuerg/InfluxDB-Client-for-Arduino" target="_blank">github</a> einfach und verständlich erklärt und können dann auf die eigenen Messdaten bzw. Zugangsdaten adaptiert werden.</p>



<h4 class="wp-block-heading">Visualisierung der Messdaten</h4>



<p>InfluxDB, Version 2, ermöglicht die visuelle Darstellung der Messdaten bereits in der Cloud in Form einer &#8222;Messuhr&#8220;, engl. Gauge, (siehe Screenshot) oder eines Diagramms über die Zeit. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="589" height="341" src="https://www.markus-goerres.de/wp-content/uploads/2021/01/CO2-Gauge-07-01-2021.png" alt="" class="wp-image-1870" srcset="https://www.markus-goerres.de/wp-content/uploads/2021/01/CO2-Gauge-07-01-2021.png 589w, https://www.markus-goerres.de/wp-content/uploads/2021/01/CO2-Gauge-07-01-2021-300x174.png 300w" sizes="(max-width: 589px) 100vw, 589px" /><figcaption>Gauge InfluxDB</figcaption></figure>



<p>Eine Alternative stellt die Open-Source-Anwendung <a rel="noreferrer noopener" href="https://grafana.com" target="_blank">Grafana</a> zur grafischen Darstellung von Datenbankdaten dar, die kostenlos zur Installation auf eigenen Servern, wie oben beschrieben auf einem Raspberry Pi, bereitgestellt wird oder kostenpflichtig auf der Cloud von Grafana. Die Auswahl der Datenbank und Messdaten aus InfluxDB erfolgt bei Verwendung der Version 1 einfach per UI in Grafana bzw. mit Hilfe der Flux Language bei der Version 2. Die Darstellung als &#8222;Messuhr&#8220; ist vergleichbar mit der aus der InfluxDB (siehe Screenshots).</p>



<pre class="wp-block-code"><code>from(bucket:"my-database")
  |&gt; range(start:-1h)
  |&gt; filter(fn:(r) =&gt;
    r._measurement == "Sensor_Data" and 
    r._field == "CO2"
  )
  |&gt; last()</code></pre>



<figure class="wp-block-image size-large"><img decoding="async" width="797" height="366" src="https://www.markus-goerres.de/wp-content/uploads/2021/01/Bildschirmfoto-zu-2021-01-05-21-05-26.png" alt="" class="wp-image-1872" srcset="https://www.markus-goerres.de/wp-content/uploads/2021/01/Bildschirmfoto-zu-2021-01-05-21-05-26.png 797w, https://www.markus-goerres.de/wp-content/uploads/2021/01/Bildschirmfoto-zu-2021-01-05-21-05-26-300x138.png 300w, https://www.markus-goerres.de/wp-content/uploads/2021/01/Bildschirmfoto-zu-2021-01-05-21-05-26-768x353.png 768w" sizes="(max-width: 797px) 100vw, 797px" /><figcaption>Gauge Grafana</figcaption></figure>



<h4 class="wp-block-heading">Auswertung der Messdaten</h4>



<p>Exemplarisch beschreibe ich die Ergebnisse der CO2-Messung über einen typischen Tag im Home-Office (siehe Diagramm). Die CO2-Konzentration steigt ab Arbeitsbeginn um 8.00 Uhr von ca. 700 PPM bis auf 1000 bis 1100 PPM an, eine Kaffeepause sorgt lediglich für eine kurzzeitige Absenkung. Erst die halbstündige Mittagspause sorgt für eine Absenkung des CO2-Gehaltes unter 900 PPM. Ununterbrochene Videokonferenzen zwischen 13.00 und 16.00 Uhr führen zu einem stetigen Anstieg bis auf 1300 PPM. Der kurze Ausschlag nach unten um ca. 14.30 Uhr erklärt sich durch ein kurze Begrüßung des Paketdienstes bei geöffnetem Fenster. Die anschließende Kaffeepause bewirkt eine kleine Absenkung und erst nach Arbeitsende um ca. 17.30 Uhr sinkt die CO2-Konzentration langsam wieder auf den Ausgangswert. Bis auf die kurzzeitige Fensteröffnung erfolgte die Lüftung und damit auch die Reduzierung des CO2-Gehaltes ausschließlich durch die mechanische Wohnungslüftung.</p>



<iframe src="/wp-content/iot/co2_homeoffice_600.html" width="100%" height="500" loading="lazy"></iframe>



<p>Die CO2-Konzentration im Home-Office bleibt somit aufgrund der mechanischen Lüftung selbst über einen ganzen Tag  immer deutlich unterhalb des kritischen Wertes von 2000 PPM, wo laut <a rel="noreferrer noopener" href="https://www.umweltbundesamt.de/richtig-lueften-in-schulen#was-nutzen-co2-ampeln-und-wie-setze-ich-sie-richtig-ein" target="_blank">Umweltbundesamt</a> zwingend eine Lüftung empfohlen wird.</p>



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



<p>Die dargestellte DIY-Lösung erlaubt eine einfache und kostengünstige Möglichkeit, die CO2-Konzentration in Schulen, in Wohnungen oder an Arbeitsplätzen zu messen und zu visualisieren, entweder in Form einer Ampel oder in Form von Messreihen, die in Datenbanken gespeichert werden. Die Auswertungen dieser Ergebnisse können helfen, a) die Luftbedingungen zu verbessern, b) die Virenbelastung zu reduzieren und c) damit die Bedingungen am Arbeitsplatz zu optimieren. Wer sich für weitere Messreihen, andere Anwendungen oder den Quellcode interessiert, kann mich gerne kontaktieren.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Feuchtesensor</title>
		<link>https://www.markus-goerres.de/2021/01/01/feuchtesensor/</link>
		
		<dc:creator><![CDATA[markus]]></dc:creator>
		<pubDate>Fri, 01 Jan 2021 17:13:42 +0000</pubDate>
				<category><![CDATA[IoT, Open Source, Data Analytics, Gadgets]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Feuchtesensor]]></category>
		<category><![CDATA[HTTP-POST]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[MQTT]]></category>
		<guid isPermaLink="false">https://www.markus-goerres.de/?p=1847</guid>

					<description><![CDATA[Oder: Meine Wärmepumpe will ins Internet Zur Überwachung unserer &#8222;fast wartungsfreien&#8220; Wärmepumpe ist eine regelmäßige Kontrolle des Abflusses der Abtauwanne erforderlich, Vorgabe des Herstellers lautet jährlich. Wenn der Abfluss aber in der Zwischenzeit verstopft, kann jedoch Wasser austreten und im]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Oder: Meine Wärmepumpe will ins Internet</h3>



<p>Zur Überwachung unserer &#8222;fast wartungsfreien&#8220; Wärmepumpe ist eine regelmäßige Kontrolle des Abflusses der Abtauwanne erforderlich, Vorgabe des Herstellers lautet jährlich. Wenn der Abfluss aber in der Zwischenzeit verstopft, kann jedoch Wasser austreten und im ungünstigen Fall einen Wasserschaden erzeugen.</p>



<p>Um eine Verstopfung und somit stehendes Wasser rechtzeitig zu erkennen, habe ich einen Feuchtesensor aufgebaut und diesen über die Arduino-IDE programmiert. Der Zustand wird einmal täglich überprüft und via MQTT publiziert. Zusätzlich erfolgt ein Versand einer E-Mail, wenn Wasser erkannt wurde. Prinzipiell eignet sich der Sensor und die Software ebenso für andere Anwendungen wie z. B. Spülmaschine, Waschmaschine o.ä.</p>



<h4 class="wp-block-heading">Komponenten</h4>



<p>Im Folgenden erläutere ich die notwendige Hard- und Software. Folgende Bauteile habe ich verwendet (siehe Foto):<br>&#8211; Wemos D1 mini pro<br>&#8211; Bodenfeuchte-Sensor-Modul für Arduino<br>&#8211; 3m Micro-USB-Kabel</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="2560" height="1707" src="https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-scaled.jpg" alt="" class="wp-image-1849" srcset="https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-scaled.jpg 2560w, https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-300x200.jpg 300w, https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-1024x683.jpg 1024w, https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-768x512.jpg 768w, https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-1536x1024.jpg 1536w, https://www.markus-goerres.de/wp-content/uploads/2020/12/PXL_20201230_204931945-edited-2048x1365.jpg 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></figure>



<p>Kern des Wemos D1 mini pro ist ein 32-bit-Microcontroller (ESP8266) mit integriertem WLAN. Hilfreiche Details und Tipps dazu liefert <a href="https://wolles-elektronikkiste.de/wemos-d1-mini-boards" target="_blank" rel="noreferrer noopener">Wolle</a>. Der Feuchtesensor (Widerstand + Verstärkereinheit) kann analog oder digital abgefragt werden, für meine Anwendung genügt der digitale Zustand bzw. Ausgang.</p>



<h4 class="wp-block-heading">Software bzw. Funktionen</h4>



<p>Die Abfrage des Sensors und somit des Status erfolgt einmal täglich <em><code>delay(86400000)</code></em>. Da ich keine tägliche E-Mail empfangen möchte, wird der Status per MQTT publiziert, um auch regelmaßig zu kontrollieren, dass das System noch arbeitet. Lediglich bei detektierter Feuchtigkeit, d. h. dem Status &#8222;<em>Wasser</em>&#8222;, schickt der ESP8266 ein HTTP-Request an meinen Webserver, der dann den Versand einer E-Mail via PHP-Skript übernimmt. Alternativ (und auch einfacher) ist ein E-Mail-Versand via SMTP mit der Bibliothek <code><em>ESP_Mail_Client</em></code>.</p>



<h4 class="wp-block-heading">WiFiClient und WiFiClientSecure</h4>



<p>Da mein Webserver über eine sichere Verbindung kommuniziert, war die Lösung etwas kniffelig. Erforderlich ist deshalb eine sichere WiFi-Verbindung sowie eine Verifizierung des Fingerabdrucks meines Zertifikates mit der Bibliothek <em><code>WiFiClientSecure.h</code></em> . Da MQTT mit dem normalen WiFiClient initialisiert wird, ist zusätzlich auch noch die Bibliothek <code><em>WiFiClient.h</em></code> nötig. Wer nicht über eine gesicherte Verbindung kommuniziert oder eine E-Mail per SMTP verschickt, kommt mit der Bibliothek <em><code>WiFiClient.h</code></em> aus.</p>



<h4 class="wp-block-heading">MQTT</h4>



<p>Die Verbindung und Kommunikation zu einem <a rel="noreferrer noopener" href="http://moxd.io/2015/10/17/public-mqtt-brokers/" target="_blank">öffentlichen MQTT-Broker</a> ist relativ einfach und kann dort auch direkt überprüft werden. Hier ist nur zu überlegen, ob dies das einzige Topic bleibt oder noch weitere Themen hinzukommen, also wie die Struktur aussieht: <code><span class="has-inline-color has-cyan-bluish-gray-color">haus/waermepumpe/status</span></code>.</p>



<h4 class="wp-block-heading">E-Mail via HTTP-Post und PHP</h4>



<p>Als Basis habe ich die Anleitung von <a rel="noreferrer noopener" href="https://randomnerdtutorials.com/esp32-esp8266-send-email-notification/" target="_blank">Rui Santos</a> verwendet, allerdings modifiziert für den Versand über eine sichere Verbindung. Dabei verwende ich direkt den WiFiSecureClient und nicht den HTTPClient, da eine Kombination wie in dieser Anleitung beschrieben bei einer verschlüsselten Verbindung nicht funktionierte. Zuerst wird also der Fingerabdruck überprüft <code><em>if(!secureclient.setFingerprint(fingerpr))</em></code>. Erst danach kann der HTTP-Post abgeschickt werden. Die zu übertragenden Daten sind ein Key, damit nicht unbefugte das PHP-Skript für Spam nutzen können, sowie der Status des Sensors: <code><em>String httpRequestData = "api_key=" + apiKeyValue + "&amp;value1=" + SensorData;</em></code></p>



<h4 class="wp-block-heading">Sensor in der Wärmepumpe</h4>



<p>Der Sensor selber wird in der Wärmepumpe derart platziert, dass kein direkter Kontakt mit dem Metallboden der Abtauwanne besteht und ein Signal nur bei stehendem Wasser erfolgt (siehe Foto). Die Stromversorgung erfolgt über den Micro-USB-Anschluss des Wemos Boards, der mit einem 3m langen Kabel und einem alten Handy-Netzteil verbunden ist.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="741" src="https://www.markus-goerres.de/wp-content/uploads/2021/01/Sensorposition-1024x741.png" alt="" class="wp-image-1852" srcset="https://www.markus-goerres.de/wp-content/uploads/2021/01/Sensorposition-1024x741.png 1024w, https://www.markus-goerres.de/wp-content/uploads/2021/01/Sensorposition-300x217.png 300w, https://www.markus-goerres.de/wp-content/uploads/2021/01/Sensorposition-768x556.png 768w, https://www.markus-goerres.de/wp-content/uploads/2021/01/Sensorposition-1536x1111.png 1536w, https://www.markus-goerres.de/wp-content/uploads/2021/01/Sensorposition-2048x1481.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p>Den Sketch zum Upload auf den Microcontroller findet ihr als Vorlage im folgenden Abschnitt&#8230;</p>



<span id="more-1847"></span>



<pre class="wp-block-code"><code>/* verbindung mit webserver ueber ssl und email via php
 * status via mqtt */
#include &lt;ESP8266WiFi.h&gt;
#include &lt;WiFiClientSecure.h&gt;
#include &lt;WiFiClient.h&gt;
#include &lt;PubSubClient.h&gt;

#define WIFI_SSID "dein wifi"
#define WIFI_PASSWORD "wifi passwort"

//host adress
const char* host = "dein webserver mit http oder https";
const char* host_short = "dein webserver";
int port = 443; //ggf. anpassen
const char* path = "/pfad zum php skript";
const char* fingerpr ="mein fingerprint";
String apiKeyValue = "x1x2x3x4x5"; //identisch im PHP-Skript 
const char* SensorData = "";

//WifiClientSecure fuer Verbindung ueber SSL fuer Email
WiFiClientSecure secureclient; 
//WifiClient fuer Verbindung mit MQTT
WiFiClient client; 

//MQTT Client
PubSubClient mqttclient(client);
const char* mqtt_server ="dein mqtt broker";
int mqtt_port = 1883;

//Definitionen fuer den Sensor
int sensor = 12; // D6
// Hell bzw. Kontakt bzw. Wasser = 0 - Dunkel = 1
bool state;
    
void setup()
{
  Serial.begin(115200);
  //sensor definieren
  pinMode(sensor, INPUT);

  //wifi verbinden
  setup_wifi();

  //mqtt definieren
  mqttclient.setServer(mqtt_server, mqtt_port);
  mqttclient.setCallback(callback);
  Serial.print("MQTT Server ");
  Serial.print(mqtt_server);
  Serial.print(":");
  Serial.println(String(mqtt_port)); 
 
}//void setup

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived &#91;");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i &lt; length; i++) {
    Serial.print((char)payload&#91;i]);
  }
  Serial.println();
 
} // void callback

void setup_wifi(){
  //connect to wifi 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
} //void setup_wifi

void reconnect() {
  // Loop until we're reconnected
  while (!mqttclient.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (mqttclient.connect("ESP8266Client")) {
   
      Serial.println("connected");
      // mqttclient.subscribe("event");
    } 
    else 
    {
      Serial.print("failed, rc=");
      Serial.print(mqttclient.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  } //while
} //void reconnect

void connect_and_send() {
  //Check WiFi connection status
  if(WiFi.status()== WL_CONNECTED)
  {
    //connection to server
    if(!secureclient.setFingerprint(fingerpr))
    {
      Serial.println("Verification failed");
    }
    else
    {
      //fingerprint verification successful 
      //Serial.print("connecting to "); 
      // Use WiFiClient class to create TCP connections 
      if (!secureclient.connect(host, port)) 
      { 
        Serial.println("connection failed"); 
        return; 
      } 
      else
      {
        //connection to host successful
        Serial.print("Connected to server: ");
        Serial.print(host); 
        Serial.print(" on port: ");
        Serial.println(port);
        
        // Make a HTTP request:
        String httpRequestData = "api_key=" + apiKeyValue + "&amp;value1=" + SensorData;
        String request = String("POST ") + path + " HTTP/1.1 \r\n" +
                 "Host: " + host_short + "\r\n" +
                 "Content-Type: application/x-www-form-urlencoded\r\n" +
                 "Content-Length: " + httpRequestData.length() + "\r\n" +
                 "\r\n" + httpRequestData;
                 
        Serial.println(request);
        secureclient.print(request);
        delay(100);

        Serial.println("Respond from server:");

        while (secureclient.connected()) {
          while (secureclient.available()) {
            Serial.write(secureclient.read());
          }
        }
        secureclient.stop();
        
      } //else connection to host
    } //else fingerprint
  } //else wifi connected  
}
void loop() {

  state = digitalRead(sensor);
   
  if(state == 1){
     SensorData = "Trocken"; // keine Warnmeldung losschicken
  }
  if(state == 0){
     SensorData = "Wasser";
     // function call for http post ...
     connect_and_send();
  }
  Serial.println(SensorData);

  if (!mqttclient.connected()) {
    reconnect();
  }
  mqttclient.publish("haus/waermepumpe/status", SensorData); /// publish status 
   
  // 20 sekunden = 20000
  // 1 h = 3600 sekunden = 3600000
  // 1 d = 86400 sekunden = 86400000
  delay(86400000);
}</code></pre>
</div>
</div>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
