İçindekiler:

R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun: 8 Adım (Resimlerle)
R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun: 8 Adım (Resimlerle)

Video: R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun: 8 Adım (Resimlerle)

Video: R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun: 8 Adım (Resimlerle)
Video: 28.12.2020 Bilişim Sistemleri Mühendisliği Bölümü Linux İşletim Sistemi Öğrenci Sunumları 2024, Kasım
Anonim
Image
Image
R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun
R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun
R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun
R-PiAlerts: Raspberry Pis ile WiFi Tabanlı Güvenlik Sistemi Oluşturun

Masanızda çalışırken aniden uzaktan bir ses duyarsınız. Biri eve mi geldi? Arabam evimin önüne park edilmiş, biri arabama mı girdi? Araştırıp araştırmamaya karar verebilmeniz için telefonunuza veya masanıza bildirim gelmesini istemez miydiniz? Peki daha fazla soru sorma! R-PiAlerts burada!

R-PiAlerts nedir?R-PiAlerts, Firebase'in Bulutu üzerine kurulmuş Raspberry Pi3 tabanlı bir güvenlik sistemidir. Hareket algılanırsa, sistem kullanıcıyı bir metin mesajı ve yanıp sönen bir LED ekran (bir tür sessiz görsel alarm) ile olası bir hırsızlık durumunda uyarır. Kullanıcı bir bildirim aldığında araştırma yapabilir. Algılanan tüm hareketler Firebase veritabanına kaydedilecektir. Kullanıcı, bir web tarayıcısında hareket günlüğünü görüntülemenin yanı sıra, bir iOS uygulaması aracılığıyla hareket günlüğüne de erişebilir. Bölgemdeki hem araçlara hem de evlere yönelik son zamanlardaki artış nedeniyle bunu yapmaya karar verdim.

Neden Pi3? Hareketi algılayabilen ve gerektiğinde pili biten küçük bir şeye ihtiyacım vardı. Ardından üniteyi bir kapının arkasına veya bir arabaya saklayabilirim. Ayrıca ünitenin bana bildirim veya uyarı gönderebilmesi gerekiyor. Pi3, tüm bunları yerleşik wifi ve bir USB pil paketini bitirme yeteneği ile yapabilir. Pi3'ü seçmemin diğer nedenleri:

  • Pi nispeten ucuzdur
  • Dağıtımı ve ölçeği büyütmesi kolaydır
  • Yazılım açısından yapılandırılabilir
  • Ekranları ve sensörleri kullanma yeteneği. Bu proje SenseHat'ı kullanacak
  • Başsız Çalıştırma (monitör, klavye veya fare olmadan)

O nasıl çalışır

  • İdeal olarak, kullanıcının Firebase veritabanına bağlı 2 Raspberry Pi'ye ihtiyacı olacaktır, ancak tek bir Pi de çalışacaktır.
  • SenseHat'ı kullanan ilk Pi (Pi1) ivmeölçer ile hareketi algılarken, ikinci Pi (Pi2) hareket bildirimlerini görüntüler.
  • Pi1 hareketi algıladığında 3 şey yapar

    • veritabanına günlük hareketi
    • Pi2'nin görüntülemesi için veritabanında bir bildirim girişi oluşturun
    • kullanıcıya hareketi bildiren bir metin mesajı gönderin.
  • Pi2, veritabanından görüntülenecek bir bildirim algıladığında iki şey olur

    • Pi2'nin LED ekranı bildirimi sürekli olarak gösterecek
    • Kullanıcı, Pi2 SenseHat'ın düğmesine basarak bildirimi temizleyebilir. Bu aynı zamanda veritabanındaki bildirim girişini de temizleyecektir.
  • iOS uygulamasıyla, kullanıcı şunları yapabilir:

    • veritabanına erişim; hareket günlüğünü oku ve sil
    • kullanıcı, Pi1'in LED ekranında bir mesaj görüntülemek için Pi1'i gönderebilir.

