IoT Cihazlar, ESP8266 ve Görselleştirilmesi

Evlerimizdeki neredeyse bütün cihazlar internete bağlı. Bu cihazlar bir firma tarafından üretiliyor ve esasında üzerinde pek de hakimiyetimiz yok. Örneğin basit bir sıcaklık / nem ölçen cihaz bile üretici bağımlı. Eğer üretici ortadan kaybolursa bu cihaz çalışmaz hale gelecek zira arka tarafında bu metriklerin toplandığı ve mobil uygulama aracılığı ile görselleştirildiği bir altyapı mevcut.

Bu altyapıyı kendimiz de oluşturabiliyoruz. Hatta kendi sıcaklık ölçen cihazımızı yapmak hiç de zor değil. ESP8266 barındıran NodeMCU v3 geliştirme kartı ve SHT31 kullanarak internete bağlı, aldığı bilgileri uzak bir sunucuya gönderen ve sonrasında görselleştirileceği bir yapı kurmak eli bu işlere değmiş biri için gayet yapılabilir.

Ben buna benzer bir yapıyı odalardaki sıcaklığı takip etmek için kurdum. Bunun için InfluxDB, Telegraf, Mosquitto ve Grafana kullandım. Kısaca açıklayacak olursam:

  • InfluxDB: Metriklerin toplandığı veri tabanı. Cihazlardan aldığımız metrikler bu sunucuya yazılıyor ve sonrasında sorgulanıyor. Bunu zaman tabanlı bilgiler için bir MySQL veya PostgreSQL şeklinde düşünebilirsiniz
  • Mosquitto: Minik cihazların bağlanıp ölçüm yaptıkları değeri gönderdikleri sunucu. Bu sunucu arada bir mesajcı görevi görüyor ve buna bağlanan diğer bütün istemcilere alınan mesajı gönderiyor. Bu yapıya PubSub denmekte.
  • Telegraf: Mosquitto'ya bağlanıp IoT cihazlardan gelen mesajları InfluxDB'ye yazan ara katman. Cihazlar çok küçük olduğundan ve zar zor internete bağlandığından direkt olarak InfluxDB'ye yazamadığımız için böyle bir çözüm gerekmekte.
  • Grafana: Verilerin görselleştirildiği yer. InfluxDB'yi sorgulayıp ilgili görselleri çıkarıyor.

Esasında yaptığımız şey cihaz internete bağlanabiliyorsa ve Mosquitto'ya veri gönderebiliyorsa, bu alınan verileri görselleştirmek. ESPHome projesi ile elimizde bulunan ESP8266'yı MQTT (Mosquitto) kullanacak şekilde programladığımızda bunu elde etmiş oluyoruz. Cihaz açıldığında önce kablosuz ağa bağlanıyor, sonrasında MQTT sunucusuna bağlanıp ölçümünü buraya gönderiyor. Burdan sonra da Telegraf, Influxdb ve Grafana kullanarak görselleştiriyoruz.

Aslında kullandığımız IoT cihazların yapısı aşağı yukarı bu şekilde. Biz sadece arka tarafındaki altyapıyı göremiyoruz. Elimizdeki cihazların tek görevi işini olabildiğince sade yapıp internete bilgi aktarmak.

Yazının başında bu altyapının şirketlerin kontrolünde olduğunu ve her an çalışmayabileceğini söylemiştim. Eğer zamanınız ve bilginiz varsa bu tarz sensör verilerini almak için ESP8266 çok güzel bir platform. Birçok sensör bağlanabiliyor ve ESPHome ile OTA özelliği sayesinde cihazı bilgisayara bağlamadan ağ üzerinden programlayabiliyorsunuz. Geliştirme aşamasında bu çok büyük bir kolaylık sağlıyor. Sonrasında InfluxDB, Telegraf, Mosquitto ve Grafana ile güzel bir şekilde de görselleştirebiliyoruz.

Burada tek eksik kullanıcı dostu olmaması. Tak çalıştır şeklinde bir altyapı tabii ki kurulabilir ama bunu para için yapmadığımız için kendi yağımızda kavruluyoruz. Grafana'nın mobil arayüzü gayet yeterli olduğu için pek de ihtiyacımız yok aslında.

Umarım buradaki anahtar kelimeler sizlere yardımcı olur ve kendi sıcaklık / nem sensörünüzü, devamında arka tarafındaki altyapınızı kurmanız için bir yol açar. Maalesef bütün bu sunucuları ve altyapıyı baştan kurup yazıya dökmek için vaktim şimdilik yok. Umarım ben de baştan sona sıcaklık / nem sensörü ile beraber görselleştirme yazısı yazmak için zaman bulabilirim.