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

11 KiB

Wio Terminal ile Gece Lambanızı İnternet Üzerinden Kontrol Edin

IoT cihazı, ışık sensörü okumasıyla telemetri değerlerini göndermek ve LED'i kontrol etmek için komutlar almak üzere MQTT kullanarak test.mosquitto.org ile iletişim kuracak şekilde kodlanmalıdır.

Bu dersin bu bölümünde, Wio Terminal'inizi bir MQTT brokerine bağlayacaksınız.

WiFi ve MQTT Arduino Kütüphanelerini Kurun

MQTT brokeri ile iletişim kurmak için, Wio Terminal'deki WiFi çipini kullanmak ve MQTT ile iletişim kurmak için bazı Arduino kütüphanelerini yüklemeniz gerekiyor. Arduino cihazları için geliştirme yaparken, açık kaynak kodu içeren ve çok çeşitli yetenekleri uygulayan geniş bir kütüphane yelpazesi kullanabilirsiniz. Seeed, Wio Terminal'in WiFi üzerinden iletişim kurmasını sağlayan kütüphaneler yayınlar. Diğer geliştiriciler ise MQTT brokerleriyle iletişim kurmak için kütüphaneler yayınlamışlardır ve bu kütüphaneleri cihazınızla kullanacaksınız.

Bu kütüphaneler, PlatformIO'ya otomatik olarak aktarılabilen ve cihazınız için derlenebilen kaynak kod olarak sağlanır. Bu şekilde Arduino kütüphaneleri, Arduino çerçevesini destekleyen herhangi bir cihazda çalışır, tabii ki kütüphanenin gerektirdiği özel donanım cihazda mevcutsa. Bazı kütüphaneler, örneğin Seeed WiFi kütüphaneleri, belirli donanımlara özeldir.

Kütüphaneler global olarak yüklenebilir ve gerekirse derlenebilir veya belirli bir projeye dahil edilebilir. Bu ödevde, kütüphaneler projeye yüklenecektir.

Kütüphane yönetimi hakkında daha fazla bilgi edinmek ve kütüphaneleri nasıl bulup yükleyeceğinizi öğrenmek için PlatformIO kütüphane dokümantasyonu adresine göz atabilirsiniz.

Görev - WiFi ve MQTT Arduino kütüphanelerini yükleyin

Arduino kütüphanelerini yükleyin.

  1. VS Code'da gece lambası projesini açın.

  2. platformio.ini dosyasının sonuna aşağıdakileri ekleyin:

    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
    

    Bu, Seeed WiFi kütüphanelerini içe aktarır. @ <number> sözdizimi, kütüphanenin belirli bir sürüm numarasına atıfta bulunur.

    💁 @ <number> kısmını kaldırarak her zaman kütüphanelerin en son sürümünü kullanabilirsiniz, ancak daha sonraki sürümlerin aşağıdaki kodla çalışacağına dair bir garanti yoktur. Buradaki kod, kütüphanelerin bu sürümüyle test edilmiştir.

    Kütüphaneleri eklemek için yapmanız gereken tek şey budur. PlatformIO projeyi bir sonraki derlediğinde, bu kütüphanelerin kaynak kodunu indirir ve projenize dahil eder.

  3. lib_deps kısmına aşağıdakileri ekleyin:

    knolleary/PubSubClient @ 2.8
    

    Bu, PubSubClient adlı bir Arduino MQTT istemcisini içe aktarır.

WiFi'ye Bağlanın

Artık Wio Terminal WiFi'ye bağlanabilir.

Görev - WiFi'ye bağlanın

Wio Terminal'i WiFi'ye bağlayın.

  1. src klasöründe config.h adlı yeni bir dosya oluşturun. Bunu, src klasörünü veya içindeki main.cpp dosyasını seçerek ve gezgin üzerinde beliren Yeni dosya düğmesini seçerek yapabilirsiniz. Bu düğme yalnızca imleciniz gezgin üzerindeyken görünür.

    Yeni dosya düğmesi

  2. WiFi kimlik bilgilerinizi tanımlamak için bu dosyaya aşağıdaki kodu ekleyin:

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

    <SSID> kısmını WiFi'nizin SSID'si ile değiştirin. <PASSWORD> kısmını WiFi şifrenizle değiştirin.

  3. main.cpp dosyasınıın.

  4. Dosyanın en üstüne aşağıdaki #include yönergelerini ekleyin:

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

    Bu, daha önce eklediğiniz kütüphanelerin başlık dosyalarını ve yapılandırma başlık dosyasını içerir. Bu başlık dosyaları, PlatformIO'ya kütüphanelerden kod getirmesi gerektiğini söylemek için gereklidir. Bu başlık dosyalarınııkça dahil etmezseniz, bazı kodlar derlenmez ve derleyici hataları alırsınız.

  5. setup fonksiyonunun üstüne aşağıdaki kodu ekleyin:

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

    Bu kod, cihaz WiFi'ye bağlı değilken döngüye girer ve yapılandırma başlık dosyasındaki SSID ve şifreyi kullanarak bağlanmayı dener.

  6. Bu fonksiyonu setup fonksiyonunun altına, pinler yapılandırıldıktan sonra çağırın.

    connectWiFi();
    
  7. Bu kodu cihazınıza yükleyin ve WiFi bağlantısının çalıştığını kontrol edin. Seri monitörde bunu görmelisiniz.

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

