4.0 KiB
Styr din nattlampa över Internet - Wio Terminal
I den här delen av lektionen kommer du att prenumerera på kommandon som skickas från en MQTT-broker till din Wio Terminal.
Prenumerera på kommandon
Nästa steg är att prenumerera på kommandon som skickas från MQTT-brokern och svara på dem.
Uppgift
Prenumerera på kommandon.
-
Öppna nattlampa-projektet i VS Code.
-
Lägg till följande kod längst ner i filen
config.h
för att definiera ämnesnamnet för kommandona:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
är ämnet som enheten kommer att prenumerera på för att ta emot LED-kommandon. -
Lägg till följande rad i slutet av funktionen
reconnectMQTTClient
för att prenumerera på kommandotemat när MQTT-klienten återansluts:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Lägg till följande kod under funktionen
reconnectMQTTClient
.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); }
Den här funktionen kommer att vara callback-funktionen som MQTT-klienten anropar när den tar emot ett meddelande från servern.
Meddelandet tas emot som en array av osignerade 8-bitars heltal och måste konverteras till en teckenarray för att behandlas som text.
Meddelandet innehåller ett JSON-dokument och avkodas med hjälp av ArduinoJson-biblioteket. Egenskapen
led_on
i JSON-dokumentet läses, och beroende på värdet tänds eller släcks LED-lampan. -
Lägg till följande kod i funktionen
createMQTTClient
:client.setCallback(clientCallback);
Den här koden sätter
clientCallback
som callback-funktion som anropas när ett meddelande tas emot från MQTT-brokern.💁 Callback-funktionen
clientCallback
anropas för alla ämnen som prenumereras på. Om du senare skriver kod som lyssnar på flera ämnen kan du få ämnet som meddelandet skickades till från parameterntopic
som skickas till callback-funktionen. -
Ladda upp koden till din Wio Terminal och använd Serial Monitor för att se ljusnivåerna som skickas till MQTT-brokern.
-
Justera ljusnivåerna som detekteras av din fysiska eller virtuella enhet. Du kommer att se meddelanden tas emot och kommandon skickas i terminalen. Du kommer också att se att LED-lampan tänds och släcks beroende på ljusnivån.
💁 Du kan hitta den här koden i mappen code-commands/wio-terminal.
😀 Du har framgångsrikt programmerat din enhet att svara på kommandon från en MQTT-broker.
Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.