Güneş enerjisi santrallerinde ilk uzaktan izleme sistemlerini ve “datalogger” cihazlarını gördüğümde büyülenmiştim diyebilirim. Daha sonra benzer ürünlerin pek çok sektörde olduğunu gördüm. Pek çok firma bu teknolojiyi yurt dışından ithal ediyordu. Yurt içinde geliştiren firmalar ise ciddi mühendislik harcıyorlardı. Ortaya çalışan yazılımlar çıkıyor ama hepsi kendi altyapısını sahip olduğu için birbiri ile uyumsuz oluyordu.
Günümüzde bazı açık kaynak teknolojiler artık oturmuş ve geniş çapta kullanılır hale gelip rüştünü ıspatlamış durumdadır. Peki bunları kullanarak bir izleme altyapısı yapamaz mıyız?
Öncelikle teknolojilerden bahsedeyim
MQTT: Bu bir mesajlaşma altyapısı. Facebook messenger’da bunu kullanıyor; binlerce sensörden oluşan sensör ağları da bu altyapıyı kullanıyor. Bir yere bir MQTT sunucusu koyuyorsunuz ve oradan herkes mesajlaşabiliyor. Bu arabirim enerji santralinde üretilen verilerin bize ulaştırılmasını sağlayacak.
InfluxDB: InfluxDB bir veritabanı. MSSQL, Mysql/MariaDB, PostgreSQL gibi veri tabanlarından farkı sensör gibi verileri tutmak ve hızlı biçimde sunmak üzere tasarlanmış olması. Karmaşık tablolar; bağlantılar v.s. kullanmak yerine sensör,tarih,veri üçlüsünü çok az yer kaplayarak saklayıp çok hızlı erişebiliyor.
Grafana: Grafana ise bir veri görselleştirme arabirimi. Normalde SQL kullanarak yapılan sorguların Jquery’e aktarılması ile çizilen grafikleri sürükle bırak şeklinde tasarlayabilmenize izin veriyor. InfluxDB’nin içerisindeki verileri birkaç tık ile grafik arabirimine dökmeniz ve bunu insanlar ile paylaşmanız mümkün.
Docker: Docker bir uygulama paketleme teknolojisi. Veri görselleştirmesi ile bir alakası yok ama yukarıda bahsettiğim yazılımları tek bir komutla kurmanıza ve çalıştırmanıza olanak tanıyor. Linux kullanıcıları için o yüzlerce uygulama kur kaldır derdi tarihe karışmış oluyor.
Gelinen noktada InfluxDB’nin geliştiricileri bu veritabanına çeşitli yerlerden veri aktarılabilmesi için Telegraf adını verdikleri bir arabirim tasarlamışlar. Telegraf pek çok yerden veriyi okuyup InfluxDb’ye kaydedebiliyor. Şimdi bu uygulamaların hepsinin bir arada olduğu docker dosyamızı kullanacağız.
Öncelikle Docker ve Docker compose’un kurulumunu yapalım. Sisteminde docker ve docker compose bulunanlar bu kısmı atlayabilirler.
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
$ curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ hash docker-compose
Bu işlemler tamamlandığında docker sistemimize kurulmuş olacak. Şimdi sizin kolayca kullanmanız için oluşturduğum docker-compose dosyasını ve ayarlarını indirelim.
git clone https://github.com/orcunbaslak/mqtt-telegraf-influxdb-grafana
Ben bu sistem için /tig klasörünü kullandım. Size de tavsiyem bu dosyaları /tig klasörüne kopyalamanız. Daha sonra aşağıdaki komutlar ile docker ağımızı çalıştıralım.
$ docker-compose up -d
Tüm yazılımlar sizin için internetten yüklenecek, bunları tutacak koteynerlerin içerisine konulacak ve çalıştırılacak. Bu konteynerler çalıştırıldığında aşağıdaki portlardan yazılımlarınıza erişebilirsiniz.
<localhost>:3000 – Grafana Web Sitesi
<locahost>:1883 – MQTT
<localhost>:8086 – InfluxDB
Ben güvenlik için bu portların (MQTT özel bir şekilde hariç olmak üzere) hiçbirini dışarıya açmıyorum ve Grafana’yı Nginx’in arkasına alıyorum. Nginx olduğu için de Let’s encrypt ile otomatik SSL sertifikası kullanabiliyorum.
Bu aşamada /conf/telegraf/telegraf.conf dosyasını düzenleyerek MQTT’ye göndereceğiniz verilerin InfluxDb’ye nasıl yazılacağını ayarlayabilirsiniz. Binlerce cihazdan topladığınız verilerin hiç problemsiz Influx’a aktarılmasını sağlayabilirsiniz. Sonra neler yaratacağınız Grafana’da size kalmış.
Grafana’da bu şekilde gözüken dashboard’lar yaratmanız çocuk oyuncağı.
Ben bu altyapıyı sektörde çok fazla kullanılan Kepserver ile birleştirdim. Kepserver’in yeni arabirimi olan IoT Gateway bir MQTT istemcisi aslında. Kepserver üzerinde edindiğiniz tüm verileri IoT Gateway kullanarak MQTT sunucusuna; oradan da InfluxDb’ye aktarabiliyorsunuz.
Bu veriler ile aşağıdaki gibi bir grafik oluşturabiliyorsunuz.
Her grafiğin altındaki veri seçme sistemi ile hangi veriyi seçeceğinizi ve ortalama/adet v.s. nasıl bir veri olacağını belirliyorsunuz. Sistem de sizin için hemen verileri seçip yukarıda grafiği canlı olarak oluşturuyor.
Şuanda elde ettiğiniz altyapı “uluslararası” yazılım firmaların size binlerce dolara satmak istedikleri veri görselleştirme altyapısı.
Enjoy! 🙂
Bir yanıt yazın