Postkasten-Benachrichtigung via MQTT-Version mit ESP8266 (Arduino)
Verwendet wird ein ESP-01 Modul, das kleinste verfügbare ESP8266-Modul. Dies vor allem auch aus dem Grund, dass die darauf fehlende Peripherie den Vorteil des geringeren Stromverbrauchs hat.
benutzte Libraries: ESP8266WiFi, PubSubClient
Es hat sich gezeigt, dass für die direkte Versorgung, und für lange Batterielaufzeit, 2 Stück AA-Lithium-Batterien am geeignetsten sind. Diese liefern auch bei -10°C noch genug Strom und halten lange eine hohe Ausgangsspannung. Batterielaufzeit damit deutlich über 1 Jahr.
Li-Ion Zellen eignen sich weniger. Mit Diode in Serie zur Verringerung der Spannung zwar möglich, hat aber Nachteile (die Spannung bleibt zu hoch oder wird zu niedrig, bei etwas zu hoher Versorgungsspannung zieht der ESP signifikant mehr Standby-Strom, was die Batterielaufzeit deutlich verringert. Mit (den meisten) Spannungsregler(n) wäre der Ruhestrom sowieso zu hoch.
Normale AA-Batterien funktionieren zwar, liefern aber unter 0°C zu wenig Strom.
NiMH Akkus (auch solche mit geringer Selbstentladung) haben schon Vollgeladen eine Grenzwertig geringe Ausgangsspannung und versagen ebenfalls bei niedrigen Temperaturen gänzlich.
Details siehe: Messung_Stromaufnahme_2021.txt
MQTT Broker verbinden und publishen
Topic: Postkasten (im Code anzupassen)
Payload (JSON-formatiert): { "event":"[EVENT]", "Vcc":"[VCC]","Batt":"[BATT]" }
[EVENT] = "new_post" oder "emptied"
Abhängig vom Status des Pin GPIO3. Ist dieser HIGH wird der Postkasten gerade entleert (erfordert 2. Kontakt).
[VCC] = gemessene Batteriespannung in mV
[BATT] = Batteriestatus (OK oder LOW, minimaler Wert für "OK" durch Tests ermittelt)
WiFi sofort wieder trennen um Strom zu sparen
Einige Sekunden (im Code anpassbar, z.B. 20s) um Mehrfachauslösungen zu verhindern
"Den Ast absägen auf dem wir sitzen", indem GPIO0 auf LOW gezogen wird. Das ESP-Modul ist danach im Deep Sleep und verbraucht nur noch Strom im µA-Bereich.
Falls dies nicht funktioniert hat (z.B. Fehler in der Schaltung) wird der ESP nach einigen Sekunden programmatisch in den Deep Sleep geschaltet, aus dem ein ESP-01 Modul nicht mehr aufwachen kann, da die Schaltung des ESP-01 Moduls dies nicht ermöglicht. Aufwachen per externem Triggerkontakt ist natürlich trotzdem wieder möglich.