Pratik uygulamalar

  1. Sokakta arabanızı wifi menziline park ederseniz. Pil takımını Pi1'e takın (resme bakın). Pi1'i arabanızda saklayın. Pi2'yi masanızın yanı gibi kolayca görülebilecek bir yere yerleştirin (resme bakın).
  2. Diğer bir uygulama ise Pi1'i evinizde bir kapının yanına yerleştirmektir. Pi o kadar küçüktür ki çoğu insan özellikle menteşe tarafının arkasındaysa bunu fark etmeyecektir (resme bakın). Ardından Pi2'nizi çalışma masanıza yerleştirin.
  3. Köpek evin bir yerine girmesi gerekmiyor mu? Bu alana bir Pi1 yerleştirin. Köpeğinizin çiğnememesi için Pi'yi sağlam bir kutuya koyduğunuzdan emin olun.

Pi'niz wifi menzilinde olduğu sürece sizi hareket konusunda uyarabilir veya bilgilendirebilir. İkinci bir Pi'niz yoksa, hareketi algılamak ve cep telefonunuz aracılığıyla SMS bildirimleri almak için Pi1'i kullanabilirsiniz.

Malzeme Listesi

  • Raspbian çalıştıran iki (2) Raspberry Pi 3s (Raspberry Pi 2, bir wifi dongle ile de çalışır)
  • İki(2) SenseŞapka
  • Mac ve iOS cihazı

Gerekli Yazılım

  • Pyrebase kitaplığı (Firebase'e bağlanıyor)
  • SenseHat kitaplığı (ivmeölçer ve LED ekrana erişmek için)
  • Twilio kütüphanesi (SMS göndermek için)
  • En son Raspbian ile yerleşik Python 3
  • IDLE ile Raspbian
  • Mac'inizdeki Xcode8 ve Cocoapod'lar
  • Öğrenme ve keşfetme isteği

Yan NotBu, Pi tabanlı tek güvenlik çözümü değildir. Herhangi bir fikriniz, öneriniz varsa veya sadece kodumu yeniden düzenlemek istiyorsanız, lütfen aşağıya bir yorum bırakın! =)

1. Adım: Firebase ve Twilio Hesaplarını Kurun

Firebase ve Twilio Hesaplarını Kurun
Firebase ve Twilio Hesaplarını Kurun
Firebase ve Twilio Hesaplarını Kurun
Firebase ve Twilio Hesaplarını Kurun

Öncelikle, Pis'imizle oynamaya başlamadan önce Firebase ve Twilio'yu kurmamız gerekiyor. Firebase, Google'ın bir hizmet olarak arka ucudur. Firebase, veritabanı, bulut mesajlaşma, kimlik doğrulama, depolama vb. gibi özellikleri içerir. Bu proje için yalnızca Firebase'in gerçek zamanlı veritabanını ve kimlik doğrulamasını kullanmamız gerekecek. Firebase veritabanınızı okumak ve yazmak için kimlik doğrulaması gerekecektir. Firebase'i kurmak için:

  1. Ücretsiz bir Firebase hesabı için kaydolun
  2. Konsola gidin. Yeni bir proje oluşturun ve ona bir ad verin.
  3. Sol menü altında, "Genel Bakış" üzerine tıklayın
  4. "Web uygulamanıza Firebase ekle"yi tıklayın, APIKey'inizi ve proje kimliğinizi (url'yi değil) kopyalayın. Proje Kimliği, veritabanı gibi farklı URL'lerde bulunur:
  5. Sol menü altında, "Kimlik Doğrulama" üzerine tıklayın. "Giriş Yöntemi"ne gidin ve "E-posta/Parola"yı etkinleştirin
  6. "Kullanıcı" altında, seçtiğiniz e-posta/şifre ile yeni bir kullanıcı hesabı oluşturun. Veritabanına giriş yapmak için bu kimlik bilgisini kullanacaksınız.
  7. Sol menünün altında "Veritabanı"na gidin
  8. Bu sizin Veritabanınız. Şu anda boş. Doldurulduğunda JSON formatında olacaktır. URL, daha önce gördüğünüzle aynı olmalıdır.

