Sanal IoT CihazI Kurulumu: Adım Adım Rehber

https://github.com/norcholly/safe-pi-monitor

1. Proje Özeti

Bu proje, Sense HAT sensör modülü kullanarak çevresel verilerin (örneğin sıcaklık, basınç ve nem) Raspberry Pi aracılığıyla toplanmasını, bu verilerin MariaDB veritabanında saklanmasını ve PHP tabanlı bir web arayüzü ile görselleştirilmesini sağlamayı amaçlamaktadır. Sistem, günlük saatlik verilerden grafik oluşturma yeteneğine Python kodlama dili ile sahip olup, çevre ve sağlık gibi alanlarda anlamlı veri analizi yapılmasına olanak tanıyan bir altyapı sunmaktadır.


2. KULLANILAN Teknolojiler

Donanım
  • Virtual Box üzerinde çalışan Raspberry Pi OS: Verilerin işlenmesi, saklanması ve iletilmesi için temel donanım.
  • Sense HAT Sensör Modülü Emülatöru: Çevresel verilerin (sıcaklık, basınç, nem) toplanması için kullanılır.
Yazılım VE Programlama Dilleri
  • MariaDB: Verilerin güvenli bir şekilde depolanması için kullanılan bir SQL veritabanı.
  • PHP: Web tabanlı kullanıcı arayüzü geliştirme ve veritabanındaki verilerin görselleştirilmesi için.
  • Bash Script: Gereksinimlerin indirilmesi, kurulması ve temel yapılandırma işlemlerinin otomasyonu için.
  • Python: Sensör verilerinin toplanması ve işlenmesi, ayrıca grafik oluşturulması için kullanılır.
  • Grafik Kütüphaneleri: Python Matplotlib (grafiklerin oluşturulması için).

3. Sistem Mimarisi Ve Tasarım

Sistem Akışı
  1. Veri Toplama: Sense HAT Emülatöründen Python scripti ile sıcaklık, basınç ve nem verileri alınır.
  2. Veri Saklama: Alınan veriler, Bash scriptiyle indirilen ve yapılandırılan MariaDB veritabanına kaydedilir.
  3. Veri Görselleştirme: PHP tabanlı bir web arayüzü kullanılarak veriler gerçek zamanlı grafikler ve tablolar halinde kullanıcıya sunulur.
Veri Akış Şeması
  • Sensör -> Python (Veri İşleme) -> MariaDB (Veritabanı) -> PHP -> Web Arayüzü (Görselleştirme)

4. Projenin Adımları

4.1 Sanal Ortamın Kurulması
  • Bir sanallaştırıcı (VirtualBox, VMWare vb.) Raspberry PI OS kurulur.
4.2 Sensör Verilerinin Toplanması
  • Sense HAT sensöründen sıcaklık, nem ve basınç verilerinin okunması için Python scripti yazılır.
  • Python ile alınan veriler terminalde test edilir.
4.3 Verilerin Veritabanına Saklanması
  • Bash scripti ile MariaDB indirilir, kurulur ve yapılandırılır.
  • Sensör verilerini saklamak için bir veritabanı şeması oluşturulur.
  • Python ile veritabanına veri kaydetme işlemi gerçekleştirilir.
4.4 Web Arayüzü Geliştirilmesi
  • PHP ile veritabanından veri okuma ve web arayüzünde tablo halinde sunma işlemleri yapılır.
4.5 Grafik Oluşturma Ve Veri Analizi
  • Python Matplotlib kullanılarak günlük saatlik veri ortalamalarından grafikler oluşturulur.
  • Grafikler hem web arayüzünde hem de dışa aktarılabilir formatlarda sunulur.

5. Kurulum Ve çalıştırma

5.1 VirtualBox Kurulumu

Her şeyden önce, makinenize bir sanallaştırma aracı yükleyin.

https://www.virtualbox.org/wiki/Downloads

Windows için olanı seçin ve indirin. Sizde sürüm farklı olabilir, sorun değildir.

VirtualBox kurulumundan sonra, aşağıdaki resimdeki gibi bir arayüzle karşılaşıyorsanız, yükleme başarıyla tamamlanmıştır.


5.2 Raspberry PI OS Kurulumu

Şimdi, Raspberry PI OS yükleme zamanı.

https://www.raspberrypi.com/software/raspberry-pi-desktop/

ISO dosyası olarak indirmeniz gerekiyor.

İndirildi.

Kırmızı ile dikdörtgen içine aldığım panelden, “Yeni” butonuna tıklayın.

Gelen pencereyi, aşağıdaki gibi doldurun.

İleri butonuna bastıktan sonra, gelen pencereyi aşağıdaki gibi doldurun. Sistem özelliklerinize göre kendiniz ayarlayabilirsiniz.

İleri butonuna bastıktan sonra, gelen pencereyi aşağıdaki gibi doldurun. Sistem özelliklerinize göre kendiniz ayarlayabilirsiniz.

İleri butonuna bastıktan sonra, az sonrasında kuracağınız işletim sisteminin özetini görüyoruz. Bitir tuşuna basın.

