3.8 KiB
Ohjaa yövaloa Internetin kautta - Wio Terminal
Tässä osassa oppituntia tilaat komentoja, jotka lähetetään MQTT-välittäjältä Wio Terminal -laitteellesi.
Tilaa komennot
Seuraava vaihe on tilata MQTT-välittäjän lähettämät komennot ja vastata niihin.
Tehtävä
Tilaa komennot.
-
Avaa yövaloprojekti VS Code -ohjelmassa.
-
Lisää seuraava koodi
config.h
-tiedoston loppuun määrittääksesi komentojen aiheen nimen:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
on aihe, johon laite tilaa saadakseen LED-komennot. -
Lisää seuraava rivi
reconnectMQTTClient
-funktion loppuun, jotta komentoaihe tilataan, kun MQTT-asiakas yhdistetään uudelleen:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Lisää seuraava koodi
reconnectMQTTClient
-funktion alapuolelle.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); }
Tämä funktio toimii palautteena, jonka MQTT-asiakas kutsuu, kun se vastaanottaa viestin palvelimelta.
Viesti vastaanotetaan 8-bittisten kokonaislukujen taulukkona, joten se täytyy muuntaa merkkitaulukoksi, jotta sitä voidaan käsitellä tekstinä.
Viesti sisältää JSON-dokumentin, joka dekoodataan ArduinoJson-kirjaston avulla. JSON-dokumentin
led_on
-ominaisuus luetaan, ja sen arvon perusteella LED sytytetään tai sammutetaan. -
Lisää seuraava koodi
createMQTTClient
-funktioon:client.setCallback(clientCallback);
Tämä koodi asettaa
clientCallback
-funktion palautteeksi, joka kutsutaan, kun MQTT-välittäjältä vastaanotetaan viesti.💁
clientCallback
-käsittelijä kutsutaan kaikille tilatuille aiheille. Jos myöhemmin kirjoitat koodia, joka kuuntelee useita aiheita, voit saada aiheen, johon viesti lähetettiin,topic
-parametrista, joka välitetään palautefunktiolle. -
Lataa koodi Wio Terminal -laitteellesi ja käytä sarjamonitoria nähdäksesi valotasot, jotka lähetetään MQTT-välittäjälle.
-
Säädä fyysisen tai virtuaalisen laitteen havaitsemia valotasoja. Näet viestien vastaanottamisen ja komentojen lähettämisen terminaalissa. Näet myös LEDin syttyvän ja sammuvan valotason mukaan.
💁 Löydät tämän koodin code-commands/wio-terminal -kansiosta.
😀 Olet onnistuneesti ohjelmoinut laitteesi vastaamaan MQTT-välittäjän komentoihin.
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.