Twilio, geliştiricilerin müşterilerine mesaj göndermesine olanak tanır. Pi hareket algıladığında telefonunuza SMS göndermek için kullanacağız. Twilio size SMS göndermeniz için bir telefon numarası sağlayacaktır. Twilio'yu kurmak için:

  1. Twilio'nun sitesinde ücretsiz bir hesap için kaydolun
  2. AccountSID'nizi ve authToken'ınızı kopyalayın
  3. "Deneme Kısıtlamaları"na tıklayın ve "ilk Twilio telefon numaranızı alın"ı seçin
  4. Yeni telefon numaranızı kopyalayın

2. Adım: Pis'inizi Kurun

Pis'inizi Ayarlayın
Pis'inizi Ayarlayın
Pis'inizi Ayarlayın
Pis'inizi Ayarlayın

Pis'i programlamaya başlamadan önce, bazı kurulumlar yapmamız gerekiyor. Pis'iniz için bir şifre girişiniz olduğundan emin olun. İlk önce SenseHat panolarını Pis'e fiziksel olarak bağlayacağız. Ardından gerekli SenseHat, Twilio ve Pyrebase kitaplıklarını kuracağız. Firebase gerçek zamanlı veritabanı, mobil cihazlar veya web siteleri için tasarlanmıştır. Ancak Pyrebase gibi bir yardımcı kitaplık ile Rest API üzerinden bulut veritabanını okuyup yazabiliyoruz.

SenseHat'ı bağlayın SenseHat'ların Pis'inize bağlı olduğundan emin olun. Alışılmadık bir durumunuz varsa, SenseHat'ı bağlamadan önce Pi'yi çıkarmanız gerekebilir.

Kütüphane Kurulumu Tüm kütüphane kurulumları Terminal üzerinden yapılacaktır.

  • Henüz yapmadıysanız Pis'inizi çalıştırın.
  • Açılışta, SenseHat'ınızda bu renkli LED gökkuşağını elde edersiniz! (resme bakın)
  • Terminale gidin ve güncelleme/dağıtım yükseltmesine gidin, şunu yazın:

    • sudo apt-get güncellemesi
    • sudo apt-get dağıtım yükseltme
  • Yükseltmeler yapıldıktan sonra, SenseHat kitaplıklarını kurmak için aşağıdakini yazın:

    sudo apt-get install sense-hat

  • Pyrebase'i yüklemek için şunu yazın:

    sudo pip kurulum pyrebase

  • Son olarak, Twilio'yu yükleyin

    sudo pip kurulum twilio

Adım 3: Pi1 için Python Komut Dosyası

Daha önce de belirttiğimiz gibi, Pi1 hareketi algılamak için kullanılacak olan Pi olacaktır. SenseHat'ın ivmeölçerin değerleri hareketi belirlemek için kullanılacaktır. Böylece, Pi1 için kod, ivmeölçer g kuvvet değerlerine erişme ve tespit edilen hareketleri Firebase Veritabanına kaydetme ile ilgili olacaktır. İşte süreç akışına genel bir bakış:

  • Pi1 hareket algılarsa, Firebase DB'deki "uyarılar" alt öğesine bir giriş ekler.
  • Pi1 ayrıca "notifypi2" çocuğunu hareketle ilgili bir bildirim mesajı ile güncelleyecektir.
  • Pi2, ardından "notifypi2" okur ve bildirimi LED matris ekranında görüntüler.

Takip etmeniz için Pi1 Python betiğini ekledim. Komut dosyasındaki yorumlar, kodun ne yaptığını açıklar.

Pi1 komut dosyası için ek notlar ve bilgiler

  • Firebase ve Twilio kurulumu için. Önceki adımlardan kopyaladığınız uygun API anahtarlarını, kimlikleri, şifreleri vb. doldurun.
  • Firebase kimlik doğrulamasıyla ilgili olarak, ekstra güvenlik için bu kimlik bilgilerini sabit kodlamak yerine kullanıcı girişi isteyebilirsiniz. Veritabanından her yazdığımızda veya okuduğumuzda, eklememiz gerekecek

    kullanıcı['idtoken'] ile

    get(), push(), set() yöntemler.

  • Pi'nin arabada veya kapalı bir ortamda aşırı ısınması durumunda müdahale edebilmemiz için CPU sıcaklığı gereklidir.
  • Negatif değerleri bilmemize gerek olmadığı için G kuvvetlerinin mutlak değerini de alıyoruz. Sadece G kuvvetleri olup olmadığını bilmemiz gerekiyor.
  • If ifadesi ivmeölçerin değerlerini kontrol edecektir. Herhangi bir yönde G kuvvetleri 1'den büyükse, Pi1 hareket süresini kaydedecek ve kendi LED ekranında bir ünlem işareti gösterecektir. Ayrıca "notifypi2" çocuğunu da güncelleyecektir. "notifypi2" güncellendiğinde, Pi2 bunu okuyacak ve "!!!" gösterecektir. Kullanıcıyı olası hareket/hırsızlıktan haberdar etmek için LED ekranında. Pi1 ayrıca kullanıcıya bir SMS hareket bildirimi gönderir.
  • push() yöntemini kullanırken, Firebase yeni bir girişle otomatik olarak bir alt öğe oluşturur. Bu, kaydedilen hareket verilerinin benzersiz olması için gerekliydi. set() yöntemi ise önceki verilerin üzerine yazacaktır.
  • Pi'nizin Firebase'den art arda veri istememesi için veritabanını kontrol etmek için 10 saniyelik döngü gereklidir. Firebase'e sürekli spam gönderirseniz, Google yaklaşık 10 dakika içinde oturumunuzu kapatır.
  • Firebase, jeton yenilenmezse her 60 dakikada bir kullanıcıyı dışarı atar. Yenilemeyi 1800 saniyeye (30 dakika) ayarladım.

Adım 4: Pi2 için Python Komut Dosyası

Pi2 için Python Komut Dosyası
Pi2 için Python Komut Dosyası

Fotoğrafa bakarsanız, bu olası hareket bildirimini gösteren Pi2'dir.

Pi2'nin komut dosyası, komut dosyasının hareketi algılamaması dışında Pi1 ile hemen hemen aynıdır. Pi2 yalnızca "notifypi2" alt öğesinden gelen bildirim mesajlarını görüntüler veya sıfırlar. Tek fark bu olduğundan, bunu aşağıda açıklayacağım.

  • Her 10 saniyede bir Pi2, görüntülemek için "notifypi2"yi kontrol edecektir. Görüntülenecek bir bildirim mesajı varsa, Pi2 kullanıcının görmesi için sürekli olarak görüntüler.
  • Yalnızca joystick düğmesine basılarak yapılan kullanıcı müdahalesi ile mesaj silinecek ve veritabanı tarafında sıfırlanacaktır.

Adım 5: Pis'i Test Edin

Image
Image
Pis'i test edin
Pis'i test edin

Pis'i test etme zamanı.

  • Sırasıyla Pis için komut dosyalarını çalıştırın.
  • Firebase'de oturum açın ve projeleriniz veritabanı bölümüne gidin.
  • Pi1'inizi sallayın, Pi1 LED ekranında kırmızı bir ünlem işareti görmelisiniz. Ayrıca bir SMS mesajı da almalısınız.
  • Veritabanını kontrol edin, uyarı girişleri görünmeye başlamalıdır. "notifypi2" de güncellenmelidir.
  • Pi2'ye bir göz atın. Ayrıca "!!!" kaydırmanız gerekir. Bu bildirim mesajını silmek için joystick'e basmanız yeterlidir. "notifypi2" sıfırlanmalıdır. Onaylamak için Firebase'inizi kontrol edin.
  • Pi1'i harekete karşı çok hassas bulursanız, Pi1 komut dosyasında eşiği 1G'nin üzerine yükseltin.

