<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=K%C3%BChlschrankt%C3%BCren_%C3%BCberwachen_mit_ESP8266_Wemos_D1_Mini</id>
	<title>Kühlschranktüren überwachen mit ESP8266 Wemos D1 Mini - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=K%C3%BChlschrankt%C3%BCren_%C3%BCberwachen_mit_ESP8266_Wemos_D1_Mini"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=K%C3%BChlschrankt%C3%BCren_%C3%BCberwachen_mit_ESP8266_Wemos_D1_Mini&amp;action=history"/>
	<updated>2026-05-05T13:40:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=K%C3%BChlschrankt%C3%BCren_%C3%BCberwachen_mit_ESP8266_Wemos_D1_Mini&amp;diff=11472&amp;oldid=prev</id>
		<title>BLinz: Die Seite wurde neu angelegt: „==Vorwort== Unser Kühlschrank hat eine obere Tür für den Kühlschrankteil und eine untere Tür für den Gefrierschrankteil.&lt;br&gt; Die obere Tür löst einen P…“</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=K%C3%BChlschrankt%C3%BCren_%C3%BCberwachen_mit_ESP8266_Wemos_D1_Mini&amp;diff=11472&amp;oldid=prev"/>
		<updated>2019-03-17T18:13:43Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „==Vorwort== Unser Kühlschrank hat eine obere Tür für den Kühlschrankteil und eine untere Tür für den Gefrierschrankteil.&amp;lt;br&amp;gt; Die obere Tür löst einen P…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Vorwort==&lt;br /&gt;
Unser Kühlschrank hat eine obere Tür für den Kühlschrankteil und eine untere Tür für den Gefrierschrankteil.&amp;lt;br&amp;gt;&lt;br /&gt;
Die obere Tür löst einen Pieper aus wenn diese länger als 2 Minuten geöffnet ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Bei der Gefrierschranktür unten gibt es so etwas leider nicht. Es kommt wie es kommen musste - so ein bis zwei mal im Jahr wird die nicht richtig geschlossen. Die Folge ist das der Teil völlig vereist, man die Schubladen nicht mehr aufbekommt usw.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Da ich vor kurzen den Gefrierschrankteil deswegen abgetaut habe kam mir die Idee eine Überwachung zu bauen.&amp;lt;br&amp;gt;&lt;br /&gt;
Eigentlich wollte ich auch noch ein OLED-Minidisplay mit einbauen welchen die Temperatur anzeigt - aber ich hatte einfach nicht genug GPIO-Pins mehr.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Features==&lt;br /&gt;
* LED-Anzeige für obere und unterer Tür per RGB LED&lt;br /&gt;
** Grün = Tür geschlossen&lt;br /&gt;
** Rot = Tür offen&lt;br /&gt;
** Grüne LED erlischt nach ca. 10 Sekunden&lt;br /&gt;
* aktiver Buzzer&lt;br /&gt;
** ertönt wenn die untere Tür länger als 1 Minute geöffnet ist&lt;br /&gt;
* DHT22 Umweltsensor&lt;br /&gt;
** Misst die Temperatur und Luftfeuchtigkeit&lt;br /&gt;
* Resetschalter&lt;br /&gt;
* Stromversorgung per Micro-USB Kabel&lt;br /&gt;
* Zustand der Türen sowie Temperatur und Luftfeuchtigkeit sind per Webbrowser abrufbar&lt;br /&gt;
* Tür auf / zu sowie Temperatur und Luftfeuchtigkeit werden zusätzlich an Zabbix-Server gesendet&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Bauteile==&lt;br /&gt;
 1x Wemos D1 Mini&lt;br /&gt;
 2x RGB-LED 5mm mit gemeinsamer Anode&lt;br /&gt;
 1x DHT22 Umweltsensor&lt;br /&gt;
 4x Widerstand 100 Ω&lt;br /&gt;
 3x Widerstand 10 kΩ&lt;br /&gt;
 2x Magnetschalter - Normalzustand geschlossen&lt;br /&gt;
 1x aktiver Buzzer&lt;br /&gt;
 1x Taster&lt;br /&gt;
----&lt;br /&gt;
==Schaltplan==&lt;br /&gt;
[[Datei:Kuehlschrank_Ueberwachung_Schaltplan_V3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Steckplatine==&lt;br /&gt;
[[Datei:Kuehlschrank_Ueberwachung_Steckplatine_V3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Sketch==&lt;br /&gt;
Beim Start werden die LED zunächst auf Gelb geschaltet.&amp;lt;br&amp;gt;&lt;br /&gt;
Sobald das WLAN verbunden ist piepst der Buzzer einmal.&amp;lt;br&amp;gt;&lt;br /&gt;
Klappt das mit dem WLAN nicht so dauert es etwas länger (15 Sekunden) und er piepst 3 mal, macht dann aber weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
Dann läuft er in die Endlosschleife und die LED sollten sich in grün oder rot ändern.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot; // für DHT22 Sensor&lt;br /&gt;
#define DEBUG&lt;br /&gt;
&lt;br /&gt;
// Zugangsdaten zum WLAN:&lt;br /&gt;
const char* ssid = &amp;quot;***************************&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;*********************************&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Damit der ESP nicht unnötig Zeit mit der DHCP-Aushandlung verbringt vergeben wir&lt;br /&gt;
//eine statische IP-Adresse.&lt;br /&gt;
IPAddress staticIP(192, 168, 1, 185);&lt;br /&gt;
IPAddress gateway(192, 168, 1, 200);&lt;br /&gt;
IPAddress subnet(255, 255, 255, 0);&lt;br /&gt;
IPAddress dns(192, 168, 1, 81);&lt;br /&gt;
// Maximalwartezeit auf das WLAN, sonst weitermachen:&lt;br /&gt;
int int_WLANmaxwaittime = 15000;&lt;br /&gt;
int int_WLANCounter = 0;&lt;br /&gt;
&lt;br /&gt;
//Unter folgenden Namen meldet sich der ESP8266 im Netzwerk&lt;br /&gt;
const char* deviceName = &amp;quot;ESP8266-Cooler-185&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Webserver vorbereiten&lt;br /&gt;
ESP8266WebServer WebServer ( 80 );&lt;br /&gt;
&lt;br /&gt;
//HTTP-Client vorbereiten&lt;br /&gt;
HTTPClient http;&lt;br /&gt;
int httpCode = 0;&lt;br /&gt;
&lt;br /&gt;
// Die möglichen Pin-Nummern.&lt;br /&gt;
// D1 = 5     D2 = 4     D3 = 0    D4 = 2&lt;br /&gt;
// TX = 1     RX = 3     D0 = 16   D5 = 14&lt;br /&gt;
// D6 = 12    D7 = 13    D8 = 15&lt;br /&gt;
&lt;br /&gt;
// Passiver Piezo Buzzer&lt;br /&gt;
int int_BuzzerPin = 0; // D3&lt;br /&gt;
bool bool_BuzzerPassiv = false; // Aktiver oder passiver Buzzer?&lt;br /&gt;
int int_BuzzerFrequency = 128; // Startfrequenz des Tones&lt;br /&gt;
int int_BuzzerAddFrequency = 64;&lt;br /&gt;
float long_BuzzerDelay = 60000; // Millisekunden Verzögerung bevor der Buzzer angeht&lt;br /&gt;
bool bool_Buzzer_isOn = false;&lt;br /&gt;
&lt;br /&gt;
// RGB-LEDs (gemeinsame Anode: https://www.amazon.de/gp/product/B071K9CV19)&lt;br /&gt;
// erste RGB-LED - obere Tür, Blau ist dauerhaft auf 3V3&lt;br /&gt;
int int_RGB1_RED = 16;     // Rot = D0&lt;br /&gt;
int int_RGB1_GREEN = 14;   // Grün = D5&lt;br /&gt;
&lt;br /&gt;
// zweite RGB-LED - untere Tür, Blau ist dauerhaft auf 3V3&lt;br /&gt;
int int_RGB2_RED = 4;     // Rot = D2&lt;br /&gt;
int int_RGB2_GREEN = 2;   // Grün = D4&lt;br /&gt;
&lt;br /&gt;
// Reed-Kontakte (es sollten schwarze sein) https://www.ebay.de/itm/PS-3150-Türschalter-Magnetschalter-Fenster-Reed-Switch-Türkontakt-P-3150-m-Kabel/123267796554&lt;br /&gt;
// Reed-Kontakt obere Tür&lt;br /&gt;
int int_PinREED1 = 12; // D6&lt;br /&gt;
int int_StateREED1 = 0;&lt;br /&gt;
int int_LastStateREED1 = 99; // letzten Zustand merken zum vergleichen, 99 damit er auch mindestens einmal nach dem booten durchläuft&lt;br /&gt;
// Reed-Kontakt untere Tür&lt;br /&gt;
int int_PinREED2 = 13; // D7&lt;br /&gt;
int int_StateREED2 = 0; // Normalzustand geschlossen = True, False = offen&lt;br /&gt;
int int_LastStateREED2 = 99; // letzten Zustand merken zum vergleichen, 99 damit er auch mindestens einmal nach dem booten durchläuft&lt;br /&gt;
&lt;br /&gt;
// Timer: die grüne LED soll nach 10 Sekunden wieder ausgehen damit es nicht ständig leuchtet&lt;br /&gt;
unsigned long long_startMillisRGB1;&lt;br /&gt;
unsigned long long_startMillisRGB2;&lt;br /&gt;
unsigned long long_TurnOffLEDAfter = 10000; // nach 10 Sekunden ausschalten&lt;br /&gt;
unsigned long long_CurrentMillis;&lt;br /&gt;
bool bool_RGB1_Green_isOn = false;&lt;br /&gt;
bool bool_RGB2_Green_isOn = false;&lt;br /&gt;
bool bool_RGB1_Red_isOn = false;&lt;br /&gt;
bool bool_RGB2_Red_isOn = false;&lt;br /&gt;
&lt;br /&gt;
// DHT22 Sensor für Temperatur und Luftfeuchtigkeit&lt;br /&gt;
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321&lt;br /&gt;
uint8_t DHT22Pin = D1; // PIN mit dem &amp;quot;Data&amp;quot; des DHT22 verbunden ist&lt;br /&gt;
DHT h_dht22(DHT22Pin, DHTTYPE);&lt;br /&gt;
float float_Temperature;&lt;br /&gt;
float float_Humidity;&lt;br /&gt;
unsigned long long_startMillisDHT22;&lt;br /&gt;
unsigned long long_SendValueIntervall = 60000; // wie oft sollen die Umweltdaten gesendet werden&lt;br /&gt;
&lt;br /&gt;
// Zabbix-Server oder Proxy&lt;br /&gt;
String my_zabbixserver = &amp;quot;192.168.1.2&amp;quot;;&lt;br /&gt;
String my_hostname = &amp;quot;ESP8266-Cooler-185&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ####################################################################################################################&lt;br /&gt;
//           _               &lt;br /&gt;
//          | |              &lt;br /&gt;
//  ___  ___| |_ _   _ _ __  &lt;br /&gt;
// / __|/ _ \ __| | | | &amp;#039;_ \ &lt;br /&gt;
// \__ \  __/ |_| |_| | |_) |&lt;br /&gt;
// |___/\___|\__|\__,_| .__/ &lt;br /&gt;
//                    | |    &lt;br /&gt;
//                    |_|    &lt;br /&gt;
// ####################################################################################################################&lt;br /&gt;
void setup() {&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  // Serielle Debugging-Ausgabe&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.setTimeout(2000);&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.println(); // Einmal neue Zeile, nach einem reset steht da gerne mal Müll&lt;br /&gt;
    Serial.println(&amp;quot;Setup-Boot-Sequence&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;-------------------&amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  // LEDs initialisieren und auf blau setzen&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;RGB-LED 1 ........ &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  pinMode(int_RGB1_RED, OUTPUT);&lt;br /&gt;
  pinMode(int_RGB1_GREEN, OUTPUT);&lt;br /&gt;
  // pinMode(int_RGB1_BLUE, OUTPUT);&lt;br /&gt;
  // Auf Gelb schalten wegen Boot&lt;br /&gt;
  digitalWrite(int_RGB1_RED, LOW); // LOW = an , HIGH = aus&lt;br /&gt;
  digitalWrite(int_RGB1_GREEN, LOW);&lt;br /&gt;
  // digitalWrite(int_RGB1_BLUE, LOW);&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;ok&amp;quot;);&lt;br /&gt;
    delay(500); // Zu Testzwecken und mitlesen ###########################################################################&lt;br /&gt;
  #endif&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;RGB-LED 2 ........ &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  pinMode(int_RGB2_RED, OUTPUT);&lt;br /&gt;
  pinMode(int_RGB2_GREEN, OUTPUT);&lt;br /&gt;
  // pinMode(int_RGB2_BLUE, OUTPUT);&lt;br /&gt;
  // Auf Gelb schalten wegen Boot&lt;br /&gt;
  digitalWrite(int_RGB2_RED, LOW); // LOW = an , HIGH = aus&lt;br /&gt;
  digitalWrite(int_RGB2_GREEN, LOW);&lt;br /&gt;
  // digitalWrite(int_RGB2_BLUE, LOW);&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;ok&amp;quot;);&lt;br /&gt;
    delay(500); // Zu Testzwecken und mitlesen ###########################################################################&lt;br /&gt;
  #endif&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  // Reed-Schalter einrichten&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;Reed-Kontakt 1 ... &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  pinMode(int_PinREED1, INPUT);&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;ok&amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;Reed-Kontakt 2 ... &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  pinMode(int_PinREED2, INPUT);&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;ok&amp;quot;);&lt;br /&gt;
    delay(500); // Zu Testzwecken und mitlesen ###########################################################################&lt;br /&gt;
  #endif&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  // DHT22 Sensor einrichten&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;DHT22 Sensor ... &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  pinMode(DHT22Pin, INPUT);&lt;br /&gt;
  h_dht22.begin();&lt;br /&gt;
  long_startMillisDHT22 = millis();&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;ok&amp;quot;);&lt;br /&gt;
    delay(500); // Zu Testzwecken und mitlesen ###########################################################################&lt;br /&gt;
  #endif&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  // WLAN initialisieren&lt;br /&gt;
  //            123456789012345678&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;WiFi ............ &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  WiFi.hostname(deviceName);&lt;br /&gt;
  WiFi.config(staticIP, dns, gateway, subnet);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
  //WiFi.mode(WIFI_STA);&lt;br /&gt;
  //Auf das WLAN warten&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    int_WLANCounter = int_WLANCounter + 50;&lt;br /&gt;
    if (int_WLANCounter &amp;gt; int_WLANmaxwaittime) {&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    delay(50);&lt;br /&gt;
  }&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;ok (&amp;quot;);&lt;br /&gt;
    Serial.print(WiFi.localIP());&lt;br /&gt;
    Serial.println(&amp;quot;)&amp;quot;);&lt;br /&gt;
    delay(500); // Zu Testzwecken und mitlesen ###########################################################################&lt;br /&gt;
  #endif&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  // Webserver starten&lt;br /&gt;
  //            123456789012345678&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;Webserver ....... &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  WebServer.on ( &amp;quot;/&amp;quot;, handleRoot ); // Wenn die URL aufgerufen wird (ohne etwas hinter dem /) wird die Funktion &amp;quot;handleRoot&amp;quot; gestartet&lt;br /&gt;
  WebServer.begin();&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println ( &amp;quot;ok (Port 80)&amp;quot; );&lt;br /&gt;
    delay(500); // Zu Testzwecken und mitlesen ###########################################################################&lt;br /&gt;
  #endif&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;Buzzer .......... &amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  pinMode(int_BuzzerPin, OUTPUT);&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;ok&amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
  if ( bool_BuzzerPassiv == true ) {&lt;br /&gt;
    tone(int_BuzzerPin, 4000, 500);  &lt;br /&gt;
    if (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
      tone(int_BuzzerPin, 4000, 500);&lt;br /&gt;
      delay(250);&lt;br /&gt;
      tone(int_BuzzerPin, 4000, 500);&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // Einmal piepen als Meldung das der Setupvorgang abgeschlossen ist&lt;br /&gt;
    digitalWrite(int_BuzzerPin, HIGH);&lt;br /&gt;
    delay(250);&lt;br /&gt;
    digitalWrite(int_BuzzerPin, LOW);&lt;br /&gt;
    if (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
      // 3x Piepen wenn es mit dem WLAN nicht geklappt hat. Einmal haben wir schon, fehlen noch zweimal&lt;br /&gt;
      delay(250);&lt;br /&gt;
      digitalWrite(int_BuzzerPin, HIGH);&lt;br /&gt;
      delay(250);&lt;br /&gt;
      digitalWrite(int_BuzzerPin, LOW);&lt;br /&gt;
      delay(250);&lt;br /&gt;
      digitalWrite(int_BuzzerPin, HIGH);&lt;br /&gt;
      delay(250);&lt;br /&gt;
      digitalWrite(int_BuzzerPin, LOW);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // ####################################################################################################################&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.println(&amp;quot;------------------------------------------&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Setup abgeschlossen&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;------------------------------------------&amp;quot;);&lt;br /&gt;
    Serial.println();    &lt;br /&gt;
  #endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ####################################################################################################################&lt;br /&gt;
//  _                   &lt;br /&gt;
// | |                  &lt;br /&gt;
// | | ___   ___  _ __  &lt;br /&gt;
// | |/ _ \ / _ \| &amp;#039;_ \ &lt;br /&gt;
// | | (_) | (_) | |_) |&lt;br /&gt;
// |_|\___/ \___/| .__/ &lt;br /&gt;
//               | |    &lt;br /&gt;
//               |_| &lt;br /&gt;
// ####################################################################################################################&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Sich um den Webserver kümmern:&lt;br /&gt;
  WebServer.handleClient();&lt;br /&gt;
  // Sich um die Magnetschalter kümmern:&lt;br /&gt;
  int_StateREED1 = digitalRead(int_PinREED1);&lt;br /&gt;
  int_StateREED2 = digitalRead(int_PinREED2);&lt;br /&gt;
  // nur wenn sich etwas ändert ....&lt;br /&gt;
  if (int_StateREED1 != int_LastStateREED1) {&lt;br /&gt;
    //Serial.println(&amp;quot;REED1 ungleich&amp;quot;);&lt;br /&gt;
    long_startMillisRGB1 = millis();&lt;br /&gt;
    int_LastStateREED1 = int_StateREED1;&lt;br /&gt;
    if (int_StateREED1 == LOW) {&lt;br /&gt;
      // LED1 auf Grün&lt;br /&gt;
      #ifdef DEBUG&lt;br /&gt;
        Serial.println(&amp;quot;Obere Tür geschlossen&amp;quot;);&lt;br /&gt;
      #endif&lt;br /&gt;
      digitalWrite(int_RGB1_RED, HIGH);&lt;br /&gt;
      digitalWrite(int_RGB1_GREEN, LOW);&lt;br /&gt;
      // digitalWrite(int_RGB1_BLUE, HIGH);&lt;br /&gt;
      // Grüne LED ist an + Timer setzen&lt;br /&gt;
      bool_RGB1_Green_isOn = true;&lt;br /&gt;
      bool_RGB1_Red_isOn = false;&lt;br /&gt;
      // Buzzer ausschalten&lt;br /&gt;
      if (bool_BuzzerPassiv == true) {&lt;br /&gt;
        noTone(int_BuzzerPin);  &lt;br /&gt;
      } else {&lt;br /&gt;
        digitalWrite(int_BuzzerPin, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      bool_Buzzer_isOn = false;&lt;br /&gt;
      // An Zabbix Senden&lt;br /&gt;
      ZabbixSender(&amp;quot;esp8266.cooler.door.upper&amp;quot;, &amp;quot;1&amp;quot;); // 0 = Offen, 1 = Geschlossen&lt;br /&gt;
    } else {&lt;br /&gt;
      // LED1 auf Rot&lt;br /&gt;
      #ifdef DEBUG&lt;br /&gt;
        Serial.println(&amp;quot;Obere Tür offen!&amp;quot;);&lt;br /&gt;
      #endif &lt;br /&gt;
      digitalWrite(int_RGB1_RED, LOW);&lt;br /&gt;
      digitalWrite(int_RGB1_GREEN, HIGH);&lt;br /&gt;
      // digitalWrite(int_RGB1_BLUE, HIGH);&lt;br /&gt;
      bool_RGB1_Green_isOn = false;&lt;br /&gt;
      bool_RGB1_Red_isOn = true;&lt;br /&gt;
      ZabbixSender(&amp;quot;esp8266.cooler.door.upper&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (int_StateREED2 != int_LastStateREED2) {&lt;br /&gt;
    //Serial.println(&amp;quot;REED2 ungleich&amp;quot;);&lt;br /&gt;
    long_startMillisRGB2 = millis();&lt;br /&gt;
    int_LastStateREED2 = int_StateREED2;&lt;br /&gt;
    if (int_StateREED2 == LOW) {&lt;br /&gt;
      // LED2 auf Grün&lt;br /&gt;
      #ifdef DEBUG&lt;br /&gt;
        Serial.println(&amp;quot;Untere Tür geschlossen&amp;quot;);&lt;br /&gt;
      #endif&lt;br /&gt;
      digitalWrite(int_RGB2_RED, HIGH);&lt;br /&gt;
      digitalWrite(int_RGB2_GREEN, LOW);&lt;br /&gt;
      // digitalWrite(int_RGB2_BLUE, HIGH);&lt;br /&gt;
      // Grüne LED ist an + Timer setzen&lt;br /&gt;
      bool_RGB2_Green_isOn = true;&lt;br /&gt;
      bool_RGB2_Red_isOn = false;&lt;br /&gt;
      // Buzzer ausschalten&lt;br /&gt;
      if (bool_BuzzerPassiv == true) {&lt;br /&gt;
        noTone(int_BuzzerPin);  &lt;br /&gt;
      } else {&lt;br /&gt;
        digitalWrite(int_BuzzerPin, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      bool_Buzzer_isOn = false;&lt;br /&gt;
      // An Zabbix Senden&lt;br /&gt;
      ZabbixSender(&amp;quot;esp8266.cooler.door.lower&amp;quot;, &amp;quot;1&amp;quot;); // 0 = Offen, 1 = Geschlossen&lt;br /&gt;
    } else {&lt;br /&gt;
      // LED1 auf Rot&lt;br /&gt;
      #ifdef DEBUG&lt;br /&gt;
        Serial.println(&amp;quot;Untere Tür offen!&amp;quot;);&lt;br /&gt;
      #endif&lt;br /&gt;
      digitalWrite(int_RGB2_RED, LOW);&lt;br /&gt;
      digitalWrite(int_RGB2_GREEN, HIGH);&lt;br /&gt;
      // digitalWrite(int_RGB2_BLUE, HIGH);&lt;br /&gt;
      bool_RGB2_Green_isOn = false;&lt;br /&gt;
      bool_RGB2_Red_isOn = true;&lt;br /&gt;
      ZabbixSender(&amp;quot;esp8266.cooler.door.lower&amp;quot;, &amp;quot;0&amp;quot;); // 0 = Offen, 1 = Geschlossen&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  //WebServer.send ( 200, &amp;quot;text/html&amp;quot;, getPage() );&lt;br /&gt;
&lt;br /&gt;
  // ############################################################################&lt;br /&gt;
  // Testen ob die LED Grün leuchtet, wenn ja nach 10 Sekunden wieder ausschalten&lt;br /&gt;
  if (bool_RGB1_Green_isOn == true) {&lt;br /&gt;
    long_CurrentMillis = millis() - long_startMillisRGB1;&lt;br /&gt;
    if (long_CurrentMillis &amp;gt; long_TurnOffLEDAfter) {&lt;br /&gt;
      bool_RGB1_Green_isOn = false;&lt;br /&gt;
      digitalWrite(int_RGB1_GREEN, HIGH);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (bool_RGB2_Green_isOn == true) {&lt;br /&gt;
    long_CurrentMillis = millis() - long_startMillisRGB2;&lt;br /&gt;
    if (long_CurrentMillis &amp;gt; long_TurnOffLEDAfter) {&lt;br /&gt;
      bool_RGB2_Green_isOn = false;&lt;br /&gt;
      digitalWrite(int_RGB2_GREEN, HIGH);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // ############################################################################&lt;br /&gt;
  // Wenn Rot länger als long_BuzzerDelay leuchtet den Buzzer aktivieren&lt;br /&gt;
  // Nur für den 2. Kontakt / untere Tür! Tür oben hat eingebauten Summer&lt;br /&gt;
  if ((bool_RGB2_Red_isOn == true) &amp;amp;&amp;amp; (bool_Buzzer_isOn == false)) {&lt;br /&gt;
    long_CurrentMillis = millis() - long_startMillisRGB2;&lt;br /&gt;
    if (long_CurrentMillis &amp;gt; long_BuzzerDelay) {&lt;br /&gt;
      if (bool_BuzzerPassiv == true) {&lt;br /&gt;
        tone(int_BuzzerPin, int_BuzzerFrequency);&lt;br /&gt;
      } else {&lt;br /&gt;
        digitalWrite(int_BuzzerPin, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
      bool_Buzzer_isOn = true;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // ############################################################################&lt;br /&gt;
  // Wenn der Buzzer an ist regelmäßig die Frequenz ändern (nur wenn er Typ Passiv ist)&lt;br /&gt;
  if ((bool_Buzzer_isOn == true) &amp;amp;&amp;amp; (bool_BuzzerPassiv == true)) {&lt;br /&gt;
    int_BuzzerFrequency = int_BuzzerFrequency + 128;&lt;br /&gt;
    tone(int_BuzzerPin, int_BuzzerFrequency);&lt;br /&gt;
    if (int_BuzzerFrequency &amp;gt; 5000) {&lt;br /&gt;
      int_BuzzerFrequency = 128;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // ############################################################################&lt;br /&gt;
  // Temperatur abfragen&lt;br /&gt;
  long_CurrentMillis = millis() - long_startMillisDHT22;&lt;br /&gt;
  if (long_CurrentMillis &amp;gt; long_SendValueIntervall) {&lt;br /&gt;
      float_Temperature = h_dht22.readTemperature(); // Gets the values of the temperature&lt;br /&gt;
      float_Humidity = h_dht22.readHumidity(); // Gets the values of the humidity &lt;br /&gt;
      #ifdef DEBUG&lt;br /&gt;
        Serial.print(&amp;quot;Temperatur: &amp;quot;);&lt;br /&gt;
        Serial.print(float_Temperature);&lt;br /&gt;
        Serial.println(&amp;quot;°C&amp;quot;);&lt;br /&gt;
        Serial.print(&amp;quot;Luftfeuchtigkeit: &amp;quot;);&lt;br /&gt;
        Serial.print(float_Humidity);&lt;br /&gt;
        Serial.println(&amp;quot;%&amp;quot;);&lt;br /&gt;
      #endif&lt;br /&gt;
      long_startMillisDHT22 = millis();&lt;br /&gt;
      ZabbixSender(&amp;quot;esp8266.DHT22.Temperature&amp;quot;, String(float_Temperature));&lt;br /&gt;
      ZabbixSender(&amp;quot;esp8266.DHT22.Humidity&amp;quot;, String(float_Humidity));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ############################################################################&lt;br /&gt;
// Sendet die Daten an den Zabbix-Server per URL-Methode: https://znil.net/index.php?title=Zabbix_sender_per_Web_URL-Aufruf_nutzen&lt;br /&gt;
void ZabbixSender(String my_item, String my_value) {&lt;br /&gt;
  http.setTimeout(4000);&lt;br /&gt;
  http.begin(&amp;quot;http://192.168.1.246:5002/&amp;quot; +  my_zabbixserver + &amp;quot;/&amp;quot; + my_hostname + &amp;quot;/&amp;quot; + my_item + &amp;quot;/&amp;quot; + my_value);&lt;br /&gt;
  httpCode = http.GET();&lt;br /&gt;
  #ifdef DEBUG&lt;br /&gt;
    Serial.print(&amp;quot;ZabbixSender: http://192.168.1.246:5002/&amp;quot; +  my_zabbixserver + &amp;quot;/&amp;quot; + my_hostname + &amp;quot;/&amp;quot; + my_item + &amp;quot;/&amp;quot; + my_value + &amp;quot; ==&amp;gt; &amp;quot;);&lt;br /&gt;
    Serial.println(httpCode);&lt;br /&gt;
  #endif&lt;br /&gt;
  http.end();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ############################################################################&lt;br /&gt;
// Hier folgt die Webseite als HTML-Code.&lt;br /&gt;
String getPage() {&lt;br /&gt;
  // DHT22 Sensor abfragen&lt;br /&gt;
  float_Temperature = h_dht22.readTemperature(); // Gets the values of the temperature&lt;br /&gt;
  float_Humidity = h_dht22.readHumidity(); // Gets the values of the humidity &lt;br /&gt;
  String page = &amp;quot;&amp;lt;html lang=de-DE&amp;gt;&amp;lt;head&amp;gt;&amp;quot;;&lt;br /&gt;
  //page += &amp;quot;&amp;lt;meta http-equiv=&amp;#039;refresh&amp;#039; content=&amp;#039;5&amp;#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;title&amp;gt;ESP8266-Cooler-185&amp;lt;/title&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;style&amp;gt; body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000000; }&amp;quot;;&lt;br /&gt;
  page += &amp;quot;.button {display: inline-block; padding: 15px 15px; font-size: 25px; cursor: pointer; text-align: center; text-decoration: none;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;outline: none; color: #ffffff; background-color: #4db2ec; border: none; border-radius: 5px;}&amp;quot;;&lt;br /&gt;
  page += &amp;quot;.button:hover {background-color: #4DCAEC; color:#ffffff;}&amp;quot;;&lt;br /&gt;
  page += &amp;quot;.button:active {background-color: #4DCAEC; box-shadow: 0 3px #666; transform: translateY(3px); }&amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;ESP8266-Cooler-185 - WebServer&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;hr&amp;gt;&amp;lt;h2&amp;gt;Obere T&amp;amp;uuml;r: &amp;quot;;&lt;br /&gt;
  if ( bool_RGB1_Red_isOn == true ) {&lt;br /&gt;
    page += &amp;quot;offen&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    page += &amp;quot;geschlossen&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  page += &amp;quot;&amp;lt;/h1&amp;gt;&amp;lt;hr&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;hr&amp;gt;&amp;lt;h2&amp;gt;Untere T&amp;amp;uuml;r: &amp;quot;;&lt;br /&gt;
  if ( bool_RGB2_Red_isOn == true ) {&lt;br /&gt;
    page += &amp;quot;offen&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    page += &amp;quot;geschlossen&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  page += &amp;quot;&amp;lt;/h1&amp;gt;&amp;lt;hr&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;hr&amp;gt;&amp;lt;h1&amp;gt;Temperatur: &amp;quot;;&lt;br /&gt;
  page += (int)float_Temperature;&lt;br /&gt;
  page += &amp;quot; Grad&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;h1&amp;gt;Luftfeuchtigkeit: &amp;quot;;&lt;br /&gt;
  page += (int)float_Humidity;&lt;br /&gt;
  page += &amp;quot; %&amp;lt;/h2&amp;gt;&amp;lt;hr&amp;gt;&amp;quot;;&lt;br /&gt;
  page += &amp;quot;&amp;lt;/center&amp;gt;&amp;lt;/body&amp;gt;&amp;quot;;&lt;br /&gt;
  return page;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ############################################################################&lt;br /&gt;
// Wird immer aufgerufen wenn jemand die IP nur mit einem / am Ende aufruft&lt;br /&gt;
void handleRoot() {&lt;br /&gt;
  // Einfach nur die Webseite ausliefern&lt;br /&gt;
  WebServer.send ( 200, &amp;quot;text/html&amp;quot;, getPage() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Kommentare==&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz</name></author>
	</entry>
</feed>