Workflow Automation

Node-RED ve MQTT ile IoT Veri Alım Hattı Oluşturma: Pratik Bir Kılavuz

Hızla değişen Nesnelerin İnterneti (IoT) ortamında, asıl zorluk artık sadece cihazları bağlamak değil; ürettikleri veri selini yönetmektir. Geliştiriciler ve sistem mimarları için güvenilir, ölçeklenebilir ve sürdürülebilir bir veri alım hattı oluşturmak kritik öneme sahiptir. Node-RED, hafif IoT uygulamaları için fiili standart mesajlaşma protokolü olan MQTT ile sorunsuz bir şekilde entegre olan güçlü bir akış tabanlı programlama aracı olarak öne çıkmıştır. Bu kılavuz, üretim ortamına hazır bir veri alım hattının mimarisini ve uygulamasını adım adım anlatmaktadır.

Neden Node-RED ve MQTT?

MQTT (Message Queuing Telemetry Transport), özellikle kısıtlı kaynaklı cihazlar ve düşük bant genişliğine sahip ağlar için tasarlanmıştır. Yayınlama/abonelik modeli, üreticileri tüketicilerden ayırarak yüksek ölçeklenebilirlik sağlar. Node-RED, kalıp kodlarla uğraşmadan karmaşık veri akışlarını orkestrasyon için görsel bir ortam sunarak bunu tamamlar. Bu kombinasyon şunları sunar:

  • Düşük Gecikme: Doğrudan broker bağlantısı gereksiz yükü en aza indirir.
  • Görsel Hata Ayıklama: Veri darboğazlarının kolayca tespit edilmesi.
  • Esneklik: Veritabanları, API'ler ve bulut hizmetleriyle kolay entegrasyon.

Mimari Genel Bakış

Standart bir alım hattı genellikle şu akışı izler:

  1. Cihaz Katmanı: Sensörler, ham veriyi belirli MQTT konularına yayınlar (ör. sensors/temp/living_room).
  2. Broker Katmanı: Bir MQTT broker'ı (Mosquitto veya EMQX gibi) mesajları yönlendirir.
  3. Alım Katmanı (Node-RED): Konulara abone olur, veriyi doğrular, dönüştürür ve saklar.

Alım Akışının Kurulumu

Node-RED'de, bir mqtt in düğümü ekleyerek başlarız. Tüm sensör verilerini yakalamak için sensors/+/+ joker konusuna abone olacak şekilde yapılandırın. Bu tek abonelik noktası, kapı görevi görür.

Veri geldiğinde genellikle JSON formatındadır. Saklamadan önce bu veriyi ayrıştırmamız ve doğrulamamız gerekir. Sağlam bir hat, hatalı veriyi zarifçe ele almalıdır.

// Cihazdan Gelen Örnek JSON Yükü
{
  "sensor_id": "temp_01",
  "value": 21.5,
  "unit": "C",
  "timestamp": 1672531200
}

Veri Dönüşümü ve Doğrulama

Node-RED'de bir function düğümü kullanarak sunucu tarafı mantığını uygulayabiliriz. İşte sıcaklık verisini doğrulayan ve onu meta verilerle zenginleştiren pratik bir örnek:

// Node-RED Function Node Kodu
function validData(msg) {
    try {
        // Yükün JSON olup olmadığını kontrol et
        var data = msg.payload;
        
        // Zorunlu alanların varlığını doğrula
        if (!data.sensor_id || data.value === undefined) {
            throw new Error("Missing required fields");
        }
        
        // Aralık kontrolü (örnek: geçerli sıcaklık aralığı -50 ile 100 C)
        if (data.value < -50 || data.value > 100) {
            node.warn("Out of range value: " + data.value);
            return null;
        }
        
// Veriyi alım zaman damgasıyla zenginleştir
        data.ingested_at = new Date().toISOString();
        
        msg.payload = data;
        msg.topic = 'cleaned/temperature';
        return msg;
    } catch (err) {
        node.error("Validation Error: " + err.message, msg);
        return null;
    }
}

Kalıcılık ve İzleme

Doğrulama sonrası, veri akışı çeşitli hedeflere yönlendirilebilir:

  • Zaman Serisi Veritabanları: Uzun vadeli depolama için InfluxDB veya TimescaleDB.
  • Mesaj Kuyrukları: Aşağı akış işleme için RabbitMQ veya Kafka.
  • Panel Ekranları: Grafana veya Home Assistant kullanılarak gerçek zamanlı görselleştirme.

Hat sağlığını sağlamak için, mesaj sayılarını ve hata oranlarını izleyen bir debug düğümü veya günlük düğümü ekleyin. Cihazların her X dakikada bir durum mesajı yayınladığı bir kalp atışı mekanizması uygulamanızı düşünün. Alım hattı bu kalp atışlarını almazsa, bir uyarı tetiklenebilir.

Ölçeklenebilirlik İçin En İyi Uygulamalar

  1. Konu Hiyerarşisi: İnce taneli filtrelemeye izin vermek için tutarlı bir adlandırma sözleşmesi kullanın (ör. /tenant/device/sensor).
  2. QoS Seviyeleri: Kritik veriler için QoS 1 (en az bir kez) kullanın. Benzersiz mesaj kimlikleri kullanarak depolama katmanınızda kopyaları ele alın.
  3. Yük Dengeleme: Yüksek veri akışı senaryolarında, yük dengeleyicisinin arkasında birden fazla Node-RED örneği dağıtın ve her biri konuların bir alt kümesine abone olsun.

Sonuç

Node-RED ve MQTT ile bir IoT veri alım hattı oluşturmak, esnek, verimli ve görsel olarak yönetilebilir bir çözüm sunar. Sağlam doğrulama, uygun konu tasarımı ve net veri akışlarına odaklanarak, tek bir ev sensöründen binlerce endüstriyel cihaza kadar ölçeklenebilen sistemler oluşturabilirsiniz. Temel bir yayınlama/abonelik akışıyla küçük başlayın ve veri ihtiyaçlarınız evrildikçe kademeli olarak karmaşıklık ekleyin. Node-RED'in gücü, karmaşık entegrasyon zorluklarını basit, sürükle-bırak iş akışlarına dönüştürme yeteneğinde yatar.

Share: