Cihazlardan buluta veri göndermek gün geçtikçe kolaylaşıyor. ESP32 ile düşük maliyetli sensör taşıyan node'lar oluşturabiliyoruz. Qubitro IoT platformuyla her türlü cihazdan veri alabiliyor; kural tanımlama, görselleştirme gibi işlemleri hızlı bir şekilde gerçekleştirebiliyoruz. Bu yazımda, ESP32 ile üreteceğimiz rastgele sensör verisini IoT platformuna gönderip grafiğini oluşturacağız.

Ön Gereksinimler

IoT Platform Ayarları

Qubitro hesabınızı oluşturduktan sonra, portal.qubitro.com'dan portala girin. Qubitro IoT platformunu ilk kez kullanıyorsanız, Quick Start penceresini göreceksiniz.

Projenize bir ad, örneğin "My Smart Home" ve tanım "Yet another smart home project" girin. Create Project ile projenizi oluşturun.

Bir proje altında birden çok cihazınız olabilir. Örneğin, akıllı ev projenizde evinizdeki sensör ve aktüatörler, başka bir projenizde onunla ilgili donanımlar yer alabilir.

Projenizi oluşturduktan sonra ilk cihazınızın model bilgilerini girebilirsiniz. Hangi cihazı eklediğiniz sistemin işleyişini değiştirmez, fakat başlangıçta size yardımcı olan onboarding, yani örnek kodların sağlanması için faydalıdır.

Qubitro; Arduino, Raspberry Pi, Espressif, Turta gibi markaların donanımları için hazır örnekler içerir. Cihazınız burada listelenmemişse, en yakın (aynı işletim sistemini / programlanma yöntemini kullanan) cihazı seçebilirsiniz.

Ardından, device name, description ve location bilgilerini girerek add device ile ilk cihazınızı tamamlayın.

Son aşamada bağlantı bilgileriniz, ve örnek uygulama kodlarını göreceksiniz. Finish ile devam ettiğinizde, proje ekranına yönlendirilirsiniz.

Proje ekranında diğer cihazları ekleyebilir, projenizi yönetebilirsiniz. Şimdi eklediğiniz cihazı seçin.

