3.8 KiB
Styr nattlampen din over Internett - Wio Terminal
I denne delen av leksjonen vil du abonnere på kommandoer sendt fra en MQTT-broker til din Wio Terminal.
Abonner på kommandoer
Neste steg er å abonnere på kommandoene som sendes fra MQTT-brokeren, og svare på dem.
Oppgave
Abonner på kommandoer.
-
Åpne nattlampe-prosjektet i VS Code.
-
Legg til følgende kode nederst i
config.h
-filen for å definere emnenavnet for kommandoene:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
er emnet som enheten vil abonnere på for å motta LED-kommandoer. -
Legg til følgende linje på slutten av
reconnectMQTTClient
-funksjonen for å abonnere på kommandoemnet når MQTT-klienten kobles til igjen:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Legg til følgende kode under
reconnectMQTTClient
-funksjonen: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 funksjonen vil være callback-funksjonen som MQTT-klienten kaller når den mottar en melding fra serveren.
Meldingen mottas som et array av usignerte 8-bits heltall, og må konverteres til et tegnarray for å behandles som tekst.
Meldingen inneholder et JSON-dokument, som dekodes ved hjelp av ArduinoJson-biblioteket.
led_on
-egenskapen i JSON-dokumentet leses, og avhengig av verdien slås LED-en av eller på. -
Legg til følgende kode i
createMQTTClient
-funksjonen:client.setCallback(clientCallback);
Denne koden setter
clientCallback
som callback-funksjonen som skal kalles når en melding mottas fra MQTT-brokeren.💁
clientCallback
-handleren kalles for alle emner det abonneres på. Hvis du senere skriver kode som lytter til flere emner, kan du hente emnet meldingen ble sendt til fratopic
-parameteren som sendes til callback-funksjonen. -
Last opp koden til din Wio Terminal, og bruk Serial Monitor for å se lysnivåene som sendes til MQTT-brokeren.
-
Juster lysnivåene som oppdages av din fysiske eller virtuelle enhet. Du vil se meldinger bli mottatt og kommandoer bli sendt i terminalen. Du vil også se at LED-en slås av og på avhengig av lysnivået.
💁 Du finner denne koden i code-commands/wio-terminal-mappen.
😀 Du har nå kodet enheten din til å svare på kommandoer fra en MQTT-broker.
Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.