Node-RED Nedir?

Node-RED, donanım cihazlarını, API’ları ve çevrim içi hizmetleri yeni ve ilginç yollarla birbirine bağlamak için geliştirilmiş görsel bir programlama aracıdır. Ağa bağlı donanım nesnelerini, API’ları ve çeşitli çevrim içi hizmetleri IoT (Internet of Things) kapsamında bir araya getirilmesi için akış tabanlı görsel programlama ortamı sağlar. Elektronik kontrol otomasyonu senaryoları ve IOT uygulamalarının çok az ya da hiç kod yazmadan görsel bir arabirimle oluşturulabileceği Node-RED ortamı ile uygulamalar, web tabanlı olarak herhangi bir tarayıcı üzerinden kontrol edilebilir, canlı olarak izlenebilir.

Node-RED akış tabanlı geliştirme ortamı

Tıpkı lego parçaları gibi akış bloklarını (node) birbirine bağlayarak çoğu zaman kod yazmaya bile gerek kalmadan uygulamalar yapabileceğiniz Node-RED,  desteklediği IoT cihazları ve servislerinin sayısı inanılmaz derecede fazladır. Özellikle akıllı kontrol otomasyonlarında verileri MQTT ile veya istediğiniz başka bir protokol ile gönderebilir, alabilir ve üzerinde işlem yapabilir. Node-RED’i ve çalışma mantığını somutlaştırabilmek için aşağıdaki iki görseli inceleyelim.

Node-RED ile oluşturulan web tabanlı bir uygulama

Yukarıdaki görsellerde yer alan ilk resim Node-RED ortamının akış tabanlı geliştirme ortamında hazırlanan bir akışı (programı) göstermektedir. Akışta hemen hemen hiç programlama kodu kullanılmamıştır. Sonraki resim ise gerçekleştirilen uygulamanın çıktısı olan bir web arayüzüdür. Bu uygulamada Rasbperry Pi’a bağlı bir sıcaklık-nem sensörü okunarak anlık değerleri ve değişim grafiği görüntülenmektedir. Node-RED sahip olduğu kütüphane desteği ile binlerce çeşit elektronik cihazı ve donanımı, Raspberry Pi üzerinde kullanabilmeyi sağlar. Benzer şekilde çevrim içi servisler ile iletişim kurabilir. NodeRED, Raspberry Pi haricinde Siemens SIMATIC IOT, Samsung Artik, Fujitsu INTELLIEDGE A700 Appliance, BeagleBone ve Intel Nuc gibi ürünler üzerinde çalışabilir. Node-RED, Node.js adlı sunucu taraflı bir JavaScript dili kullanılarak yazılmış açık kaynak kodlu bir projedir.

Node-RED, JavaScript işlevleri ile desteklenen web tabanlı bir akış düzenleyici ile algoritmik süreçlerin geliştirilebilmesini sağlar. Oluşturulan uygulamalar yeniden kullanılmak üzere JSON[1] biçiminde kaydedilebilir ve başkaları ile paylaşılabilir. Bu özelliğiyle Node-RED sosyal bir geliştirme ortamıdır.

Node.js sunucu ortamında dinamik çıktılar üretmek için kullanılan sunucu taraflı bir programlama dilidir ve doğal olarak çalışabilmesi için bir web tarayıcısına ihtiyacı yoktur. Node.js’nin en büyük özelliği non-blocking olarak çalışabilmesidir. Bunun anlamı Node.js ile aynı uygulama içinde çok sayıda kod parçası aynı anda paralel olarak çalışabilmesidir. Bir Node.js kodu çalışabilmek için diğerinin çalışmasını tamamlamasını beklemez. Bu özelliği ile Node.js asenkron bir programlama metodolojisi sunar. Aşağıda Node-RED’in mimarisini izah eden bir diyagram yer almaktadır.

Node-RED’in Mimarisi

Node-RED’in akış tasarımlarının yapıldığı web arabirimi JavaScript ile oluşturulmuştur ve tarayıcı üzerinde çalıştığından sunucuya yük getirmez. Web arabirimi günümüzün popüler JavaScript kütüphanelerinden JQuery ve onun görsel web bileşenlerinin yer aldığı jQueryUI ile oluşturulmuştur. Node’ların çalışma alanındaki yerleşimleri ise gridstack adlı kütüphane tarafından gerçekleştirilir. Arabirimi oluşturan tüm bileşenlerin parametrik özellikleri JSON verisi olarak tanımlanmıştır ve JSONata ile admin api’yi kullanarak sunucu ile iletişim kurar.

Sunucu tarafı ise web tarayıcıya bağımlı olmadan tek başına çalışabilir yapıdadır. Sunucu tarafı bir JavaScript dili olan node.js üzerine kuruludur ve binlerce node.js modülünden oluşur. Node-RED Engine adı verilen Node-RED çekirdeği sonsuz bir döngü içinde node’lardan gelen olayları dinler ve olayın gerektirdiği işlevler için gereken işlemleri bir thread (kanal) içinde çalıştırır ve sonuçlarını node’lara tekrar geri döndürür.

Geniş bir geliştirici topluluğuna sahip olan Node-RED geliştirilirken belli başlı şu özelliklere dikkat edilmektedir:

  1. Kısa öğrenme ve adapte süresi.
  2. Kolay kullanım.
  3. Açık standartlar.
  4. Esneklik.
  5. Paylaşılabilme.
  6. Düşük güçlü cihazlarda çalışabilme.
  7. Hızlı prototipleme.
  8. Mevcut teknoloji ve araçlar ile kolayca entegre olabilme.

Buradan sonra ele alınacak konular Node-RED’e hiç bulaşmamış kişilere biraz teorik gelebilir. Fakat konu sonundaki uygulamaları gerçekleştirdikçe buradaki başlıklara zaman zaman geri dönüp üzerinden geçebileceksiniz. O nedenle metodolojisi ve çalışması oldukça yalın ve öğrenmesi kolay olan Node-RED’i sabırla incelemeye ve kullanmaya devam edin. Hatta hemen şu an UYGULAMALAR’ a göz atarak hızlı bir fikir sahibi olun.

Node-RED, donanım cihazlarını, API’ları ve çevrim içi hizmetleri birbirine bağlamak için bir programlama aracıdır ve genellikle Nesnelerin İnterneti (IoT) için uygulamalar geliştirmek amacıyla kullanılmaktadır. Ancak çeşitli çevrim içi hizmetler ile donanım nesnelerinin algoritmalarını da çok hızlı bir şekilde birleştirmek için diğer uygulamalar için de de kullanılabilir.

Node-RED birçok IoT cihazına, yerel cihaza ve çevrim içi servise bağlanabilme özelliğine sahiptir. Bunlar şöyle listelenebilir.

  • Yerel Servisler
    a. Ağ soketleri.
    b. Dosyalar.
    c. Seri port’lar.
    d. Yerel sistem komut ve araçları.
    e. GPIO pin’leri.
    f. MongoDB.
    g. Redis.
  • Çevrimiçi Servisler
    a. Twitter, Facebook, Telegram vb.
    b. IRC.
    c. XMMP Chat.
    d. RSS/Atom Feed.
    e. E-posta.
  • İşlem Fonksiyonları
    a. JavaScript ile yazılmış kullanıcı fonksiyonları
    b. XML/JSON işleme
    c. HTML, yaml ve CSV işleme
    d. IoT verilerini depolama ve işleme


[1] Javascript Object Notation – https://www.json.org

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.