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

11 KiB

Ovládajte svoje nočné svetlo cez internet - Wio Terminal

IoT zariadenie musí byť naprogramované tak, aby komunikovalo s test.mosquitto.org pomocou MQTT na odosielanie telemetrických hodnôt zo snímača svetla a prijímanie príkazov na ovládanie LED.

V tejto časti lekcie pripojíte svoj Wio Terminal k MQTT brokeru.

Nainštalujte WiFi a MQTT knižnice pre Arduino

Na komunikáciu s MQTT brokerom je potrebné nainštalovať niektoré Arduino knižnice, ktoré umožnia používať WiFi čip vo Wio Terminal a komunikovať cez MQTT. Pri vývoji pre Arduino zariadenia môžete využiť širokú škálu knižníc, ktoré obsahujú open-source kód a implementujú množstvo funkcií. Seeed poskytuje knižnice pre Wio Terminal, ktoré umožňujú komunikáciu cez WiFi. Iní vývojári zverejnili knižnice na komunikáciu s MQTT brokermi, ktoré budete používať so svojím zariadením.

Tieto knižnice sú poskytované ako zdrojový kód, ktorý môže byť automaticky importovaný do PlatformIO a skompilovaný pre vaše zariadenie. Týmto spôsobom budú Arduino knižnice fungovať na akomkoľvek zariadení, ktoré podporuje Arduino framework, za predpokladu, že zariadenie má potrebný hardvér pre danú knižnicu. Niektoré knižnice, ako napríklad Seeed WiFi knižnice, sú špecifické pre určitý hardvér.

Knižnice môžu byť nainštalované globálne a skompilované podľa potreby, alebo pre konkrétny projekt. Pre túto úlohu budú knižnice nainštalované do projektu.

Viac o správe knižníc a o tom, ako ich nájsť a nainštalovať, sa môžete dozvedieť v dokumentácii PlatformIO o knižniciach.

Úloha - nainštalujte WiFi a MQTT knižnice pre Arduino

Nainštalujte Arduino knižnice.

  1. Otvorte projekt nočného svetla vo VS Code.

  2. Pridajte nasledujúci kód na koniec súboru platformio.ini:

    lib_deps =
        seeed-studio/Seeed Arduino rpcWiFi @ 1.0.5
        seeed-studio/Seeed Arduino FS @ 2.1.1
        seeed-studio/Seeed Arduino SFUD @ 2.0.2
        seeed-studio/Seeed Arduino rpcUnified @ 2.1.3
        seeed-studio/Seeed_Arduino_mbedtls @ 3.0.1
    

    Týmto sa importujú Seeed WiFi knižnice. Syntax @ <číslo> odkazuje na konkrétnu verziu knižnice.

    💁 Môžete odstrániť @ <číslo>, aby ste vždy používali najnovšiu verziu knižníc, ale nie je zaručené, že novšie verzie budú fungovať s kódom nižšie. Kód tu bol testovaný s touto verziou knižníc.

    Toto je všetko, čo musíte urobiť na pridanie knižníc. Pri ďalšom zostavení projektu PlatformIO stiahne zdrojový kód týchto knižníc a skompiluje ho do vášho projektu.

  3. Pridajte nasledujúci kód do lib_deps:

    knolleary/PubSubClient @ 2.8
    

    Týmto sa importuje PubSubClient, MQTT klient pre Arduino.

Pripojenie k WiFi

Wio Terminal teraz môže byť pripojený k WiFi.

Úloha - pripojenie k WiFi

Pripojte Wio Terminal k WiFi.

  1. Vytvorte nový súbor v priečinku src s názvom config.h. Môžete to urobiť tak, že vyberiete priečinok src alebo súbor main.cpp vo vnútri a kliknete na tlačidlo New file v prieskumníku. Toto tlačidlo sa zobrazí iba vtedy, keď je kurzor nad prieskumníkom.

    Tlačidlo na vytvorenie nového súboru

  2. Pridajte nasledujúci kód do tohto súboru na definovanie konštánt pre vaše WiFi prihlasovacie údaje:

    #pragma once
    
    #include <string>
    
    using namespace std;
    
    // WiFi credentials
    const char *SSID = "<SSID>";
    const char *PASSWORD = "<PASSWORD>";
    

    Nahraďte <SSID> názvom vašej WiFi siete. Nahraďte <PASSWORD> heslom vašej WiFi siete.

  3. Otvorte súbor main.cpp.

  4. Pridajte nasledujúce #include direktívy na začiatok súboru:

    #include <PubSubClient.h>
    #include <rpcWiFi.h>
    #include <SPI.h>
    
    #include "config.h"
    

    Týmto sa zahrnú hlavičkové súbory pre knižnice, ktoré ste pridali skôr, ako aj hlavičkový súbor config. Tieto hlavičkové súbory sú potrebné na to, aby PlatformIO zahrnulo kód z knižníc. Bez explicitného zahrnutia týchto hlavičkových súborov nebude niektorý kód skompilovaný a dostanete chyby kompilátora.

  5. Pridajte nasledujúci kód nad funkciu setup:

    void connectWiFi()
    {
        while (WiFi.status() != WL_CONNECTED)
        {
            Serial.println("Connecting to WiFi..");
            WiFi.begin(SSID, PASSWORD);
            delay(500);
        }
    
        Serial.println("Connected!");
    }
    

    Tento kód sa opakovane pokúša pripojiť zariadenie k WiFi, kým nie je pripojené, a používa SSID a heslo zo súboru config.

  6. Zavolajte túto funkciu na konci funkcie setup, po nakonfigurovaní pinov.

    connectWiFi();
    
  7. Nahrajte tento kód do svojho zariadenia, aby ste overili, že pripojenie k WiFi funguje. V sériovom monitore by ste mali vidieť toto:

    > Executing task: platformio device monitor <
    
    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1101  9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Connecting to WiFi..
    Connected!
    