Cihazınızın sayfasında analiz, gelen veriler, kurallar, erişim kontrolü ve ayarları görebilirsiniz. (Henüz veri göndermediğiniz için şu aşamada grafik oluşturamazsınız. Bu, Qubitro'nun en pratik özelliklerinden birinden dolayıdır.) Örneğin cihazınızdan platforma sıcaklık ve nem bilgisi gönderecekseniz, Qubitro bu verileri otomatik olarak algılar ve veri türünü otomatik olarak seçer. Hangi veriyi göndereceğinizi hem cihazdan hem portaldan ayarlamak zorunda kalmazsınız. İleride değişiklik yapmak isterseniz, cihazınızdan güncellediğiniz şekilde veri göndermeniz yeterli olacaktır.

Son olarak, cihaz sayfanızdayken settings sekmesine gelerek device ID ve token bilgilerinizi görebilirsiniz. Bu bilgiler, cihazınızı oluştururken size gösterilenle aynıdır.

Qubitro platformunu cihazınıza göre hazırladık. Şimdi, ESP32 cihazınızı hazırlayacağız.

Arduino IDE Ayarları

Arduino IDE'nizi istediğiniz işletim sistemiyle kullanabilirsiniz. Windows kullanıyorsanız, Store uygulaması yerine klasik masaüstü uygulamasını kullanmanız ileride işinizi kolaylaştıracaktır.

Öncelikle, Arduino IDE'ye ESP32 kütüphanelerini kuralım. Arduino IDE'den File > Properties altında "Additional Boards Manager URLs" satırını bulun. Karşısındaki textbox'ın sağında pencere butonu göreceksiniz. Ona tıklayarak giriş penceresini açın.

Bu pencerede önceden başka satırlar olabilir. Öyleyse, bir alt satırına inerek, değilse tek başına aşağıdaki linki yapıştırın.

https://dl.espressif.com/dl/package_esp32_dev_index.json

Bu link, ESP32'nin üreticisi Espressif'in donanım çeşitlerini Arduino IDE ile kullanabilmenizi sağlar. Ayarlarınızı kaydederek Preferences penceresini kapatabilirsiniz.

Şimdi, Tools > Board ... > Boards Manager seçimiyle Boards Manager penceresini açın.

"Filter your search..." kutusuna "esp32" yazın ve son sürümü kurun.

Tools > Board ... > ESP32 Arduino menüsü altından elinizdeki cihazın modelini seçin. Cihazınızı bilgisayarınıza bağlayın, sürücü kurulumu gerekiyorsa yapın. Tools > Port menüsünde cihazınızın adını ya da COM port numarasını göreceksiniz. Cihazınızın portunu seçin.

Son olarak, Qubitro kütüphanelerini yükleyeceğiz. Sketch > Include Library > Manage Libraries ile Library Manager'ı açın.

Library Manager'da "Filter your search..." kutusuna "qubitro" yazın. QubitroMqttClient'ı kurun.

Bu yönergelerle Arduino IDE'nizi de yapılandırmayı tamamladınız. Artık, platforma veri göndermeye neredeyse hazırsınız.

ESP32 Uygulaması

Arduino IDE'nizde yeni bir sketch oluşturun. Aşağıdaki kodu yapıştırın.

#include <QubitroMqttClient.h>
#include <WiFi.h>

// WiFi Client
WiFiClient wifiClient;

// Qubitro Client
QubitroMqttClient mqttClient(wifiClient);

// Device Parameters
char deviceID[] = "PASTE_DEVICE_ID_HERE";
char deviceToken[] = "PASTE_DEVICE_TOKEN_HERE";

// WiFi Parameters
const char* ssid = "PASTE_SSID_HERE";
const char* password = "PASTE_WIFI_PASSWORD_HERE";

void setup() {
  // Initialize the serial port
  serial_init();
  
  // Initialize wireless connectivity
  wifi_init();

  // Initialize Qubitro
  qubitro_init();
}

void loop() {
  // Generate random values
  int sensor_value_1 = random(0, 100);
  int sensor_value_2 = random(0, 100);

  // Print the random values
  Serial.print("Sensor value 1: ");
  Serial.println(sensor_value_1);
  Serial.print("Sensor value 2: ");
  Serial.println(sensor_value_2);

  // Send telemetry
  String payload = "{\"Sensor 1\":" + String(sensor_value_1)
    + ",\"Sensor 2\":" + String(sensor_value_2) + "}";
  mqttClient.poll();
  mqttClient.beginMessage(deviceID);
  mqttClient.print(payload);
  mqttClient.endMessage();

  // Delay
  delay(30 * 1000);
}

// Initialization code

void serial_init() {
  // Initiate serial port connection
  Serial.begin(115200);

  // Delay for stabilization
  delay(200);
}

void wifi_init() {
  // Set WiFi mode
  WiFi.mode(WIFI_STA);

  // Disconnect WiFi
  WiFi.disconnect();
  delay(100);

  // Initiate WiFi connection
  WiFi.begin(ssid, password);

  // Print connectivity status to the terminal
  Serial.print("Connecting to WiFi...");
  while(true)
  {
    delay(1000);
    Serial.print(".");
    if (WiFi.status() == WL_CONNECTED)
    {
      Serial.println("");
      Serial.println("WiFi Connected.");
      Serial.print("Local IP: ");
      Serial.println(WiFi.localIP());
      Serial.print("RSSI: ");
      Serial.println(WiFi.RSSI());
      break;
    }
  }
}

void qubitro_init() {
  char host[] = "broker.qubitro.com";
  int port = 1883;
  mqttClient.setId(deviceID);
  mqttClient.setDeviceIdToken(deviceID, deviceToken);
  Serial.println("Connecting to Qubitro...");
  if (!mqttClient.connect(host, port))
  {
    Serial.print("Connection failed. Error code: ");
    Serial.println(mqttClient.connectError());
  }
  Serial.println("Connected to Qubitro.");
  mqttClient.subscribe(deviceID);
}

Üst satırlarda bulunan Device ID, Device Token, SSID ve Password değişkenlerine bilgilerinizi girin. Uygulamanızı ESP32 cihazınıza gönderin.

Bu uygulama, 30 saniyede bir rastgele 2 sensör verisini portala gönderir. Çalışırken Arduino IDE Serial Monitor (CTRL + Shift + M)'de aşağıdaki satırları göreceksiniz.

Connecting to WiFi...
WiFi Connected.
Local IP: 192.168.1.100
RSSI: -50
Connecting to Qubitro...
Connected to Qubitro.
Sensor value 1: 20
Sensor value 2: 40

Serial Monitor'de okunamayan karakterler görüyorsanız, sağ altından hızını 115.200 olarak değiştirebilirsiniz.

Artık verileriniz devamlı olarak Qubitro'ya gönderiliyor.

Görselleştirme

Son aşamada, cihazınızdan portala ulaşan verileri görselleştireceğiz. Portala gidin ve cihazınızın Data sekmesini açın. Gelen verileri, otomatik tanımlanmış olarak göreceksiniz.

Şimdi, gelen verilerin grafiğini göreceğiz. Analytics sekmesine gidin. Create a chart butonuyla ilk grafiğinizi oluşturun.

Grafiğinizin adını, hangi verinin ya da verilerin grafikte görüneceğini ve grafik türünü seçin. Create ile grafiğinizi oluşturun. İstediğiniz kadar grafik çeşidi oluşturabilirsiniz.

Grafiğinizi eklediğinizde, cihazınızın altında verilerini göreceksiniz. Peki, birden fazla cihazınız varsa ve aynı anda tüm verilerinizi görmek istiyorsanız? Örneğin, evinizdeki birden çok sensörün değerini görmek istiyorsanız? Tabi ki Dashboard oluşturacaksınız.

Portal menüsünden sol üstteki Dashboard'ı seçin. "New Dashboard" ile dashboard'ınıza isim verin ve oluşturun. Şimdi, Add Widget butonuyla widget, yani grafik oluşturacağız.

İlk adımda widgetınıza isim verin. Hangi dashboardda olacağını, türünü, hangi projeden hangi cihazın verisini göstereceğini seçin.

İkinci adımda cihazınızdan gelen hangi veriyi kullanmak istediğinizi seçin.

Son aşamada, verinizin birimini ve grafiğin görüneceği rengi seçin. Create ile widgetınızı oluşturun.

Dashboardınızda widgetınız yerini alacak. İstediğiniz kadar widget ekleyebilir, boyutlandırabilir, taşıyabilirsiniz.

Bu kadar! Artık, istediğiniz kadar sensörü portalınıza ekleyip verilerinizi görselleştirebilirsiniz!