You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/uk/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md

5.8 KiB

Керуйте нічним світлом через Інтернет - Wio Terminal

У цій частині уроку ви будете підписуватися на команди, які надсилаються з брокера MQTT до вашого Wio Terminal.

Підписка на команди

Наступний крок — підписатися на команди, які надсилаються з брокера MQTT, і реагувати на них.

Завдання

Підпишіться на команди.

  1. Відкрийте проєкт нічного світла у VS Code.

  2. Додайте наступний код в кінці файлу config.h, щоб визначити назву теми для команд:

    const string SERVER_COMMAND_TOPIC = ID + "/commands";
    

    SERVER_COMMAND_TOPIC — це тема, на яку пристрій буде підписуватися, щоб отримувати команди для LED.

  3. Додайте наступний рядок в кінці функції reconnectMQTTClient, щоб підписатися на тему команд, коли MQTT-клієнт буде перепідключено:

    client.subscribe(SERVER_COMMAND_TOPIC.c_str());
    
  4. Додайте наступний код нижче функції 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 вмикається або вимикається.

  5. Додайте наступний код до функції createMQTTClient:

    client.setCallback(clientCallback);
    

    Цей код встановлює clientCallback як зворотний виклик, який буде викликатися, коли повідомлення отримується від брокера MQTT.

    💁 Обробник clientCallback викликається для всіх тем, на які підписано. Якщо ви пізніше напишете код, який слухає кілька тем, ви можете отримати тему, до якої було надіслано повідомлення, з параметра topic, переданого до функції зворотного виклику.

  6. Завантажте код на ваш Wio Terminal і використовуйте Serial Monitor, щоб побачити рівні освітлення, які надсилаються до брокера MQTT.

  7. Відрегулюйте рівні освітлення, які визначаються вашим фізичним або віртуальним пристроєм. Ви побачите, як повідомлення отримуються, а команди надсилаються в терміналі. Ви також побачите, як LED вмикається і вимикається залежно від рівня освітлення.

💁 Ви можете знайти цей код у папці code-commands/wio-terminal.

😀 Ви успішно запрограмували ваш пристрій для реагування на команди від брокера MQTT.


Відмова від відповідальності:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.