3.6 KiB
Juhi oma öölampi Interneti kaudu - Wio Terminal
Selles õppetunni osas tellid käske, mis saadetakse MQTT brokerilt sinu Wio Terminalile.
Käskude tellimine
Järgmine samm on tellida käske, mis saadetakse MQTT brokerilt, ja neile vastata.
Ülesanne
Tellida käske.
-
Ava öölambi projekt VS Code'is.
-
Lisa järgmine kood
config.hfaili lõppu, et määratleda käskude teema nimi:const string SERVER_COMMAND_TOPIC = ID + "/commands";SERVER_COMMAND_TOPICon teema, millele seade tellib LED-käskude vastuvõtmiseks. -
Lisa järgmine rida
reconnectMQTTClientfunktsiooni lõppu, et tellida käskude teema, kui MQTT klient uuesti ühendatakse:client.subscribe(SERVER_COMMAND_TOPIC.c_str()); -
Lisa järgmine kood
reconnectMQTTClientfunktsiooni alla.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); }See funktsioon on tagasihelistus, mida MQTT klient kutsub, kui serverilt sõnum saadakse.
Sõnum saadakse unsigned 8-bitiste täisarvude massiivina, seega tuleb see teisendada tähemärkide massiiviks, et seda tekstina käsitleda.
Sõnum sisaldab JSON-dokumenti, mis dekodeeritakse ArduinoJson teegi abil. JSON-dokumendi
led_onomadus loetakse ja sõltuvalt väärtusest lülitatakse LED sisse või välja. -
Lisa järgmine kood
createMQTTClientfunktsiooni:client.setCallback(clientCallback);See kood määrab
clientCallbacktagasihelistuse, mida kutsutakse, kui MQTT brokerilt sõnum saadakse.💁
clientCallbackkäsitleja kutsutakse kõigi tellitud teemade jaoks. Kui hiljem kirjutad koodi, mis kuulab mitut teemat, saad teema, millele sõnum saadeti,topicparameetrist, mis edastatakse tagasihelistusfunktsioonile. -
Laadi kood oma Wio Terminalile ja kasuta Serial Monitori, et näha valguse tasemeid, mis saadetakse MQTT brokerile.
-
Kohanda füüsilise või virtuaalse seadme tuvastatud valguse tasemeid. Näed terminalis sõnumeid, mis saadakse ja käske, mis saadetakse. Näed ka, kuidas LED lülitatakse sisse ja välja sõltuvalt valguse tasemest.
💁 Selle koodi leiad code-commands/wio-terminal kaustast.
😀 Oled edukalt kodeerinud oma seadme vastama käskudele, mis saadetakse MQTT brokerilt.
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.