Merhaba Medium okuyucuları! Ben Tuğba, Türkiye’den bir istatistikçi ve veri bilimcisiyim. Veri mühendisliği ve veri analitiği alanında geliştirdiğim projelerle yenilikçi çözümler üretmekten büyük keyif alıyorum. Bugünkü yazımda, ofis ortamlarında kullanılan IoT (Nesnelerin İnterneti) sensörlerinden gelen verilerin gerçek zamanlı olarak işlendiği ve tahminlerde bulunulduğu bir proje olan Gerçek Zamanlı IoT Sensör Verisi Analiz ve Tahmin Sistemini sizlerle paylaşacağım.
IoT cihazlarının hızla yaygınlaştığı günümüzde, bu cihazların ürettiği veriler, enerji tasarrufu, güvenlik ve operasyonel verimlilik açısından büyük önem taşıyor. Ancak, bu verilerin anlamlı bilgilere dönüştürülmesi için gelişmiş sistemlere ihtiyaç var. Bu projede, büyük veri teknolojileri ve makine öğrenimi modelleri kullanılarak sensör verilerinin analiz edilmesi ve kullanıcı aktivitelerinin tahmin edilmesi hedefledik.
GitHub üzerindeki Real-time IoT Sensor Data Analytics and Prediction System projesini baz alarak, gerçek zamanlı veri işleme, görselleştirme ve tahmin süreçlerini nasıl hayata geçirdiğimizi detaylı bir şekilde inceleyeceğiz.
Nesnelerin İnterneti (IoT), fiziksel cihazların birbirleriyle ve internetle bağlantı kurarak veri paylaşmasını ifade eder. IoT cihazları, sıcaklık, nem, hareket gibi çeşitli sensör verilerini toplar ve bu verileri merkezi bir sistemde birleştirir. Ancak, bu verilerin ham haliyle analiz edilmesi oldukça zordur ve anlamlı bilgilere dönüştürülmesi için gelişmiş veri işleme araçları gerekir.
- Gerçek Zamanlılık: Verilerin anında işlenmesi gereklidir.
- Ölçeklenebilirlik: Artan sensör sayısı, veri akışını artırır ve sistemlerin buna uyum sağlamasını zorunlu kılar.
- Anlamlandırma: Ham verilerin anlamlı bilgiye dönüştürülmesi gerekir.
Bu proje, IoT verilerinin yukarıdaki zorluklarını çözmek amacıyla Apache Kafka, Apache Spark, Elasticsearch ve Kibana gibi ileri düzey araçları bir araya getirerek gerçek zamanlı veri işleme ve analiz süreçlerini uygulamaya koyuyor.
Proje Kapsamında Kullanılan Teknolojiler:
- Docker: Projeyi konteynerler aracılığıyla taşınabilir ve yeniden kullanılabilir hale getirmek için kullanılır.
- Apache Kafka: Gerçek zamanlı veri iletimi ve yönetimi için kullanılan güçlü bir dağıtılmış sistemdir. Veri iletimini sağlar. Sensör verilerini gerçek zamanlı toplar ve dağıtır.
- Apache Spark: Büyük veri setlerini gerçek zamanlı ve paralel olarak işleyen, hızlı bir veri analitiği motorudur. Verileri işleyerek analizler yapılabilmesi için anlamlı hale getirir.
- Elasticsearch ve Kibana: İşlenmiş verilerin depolanması ve görselleştirilmesi için mükemmel bir ikili oluşturur. Kullanıcılar, verilerini grafikler ve tablolar yardımıyla analiz edebilir.
- Python: Veri işleme, analitik ve makine öğrenimi uygulamaları için tercih edilmiştir.
Projenin ana hedefi, IoT (Nesnelerin İnterneti) sensörlerinden gelen büyük hacimli verileri gerçek zamanlı olarak işleyip anlamlı bilgilere dönüştürmek. Bununla birlikte:
- Ofis ortamlarında enerji tüketimini optimize etmek,
- Makine öğrenimi modeli ile hareket tahminleri yaparak, kullanıcı aktivitelerini tahmin ederek işletme süreçlerini iyileştirmek,
- IoT cihazlarının sağladığı veriyi daha etkin bir şekilde kullanmak ve verileri görselleştirerek anlık durumları analiz etmek gibi amaçlara hizmet ediyor.
Bu sistem; enerji verimliliğini artırmak, çevresel değişikliklere uyum sağlamak ve kullanıcı aktivitelerini tahmin etmek gibi hedeflere hizmet eder.
1. Veri Seti: Kaynak ve Açıklama
Proje, UC Berkeley’deki Sutardja Dai Salonu’ndan (SDH) toplanan zaman serisi verileri üzerine inşa edilmiştir. Kullanılan veri seti, sıcaklık, nem, ışık ve PIR (hareket) sensörlerinden gelen verilerden oluşur. Veri seti, ofis binasındaki bir odanın fiziksel özelliklerindeki paternleri incelemek ve bu paternlerden hareket tahmini yapmak için uygundur.
Veri Özellikleri:
- CO2 konsantrasyonu: Odadaki hava kalitesini gösterir.
- Nem (humidity): Odadaki hava nem oranını ölçer.
- Sıcaklık (temperature): Odadaki ortam sıcaklığını belirler.
- Işık (light): Odanın parlaklık seviyesini gösterir.
- Hareket (PIR): Odanın doluluk durumunu tespit eder.
- Pasif kızılötesi sensör (PIR), bir odadaki doluluk durumunu ölçer.
Veri Toplama
Bu adım, sensörlerden gelen verilerin toplanması ve sistemin diğer bileşenlerine aktarılması sürecini kapsar.
Kafka ile Gerçek Zamanlı Veri Toplama: Sensörlerden alınan veriler, Apache Kafka’ya gönderilir ve Test verisindeki hedef değişken (PIR) hariç tutulmuş ve bu veriler, office-input adında bir Kafka topic’ine gönderilmiştir.
- (office-input). Test verisindeki hedef değişken (PIR) hariç tutulmuş ve bu veriler, office-input adında bir Kafka topic’ine gönderilmiştir.
Data Generator Kullanımı: Gerçek zamanlı veri akışını simüle etmek için bir veri üreteci kullanılmıştır.
- Apache Spark, gelen verileri temizler ve işlenebilir hale getirir. Eksik değerler doldurulur, veriler normalize edilir ve özellik çıkarımı yapılır.
Spark Streaming ile Veri Tüketimi ve Tahmin:
- Spark Streaming, Kafka’dan gelen verileri anlık olarak tüketir.
· Makine öğrenimi modeli, sensör verilerini analiz ederek odalarda hareket olup olmadığını tahmin eder. Bu model, Spark ML kullanılarak eğitilmiş ve gerçek zamanlı akışlarla entegre edilmiştir. Bu tahminler enerji yönetiminde ve kullanıcı deneyimini iyileştirmede kullanılır.
- Tahmin sonuçları:
- Aktivite var: office-activity topic’ine yazılır. (“prediction” : 1.0)
- Aktivite yok: office-no-activity topic’ine yazılır. (“prediction” : 0.0)
- PIR verilerinin yaklaşık %6’sı hareketlilik olduğunu, %94’ü ise odanın boş olduğunu gösterir.
Elasticsearch, hızlı arama ve veri sorgulama işlemleri için optimize edilmiş bir veri tabanıdır. Tahmin sonuçları ve diğer sensör verileri, Elasticsearch üzerinde saklanmış ve görselleştirme için Kibana kullanılmıştır.
Kibana, kullanıcı dostu arayüzü sayesinde verilerin gerçek zamanlı olarak analiz edilmesini sağlar. Verileri görselleştirmek için kullanılır.
- Hareketli ve hareketsiz durumların dağılımını gösteren pasta grafiği.
- CO2 seviyelerinin zaman içindeki değişimini gösteren çizgi grafiği.
Son adımda, tüm sensör verileri Kibana üzerinde görselleştirilmiştir. Dashboard’da aşağıdaki grafikler oluşturulmuştur:
Bu proje, IoT sensör verilerinin gerçek zamanlı işlenmesi ve analizi için modern veri mühendisliği araçlarının nasıl entegre edilebileceğini gösteriyor. Apache Kafka ve Spark gibi araçlar, büyük veri ile başa çıkmak için mükemmel bir temel sunuyor. Bunun yanında, Elasticsearch ve Kibana gibi araçlar, analiz sonuçlarını görselleştirerek kullanıcıların kolayca anlamasını sağlıyor.
Projenin tam detaylarına GitHub deposundan ulaşabilirsiniz. Eğer benzer projeler üzerinde çalışıyorsanız veya bu teknolojilerle ilgileniyorsanız, yorumlarınızı bekliyorum.
Bir sonraki yazımda yeniden görüşmek üzere!
Bu arada, keyif alarak okumanız ve ufak bir gülümsemeyle ayrılmanız dileğiyle. Eğer iş birliği yapmayı düşünürseniz, LinkedIn’de bir mesaj uzağınızdayım!
LinkedIn Profilim