ESPHome basierte, automatisierte Alarmauslösung über einen http
request bei Alarmierung eines Melders in einer LGRA
Ladestation.
Um automatisiert einen Alarm per http
request (z.B. über DIVERA 24/7) auszulösen, wird der Relaiskontakt des Ladegeräts Swissphone LGRA Expert
ausgewertet.
Das esp32-alarmlicht
wertet zwei GPIO
Eingänge aus. GPIO16
wird über ein Relais einer Funkfernbedienung angesteuert. Wird dieses Relais geschlossen, soll über ein Relais das Alarmlicht angesteuert werden.
GPIO18
wird über das Relais im Ladegerät des Melders (DME) gesteuert. Wird das Relais geschlossen, soll das Alarmlicht angesteuert werden und ein http
request ausgelöst werden.
Das esp32-alarmlicht
verfügt über drei Status LEDs:
- Auslösung des DME oder der Funkfernbedienung
- Drücken des Testknopfes
BUT1
- Wi-Fi Verbindung (kurzes Blinken alle
3 s
)
Basis des esp32-alarmlicht
ist ein ESP32-EVB-EA-IND Board mit einem ESP32-WROOM-32UE
Modul.
Die Statusanzeige erfolgt über drei LEDs, die mit 3k
Widerständen versehen sind.
Die beiden potenzialfreien Kontakte des Ladegerätes und des Funklichtes sind mit einem Pull-up Widerstand versehen und werden bei der Auslösung auf GND
gezogen.
Die Stromversorgung des ESP32-EVB-EA-IND
erfolgt über die Pins 2
und 4
des LGRA. Diese sind mit den Pads des unbestückten Steckers PWR2
des Olimex-Boards verbunden.
Für eine korrekte Funktion muss im LGRA
eine Lötbrücke entfernt werden.
Vollständiges Schematic als KiCad
Projekt oder als PDF in hardware/.
- ESP32-EVB-EA-IND
- BOX-ESP32-EVB-EA
- 3x LED
- Widerstände
- 2x
220R
- 3x
3k
- 2x
10k
- 2x
- DIN Stecker 5-polig male
- Plakette »Technisch fragwürdig«
Die Software basiert auf ESPHome. Das Konfigurationsfile ist alarmlicht.yaml.
Je nach Konfiguration wird bei Alarm- oder Testauslösung ein API-Request an DIVERA
und ntfy gesendet. Das Verhalten wird über die Variablen global_send_*
gesteuert. Eine Testauslösung erfolgt über BUT1
des ESP32-EVB-EA-IND
.
Das File secrets.yaml
enthält folgende Angaben:
- Wi-Fi Konfigurations- und Zugangsdaten
ntfy
URLDIVERA
API Key
Beispieldaten befinden sich in secrets-example.yaml. Diese Datei muss in secrets.yaml
umbenannt werden und mit echten Daten gefüllt werden.
alarmlicht.yaml bindet folgende Dateien ein:
- on-but1-press.yaml:
BUT1
wird betätigt - on-message-receive.yaml:
GPI016
oderGPIO18
werden aufGND
gezogen - send-alerts.yaml: Auslösen von
http
requests durch das Einbinden von- http-request-divera.yaml: Auslösen eines
DIVERA
http
requests - http-request-ntfy.yaml: Auslösen eines
ntfy
http
requests
- http-request-divera.yaml: Auslösen eines
Wird ein Alarm ausgelöst während keine Wi-Fi Verbindung besteht, wird der Alarm gespeichert und anschließend bei bestehender Wi-Fi Verbindung ausgelöst. Das Speichern geschieht über die globale Variable global_alert_pending
.
Da der http
request nicht immer erfolgreich ist, wird der Statuscode ausgewertet. Ist er nicht 200
und 429
wird mehrmals versucht, den http
request zu senden. Das Verhalten und die maximale Anzahl der Versuche wird über die globalen Variablen global_divera_http_request_*
gesteuert.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
esphome wizard alarmlicht.yaml
esphome run alarmlicht.yaml
The
esphome run <CONFIG>
command is the most common command for ESPHome. It
- Validates the configuration
- Compiles a firmware
- Uploads the firmware (over OTA or USB)
- Starts the log view
esphome run alarmlicht.yaml
The
esphome logs <CONFIG>
command validates the configuration and shows all logs.
esphome logs alarmlicht.yaml
Das Ladegerät verfügt über einen fünfpoligen DIN-Stecker (female) mit folgender Belegung:
Quelle: Ladegerät (A)LGRA Expert (PDF)
Pin 4
ist mit der Stromversorgung des Netzteils verbunden (+5V
), Pin 2
ist GND
, Pins 1
und 3
werden potentialfrei durch ein Relais geschaltet.
Im Auslieferungszustand wird der Relaiskontakt geschlossen wenn der DME eine Meldung empfängt. Der Kontakt wird wieder geöffnet, wenn alle Meldungen quittiert wurden.
Über eine Lötbrücke wird das Verhalten des Relais konfiguriert. Wird diese Lötbrücke entfernt, so wird das Relais bei jedem Meldungseingang für ca. 10 s
geschlossen, unabhängig vom Quittieren vorheriger Meldungen.
Für die Verwendung des Ladegerätes mit dem esp32-alarmlicht
muss die Lötbrücke entfernt werden.
- https://esphome.io
- https://docs.ntfy.sh
- https://www.kicad.org
- https://api.divera247.com
- DIVERA Web-Schnittstelle (API Dokumentation)
- Olimex ESP32-EVB
- https://github.com/OLIMEX/ESP32-EVB
- ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet
Please use the projects issue tracker or create a GitHub pull request.
ESP32-Alarmlicht is licensed under CC BY-NC-SA 4.0