Anasayfa » Node-Red Akış Tabanlı Programlama & Azure IoT Hub Veri Gönderme

Makaleyi Paylaş

IoT / Microsoft Azure / NodeJS / Yazılım

Node-Red Akış Tabanlı Programlama & Azure IoT Hub Veri Gönderme

Akış tabanlı programlama yani blokları lego mantığı ile bir araya getirerek çalışabilen, kurallardan oluşan programlar. Kulağa enteresan geliyor, kod yazmadan program yapabilmemize imkan tanıyan bu sistem IBM tarafından Node.js üzerine açık kaynak olarak inşa edildi.

IoT cihazları, API’leri ve online servisleri bloklar şeklinde bir araya getirerek ve tek bir tıklamayla oluşturduğumuz programları deploy edebildiğimiz bir sistem.

Node-Red ile bir çok programı tek satır kod yazmadan yapabildiğimiz gibi bazı durumlarda JavaScript fonksiyonlar yazarak akışlarımıza eklememiz de mümkün.

Node.js Kurulumu;

Node-Red kurulumu için Node.js ve npm kurulu olmalıdır ben bu yazımda Windows üzerinden kurulum gerçekleştireceğim, Linux tarafından da aynı mantıkla Node-Red npm ile kurulabilir.

Sponsor

Not: node.js ve npm kurulu olanlar direk bir sonraki adıma geçebilirler.

Öncelikle https://nodejs.org/en/ adresinden son sürüm Node.js LTS indirerek kurulumu gerçekleştirelim. Kurulum aşamasında npm kurulumunun seçili olması gerektiğini unutmayalım.

Kurulum tamamlandıktan sonra doğruluğunu kontrol etmek için cmd ekranında şu komutları çalıştırıyoruz;

node --version && npm –version

Buna benzer bir çıktı almanız gerekiyor;

Node-Red Kurulumu;

Kurulum tamamlandıktan sona aşağıdaki komutla Node-Red’i global bir modül olarak kuruyoruz.

npm install -g --unsafe-perm node-red

Kurulum bittikten sonra artık Node-red çalıştırılmaya hazır, farklı kurulum alternatifleri arayanlar şu linkten ulaşabilirler; https://nodered.org/docs/platforms/windows

node-red

Komutu ile Node-Red’i başlatıyoruz, herşey yolunda gittiyse şuna benzer bir ekran ile karşılaşacağız

Burada belirtilen adrese tarayıcınızdan girerek kullanmaya başlayabiliriz

Node-Red akış tabanlı programlama sunar, solda kullanılabilir bloklar mevcuttur ayrıca online kütüphanden binlerce yeni eklentiler kurulabilir öncelikle nasıl yeni eklenti kurabiliriz buna bakalım ve Azure IoT Hub’a veri göndereceğimiz için gerekli olan eklentimizi de indirmiş oluruz.

Öncelikle sağ üst menüden “Manage palette” tıklıyoruz.

Açılan ekranda Install tabında “node-red-contrib-azure-iot-hub” yazarak arıyor ve çıkan paketi kuruyoruz.

Burada unutulmaması gereken kurulumların biraz uzun sürebildiği hata almadığınız sürece tamamlanana kadar bekliyoruz, tamamlandıktan sonra bloklarımızın içine cloud isminde bir grup bloğun daha eklendiğini göreceğiz.

Şimdi akışımızı oluşturmaya başlayalım, akışımızda kullanacağımız bloklar aşağıdaki gibidir, bunlarda “Register Payload” ve “Send Payload” bir Inject bloğudur, yani başındaki butona basıldığında tanımladığımız veriyi sonraki bloğa iletir, bu veri sabit bir veri olabileceği gibi bir zaman damgası da olabilir.

“Log” bloğu ise “debug” bloğudur mesajın çıktısını ekrana yansıtmak için kullanılır.

Öncelikle “Register Payload” çift tıklıyor ve açılan ekranı aşağıdaki gibi tanımlıyoruz, burada DeviceId olarak “DemoDevice123” tanımladık.

“Azure IoT Hub Registery” bloğununda detaylarına girerek ilgili alana Azure IoT Hub connection stringini yazmamız gerekiyor.