Her şey yolunda giderse, komut dosyalarınız çökmez. Artık çalışan bir bildirim sisteminiz var. Pi1 hareketleri veya titreşimleri algıladığında, Pi2'de bir SMS mesajı bildirimi ve görsel bir LED bildirimi alırsınız.

6. Adım: R-PiAlerts IOS Uygulamasını Oluşturma

R-PiAlerts IOS Uygulamasını Oluşturma
R-PiAlerts IOS Uygulamasını Oluşturma

iOS uygulamasını oluşturma zamanı! Uygulama oldukça basit olacak. LoginViewController ve ItemsTableViewController olacak. ItemsTableViewController, "uyarılar" alt öğesinden uyarı bildirimlerini görüntüler. Ayrıca uygulamadan veritabanı girişlerini de silebilirsiniz. Başınızı biraz ağrıtmak için, Firebase için çevrimiçi eğiticilere bakmayı planlıyorsanız, geçen yıl o dönemde büyük değişiklikler olduğundan, Mart 2016'dan sonraki eğiticileri aradığınızdan emin olun. Mart 2016'dan önceki her şey miras kalacak. Swift dosyalarıyla ilgileniyorum, lütfen koddaki yorumları inceleyin. Veritabanını okuyan bir Firebase uygulamasının nasıl oluşturulacağına dair ayrıntılı bir eğitim istiyorsanız, Ray Wunderlich'in öğreticisine göz atın.

iOS Projenize Genel Bakışınızı Kurun

  • Xcode'da tek bir görünüm iOS projesi oluşturun.
  • Paket tanımlayıcısını kopyalayın
  • Web sitesinde Firebase projenize gidin ve paket tanımlayıcısıyla bir info.plist dosyası oluşturun.
  • GoogleService-info.plist dosyasını projenize ekleyin. Bu info.plist yalnızca oluşturduğunuz belirli Firebase Projesi ile çalışır.
  • Xcode'dan çıkın ve Firebase'i Cocoapods aracılığıyla kurun. Auth ve Database'i kurduğunuzdan emin olun.
  • Xcode'u yeniden başlatın, ardından AppDelegate.swift'inizi Firebase için yapılandırın. Sadece 2 satır kod alır.

    Firebase'i içe aktar bir

    FIRApp.configure(). İsteğe bağlı olarak, Firebase, yalnızca 1 satır kod alan kalıcılık özelliğine sahiptir

    FIRDatabase.database().persistenceEnabled = true

  • Ayrıntılı kurulum adımları Firebase'in Web Sitesinde bulunabilir.

Uygulama, Firebase Veritabanıyla Nasıl Etkileşime Girer:

  • Uygulamanın kullanıcının kimliğini doğrulaması gerekecek.
  • Kimliği doğrulandıktan sonra uygulama, Firebase veritabanının anlık görüntüsünü alır ve bunu bir "Öğe" nesnesi olarak saklar.
  • Bahsedilen nesne bir diziyi dolduracaktır. Bahsedilen dizi tablo görünümünü doldurmak için kullanılacaktır.
  • Bir gözlemci, Firebase veritabanındaki değişiklikleri izleyecek ve bir anlık görüntü oluşturacaktır.
  • Değişiklikler algılandığında, dizi yeni anlık görüntüden eklenecektir.
  • Tablo görünümü daha sonra değişiklikleri göstermek için yeniden yüklenecektir.

