5.6 KiB
Контролишите своје ноћно светло преко интернета - Wio Terminal
У овом делу лекције, претплатићете се на команде које се шаљу са MQTT брокера вашем Wio Terminal-у.
Претплата на команде
Следећи корак је претплата на команде које се шаљу са MQTT брокера и одговарање на њих.
Задатак
Претплатите се на команде.
-
Отворите пројекат ноћног светла у VS Code-у.
-
Додајте следећи код на крај
config.hдатотеке како бисте дефинисали назив теме за команде:const string SERVER_COMMAND_TOPIC = ID + "/commands";SERVER_COMMAND_TOPICје тема на коју ће се уређај претплатити како би примао команде за LED. -
Додајте следећу линију на крај
reconnectMQTTClientфункције како бисте се претплатили на тему команде када се MQTT клијент поново повеже:client.subscribe(SERVER_COMMAND_TOPIC.c_str()); -
Додајте следећи код испод
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); }Ова функција ће бити повратни позив који ће MQTT клијент позвати када прими поруку са сервера.
Порука се прима као низ беззнаковних 8-битних целих бројева, па је потребно конвертовати је у низ карактера како би се третирала као текст.
Порука садржи JSON документ, који се декодира помоћу ArduinoJson библиотеке.
led_onсвојство JSON документа се чита, и у зависности од његове вредности LED се укључује или искључује. -
Додајте следећи код у
createMQTTClientфункцију:client.setCallback(clientCallback);Овај код поставља
clientCallbackкао повратни позив који ће се позвати када се прими порука са MQTT брокера.💁
clientCallbackобрађивач се позива за све теме на које сте претплаћени. Ако касније напишете код који слуша више тема, можете добити тему на коју је порука послата изtopicпараметра који се прослеђује функцији повратног позива. -
Отпремите код на ваш Wio Terminal и користите Serial Monitor да видите нивое светлости који се шаљу MQTT брокеру.
-
Подесите нивое светлости које детектује ваш физички или виртуелни уређај. Видећете поруке које се примају и команде које се шаљу у терминалу. Такође ћете видети како се LED укључује и искључује у зависности од нивоа светлости.
💁 Овај код можете пронаћи у code-commands/wio-terminal фасцикли.
😀 Успешно сте програмирали свој уређај да одговара на команде са MQTT брокера.
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.