# Mit Arduino + ESP8266 (bzw. Pretzel-Board) WakeOnLan an PC von extern senden



## A3Q (26 März 2018)

Hallo zusammen.
Ich beschreibe kurz mein Vorhaben, was ich bisher gemacht habe und meine Probleme dazu. Wem der Text zu lange ist, der kann ab Punkt 6 lesen.

1. Vorhaben:
Mit WakeOnLan ("Magic Packet") einen Rechner zuhause im Netzwerk (per Ethernet verbunden natürlich) starten von extern (ausserhalb des eigenen Netzwerkes).
Grund dafür: Habe einen Rechner, der auch als Datenspeicher genutzt wird und wo auch Anwendungen drauf laufen, auf welchen ich bei Bedarf von "ausserhalb" zugreifen möchte per Teamviewer. Der Rechner soll natürlich nicht 24/7 an sein.

2. Bisher gemacht:
WOL natürlich eingestellt am entsprechenden Rechner. Per Packetsender im eigenen Netzwerk getestet, i.O.
Teamviewer eben auch eingerichtet etc, funktioniert. Also im eigenen Netzwerk keine Probleme.

3. Problem:
Mein toller Telekomrouter (W724V) lässt es nicht zu, von ausserhalb eben das "Magic Packet" zu senden. Nach etlichen Tests mit Portforwarding und lesen etlicher Foreneinträge dazu, habe ich es auch aufgegeben. Dies wird wohl (auch laut aussage der Telekom in den entsprechenden Foren) nicht unterstützt. Ja ich weiß, Fritzbox ist hier wohl ein Stichwort, habe ich aber (erstmal) nicht, möchte auch (erstmal) keine kaufen.

4. Was ich allerdings zuhause habe: Arduino mit ESP8266, genauer gesagt so ein Pretzel-Board.
Also kurz mal geschaut, mit der Nano-ESP Library kann man sich ja wunderbar mit dem WLAN zuahuse verbinden, eine UDP-Verbindung starten und eben das "Magic Packet" senden. Das funktioniert auch ohne Probleme. Kurz einen Webserver drauf eingerichtet mit einem Login-Feld (User / PW). Sobald ich mich einlogge, sendet mein Arduino eben das "Magic Packet" und der entsprechende Rechner startet. Jetzt nur noch Port 80 an den Arduino durchreichen, fertig. Funktioniert wunderbar von ausserhalb.

Problem hierbei:
Die Verbindung zum Webserver ist nicht verschlüsselt. Es ist wohl auch etwas aufwendiger eine verschlüsselte Verbindung mit dem Arduino hinzubekommen, bzw die Passwordeingabe eben entsprechend zu verschlüsseln etc. Gibt wohl irgendwelche Bibliotheken, hab da aber ehrlich gesagt nicht wirklich sooo viel weiter dazu gelesen.
Ich bin mir auch nicht ganz sicher, ob das unverschlüsselte an der Stelle so ein Problem ist, da ich ja für den Login sowieso keine Login-Daten nehme, die ich sonst anderweitig benutze, falls die ausgelesen werden sollten. Auch bin ich mir nicht so sicher, ob auf den Arduino irgendwas böses "installiert" werden könnte. Und eigentlich wecke ich damit ja nur einen PC. Aber bin da trotzdem etwas skeptisch.
Vielleicht kann hierzu ja jemand auch was sagen?!

5. Also Plan B: 
Blynk. Blynk ist eine feine Sache. Dazu gibt es eine App fürs Smartphone, mit der man sich eine Oberfläche aus Taster, Schalter, Slider etc. zusammenstellt. Man erhält für so ein "Projekt" einen Thoken (lange Buchstaben- / Zahlenkombination). Für den Arduino gibt es dafür natürlich eine Bibliothek, wo man diesen Thoken eintragen muss.  Ist der Arduino über diese Blynk-Bibliothek mit dem WLAN Verbunden, wird dann eine Verbindung zum Blynk-Server hergestellt. Da über dieses Thoken nun Praktisch eine Verbinung zwischen App und Arduino hergestellt wurde, kann man wunderbar per Tastendruck in der App eine Aktion auf dem Arduino ausführen. Geht natürlich auch in die andere Richtung, dass der Arduino Daten an die App sendet. Auch das funktioniert mit einem Test (LED leuchten lassen) ohne Probleme und mit einer Latenz von ca 20ms auch recht verzögerungsfrei. Pluspunkte hier: Es ist halt "verschlüsselt", man braucht keinen Webserver und mit einer App ist das irgendwie praktischer

