Hinter dem vierten Türchen des Adventskalenders finden Sie einen Satz Kabel, die für die kommenden Hardwareaufbauten nützlich sind. Im heutigen Projekt wollen wir uns aber anschauen, was das JSONFormat ist und wie es uns hilft, mit dem Board zu kommunizieren.
Zuerst aktivieren Sie wie gewohnt das Programm des heutigen Tages. Außerdem werden Sie das PacketSender-Programm mit den gleichen Einstellungen wie gestern benötigen. Heute erscheint erst dann eine Nachricht, wenn Sie kurz auf den Boot-Button auf dem Board gedrückt haben. Diese Nachricht sieht so aus:
{“cmd”:“boot_pressed”}

Das liegt daran, dass diese Nachricht der JSON (JavaScript Object Notation) folgt. Dabei handelt es sich um ein schlankes Datenaustauschformat für Maschinen, das aber auch für Menschen sehr gut lesbar ist. Im Grunde besteht im JSON-Format alles aus Namen und Werten. Zuerst kommt der Name des Werts (auch Key genannt), hier cmd (kurz für Command, Kommando), und anschließend der Wert, hier boot_pressed. Beide sind durch einen Doppelpunkt voneinander getrennt und, da es sich hier um Text handelt, von Anführungszeichen umschlossen. Ein komplettes JSON-Objekt ist zusätzlich von geschweiften Klammern umgeben.
Das Board kann nicht nur Nachrichten senden, sondern auch Nachrichten empfangen. Dazu müssen Sie im Packet-Sender-Programm ein paar Einstellungen vornehmen. Im oberen Bereich finden Sie ein Textfeld, das mit Address beschriftet ist. Hier sollten Sie wieder die Broadcast-Adresse eingeben, die Sie auch auf dem Board verwendet haben. Alternativ können Sie die Board-IP oder sogar nur den mDNS-Namen (einfach nodeesp) nutzen. In das Feld Port rechts daneben fügen Sie wieder den Port 55056 ein. Als letzte Einstellung wählen Sie im Drop-down-Menü weiter rechts UDP aus. Nun können Sie etwas weiter oben im Feld ASCII eine Nachricht eingeben und mit dem Send-Button übertragen. Senden Sie zunächst einen willkürlichen Text, etwa Hallo. Da das Packet-Sender-Programm unter dem gleichen Port auch lauscht und Sie die Broadcast-IP-Adresse verwenden, werden Sie einige der gesendeten Nachrichten auch selbst empfangen. Zusätzlich empfangen Sie vom Board die Nachricht {“cmd”:“ack”}. ack ist die Kurzform von acknowledged (bestätigt). Damit bestätigt das Board also den Empfang einer Nachricht, auch wenn es wahrscheinlich mit der Nachricht selbst nichts anfangen konnte.

Wenn Sie nun aber einen vordefinierten Befehl im JSON-Format abschicken, sieht die Sache schon anders aus. Senden Sie zum Beispiel den Text {“cmd”:“ping”}, kommt nach kurzer Zeit ein
{“cmd”:“pong”} als Antwort vom Board zurück. Es gibt noch weitere Kommandos, die Sie ausprobieren können. Mit {“cmd”:“get_wifi_status”} bekommen Sie beispielsweise den Verbindungsstatus des Boards zurück. Mit {“cmd”:“get_wifi_scan”} werden alle WLAN-Netzwerke in Reichweite erfasst und in einer Liste übermittelt.
Es gibt eine ganze Reihe von allgemeingültigen Kommandos, die Sie auf der Boardseite oder auf der Projektseite einsehen können. Aber Vorsicht: Ein paar Kommandos aus der Kategorie Settings können die Einstellungen des Boards so verändern, dass nichts mehr geht. Wenn das passiert, können Sie zu den Standardeinstellungen zurückkehren, indem Sie den Boot-Button über zehn Sekunden lang gedrückt halten. Dies ist in allen Programmen möglich, bei denen WPS in Klammern hinter dem Programmnamen steht. Die gleiche Funktion ist auch auf der Konfigurationsseite unter Advanced Settings zu finden (Restore Default Configuration). Als dritte Möglichkeit können Sie Pin 13 beim Boardstart auf LOW setzen. Vergessen Sie aber nicht, die Verbindung an Pin 13 nach dem Reset wieder zu trennen.

Im Packetsender unten auf den UDP Reiter klicken um den Server zu disablen, dann noch mal um ihn wieder zu aktivieren.
Danach sollten Pingbefehle, Boot-Button und Co auch funktionieren..
Hat zumindest bei mir (nach anfänglichen Problemen) geholfen.
P.S.: Wo sich der Bootbutton befindet seht ihr auf dem Pinout (.local Website)