MQTT'ye Bağlanın

Wio Terminal WiFi'ye bağlandıktan sonra MQTT brokerine bağlanabilir.

Görev - MQTT'ye bağlanın

MQTT brokerine bağlanın.

  1. MQTT brokeri için bağlantı ayrıntılarını tanımlamak üzere config.h dosyasının sonuna aşağıdaki kodu ekleyin:

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

    <ID> kısmını bu cihaz istemcisi için kullanılacak benzersiz bir kimlik ile değiştirin ve bu kimlik daha sonra bu cihazın yayınladığı ve abone olduğu konular için kullanılacaktır. test.mosquitto.org brokeri herkese açık ve birçok kişi tarafından, bu ödevi yapan diğer öğrenciler dahil, kullanılmaktadır. Benzersiz bir MQTT istemci adı ve konu adlarına sahip olmak, kodunuzun başkalarınınkiyle çakışmamasını sağlar. Bu kimliği, bu ödevin ilerleyen bölümlerinde sunucu kodunu oluştururken de kullanmanız gerekecek.

    💁 Benzersiz bir kimlik oluşturmak için GUIDGen gibi bir web sitesi kullanabilirsiniz.

    BROKER, MQTT brokerinin URL'sidir.

    CLIENT_NAME, bu MQTT istemcisi için brokerdeki benzersiz bir isimdir.

  2. main.cpp dosyasınıın ve connectWiFi fonksiyonunun altına, setup fonksiyonunun üstüne aşağıdaki kodu ekleyin:

    WiFiClient wioClient;
    PubSubClient client(wioClient);
    

    Bu kod, Wio Terminal WiFi kütüphanelerini kullanarak bir WiFi istemcisi oluşturur ve bunu kullanarak bir MQTT istemcisi oluşturur.

  3. Bu kodun altına aşağıdakileri ekleyin:

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

    Bu fonksiyon, MQTT brokerine bağlantıyı test eder ve bağlantı yoksa yeniden bağlanır. Bağlı olmadığı sürece döngüye girer ve yapılandırma başlık dosyasındaki benzersiz istemci adını kullanarak bağlanmayı dener.

    Bağlantı başarısız olursa, 5 saniye sonra yeniden dener.

  4. reconnectMQTTClient fonksiyonunun altına aşağıdaki kodu ekleyin:

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

    Bu kod, istemci için MQTT brokerini ayarlar ve bir mesaj alındığında geri çağırmayı yapılandırır. Daha sonra broker ile bağlantı kurmayı dener.

  5. setup fonksiyonunda WiFi bağlandıktan sonra createMQTTClient fonksiyonunu çağırın.

  6. Tüm loop fonksiyonunu aşağıdaki kodla değiştirin:

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

    Bu kod, MQTT brokerine yeniden bağlanarak başlar. Bu bağlantılar kolayca kesilebilir, bu yüzden düzenli olarak kontrol etmek ve gerekirse yeniden bağlanmak önemlidir. Daha sonra, abone olunan konudaki gelen mesajları işlemek için MQTT istemcisinin loop metodunu çağırır. Bu uygulama tek iş parçacıklı olduğundan, mesajlar arka planda bir iş parçacığında alınamaz, bu nedenle ağ bağlantısında bekleyen mesajları işlemek için ana iş parçacığında zaman ayrılması gerekir.

    Son olarak, 2 saniyelik bir gecikme, ışık seviyelerinin çok sık gönderilmesini önler ve cihazın güç tüketimini azaltır.

  7. Kodunuzu Wio Terminal'e yükleyin ve cihazın WiFi ve MQTT'ye bağlandığını görmek için Seri Monitör'ü kullanın.

    > 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
    

💁 Bu kodu code-mqtt/wio-terminal klasöründe bulabilirsiniz.

😀 Cihazınızı başarıyla bir MQTT brokerine bağladınız.


Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmez.