4.2 KiB
Steuern Sie Ihr Nachtlicht über das Internet - Wio Terminal
In diesem Teil der Lektion abonnieren Sie Befehle, die von einem MQTT-Broker an Ihr Wio Terminal gesendet werden.
Befehle abonnieren
Der nächste Schritt besteht darin, die vom MQTT-Broker gesendeten Befehle zu abonnieren und darauf zu reagieren.
Aufgabe
Abonnieren Sie Befehle.
-
Öffnen Sie das Nachtlicht-Projekt in VS Code.
-
Fügen Sie den folgenden Code am Ende der Datei
config.h
hinzu, um den Themennamen für die Befehle zu definieren:const string SERVER_COMMAND_TOPIC = ID + "/commands";
Das
SERVER_COMMAND_TOPIC
ist das Thema, das das Gerät abonniert, um LED-Befehle zu empfangen. -
Fügen Sie die folgende Zeile am Ende der Funktion
reconnectMQTTClient
hinzu, um das Befehls-Thema zu abonnieren, wenn der MQTT-Client erneut verbunden wird:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Fügen Sie den folgenden Code unterhalb der Funktion
reconnectMQTTClient
hinzu.void clientCallback(char *topic, uint8_t *payload, unsigned int length) { char buff[length + 1]; for (int i = 0; i < length; i++) { buff[i] = (char)payload[i]; } buff[length] = '\0'; Serial.print("Message received:"); Serial.println(buff); DynamicJsonDocument doc(1024); deserializeJson(doc, buff); JsonObject obj = doc.as<JsonObject>(); bool led_on = obj["led_on"]; if (led_on) digitalWrite(D0, HIGH); else digitalWrite(D0, LOW); }
Diese Funktion wird der Callback sein, den der MQTT-Client aufruft, wenn er eine Nachricht vom Server empfängt.
Die Nachricht wird als ein Array von unsignierten 8-Bit-Integern empfangen und muss in ein Zeichen-Array umgewandelt werden, um als Text behandelt zu werden.
Die Nachricht enthält ein JSON-Dokument und wird mit der ArduinoJson-Bibliothek dekodiert. Die Eigenschaft
led_on
des JSON-Dokuments wird ausgelesen, und je nach Wert wird die LED ein- oder ausgeschaltet. -
Fügen Sie den folgenden Code zur Funktion
createMQTTClient
hinzu:client.setCallback(clientCallback);
Dieser Code setzt den
clientCallback
als Callback, der aufgerufen wird, wenn eine Nachricht vom MQTT-Broker empfangen wird.💁 Der
clientCallback
-Handler wird für alle abonnierten Themen aufgerufen. Wenn Sie später Code schreiben, der auf mehrere Themen hört, können Sie das Thema, zu dem die Nachricht gesendet wurde, aus dem Parametertopic
abrufen, der an den Callback übergeben wird. -
Laden Sie den Code auf Ihr Wio Terminal hoch und verwenden Sie den Serial Monitor, um die Lichtwerte zu sehen, die an den MQTT-Broker gesendet werden.
-
Passen Sie die Lichtwerte an, die von Ihrem physischen oder virtuellen Gerät erkannt werden. Sie werden sehen, wie Nachrichten empfangen und Befehle im Terminal gesendet werden. Außerdem sehen Sie, wie die LED je nach Lichtwert ein- oder ausgeschaltet wird.
💁 Sie finden diesen Code im Ordner code-commands/wio-terminal.
😀 Sie haben Ihr Gerät erfolgreich programmiert, um auf Befehle von einem MQTT-Broker zu reagieren.
Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.