Azure IoT Hub Connection scriptini Azure Portal’dan edinebiliriz, bunu nasıl öğreneceğimizi burada anlatarak yazının amacını değiştirmek istemiyorum, bu konuyla ilgili birçok yazıya Google aramasıyla erişebilir veya şu yazımda Node.Js konusunda anlattığım şekliyle ulaşabilirsiniz.

Connetion Stringi yazdıktan sonra kaydederek ilk denememizi yapmak için programımızı Deploy ediyoruz.

Deploy ettikten sonra “Register Payload” başındaki butona tıklayarak cihazımızın kaydını Azure IoT Hub’a yapıyoruz. Tıkladıktan sonra debug ekranında cihaz kayıt stringimiz yazacaktır.

Ayrıca Azure Portal’dan Iot Hub’ımız içine girerek IoT Devices menüsünde cihazımızın kaydının yapıldığını görebiliriz.

Veri Gönderme;

Şimdi Azure IoT Hub‘a veri göndereceğiz, bunun için öncelikle “Send Payload” Bloğumuzun detayına girerek burayı aşağıdaki gibi tanımlıyoruz,

{"deviceId":"DemoDevice123","key":"YourKey","protocol":"http","data":"{tem: 25, wind: 20}"}

“Azure IoT Hub” blok detaylarına girerek Hostname alanına Azure IoT Hub hostname adresimizi giriyoruz ve kaydediyoruz.

Artık akışı “Deploy” ederek “Send Payload” inject butonuna bastığımız anda “temp” ve “wind” datalarını Azure IoT Hub’a göndermiş oluyoruz.

Azure IoT Hub izleme seçeneklerinden birisi ile gelen mesajları izleyebilir, panolar oluşturabilirsiniz.

Bu blokta kullandığımız akışın kodlarını aşağıda bulabilirsiniz, bunu kendi akışınıza import etmek için sağ üst menüden Import ve Clipboard seçeneğini tıklayın aşağıdaki kodları yapıştırın.

[{"id":"2f3f89dc.ceb616","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"dff02504.7fa1a8","type":"azureiothubregistry","z":"2f3f89dc.ceb616","name":"Azure IoT Hub Registry","x":378,"y":83,"wires":[["76d29ab1.9bcd04"]]},{"id":"f1abe770.629978","type":"inject","z":"2f3f89dc.ceb616","name":"Register Payload","topic":"","payload":"{\"deviceId\":\"DemoDevice123\"}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":"","x":133,"y":82,"wires":[["dff02504.7fa1a8"]]},{"id":"76d29ab1.9bcd04","type":"debug","z":"2f3f89dc.ceb616","name":"Log","active":true,"console":"false","complete":"true","x":583,"y":84,"wires":[]},{"id":"a18d984e.47beb8","type":"debug","z":"2f3f89dc.ceb616","name":"Log","active":true,"console":"false","complete":"true","x":545,"y":161,"wires":[]},{"id":"e9ef917d.ebb87","type":"azureiothub","z":"2f3f89dc.ceb616","name":"Azure IoT Hub","protocol":"http","x":357,"y":171,"wires":[["a18d984e.47beb8"]]},{"id":"e9d0cffb.c4256","type":"inject","z":"2f3f89dc.ceb616","name":"Send Payload","topic":"","payload":"{\"deviceId\":\"DemoDevice123\",\"key\":\"YourKey",\"protocol\":\"http\",\"data\":\"{tem: 25, wind: 20}\"}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":"","x":128,"y":158,"wires":[["e9ef917d.ebb87"]]}]

Makaleyi Paylaş

IT alanında 16 sene önce donanım ile başlayan tecrübem, network ve sonrasında iş analizi, yazılım geliştirme ve proje yöneticiliği alanlarında devam etmiştir. Endüstriyel yazılımlar, sahadan veri toplama ve analizleri, otomatik etiketleme ve barkod sistemleri, otomatik tartım ve robotik konularında tecrübe sahibiyim. Sanayi 4.0 kapsamında imalat sanayinin dijital dönüşümünde çok fazla projenin hayata geçmesini sağladım. Open Source projelerle uzun süre ilgilendim, analiz ve implementasyonu konularında tecrübe edindim. Bunlar dışında hobi amacıyla başlasam da sonradan ürüne dönüşen, geliştirme kartları ile farklı çalışmalarım olmuştur. Raspberry Pi üzerinde yaptığım donanımsal ve yazılımsal işler ile çok farklı ürünler ortaya çıkartarak tecrübe edindim.

Cevap bırakın