Aşağıda gördüğünüz gibi, sisteminizin temeli hazır.

“Ayarlar” butonuna bastıktan sonra gelen pencereyi aşağıdaki gibi doldurun.

“Depolama” bölümünde, “Denetleyici: IDE” başlığının altındaki boş diske tıklayın. Ardından, sağdaki disk sembolüne tıklayıp “Disk dosyası seç…” butonuna basın.

İndirdiğiniz ISO dosyasını seçin.

Artık işletim sisteminiz kuruluma hazır. “Başlat” butonuna tıklayın ve sistem açıldığında karşınıza gelen seçenekleri, aşağıdaki resimlerde gösterildiği şekilde seçin.

Kendi kullanıcı adı ve parolanızı girin.

“Next” butonuna basın.

Artık işletim sisteminiz kullanıma hazır. Ekran çözünürlüğünü ayarlamak için, sol üstte bulunan Raspberry ikonuna tıklayın ve “Preferences” sekmesinden “Screen Configuration” seçeneğine tıklayın.

“Virtual1” yazan kareye sağ tıklayın ve çıkan menüden “Resolution” seçeneğine tıklayarak size uygun çözünürlüğü seçin.

“Apply” butonuna basın.

“Yes” butonuna tıklayın ve ayarladığınız çözünürlükte sistem kendini yeniden başlatsın.

İşletim sisteminiz başarıyla kuruldu.


5.3 Veritabanı Kurulumu

Şimdi, Python kullanarak verileri sensörden toplamadan önce, verileri gönderebileceğimiz veritabanını kuralım.

Öncelikle, sol üstte açma tuşu bulunan terminali açıp, setxkbmap tr yazın ve klavyeniz türkçe Q klavye olarak ayarlansın.

Ardından, yapacağınız işlemleri başarıyla tamamlayabilmek için yüksek yetkili kullanıcıya (root) sudo su komutuyla geçiş yapın.

clear komutuyla terminalinizde önceki çıktıları silip, yapacağınız işlemlerin başarılı olabilmesi için gerekli güncellemeleri apt update ve apt upgrade komutları vasıtasıyla yapın.

Güncellemeler tamamlandıktan sonra yazının en başında verdiğim proje dosyasının github linkini /root dizinine cd /root komutu ile gittikten sonra git clone https://github.com/norcholly/safe-pi-monitor komutu ile indirin.

Veritabanını otomatik ve kolay bir şekilde kurmak için hazırladığım dosyaya cd /root/safe-pi-monitor/scripts/bash/ komutuyla gidin. ls komutu ile içinde bulunduğumuz klasörün içeriğini terminale yazdırabiliriz. chmod +x database-setup.sh komutu ile kullanacağınız bash scriptini çalıştırılabilir hale getirin ve ./database-setup.sh komutu ile scripti çalıştırın.

Çalıştırdığınız script öncelikle sizden veritabanında kullanacağınız bilgileri isteyecek ve kurulumu girdiğiniz bilgilerle sürdürecek. Kendi isteğinize göre ayarladığınız veritabanı bilgilerini kaybetmeyin.

mysql -u <kullanici_adiniz> -p komutu ile kurduğunuz veritabanına giriş yapın. Başarılı bir girişten sonra show databases; ile kullanıcınızın kullanabileceği veritabanları gösterilecektir. use <veritabaninizin_adi>; komutu ile veritabanını seçin.

show tables; komutu ile var olan tabloları görüntüleyebilirsiniz. Veritabanında hata olup olmadığını kontrol etme amacıyla INSERT INTO data (timestamp, temperature, pressure, humidity) VALUES ('YYYY-MM-DD HH:MM:SS', 25.00, 1013.00, 55.0000); komutu ile birkaç veri girişi yapın.

select * from data; komutu ile tablomuzdaki tüm verileri ekrana yazdırın. Eğer girdiğiniz veriler gözüküyorsa, veritabanınız başarılı bir şekilde kurulmuş demektir.


5.4 WEB ARAYÜZÜ KURULUMU

Web arayüzünü başarılı bir şekilde çalıştırmak için apt install apache2 php libapache2-mod-php -y komutu ile gerekli kurulumları yapın.

cd /var/www/html/ && ls komutu ile web sunucunuzda çalışacak dosyaları görüntüleyebilirsiniz. Apache2 kurulumu ile beraber gelen index.html dosyasını rm index.html ile silin ve mv /root/safe-pi-monitor/web/ . && ls komutu ile proje dosyalarının içindeki web klasörünü, geldiğiniz /var/www/html/ dizininin içine kopyalayın. Ardından, cd web/ komutu ile web klasörüne girip mv * .. && cd .. komutu ile web klasörünün içindeki dosyaları /var/www/html/ dizinine taşıyıp rm -rf web/ komutu ile içi boş kalan web klasörünü silin. systemctl start apache2 komutu ile web sunucusunu başlatın.

Terminalinize ifconfig yazarak eth0 arayüzündeki size tanımlanmış IP adresini görebilirsiniz. Benim makinemde IP adresi 10.0.2.15 olarak tanımlanmış.

