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/cs/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md

4.1 KiB

Ovládejte svůj noční světlo přes internet - Wio Terminal

V této části lekce se naučíte, jak se přihlásit k odběru příkazů zasílaných z MQTT brokeru do vašeho Wio Terminalu.

Přihlášení k odběru příkazů

Dalším krokem je přihlásit se k odběru příkazů zasílaných z MQTT brokeru a reagovat na ně.

Úkol

Přihlaste se k odběru příkazů.

  1. Otevřete projekt nočního světla ve VS Code.

  2. Přidejte následující kód na konec souboru config.h, abyste definovali název tématu pro příkazy:

    const string SERVER_COMMAND_TOPIC = ID + "/commands";
    

    SERVER_COMMAND_TOPIC je téma, ke kterému se zařízení přihlásí, aby přijímalo příkazy pro LED.

  3. Přidejte následující řádek na konec funkce reconnectMQTTClient, aby se zařízení přihlásilo k odběru tématu příkazů při opětovném připojení MQTT klienta:

    client.subscribe(SERVER_COMMAND_TOPIC.c_str());
    
  4. Přidejte následující kód pod funkci 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);
    }
    

    Tato funkce bude zpětné volání, které MQTT klient zavolá, když obdrží zprávu ze serveru.

    Zpráva je přijímána jako pole 8bitových neznačených celých čísel, takže je třeba ji převést na pole znaků, aby mohla být zpracována jako text.

    Zpráva obsahuje JSON dokument, který je dekódován pomocí knihovny ArduinoJson. Vlastnost led_on z JSON dokumentu je přečtena a v závislosti na její hodnotě se LED zapne nebo vypne.

  5. Přidejte následující kód do funkce createMQTTClient:

    client.setCallback(clientCallback);
    

    Tento kód nastaví clientCallback jako zpětné volání, které bude zavoláno, když MQTT broker odešle zprávu.

    💁 Zpětné volání clientCallback je voláno pro všechna témata, ke kterým jste přihlášeni. Pokud později napíšete kód, který poslouchá více témat, můžete získat téma, na které byla zpráva odeslána, z parametru topic předaného zpětnému volání.

  6. Nahrajte kód do svého Wio Terminalu a použijte Serial Monitor, abyste viděli úrovně světla odesílané do MQTT brokeru.

  7. Upravte úrovně světla detekované vaším fyzickým nebo virtuálním zařízením. Uvidíte zprávy, které jsou přijímány, a příkazy, které jsou odesílány v terminálu. Také uvidíte, jak se LED zapíná a vypíná v závislosti na úrovni světla.

💁 Tento kód najdete ve složce code-commands/wio-terminal.

😀 Úspěšně jste naprogramovali své zařízení, aby reagovalo na příkazy z MQTT brokeru.


Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. I když se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.