6. Aber jetzt zu meinem Problem:
Ich bekomme über die Blynk-Bibliothek keine UDP-Verbindung gestartet. Binde ich nun die NanoESP Bibliothek mit ein (um die UDP-Verbindung starten zu können) geht das leider nicht, da die NanoESP-Bibliothek eben nicht kapiert, dass sie Online ist (über die Blynk-Bibliothek ist ja schon eine Verbindung aufgebaut). Somit kann ich diese UDP-Verbindung nicht starten und mein Paket nicht senden.  Beide gleichzeitig starten geht irgendwie auch nicht. Bei der NanoESP-Bibliothek gibt es eben ein WIFI-Connect-Befehl, wo die WLAN-Verbindung aufgebaut wird, bei der Blynk-Bibliothek eben auch. 
Beide können aber scheinbar nicht gleichzeitig eine Verbindung aufbauen, was sowieso irgendwie schwachsinnig wäre. Glaube das liegt irgendwie an den intern genutzen Pins (11, 12 für RX/TX) der Bibliotheken um mit dem ESP8266 Modul zu kommunizieren. Wird dann wohl von der einen Bibliothek genutzt und ist dann bei der anderen irgendwie gesperrt. Oder ich verstehe das was einfach nicht.
Hat damit jemand schon mal rumgespielt? 

Ich weiß, es gibt auch andere Möglichkeiten das Problem zu lösen (Raspberry Pi, anderer Router, Arduino Mega oder Leonardo mit WLAN-Shield, dann über WakeOnUSB, da diese auch als USB-Device erkann werden und nicht als COM etc.). Ich wollte das aber schon gerne über das Pretzel-Board lösen, da es sowieso rumliegt und mich somit ausser etwas Zeit und Hirnschmalz nichts kostet .

Ich werde nochmal versuchen das mit beiden Bibliotheken ans laufen zu bekommen. Vielleicht habe ich auch einfach was übersehen. Alternative wäre eben bei Empfangenem Blynk-Befehl diese Verbindung zu trennen und über die andere Bibliothek eine aufzubauen, das Paket zu senden, Verbindung trennen und wieder mit Blynk zu verbinden. Empfinde das allerdings eher als Workaround, wenn das so überhaupt funktionieren sollte. 

Vielleicht ist hier ja jemand pfiffig mit dem Arduino-Kram unterwegs oder hat lust, zusammen auf Fehlersuche zu gehen. Sketch kann ich natürlich nachreichen wenn gewünscht.


Vielen Dank fürs lesen . Ich hoffe, hier hat jemand eine Idee.

Gruß

-chris


----------



## Gerhard Bäurle (27 März 2018)

Zu 6.

1. Ich kenne das Pinout des Pretzelboards nicht. Bei meinen ESP8266-basierten Board ist RX/TX durch die USB-Schnittstelle belegt. Wenn ich die USB Schnittstelle verwende, beispielsweise mit dem seriellen Monitor, ist diese Schnittstelle blockiert. Bei mir gibt es aber noch vTX/vRX, da spielen zwei I/O-PINs UART.

2. warum nicht einfach eine zweiten ESP nehmen udn digital koppeln?


----------



## A3Q (29 März 2018)

Hi,

danke für die Antwort.



> 2. warum nicht einfach eine zweiten ESP nehmen udn digital koppeln?



Ich wollte halt erstmal nichts neues holen, auch wenn sich die "Unkosten" dabei ja in Grenzen handeln .

Gestern habe ich nochmal rumgespielt. Sobald ich über diese Blynk-Library eine Verbindung aufgebaut habe, funktioniert der Befehl "startUDPserver" der anderen Library nicht mehr (NANO-Esp).
Also habe ich jetzt erstmal doch den Workaround über Verbindung trennen, Server starten, danach wieder mit dem Blynk-Server verbinden gemacht. Das funktioniert auch bisher ohne Probleme. 

Verzögerung: Nach push auf den Button in der App, braucht es zum senden des "Magic Packets" ca 3-5s. Also den Befehl registriert der Arduino sofort (15-30ms). Aber da erst die aktive Verbindung getrennt wird, eine neue aufgebaut, der Server gestartet wird und dann das Packet verschickt wird, startet der Rechner ca 3-5s verzögert. Damit kann ich leben. 

Gruß


-chris


----------

