smarthome-tricks.de

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 ?

Die mobile Version verlassen