Für ein Projekt benötige ich ein Controller der beim Auslösen einer Anlage ein WOL magic package an einen bestimmten PC sendet.
Da kam mir schnell die Idee, dass ich hierfür einen D1 mini ESP8266 verwenden könnte, da dieser kostengünstig und einfach zu programmieren ist.
Um die MAC Adresse konfigurieren zu können, bekam der ESP eine einfache aber effektive Accesspoint Unterstützung, die mittels einem Pushbutton aktiviert werden kann.
Natürlich hätte ich einfach ein Relais verwenden können, aber ich wollte den Startknopf von diesem Gerät nicht „Verlöten“ und mit diesem Eingriff die Garantie verlieren.
Aufbau:
Verkabelung
D4 = Pushbutton für den AP Betrieb
D3 = Alarmausgang (ist ein Relais, dies schaltet uns den Kontakt)
GND = damit die Buttons im geschlossenen Zustand gegen GND geschaltet werden
Software
Benötigte Libs:
- include <FS.h> Arduino Lib Manager installieren
- include <ArduinoJson.h> V5 Arduino Lib Manager installieren
- include <WiFiManager.h> https://github.com/tzapu/WiFiManager Arduino Lib Manager installieren
- include <WiFiUDP.h> Arduino Lib Manager installieren
- include <WakeOnLan.h> https://github.com/koenieee/WakeOnLan-ESP8266 Manuelle installation /Arduino/libraries/
Die Pins können ganz einfach erweitert werden, dazu im loop einen weiteren Button hinzufügen:
#define my_custom_button_pin Dx
voide setup(){
pinMode(my_custom_button_pin, INPUT);
}
void checkMyCustomButton(){
// check for button press
if ( digitalRead(my_custom_button_pin) == LOW ) {
delay(50);
if( digitalRead(my_custom_button_pin) == LOW ){
Serial.println("Triggerd: My custom button");
}
}
}
void loop() {
checkMyCustomButton(); //config custom button
}
Prinzipiell könnt Ihr den Script für fast alles anpassen, etwas trixy zu verstehen sind die Custom Felder, die tzapu WifiManager liefert. Sobald Ihr versteht wie die genau funktionieren, können alle Variablen auch darüber gespeichert werden um den Quellscript nicht immer anpassen zu müssen.
Verwendung
Wird nun der Pushbutton auf D4 gedrückt, startet der ESP in den Accesspoint Modus. Nach einiger Zeit stellt sich der normale Betrieb wieder ein. Sollte es dem ESP nicht möglich sein mit dem Wi-Fi zu verbinden, landet es wieder im AP Modus. Dazu wird im Sketch ein WLAN Namen und bei Bedarf ein Passwort vergeben.
Siehe Header Bild
Gelber Button = AP Modus wird gestartet
Roter Button = Auslösung vom Terminal (zur Vereinfachung mit einem Pushbutton realisiert)
Wi-Fi Einstellungen im Sketch:
if (!wm.startConfigPortal("AET WOL")) // ohne Passwort
if (!wm.startConfigPortal("Mein Wlan Name", "Mein Passwort")) // mit Passwort
if (!wm.startConfigPortal()) // Chip ID als SSID
Nachcdem der gelbe Button gedrückt wird sollte die Ausgabe der Console so aussehen:
ssid = AET WOL ist euer WLAN Name. AP IP address: 192.168.4.1 = die IP-Adresse der Weboberfläche.
Nun verbinden wir uns mit dem Handy oder PC und stellen das WLAN, womit sich der D1 verbinden soll und die MAC Adresse des Zielgerätes ein.
Ich denke die Weboberfläche ist, ohne viel zu erklären recht logisch aufgebaut.
Ihr könnt im Script die Menüs, statische IP-Adresse usw. einstellen. Ein Blick auf die Doku von WiFiManager macht auf jeden fall Sinn. Eines der besten Beispieldateien ist das die Datei Advanced unter Examples.
Viel Spaß beim Nachbauen