nano /etc/mysql/mariadb.conf.d/50-server.cnf komutu ile konfigürasyon dosyasında bir değişiklik yapmanız gerekecek.

bind-address = kısmını, size atanan IP adresi ile değiştirdikten sonra CTRL + O kombinasyonu ile kaydedip, CTRL + X kombinasyonu ile dosyadan çıkış yapın. systemctl restart mariadb komutu ile veritabanı servisini yeniden başlatın.

Tarayıcınızı açıp size tanımlanan IP adresini girdiğinizde aşağıdaki arayüzle karşılaşacaksınız. Buradan public/ dizinine tıklayın.

public/ dizinine tıkladığınızda karşınıza aşağıdaki gibi bir arayüz çıkacak.

Üst menüden data-check butonuna tıklayın.

Veritabanı bilgilerinizi ve veri girişi yaptığınız tarihi girin.

check butonuna bastıktan sonra veriler tablo şeklinde web arayüzünüze yansıyacaktır.


5.5 Veri Toplama, Aktarma ve Grafikleştirme Sisteminin Kurulması

Verileri Sense HAT emülatörden (sensörden) alıp veritabanına aktarmak ve veritabanındaki verilerle grafik oluşturmak için gerekli python scriptlerini kurmadan önce, cd /root/safe-pi-monitor/scripts/python komutu ile python scriptlerinin olduğu dizine gidin.

chmod +x install.sh komutu ile gereksinimleri yükleyeceğiniz scripti çalıştırılabilir hale getirin. Ardından ./install.sh komutu ile gereksinimleri yükleyin.

Gerekli python kütüphaneleriniz makinenize kuruldu.

Sol üstteki Raspberry sembolüne tıkladıktan sonra “Programming” sekmesindeki Sense HAT Emülatörü açın.

Emülatör başarılı bir şekilde açıldı.

Eğer dizininiz /root/safe-pi-monitor/scripts/python ise, nano main.py komutu ile verileri alan dosyanızı açıp gönderilecek veritabanı bilgilerini kendi veritabanı bilgilerinizle değiştirin.

python3 main.py komutu ile bir seferlik olmak üzere Sense HAT Emülatördeki verileri veritabanına yollayın.

Emülatörde yaptığınız değişikliklere göre sistem uyarı verecektir.

Veri gönderme işlemini otomatikleştirmek için işletim sisteminin sağladığı “cronjob” özelliğinden yararlanıyoruz. nano /etc/crontab komutu ile cron dosyasını düzenlemek için açın. En alt satırı aşağıda gördüğünüz gibi doldurun. Bu satır sayesinde her dakika otomatik olarak main.py dosyamız çalışacaktır (Sense HAT Emülatör açıksa). Eğer main.py dosyasının dizinini değiştirecek olursanız, crontab dosyasından da değiştirmeyi unutmayın!

systemctl restart cron komutu ile işleminizi tamamlayın.

Verilerin başarılı bir şekilde gönderildiğini öğrenmek için tail -f /var/log/syslog komutu ile sistem loglarını dinamik olarak izleyin.

Grafik oluşturmak için gerekli python scriptini de eğer dizininiz /root/safe-pi-monitor/scripts/python ise nano graph.py komutu ile düzenlemek için açıp, kendi veritabanı bilgilerinizi girin.

Veritabanındaki verilerden grafik oluşturmak için python script dizininde bulunan graph.py dosyasını da cronjob olarak ekleyin.

(isteğe bağlı, kontrol amaçlı) Şimdilik bir önceki günün her saat başına denk gelecek şekilde veri ekleyin.

(isteğe bağlı, kontrol amaçlı) python3 graph.py komutu ile grafik oluşturun. Grafiğin doğru yere kaydedildiğini kontrol etmek için ls /var/www/html komutunu yazın. Grafiği dışa aktarmak vb. işlemler için burada bulabilirsiniz.

Web arayüzünüzü tekrar açıp üst menüden graph butonuna tıklayın.


6. Sonuç

Gerçek zamanlı veri toplama, saklama ve görselleştirme süreçlerini bir araya getiren, işlevsel ve ölçeklenebilir bir sistem geliştirilmiştir.

Ancak hiçbir güvenlik önlemi alınmamış bir akıllı cihazın kötü niyetli bilgisayar korsanları tarafından istismara uğraması sonucu çalınan veriler, yanıltıcı veri girişleri akıllı cihazlar için önemli bir husustur. (Buraya tıklayarak, kurulumunu yaptığımız bu cihaza yönelik gerçekleştirdiğimiz sızma testiyle ilgili yazıya ulaşabilirsiniz.)

Güvenlik önlemi olarak bu cihaza IDS/IPS sistemi kuralım ve muhtemel saldırıları yapan kötü niyetli bilgisayar korsanlarıyla aramıza güvenlik duvarı koyalım.


Herhangi bir sorunla karşılaşırsanız, çözüm bulmak için her zaman yanınızdayım. Görüşlerinizi, önerilerinizi ve yaşadığınız sorunları paylaşmak için iletişim kısmından bana ulaşmayı ihmal etmeyin.

Yorum bırakın