Arduino MQTT & InfluxDB & Grafana Kullanarak Uzaktan İzleme Sistemi

Arkadaşlar merhaba ,

Bir önceki yazımda arduino kullanarak MQTT haberleşmesini nasıl yapabileceğimizden bahsetmiştim. Bu yazımda ise arduinoya bir sıcaklık/nem sensörü ekleyerek bu verileri MQTT broker’a gönderme , bir adaptör yardımı ile MQTT brokerdan bu verileri alıp influxDB’ye kaydetme ve Grafana kullanarak bu verileri görselleştirmeden bahsedeceğim.

InfluxDB Nedir ?

GO ile hazırlanmış, gerçek zamanlı analitik çalışmaları, uygulama metriklerinin saklanması ve analizi gibi konularda kullanılan ve yüksek performans / sorgulara hızlı cevap verme gibi üstün özellikleriyle ön plana çıkan açık kaynak bir veritabanı türüdür.

Öncelikle bu adresten influxDB’yi indirelim. Sonrasında ise bilgisayarımızda uygun bir dizine extract edelim.

 

Extract ettiğimiz dizinde cmd ile influxd komutunu çalıştıralım. Aşağıdaki ekranı görüyorsak sonraki adım için hazırız demektir.

Grafana Nedir ?

Grafana, web uygulaması olarak çalışan, açık kaynak kodlu, genel amaçlı pano ve grafik programıdır. Farklı data kaynaklarından aldığı verileri size dashboard halinde göstermesi , örnek dahsboardlarla dolu bir community’si olması tercih sebebimiz oluyor.

Grafana’yı da bu adresten indirip kuralım. (Setup dosyasına sahip olduğu için next ,next enter 😀 şeklinde kolayca kurabiliriz) Kurduktan sonra localhost:3000 adresine girdiğimizde bu şekilde bir arayüz görüyor olmalıyız. Default user ve parola admin:admin şeklindedir.

 

Öncelikle bir önceki yazımda yer alan devreye ek olarak bir adet DHT11 sıcaklık sensörü ekleyelim.

DHT11 arduinonun 5 numaralı pinine bağlı.

Şimdi önceki yazımızda kullandığımız arduino sketch’ine dht11 için gerekli olan fonksiyonları ekleyelim.

Yeni kodumuzu yüklediğimizde cloudmqtt web socket sayfasında aşağıdaki gibi verinin geldiğini görmemiz lazım. Sıcaklık verisini temp , nem verisini hum topic’ine gönderiyoruz.

 

 

 

 

 

Güncel arduino kodu

Şimdi ise bu veriyi brokerdan okuyup influxDB’ye gönderecek olan adaptörü yazalım. Ben .net core consol uygulaması kullanacağım buradaki dil seçimi size kalmış. Adaptörümüz basitçe brokerdaki temp ve hum topiclerine subscribe olacak. Gelen veriyi influxDB’ye yazacak. Bizde grafana kullanarak bu veriyi görselleştireceğiz. .Net core ile MQTT Broker’a bağlanmak için kullanacağımız nuget paketi mqttNet. Ayrıca influxDB’ye veri yazmak için de influxdata.net kütüphanelerini kullanacağız.

Kütüphaneleri kurduktan sonra öncelikle MQTT broker’a bağlanıp verileri consol ekranında görüntüleyelim.

Mesajları consol ekranında görebildiysek bir sonraki aşamaya geçebiliriz.

 

Sonraki aşamada aldığımız mesajları influxDB’ye yazacağız.

Influx db bağlantısını doğru yaptıysanız influxd şeklinde servisi çalıştırdığımız cmd penceresinde aşağıdaki gibi “create database” komutunu görmeniz gerekiyor kodu çalıştırırken.

Sonrasında her write işleminde aynı ekranda bir hareketlilik görüyor olmalıyız.

Net Kodu

Şimdi işin asıl eğlencili kısmı olan grafana ile görselleştirme tarafına geçelim.

Grafana ara yüzünü kullanarak yeni bir data source ekleyelim (add data source)

 

Açılan pencereden InfluxDB Seçiyoruz.

 

net core kodumuzda create database dediğimiz satırda yazdığımız database ismini giriyoruz , influxdb local olarak çalıştığı için adres olarak localhost:8086 girip save & test butonuna basıyoruz.

Data source ekleme işleminden sonra dashboard tasarlama kısmına geldik. Buradan soldaki menüden new dahsboard sekmesine geçip add query diyoruz.

Add Query dediğimiz zaman karşımıza tıklama hareketleri ile query oluşturabileceğimiz bir ekran çıkacak. Aşağıdaki gibi bir query oluşturalım ve sağ üstteki kaydet butonu ile kayıt edelim. Gördüğünüz gibi veriyi hemen çekmeye başladık influxDb’den.

 

 

Sıcaklık sensörünü çakmakla biraz ısıttığımızda elde ettiğimiz grafik bu şekilde.

Sıcaklık normale döndükten sonra grafiğin görüntüsü ,

 

Umarım herkes için yararlı bir yazı olmuştur. Benim söyleyebileceklerim bu kadar.

You may also like...

Bir yanıt yazın

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

− one = three