Uygulamanın Nasıl Oluşturulacağına İlişkin Genel Anahat

  • Uygulamanın Xcode'un arayüz oluşturucusunda nasıl düzenlendiğine dair resme bir göz atın.
  • Arabirim oluşturucuda bir ViewController oluşturun ve özel sınıfı LoginViewController.swift'e yönlendirin.
  • E-posta ve şifre için metin alanları ekleyin. Şifre alanı için "Güvenli Metin Girişi"ni açmayı unutmayınız. Bir giriş düğmesi ekleyin.
  • Metin alanlarını ve düğmeyi LoginViewController.swift'e bağlayın. LoginViewController.swift, kimlik doğrulamasını yapacak.
  • Arayüz oluşturucuya bir Gezinti Denetleyicisi ekleyin. LoginViewController'dan Navigation Controller'a bir segue oluşturun. Segue'ye bir tanımlayıcı verdiğinizden emin olun.
  • Gezinme denetleyicisiyle birlikte gelen yeni tablo görünümünün özel sınıfını ItemsTableViewController. Swift'i işaret edecek şekilde ayarlayın. Ayrıca ItemsTableViewController'da 2 düğmem var: Oturumu Kapat ve bir Ekle düğmesi. Düğmeleri ItemsTableViewController.swift'e bağlayın.
  • LoginViewController. Swift koduyla ilgili. Kullanıcı, oturum açma kimlik bilgilerini girecek ve Firebase bir kullanıcı döndürecektir. Bir kullanıcı varsa, tanımlayıcı ile bir konuşma gerçekleştirir. (ekli koda bakın)
  • Item. Swift sınıfını ekleyin (ekli koda bakın)
  • ItemsTableViewController koduyla ilgili olarak, oldukça standart bir tablo görünümü kodudur. Öğe nesnesi olarak anlık görüntü olarak kaydedilen veritabanınızdaki değişiklikleri izlemek için bir gözlemci olacaktır. Ardından, Item nesnesi tablo görünümünü doldurmak için diziyi ekler. Ekle düğmesi, Pi1'in okuması ve görüntülemesi için Firebase veritabanında bir giriş ayarlar. Kıkırdamalar için kod da ekledim (ekli koda bakın)

7. Adım: Uygulamayı Test Edin

Uygulamayı Test Et
Uygulamayı Test Et
Uygulamayı Test Et
Uygulamayı Test Et
Uygulamayı Test Et
Uygulamayı Test Et

Uygulamanızı çalıştırın

  • Giriş yapın ve Pi1'inizi sallayın. Yeni uyarı bildirimlerinin göründüğünü görmeye başlamalısınız.
  • Ekle düğmesine dokunun ve Pi1'inizin mesajınızı görüntülemesini izleyin.
  • Sola kaydırın, "Uyarılar" girişlerinin kaldırıldığını görün.
  • Arka arkaya çok fazla bildirim mi alıyorsunuz? ivmeölçer eşiğini ayarlayın veya Pi1 komut dosyasındaki uyku süresini artırın.

Adım 8: Sonuç

Çözüm
Çözüm
Çözüm
Çözüm

Mükemmel! Artık hareketi algılayabilen ve size hareket bildirimleri gönderebilen Pis'imiz var. Üstelik, iOS cihazınızla uyarı mesajı günlüğünüzü yönetebilirsiniz! Pis'i dağıtma zamanı. Pi1'i kapınızın yanına ve Pi2'yi çalışma alanınızın çevresine koyun. Bir dahaki sefere biri geldiğinde, durumu kontrol edebilirsiniz! Ya da daha iyisi, pil takımıyla arabanızda Pi'de saklanmaya çalışın. Kapıları birkaç kez çarp, ne olduğunu gör!

Bu, bir Raspberry Pi ve Firebase ile neler yapabileceğinize dair olasılıkların yalnızca bir başlangıcıdır. SenseHat ayrıca çevresel sensörler, jiroskoplar ve bir pusula içerir. Ortamdaki belirli değişiklikleri günlüğe kaydetmek için Pis'inizi ayarlayabilirsiniz. Oyununuzu hızlandırmak ister misiniz? Pi'niz hareketleri algıladığında, bir kamera yakalama görüntüleri kullanın ve Pi'nin size fotoğrafları metin olarak göndermesini sağlayın. Ayrıca yüzleri tanımak için bir bilgisayarlı görme algoritması kullanmayı deneyin. Tanıdığınız birinin yüzüyse, bildirim alabilirsiniz! İyi eğlenceler!

Önerilen: