Endlich ist auch der Briefkasten in das Smart-Home integriert

Jetzt ist endlich auch der Briefkasten in das Smart-Home integriert. Kennt ihr das, ihr wartet auf eine Sendung und lauft ständig zum Briefkasten um zu schauen ob endlich die Post da war? Damit ist ab heute Schluss, denn unser Briefkasten wird ab sofort mittels einem ESP8266 überwacht und bei Veränderung der Briefkasten-Klappe direkt an ioBroker gemeldet. Im folgenden Artikel zeige ich wie ich diesen Sensor aufgebaut, programmiert und in ioBroker implementiert habe.

 

1. Vorbereitungen in ioBroker

Im ersten Schritt treffen wir die Vorbereitungen für die ioBroker Objekte. Wir benötigen einen Datenpunkt, welcher den aktuellen Zustand (Klappe geöffnet) des Briefkastens speichert. Zudem speichern wir uns bei der Änderung des Datenpunktes per Skript die aktuelle Uhrzeit in einen weiteren Datenpunkt. Somit wissen wir wann die Sendung in den Briefkasten geworfen wurde.

Datenpunkte.0.Sensordata.PostBox.LastOpened (Zeichenfolge)
Datenpunkte.0.Sensordata.PostBox.Opened (Logischer Wert)

 

Zudem legen wir uns ein Skripte an, mit denen wir den TimeStamp des Post-Einwurfes speichern können. Im folgenden Skript fragen wir die Änderung des Datenpunktes „…Opened“ ab. Wenn der Wert auf „true“ steht senden wir per telegram einen Nachricht und schreiben zudem den aktuelle TimeStamp in den Datenpunkt.


on({id: "Datenpunkte.0.Sensordata.PostBox.Opened", change: "any"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;

  if ( value == true )
  {
    sendTo("telegram", "send", { text: "Die Post ist da :-)" });

    var TimeStamp = new Date();
    TimeStamp = formatDate(TimeStamp, "TT.MM.JJJJ SS:mm:ss");
    setState('Datenpunkte.0.Sensordata.PostBox.LastOpened', TimeStamp );
  }
});

 

Zusätzlich erstellen wir uns ein weiteres Skript, mit dem jeden Abend der Datenpunkt „Opened“ auf false gesetzt wird. Dieses Skript wird um 23:00 Uhr ausgeführt.


function PostBoxReset()
{
setState('Datenpunkte.0.Sensordata.PostBox.Opened', false );
}

schedule({hour: 23, minute: 0}, function () {
PostBoxReset();
});

 

2. Aufbau des Sensors

Im zweiten Schritt beschäftigen wir uns mit der Grundschaltung, welche auf dem Button-Prinzip basiert. Im folgenden Artikel wird die Schaltung erklärt und aufgebaut.
ESP8266 Button

Wir nehmen für unseren Briefkasten-Sensor die Button Grundschaltung, und ersetzen den Taster mit einem anderen Schalter.

 

 

 

 

 

 

 

 

Die einzelnen Komponenten könnt Ihr euch aus dem ESP8266 Button Artikel entnehmen, ich habe die Komponenten auf eine einfache Lochrasterplatine aufgelötet und verbunden. Zudem habe ich das Board sowie die 18650 Batterie in eine Kunststoff-Box eingeklebt, sodass die Komponenten besser geschützt sind.

 

Auf dem folgenden Foto sehen wir den Briefkasten sowie den Einbau des Sensors hinter der Briefkasten-Klappe. Der Schalter geht beim Öffnen der Klappe auf und schließt somit den Stromkreislauf um den ESP8266 aus dem DeepSleep zu wecken und die Benachrichtigung zu erzeugen.

 

3. Programmierung

Nun kommen wir zur Programmierung des ESP01.  Im Sketch initialisieren wir zunächst in der Setup-Methode die WIFI-Verbindung und setzen dann einen HTTP-Request über die SimpleAPI ab. Dabei setzen wir per SimpleAPI Set Schnittstelle den Opened Datenpunkt auf true. Das war es auch schon, im Anschluss dazu wird der ESP01 wieder per Deepsleep(0) in den Schlafmodus gesetzt. Anbei der Code:

 


#include <ESP8266WiFi.h>

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

void setup()
{
initWifi();
makeSimpleApiRequest();

ESP.deepSleep(0);
}

void loop() { }

void initWifi()
{
WiFi.begin(ssid, password);

int timeout = 10 * 4;
while(WiFi.status() != WL_CONNECTED && (timeout-- > 0))
{
delay(250);
}
}

void makeSimpleApiRequest()
{
String host = "192.168.2.90";
int Port = 8087;

WiFiClient client;
if (client.connect(host, Port))
{
// URL die aufgerufen werden soll generieren
String url = "/set/Datenpunkte.0.Sensordata.PostBox.Opened?value=true";

client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
delay(10);

while(client.available())
{
String line = client.readStringUntil('\r');
}
}
}

 

4. Ergebnis und Fazit

Sobald jetzt der Briefträger eine Sendung in den Briefkasten wirft, erhalte ich eine Push-Message über Telegram. Zudem wird in ioBroker ein Datenpunkt auf „TRUE“ sowie der Zeitstempel des Einwurfs gesetzt. Bis jetzt läuft das System stabil und zuverlässig, mal sehen wie lange die Akku-Ladung des ESP8266 ausreicht, evtl. werde ich den Sensor noch mit einem Solarpanel ausstatten. Ich werde weiter berichten und freue mich schon auf das nächste Projekt 🙂

 

 

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

7 Gedanken zu „Endlich ist auch der Briefkasten in das Smart-Home integriert

  • 12. September 2018 um 7:48
    Permalink

    Cooles Projekt. Wie lange hat denn deine Akkuladung gehalten?

    Antwort
    • 13. September 2018 um 7:07
      Permalink

      Bei mir waren es aktuell leider nur 1-2 Wochen. Ich muss auf meinem ESP01 aber noch die LED entfernen, dann sollte es besser sein. Hast Du ähnliche Erfahrungen gemacht?

      Antwort
  • 18. September 2018 um 12:49
    Permalink

    Cooles Projekt vielleicht könntest du auch mal eine Anleitung schreiben wie das mit dem Sketch funktioniert.
    Mit arduino?

    Antwort
  • 17. Dezember 2018 um 17:31
    Permalink

    Soviel ich gelesen habe funktioniert beim ESP01 ein echter deep sleep mit nur 3mA Stromaufnahme nur dann, wenn du den RST mit dem GPIO16 verbindest. Dann sollte der Verbrauch merklich zurück gehen.

    Antwort
    • 27. Dezember 2018 um 11:13
      Permalink

      Danke für den Hinweis! Ich werde das prüfen. Aktuell arbeite ich an einer Lösung direkt über Homematic 🙂

      Antwort
  • 1. April 2019 um 9:41
    Permalink

    Hallo Matthias, du schreibst „Zudem legen wir uns ein Skripte an, mit denen wir den TimeStamp des Post-Einwurfes speichern können“.
    Wo/wie muss ich denn so ein Script anlegen?
    Gruß,
    Bernd

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere