3.9 KiB
Styr din natlampe over internettet - Wio Terminal
I denne del af lektionen vil du abonnere på kommandoer sendt fra en MQTT-broker til din Wio Terminal.
Abonner på kommandoer
Næste trin er at abonnere på de kommandoer, der sendes fra MQTT-brokeren, og reagere på dem.
Opgave
Abonner på kommandoer.
-
Åbn natlampeprojektet i VS Code.
-
Tilføj følgende kode nederst i
config.h
-filen for at definere emnenavnet for kommandoerne:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
er det emne, som enheden vil abonnere på for at modtage LED-kommandoer. -
Tilføj følgende linje til slutningen af funktionen
reconnectMQTTClient
for at abonnere på kommandoemnet, når MQTT-klienten genopretter forbindelsen:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Tilføj følgende kode 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); }
Denne funktion vil være den callback, som MQTT-klienten kalder, når den modtager en besked fra serveren.
Beskeden modtages som et array af usignerede 8-bit heltal og skal konverteres til et karakterarray for at blive behandlet som tekst.
Beskeden indeholder et JSON-dokument, som dekodes ved hjælp af ArduinoJson-biblioteket.
led_on
-egenskaben i JSON-dokumentet læses, og afhængigt af værdien tændes eller slukkes LED'en. -
Tilføj følgende kode til funktionen
createMQTTClient
:client.setCallback(clientCallback);
Denne kode sætter
clientCallback
som den callback, der skal kaldes, når en besked modtages fra MQTT-brokeren.💁
clientCallback
-handleren kaldes for alle emner, der er abonneret på. Hvis du senere skriver kode, der lytter til flere emner, kan du få det emne, som beskeden blev sendt til, fra parameterentopic
, der sendes til callback-funktionen. -
Upload koden til din Wio Terminal, og brug Serial Monitor til at se lysniveauerne, der sendes til MQTT-brokeren.
-
Juster lysniveauerne, der registreres af din fysiske eller virtuelle enhed. Du vil se beskeder blive modtaget og kommandoer blive sendt i terminalen. Du vil også se LED'en blive tændt og slukket afhængigt af lysniveauet.
💁 Du kan finde denne kode i mappen code-commands/wio-terminal.
😀 Du har med succes kodet din enhed til at reagere på kommandoer fra en MQTT-broker.
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.