Smarter Briefkasten
Ein wenig googelt und dann selbst gemacht.
Wie bekommt man einen Briefkasten Smart?
Ich habe mir so gedacht es könnte nett sein mitzubekommen ob der Briefträger etwas in die Kiste geworfen hat nur zur Information.
Daraufhin habe ich viele Version im Netz gefunden, die fand ich aber noch nicht so recht passend für mich. Somit ist dann meine Lösung entstanden. Das erste Problem bei so einer Überwachung ist das Stromproblem, der ESP benötigt für das WLan relativ viel Energie also nichts für den Dauerbetrieb über einen Batterie.
Die Lösung ist also Controller in Deep Sleep setzen und durch den Taster, beim betätigen der Klappe, den Reset ausführen.
Dadurch startet der Controller wieder neu sendet per MQTT in mein System "True" ( Post da ). Dann fährt er wieder in den Deep Sleep und es kann von vorne los gehen. Das ganze dann in ein selbst konstruiertes 3D gedrucktes Gehäuse ... fertig.
/*
Briefkastenmelder
Stefan Zilt 26.06.2023
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <WiFiUdp.h>
#include<Wire.h>
WiFiClient wifiClient;
int send = 0;
// WLAN Netzwerkverbindung
const char* wifi_ssid = "MyLan";
const char* wifi_password = "MyPW";
// MQTT Server Verbindung
const char* mqtt_server = "192.xxx.xxx.xxx";
const int mqtt_port = 1883;
const char* mqtt_user = "";
const char* mqtt_password = "";
String Zeit;
const long utcOffsetInSeconds = 3600;
// WIFI setzen
WiFiClient espClient;
PubSubClient client(espClient);
// WLAN Verbindung aufbauen
void setup_wifi() {
WiFi.begin(wifi_ssid, wifi_password);
while (WiFi.status() != WL_CONNECTED) {
Serial.println(" WIFI_connect");
delay(1000);
}
Serial.print("WIFI ");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
// Warten serrielle Verbindung
}
// Wlan verbinden
// WIFI Starten
IPAddress ip(192, xxx, xxx, xxx);
IPAddress dns(192, xxx, xxx, xxx);
IPAddress gateway(192, xxx, xxx, xxx);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, dns, gateway, subnet);
setup_wifi();
while (WiFi.status() != WL_CONNECTED) {
delay(800);
Serial.println("verbinden ");
}
}
void loop() {
while (WiFi.status() != WL_CONNECTED) {
delay(800);
Serial.println("WLAN verbinden");
}
Serial.println(WiFi.localIP());
delay(100);
if (WiFi.status() == WL_CONNECTED) {
// MQTT senden
client.setServer(mqtt_server, mqtt_port);
if (client.connect("Briefkasten", mqtt_user, mqtt_password)) {
// client.subscribe("your_topic_of_interest");
Serial.println(" MQTT connect");
client.publish("Briefkasten/Post","true");
Serial.println(" MQTT senden");
delay(800);
send=1;
}
}
if(send==1) {ESP.deepSleep(0);}
}