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

11 KiB

Hallitse yövaloa Internetin kautta - Wio Terminal

IoT-laitteelle täytyy ohjelmoida kyky kommunikoida test.mosquitto.org-palvelimen kanssa käyttämällä MQTT-protokollaa. Tämän avulla se voi lähettää telemetriatietoja valosensorin lukemista ja vastaanottaa komentoja LED-valon ohjaamiseen.

Tässä oppitunnin osassa yhdistät Wio Terminalin MQTT-välityspalvelimeen.

Asenna WiFi- ja MQTT-kirjastot Arduinoa varten

Jotta voit kommunikoida MQTT-välityspalvelimen kanssa, sinun täytyy asentaa joitakin Arduino-kirjastoja, jotka mahdollistavat Wio Terminalin WiFi-sirun käytön ja MQTT-yhteyden. Arduino-laitteille kehittäessäsi voit hyödyntää laajaa valikoimaa avoimen lähdekoodin kirjastoja, jotka tarjoavat monenlaisia toiminnallisuuksia. Seeed julkaisee kirjastoja Wio Terminalille, jotka mahdollistavat WiFi-yhteyden. Lisäksi muut kehittäjät ovat julkaisseet kirjastoja MQTT-välityspalvelimien kanssa kommunikointiin, ja käytät näitä kirjastoja laitteesi kanssa.

Nämä kirjastot toimitetaan lähdekoodina, joka voidaan tuoda automaattisesti PlatformIO:hon ja kääntää laitteellesi. Näin Arduino-kirjastot toimivat kaikilla laitteilla, jotka tukevat Arduino-kehystä, edellyttäen, että laitteessa on kyseisen kirjaston vaatima laitteisto. Jotkin kirjastot, kuten Seeedin WiFi-kirjastot, ovat laitteistokohtaisia.

Kirjastot voidaan asentaa joko globaalisti tai tiettyyn projektiin. Tässä tehtävässä kirjastot asennetaan projektiin.

Voit oppia lisää kirjastojen hallinnasta ja niiden löytämisestä ja asentamisesta PlatformIO:n kirjasto-dokumentaatiosta.

Tehtävä - WiFi- ja MQTT-kirjastojen asentaminen

Asenna Arduino-kirjastot.

  1. Avaa yövaloprojekti VS Codessa.

  2. Lisää seuraava platformio.ini-tiedoston loppuun:

    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ämä tuo Seeedin WiFi-kirjastot. @ <numero>-syntaksi viittaa tiettyyn kirjaston versioon.

    💁 Voit poistaa @ <numero>-osan käyttääksesi aina kirjastojen uusinta versiota, mutta ei ole takeita, että uudemmat versiot toimivat alla olevan koodin kanssa. Tämä koodi on testattu näiden kirjastoversioiden kanssa.

    Tämä riittää kirjastojen lisäämiseen. Seuraavan kerran, kun PlatformIO rakentaa projektin, se lataa näiden kirjastojen lähdekoodin ja kääntää sen osaksi projektiasi.

  3. Lisää seuraava lib_deps-osioon:

    knolleary/PubSubClient @ 2.8
    

    Tämä tuo PubSubClient-kirjaston, joka on Arduino MQTT -asiakas.

Yhdistä WiFi-verkkoon

Nyt Wio Terminal voidaan yhdistää WiFi-verkkoon.

Tehtävä - yhdistä WiFi-verkkoon

Yhdistä Wio Terminal WiFi-verkkoon.

  1. Luo uusi tiedosto src-kansioon nimeltä config.h. Voit tehdä tämän valitsemalla src-kansion tai sen sisällä olevan main.cpp-tiedoston ja napsauttamalla Uusi tiedosto -painiketta resurssienhallinnassa. Tämä painike näkyy vain, kun hiiren osoitin on resurssienhallinnan päällä.

    Uuden tiedoston painike

  2. Lisää tähän tiedostoon seuraava koodi määrittääksesi WiFi-tunnistetietojen vakioarvot:

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

    Korvaa <SSID> WiFi-verkkosi SSID:llä. Korvaa <PASSWORD> WiFi-verkkosi salasanalla.

  3. Avaa main.cpp-tiedosto.

  4. Lisää seuraavat #include-direktiivit tiedoston alkuun:

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

    Tämä tuo mukaan aiemmin lisäämiesi kirjastojen otsikkotiedostot sekä config-otsikkotiedoston. Nämä otsikkotiedostot ovat tarpeen, jotta PlatformIO tuo kirjastojen koodin mukaan. Ilman näiden otsikkotiedostojen eksplisiittistä sisällyttämistä osa koodista ei käänny, ja saat kääntäjävirheitä.

  5. Lisää seuraava koodi setup-funktion yläpuolelle:

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

    Tämä koodi yrittää yhdistää laitetta WiFi-verkkoon, kunnes yhteys on muodostettu, käyttäen config-otsikkotiedostosta saatuja SSID- ja salasana-arvoja.

  6. Lisää kutsu tähän funktioon setup-funktion loppuun, kun pinnit on konfiguroitu.

    connectWiFi();
    
  7. Lataa tämä koodi laitteellesi tarkistaaksesi, että WiFi-yhteys toimii. Näet tämän sarjamonitorissa.

    > 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!
    

