# Postkastl

Postkasten-Benachrichtigung via MQTT-Version mit ESP8266 (Arduino)

Verwendet wird ein ESP-01 Modul, das kleinste ESP8266-Modul. 

Libraries: ESP8266WiFi, PubSubClient



## Stromversorgung

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](Messung_Stromaufnahme_2021.txt)





## Programmablauf

 - GPIO0 wird nach dem Start sofort auf HIGH geschaltet. 
   Dieser ist über eine Diode mit ESP-Pin **CHIP_ENABLE/PD_CH** verbunden und hält dadurch das Modul aktiv, bis dieser Pin programmatisch auf LOW geschaltet wird. 
 - WiFi-Verbindung aufbauen
 - 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. 



## Schaltung

![](Schematic/Schematic_Postkastl_ESP01.png)

## Schaltungsbeschreibung

- ESP-01 Modul als MCU mit WiFi mit Minimalbeschaltung
- Modul ist direkt von Batterien Spannungsversorgt, aber im Deep Sleep-Mode, da **CHIP_ENABLE** (Pin CH_PD) im Normalfall **LOW** ist
- 2 Schaltkontakte (Schließer) aktivieren jeweils das Modul, indem **CHIP_ENABLE/CH_PD** über eine Diode auf **HIGH** gezogen wird
  - **Kontakt** für **Einwurfschlitz** über ein RC-Glied, damit die Schaltung nicht dauerhaft aktiv bleibt wenn die Klappe offen stehen bleibt, weil der Zettelhaberer mal wieder zu viel rein gestopft hat
  - **Kontakt** für **Entleerung** zieht zusätzlich **GPIO3** (UART RXD) auf **HIGH**, damit im Programm festgestellt werden kann welcher der beiden Kontakte den ESP geweckt hat. 
    Dieser Kontakt kann auch gänzlich weggelassen werden. Dann kann auch 1 Diode und 1 Widerstand eingespart werden sowie die Leitung zum GPIO3. 
- Diode von GPIO0 nach CHIP_ENABLE/CH_PD ist die "Selbsthalteschaltung". Dieser PIN wird im Programm als erstes auf HIGH geschaltet, dadurch bleibt das Modul aktiv bis programmatisch der GPIO0 auf LOW geschaltet wird, und geht danach wieder in den Deep Sleep.
- **(Shottky-)Diode** in der Spannungsversorgung ist **notwendig** wenn ein **Li-Ion Akku** zum Einsatz kommt. 
  **Bei Versorgung aus AA-Batterien muss diese Diode durch eine Drahtbrücke ersetzt werden!**
- Deep-Sleep bedeutet, dass das Modul dann (bei korrekter Versorgungsspannung!) nur weniger µA Strom zieht. Somit ist eine lange Batterielebensdauer möglich. 
  Im aktiven Modus (WiFi verbunden) zieht das Modul bis zu 180mA - mit kurzen Spitzen die noch deutlich darüber liegen, während dem Aufbau der Verbindung. 