Pripojenie k MQTT

Keď je Wio Terminal pripojený k WiFi, môže sa pripojiť k MQTT brokeru.

Úloha - pripojenie k MQTT

Pripojte sa k MQTT brokeru.

  1. Pridajte nasledujúci kód na koniec súboru config.h, aby ste definovali údaje o pripojení k MQTT brokeru:

    // MQTT settings
    const string ID = "<ID>";
    
    const string BROKER = "test.mosquitto.org";
    const string CLIENT_NAME = ID + "nightlight_client";
    

    Nahraďte <ID> jedinečným ID, ktoré bude použité ako názov tohto zariadenia klienta a neskôr pre témy, ktoré toto zariadenie publikuje a odoberá. Broker test.mosquitto.org je verejný a používa ho mnoho ľudí, vrátane iných študentov pracujúcich na tejto úlohe. Použitie jedinečného názvu MQTT klienta a názvov tém zabezpečí, že váš kód nebude kolidovať s kódom niekoho iného. Toto ID budete potrebovať aj pri vytváraní serverového kódu neskôr v tejto úlohe.

    💁 Môžete použiť webovú stránku ako GUIDGen na generovanie jedinečného ID.

    BROKER je URL adresa MQTT brokeru.

    CLIENT_NAME je jedinečný názov tohto MQTT klienta na brokeri.

  2. Otvorte súbor main.cpp a pridajte nasledujúci kód pod funkciu connectWiFi a nad funkciu setup:

    WiFiClient wioClient;
    PubSubClient client(wioClient);
    

    Tento kód vytvára WiFi klienta pomocou WiFi knižníc Wio Terminal a používa ho na vytvorenie MQTT klienta.

  3. Pod tento kód pridajte nasledujúci kód:

    void reconnectMQTTClient()
    {
        while (!client.connected())
        {
            Serial.print("Attempting MQTT connection...");
    
            if (client.connect(CLIENT_NAME.c_str()))
            {
                Serial.println("connected");
            }
            else
            {
                Serial.print("Retying in 5 seconds - failed, rc=");
                Serial.println(client.state());
    
                delay(5000);
            }
        }
    }
    

    Táto funkcia testuje pripojenie k MQTT brokeru a znovu sa pripojí, ak nie je pripojené. Opakovane sa pokúša pripojiť pomocou jedinečného názvu klienta definovaného v hlavičkovom súbore config.

    Ak pripojenie zlyhá, pokúsi sa znova po 5 sekundách.

  4. Pridajte nasledujúci kód pod funkciu reconnectMQTTClient:

    void createMQTTClient()
    {
        client.setServer(BROKER.c_str(), 1883);
        reconnectMQTTClient();
    }
    

    Tento kód nastaví MQTT broker pre klienta, ako aj nastaví spätné volanie pri prijatí správy. Potom sa pokúsi pripojiť k brokeru.

  5. Zavolajte funkciu createMQTTClient vo funkcii setup po pripojení k WiFi.

  6. Nahraďte celú funkciu loop nasledujúcim kódom:

    void loop()
    {
        reconnectMQTTClient();
        client.loop();
    
        delay(2000);
    }
    

    Tento kód začína opätovným pripojením k MQTT brokeru. Tieto pripojenia môžu byť ľahko prerušené, takže je dobré pravidelne kontrolovať a znovu sa pripojiť, ak je to potrebné. Potom zavolá metódu loop na MQTT klientovi, aby spracoval akékoľvek správy, ktoré prichádzajú na odoberanú tému. Táto aplikácia je jednovláknová, takže správy nemôžu byť prijímané na pozadí, preto je potrebné prideliť čas na hlavnom vlákne na spracovanie čakajúcich správ na sieťovom pripojení.

    Nakoniec, oneskorenie 2 sekundy zabezpečí, že úrovne svetla nebudú odosielané príliš často a zníži sa spotreba energie zariadenia.

  7. Nahrajte kód do svojho Wio Terminal a použite sériový monitor na sledovanie pripojenia zariadenia k WiFi a MQTT.

    > Executing task: platformio device monitor <
    
    source /Users/jimbennett/GitHub/IoT-For-Beginners/1-getting-started/lessons/4-connect-internet/code-mqtt/wio-terminal/nightlight/.venv/bin/activate
    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1201  9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Connecting to WiFi..
    Connected!
    Attempting MQTT connection...connected
    

💁 Tento kód nájdete v priečinku code-mqtt/wio-terminal.

😀 Úspešne ste pripojili svoje zariadenie k MQTT brokeru.


Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.