Yhdistä MQTT:hen

Kun Wio Terminal on yhdistetty WiFi-verkkoon, se voi yhdistyä MQTT-välityspalvelimeen.

Tehtävä - yhdistä MQTT:hen

Yhdistä MQTT-välityspalvelimeen.

  1. Lisää seuraava koodi config.h-tiedoston loppuun määrittääksesi MQTT-välityspalvelimen yhteystiedot:

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

    Korvaa <ID> ainutlaatuisella tunnisteella, jota käytetään tämän laitteen asiakasnimenä ja myöhemmin aiheissa, joihin tämä laite julkaisee ja tilaa. test.mosquitto.org-välityspalvelin on julkinen ja monien ihmisten, mukaan lukien muiden tämän tehtävän parissa työskentelevien opiskelijoiden, käytössä. Ainutlaatuisen MQTT-asiakasnimen ja aiheiden avulla varmistat, ettei koodisi mene sekaisin muiden kanssa. Tarvitset myös tämän tunnisteen, kun luot palvelinkoodia myöhemmin tässä tehtävässä.

    💁 Voit käyttää verkkosivustoa, kuten GUIDGen, luodaksesi ainutlaatuisen tunnisteen.

    BROKER on MQTT-välityspalvelimen URL-osoite.

    CLIENT_NAME on tämän MQTT-asiakkaan ainutlaatuinen nimi välityspalvelimessa.

  2. Avaa main.cpp-tiedosto ja lisää seuraava koodi connectWiFi-funktion alapuolelle ja setup-funktion yläpuolelle:

    WiFiClient wioClient;
    PubSubClient client(wioClient);
    

    Tämä koodi luo WiFi-asiakkaan Wio Terminalin WiFi-kirjastoja käyttäen ja käyttää sitä MQTT-asiakkaan luomiseen.

  3. Lisää tämän koodin alapuolelle seuraava:

    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ämä funktio testaa yhteyden MQTT-välityspalvelimeen ja yhdistää uudelleen, jos yhteyttä ei ole. Se yrittää yhdistää uudelleen 5 sekunnin välein, jos yhteys epäonnistuu.

  4. Lisää seuraava koodi reconnectMQTTClient-funktion alapuolelle:

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

    Tämä koodi määrittää MQTT-välityspalvelimen asiakkaalle sekä asettaa takaisinsoiton, kun viesti vastaanotetaan. Se yrittää myös yhdistää välityspalvelimeen.

  5. Kutsu createMQTTClient-funktiota setup-funktiossa sen jälkeen, kun WiFi-yhteys on muodostettu.

  6. Korvaa koko loop-funktio seuraavalla:

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

    Tämä koodi aloittaa tarkistamalla ja tarvittaessa yhdistämällä uudelleen MQTT-välityspalvelimeen. Nämä yhteydet voivat katketa helposti, joten on hyvä tarkistaa ja yhdistää säännöllisesti. Sen jälkeen se kutsuu MQTT-asiakkaan loop-metodia käsitelläkseen mahdolliset saapuvat viestit tilatuista aiheista. Tämä sovellus on yksisäikeinen, joten viestejä ei voida vastaanottaa taustasäikeessä, ja pääsäikeellä täytyy varata aikaa odottavien viestien käsittelyyn.

    Lopuksi 2 sekunnin viive varmistaa, että valotasotietoja ei lähetetä liian usein, mikä vähentää laitteen virrankulutusta.

  7. Lataa koodi Wio Terminalillesi ja käytä sarjamonitoria nähdäksesi laitteen yhdistyvän WiFi-verkkoon ja MQTT:hen.

    > 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
    

💁 Löydät tämän koodin code-mqtt/wio-terminal-kansiosta.

😀 Olet onnistuneesti yhdistänyt laitteesi MQTT-välityspalvelimeen.


Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.