- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Giriş
Önceki bölümümüzde hazırladığımız ve HELLO WORLD örneğini
yaptığımız Node Red sisteminde, basit bir uygulama yapacağız. Bu uygulamamızda,
Raspberry Pi cihazımızın işlemci sıcaklığını okuyup, bunu görselleştireceğiz.
Buradaki yazının videosunu YouTube kanalımdan izleyebilirsiniz.
Hazırlık
Node-Red sisteminin en büyük artısı olarak gösterebileceğim olan “dashboard” sistemi normalde standart kurulumda gelmesi gereklidir ancak kontrol etmek için en kolay yöntem olarak mevcut kütüphanesine bakacağız. Bunun için sol tarafta bulunan nodlarımızda, dashboard diye bir bölüm ve dashboard nodlarımızı kontrol edeceğiz. Eğer sizde de bu nodlar aşağıdaki gibi yoksa kütüphane yönetimi ile bunları eklememiz gerekmektedir.
Sağ tarafta bulunan üç çizgi butonuna basarak “Manage palette”yi seçiyoruz
Açılan pencerede “Nodes” sekmesini görüntüleyeceğiz. Burada yüklü olan kütüphaneler gösterilmektedir. Sağındaki “Install” sekmesine gelerek, internet üzerinden kütüphane yükleme işlemine başlayabiliriz. Arama kutucuğuna “dashboard” yazıp çıkan sonuçlardan “node-red-dashboard” sırasındaki “install” düğmesine basarak bu kütüphanenin yüklenmesini sağlıyoruz. Çıkan onay penceresine evet diyoruz. İşlem sürerken, bir animasyon gösterecektir. İşlem tamamlandığında bir pencere açılarak işlemin başarıyla tamamlandığını bize bildirecektir. Bu sayede ön hazırlığımızı tamamlamış olacağız. Aynı zamanda bir kütüphanenin nasıl yüklendiğini de görmüş olduk.
İşlemci sıcaklığını göstermek
Raspberry pi cihazının işlemci sıcaklığını aslında SSH ile bağlantı yaptıktan sonra terminale aşağıdaki komutu yazarak öğrenebiliyoruz.
vcgencmd measure_tempNode-Red programı
Bunu Node-Red üzerinde de otomatik olarak çalıştırabiliyoruz. Bu işlemi yapmak için “exec” nodunu kullanıyoruz. Temel tetikleme nodu olan “inject” nodunu kullanalım. “inject” nodunun sağına eklediğimiz exec nodu ile bağlantısını yapıp, sonuna çıktısını görmek için “debug” nodunu ekleyerek bağlantısını aşağıdaki şekilde olduğu gibi yapıyoruz.
Bu hali ile programımız tam değil. Burada nodlarımızı ayarlamamız ve veri girmemiz gerekiyor. Bunun için başta “exec” nodumuzu çift tıklıyoruz ve bu sayede sağ tarafta ayar penceremiz açılıyor. “exec” noduna ayarımızı resimdeki gibi giriyoruz. Bu nodda ilk giriş kısmına ana komutu, alttaki kutuya ise geri kalanını giriyoruz. Aşağıdaki resimde bitmiş hali gözükmektedir.
İlk denememizi yapmak için sağ üst kısımda bulunan “DEPLOY” düğmesine basıyoruz. Bu sayede programımız devreye alınıp çalışmaya başlıyor. Ancak başta dediğim gibi Node-Red tetik sistemi ile çalışan bir ortam. Burada tetik “inject” nodumuzdur. “inject” nodumuzun sol tarafındaki kareye tıkladığımız zaman programımız çalışacak ve sağ tarafta debug sekmesinde aşağıdaki gibi bir yazı ortaya çıkacaktır.
İlk çalışan programımızı devreye bu şekilde aldık. Ancak bu şekilde bir sayı değil yazı elde etmiş oluyoruz. Dikkat ederseniz elde ettiğimiz bu sonuç “msg.payload” değişkeninin içeriği aslında. Node-Red aslında bir javascript yazılımı tabanlı bir sistem ve “javascript object” kullanıyor. Genelde sonuçlar ve girdiler “msg” olarak tanımlanıyor. Burada örnek bir msg objesinin tanımı şu şekilde yapılabilir:
msg = {payload: “51.5 C”, title: “” }Burada şu şekilde tanımlama yapmak da mümkün:
msg.payload = “51.5 C”
msg.title = “”Bu sisteme “javascript object” denmektedir.
Bahsettiğimiz gibi, aldığımız sonuç bir yazı yani “text” veya “string”. Bunu sayı haline getirmek için yazının önünden ve arkasından kesmemiz gerekiyor ki geri kalan şey sadece sayı olsun. Bu işlem için “function” nodunu kullanacağız. Sol taraftaki menüden function nodunu sürükle bırak ile ekranımızdaki exec nodu ile debug nodu arasına koyuyoruz. “Function” nodumuz aslında temel programlama işlemlerinin yapıldığı bir nod. Burada ilk program parçasını yazacağız. “Function” noduna çift tıklayarak sağ tarafta nodun içine aşağıdaki kodu yazıyoruz.
var str = msg.payload;
msg.payload = str.substr(5,4);
return msg;Bu program parçasına baktığımız zaman aslında bir fonksiyon olduğunu görebiliriz. Yani girişi alıp değiştirerek çıkışa veriyor. Node-Red sistemi içerisindeki her bir kutu aslında bu şekilde çalışmaktadır. “msg” olarak alınan giriş, “msg” olarak çıkışa verilmektedir. “Msg” içerisindeki “payload” alt değişkenini, ilk satırda geçici olarak “str” isimli değişkene aktarıyoruz. Daha sonra bu değişkeni, “substr” fonksiyonu ile değişime uğratıyoruz. “substr” fonksiyonu, parantez içerisinde bulunan 5 ve 4 sayıları ile baştan 5 karater sonra dört karakteri kırpmamızı sağlıyor. Aynı satırda bu elde ettiğimiz değeri “msg” içerisindeki “payload”a aktarıyoruz ve ilk değerini değiştiriyoruz. Daha sonraki satırda ise msg objesini çıkış olarak gönderiyoruz. Bu işlemler sonucunda yazdığımız programı denemek için “Deploy” düğmesine basarak işlemi yapıyoruz. “Inject” nodunun solundaki düğmeye basarak sonucu “debug” nodundan okuyoruz. Görebileceğimiz üzere “debug” nodunda aşağıdaki çıkışı görüntülüyoruz.
Şimdi bu yazılımımızın görselliğini de sağlamamız gerekli. Sadece bu ara yüzden değil, Node Red’in “dashboard” ara yüzünden de görüntüleyeceğiz. Sol taraftaki bu nodlardan, “ui_gauge”, “ui_text” ve “ui_chart” nodlarını sürükle bırak ile alt alta debug nodunun altına diziyoruz. Debug nodunu exec noduna bağladığımız gibi exec nodundan yeni eklediğimiz nodlara bağlıyoruz. Bu eklediğimiz bütün “dashboard” nodları “msg.payload” değerini görselleştirir. Görüntüleyeceğiniz üzere henüz yüklenmediğini gösteren mavi daire haricinde, bir sorun olduğunu bildiren kırmızı üçgenler de nodların sağ üstünde çıkacaktır.
Şimdi bu nodların ayarlamalarını yapacağız. “Dashboard” sisteminde özellikle bahsedilmesi gereken bir konu var. “Dashboard” sistemi üç katmandan oluşmakta:
Sayfa -> Grup -> Dashboard Node
Burada eklediğimiz her dashboard ögesi bir sayfaya ve o sayfadaki bir gruba ait olmak zorundadır. Bu örneğimiz için “Home” sayfası ve “Main” gruplarını oluşturacağız. Bu grupları oluşturmak için aşağıdaki bölümlerde her node için gösterilen ekran görüntülerindeki işlemleri yapıyoruz.
“ui_gauge” nodundaki ayarlamalarda maksimum ve minimum noktalarını 0 ve 80 olarak ayarladık. Renklerin değişimi için 50 ve aşağısını yeşil, 50-65 arasını sarı ve 65 üstünü kırmızı olarak ayarlıyoruz. Başlığı, “CPU Sıcaklığı” olarak ayarlıyoruz. Birim kısmına ise “°C” olarak ayarlıyoruz.
“ui_text” nodunda başlık olarak “CPU Sıcaklığı”, görüntülemeye ise birim olarak “°C” gözükmesi için örnekteki gibi yazıyoruz.
“ui_chart” nodunda başlık olarak yine “CPU Sıcaklık”, birim olarak da “°C” yazıyoruz.
Bütün bu işlemleri yaptıktan sonra tekrar “Deploy” düğmesine basarak yazdığımız programın devreye girmesini sağlıyoruz. "Deploy" sonrası "flow" sayfamızın son hali aşağıdaki gibidir
Şimdi yeni tarayıcı sekmesi açıp, Raspberry Pi cihazımızın IP adresini içeren aşağıdaki linki yazıyoruz.
http://192.168.10.100:1880/ui
veya
http://kontaktorpi:1880/uiYazdığımız bu yazılımın “dashboard” arayüzüne bu adresten ulaşıyoruz. Aşağıdaki gibi gözükecektir. Burada hiçbir değerin olmadığını göreceğiz.
Daha önceden bahsettiğim gibi, Node-Red tetikleme ile çalışan bir sistem ve her “DEPLOY” yaptığımız zaman ara değerler gitmektedir. Şimdi bu değeri tekrardan almak için program arayüzü sekmesindeki “inject” nodunun solundaki kareye tıklayarak tetiklemeyi sağlıyoruz ve değerlerin ekrana gelmesini sağlıyoruz.
Bu tetiklemenin düzenli olarak kendiliğinden gelmesini sağlamak için “inject” nodunda aşağıdaki değişiklikleri yapacağız. Tetiklemenin zaman bağlı ve “interval”de yani sabit zaman aralığı ile yapılmasını sağlamış olacağız.
Ancak bu ekranımız göz yormaktadır. Bütün “havalı çocuklar” gibi “dark mode” kullanmamız, göze daha hoş gelecektir. Bunun için dashboard ayarlarında, tema seçiminden “Dark” seçiyoruz. Değişimin devreye girmesi için tekrar “Deploy” düğmesine basmamız gereklidir.
Tekrar “Deploy” düğmesine basarak yaptığımız değişikliği devreye alıyoruz. Yaklaşık 1 dakikalık çalışma sonucunda aşağıdaki gibi bir görüntü elde etmiş oluyoruz.
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar

























Yorumlar
Yorum Gönder