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/bg/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);
    }
    

    Тази функция ще бъде callback, който MQTT клиентът ще извика, когато получи съобщение от сървъра.

    Съобщението се получава като масив от беззнакови 8-битови числа, затова трябва да бъде преобразувано в масив от символи, за да се третира като текст.

    Съобщението съдържа JSON документ, който се декодира с помощта на библиотеката ArduinoJson. Свойството led_on от JSON документа се прочита и, в зависимост от стойността му, LED светлината се включва или изключва.

  5. Добавете следния код към функцията createMQTTClient:

    client.setCallback(clientCallback);
    

    Този код задава clientCallback като callback, който ще бъде извикан, когато се получи съобщение от MQTT брокера.

    💁 Callback обработчикът clientCallback се извиква за всички теми, за които сте се абонирали. Ако по-късно напишете код, който слуша множество теми, можете да получите темата, към която е изпратено съобщението, от параметъра topic, предаден на callback функцията.

  6. Качете кода на вашия Wio Terminal и използвайте Serial Monitor, за да видите нивата на светлина, които се изпращат към MQTT брокера.

  7. Регулирайте нивата на светлина, засечени от вашето физическо или виртуално устройство. Ще видите съобщения, които се получават, и команди, които се изпращат в терминала. Също така ще видите как LED светлината се включва и изключва в зависимост от нивото на светлина.

💁 Можете да намерите този код в папката code-commands/wio-terminal.

😀 Успешно програмирахте вашето устройство да реагира на команди от MQTT брокер.


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.