Isi kandungan:

R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis: 8 Langkah (dengan Gambar)
R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis: 8 Langkah (dengan Gambar)

Video: R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis: 8 Langkah (dengan Gambar)

Video: R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis: 8 Langkah (dengan Gambar)
Video: Di jejak Peradaban Kuno? 🗿 Bagaimana jika kita telah keliru tentang masa lalu kita? 2024, November
Anonim
Image
Image
R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis
R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis
R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis
R-PiAlerts: Bina Sistem Keselamatan Berasaskan WiFi Dengan Raspberry Pis

Semasa bekerja di meja anda, tiba-tiba anda terdengar bunyi yang jauh. Adakah seseorang baru pulang? Kereta saya diparkir di depan rumah saya, adakah seseorang melanggar kereta saya? Tidakkah anda ingin mendapat pemberitahuan di telefon atau di meja anda sehingga anda dapat memutuskan untuk menyiasat atau tidak? Baiklah soalan lagi! R-PiAlerts ada di sini!

Apa itu R-PiAlerts? R-PiAlerts adalah sistem keselamatan berasaskan Raspberry Pi3 yang dibina di sekitar Firebase's Cloud. Sekiranya pergerakan dikesan, sistem akan memberitahu pengguna tentang kemungkinan gangguan dengan pesanan teks dan paparan LED yang berkelip (penggera visual senyap). Setelah pengguna menerima pemberitahuan, dia dapat menyiasat. Semua pergerakan yang dikesan akan dilog masuk ke pangkalan data Firebase. Selain melihat log pergerakan pada penyemak imbas web, pengguna juga dapat mengakses log pergerakan melalui aplikasi iOS. Saya memutuskan untuk membina ini kerana kenaikan kerosakan kenderaan dan kediaman di sekitar kawasan saya baru-baru ini.

Mengapa Pi3? Saya memerlukan sesuatu yang kecil yang dapat mengesan pergerakan dan kehabisan bateri jika diperlukan. Kemudian, saya dapat menyembunyikan unit di belakang pintu atau di dalam kereta. Unit ini juga mesti dapat menghantar pemberitahuan atau makluman kepada saya. Pi3 dapat melakukan semua perkara ini dengan wifi terpasang dan kemampuannya untuk melancarkan pek bateri USB. Sebab lain mengapa saya memilih Pi3:

  • Pi agak murah
  • Mudah digunakan dan ditingkatkan
  • Ia boleh dikonfigurasi dari sudut perisian
  • Keupayaan untuk menggunakan paparan dan sensor. Projek ini akan menggunakan SenseHat
  • Operasikan tanpa kepala (tanpa monitor, papan kekunci atau tetikus)

Bagaimanakah ia berfungsi

  • Sebaik-baiknya pengguna memerlukan 2 Raspberry Pis yang disambungkan ke pangkalan data Firebase, tetapi satu Pi juga akan berfungsi.
  • Menggunakan SenseHat, Pi pertama (Pi1) akan mengesan pergerakan dengan pecutan sementara Pi kedua (Pi2) akan memaparkan pemberitahuan pergerakan.
  • Apabila Pi1 mengesan pergerakan, ia melakukan 3 perkara
    • pergerakan log ke pangkalan data
    • buat entri pemberitahuan pada pangkalan data untuk ditunjukkan oleh Pi2
    • menghantar pengguna mesej teks yang memberitahu pengguna pergerakan.
  • Apabila Pi2 mengesan pemberitahuan untuk dipaparkan dari pangkalan data, dua perkara berlaku

    • Paparan LED Pi2 akan menunjukkan pemberitahuan secara berterusan
    • Pengguna dapat membersihkan pemberitahuan dengan menekan butang Pi2 SenseHat. Ini juga akan membersihkan entri pemberitahuan di pangkalan data.
  • Dengan aplikasi iOS, pengguna dapat

    • mengakses pangkalan data; membaca dan memadam log pergerakan
    • pengguna boleh menghantar Pi1 untuk memaparkan mesej pada paparan LED Pi1.

Aplikasi Praktikal

  1. Sekiranya anda meletak kenderaan di jalan dalam jarak wifi. Pasang pek bateri ke Pi1 (lihat gambar). Sembunyikan Pi1 di dalam kereta anda. Letakkan Pi2 di tempat yang mudah dilihat seperti di sebelah meja anda (lihat gambar).
  2. Aplikasi lain adalah meletakkan Pi1 di rumah anda di sebelah pintu. Pi sangat kecil sehingga kebanyakan orang tidak akan menyedarinya terutama jika di belakang sisi engsel (lihat gambar). Kemudian letakkan Pi2 anda di meja kerja anda.
  3. Anjing masuk ke tempat di rumah itu tidak sepatutnya? Letakkan Pi1 di kawasan itu. Pastikan anda memasukkan Pi ke dalam kotak yang kukuh agar anjing anda tidak mengunyahnya.

Selagi Pis anda berada dalam jangkauan wifi, mereka dapat memberi amaran atau memberi tahu anda mengenai pergerakan. Sekiranya anda tidak memiliki Pi kedua, anda hanya dapat menggunakan Pi1 untuk mengesan pergerakan dan menerima pemberitahuan SMS melalui telefon bimbit anda.

Bil bahan

  • Dua (2) Raspberry Pi 3s yang menjalankan Raspbian (Raspberry Pi 2 akan berfungsi juga dengan wifi dongle)
  • Dua (2) Topi Sense
  • Peranti Mac dan iOS

Perisian Diperlukan

  • Perpustakaan Pyrebase (menyambung ke Firebase)
  • Perpustakaan SenseHat (untuk mengakses pecutan dan paparan LED)
  • Perpustakaan Twilio (untuk menghantar SMS)
  • Python 3, dibina dengan Raspbian terkini
  • Raspbian dengan IDLE
  • Xcode8 dan Cocoapod pada Mac anda
  • Kesediaan untuk belajar dan meneroka

Nota Samping Ini bukan satu-satunya penyelesaian keselamatan berdasarkan Pi. Sekiranya anda mempunyai idea, cadangan, atau hanya mahu mengubah kod saya, sila tinggalkan komen di bawah! =)

Langkah 1: Sediakan Akaun Firebase dan Twilio

Sediakan Akaun Firebase dan Twilio
Sediakan Akaun Firebase dan Twilio
Sediakan Akaun Firebase dan Twilio
Sediakan Akaun Firebase dan Twilio

Pertama, sebelum kita mula bermain-main dengan Pis kita, kita perlu menyiapkan Firebase dan Twilio. Firebase adalah backend Google sebagai perkhidmatan. Firebase merangkumi ciri seperti pangkalan data, pemesejan awan, pengesahan, penyimpanan, dll. Untuk projek ini, kami hanya perlu menggunakan pangkalan data dan pengesahan masa nyata Firebase. Pengesahan akan diperlukan untuk membaca dan menulis ke pangkalan data Firebase anda. Untuk menyediakan Firebase:

  1. Daftar untuk akaun Firebase percuma
  2. Pergi ke konsol. Buat projek baru dan beri nama.
  3. Di bawah menu sebelah kiri, klik "Gambaran Keseluruhan"
  4. Klik "Tambahkan Firebase ke aplikasi web anda", salin APIKey dan projectid anda (bukan url). Project ID terletak di URL yang berbeza seperti pangkalan data:
  5. Di bawah menu sebelah kiri, klik pada "Pengesahan". Pergi ke "Kaedah Masuk" dan aktifkan "E-mel / Kata Laluan"
  6. Di bawah "Pengguna" buat akaun pengguna baru dengan e-mel / kata laluan pilihan anda. Anda akan menggunakan kelayakan ini untuk log masuk ke pangkalan data.
  7. Di bawah menu kiri, pergi ke "Pangkalan Data"
  8. Ini adalah Pangkalan Data anda. Ia kosong sekarang. Apabila diisi, ia akan dalam format JSON. URL mestilah sama dengan yang anda lihat sebelumnya.

Twilio membolehkan pembangun menghantar mesej kepada pelanggan mereka. Kami akan menggunakannya untuk mengirim SMS ke telefon anda ketika Pi mengesan pergerakan. Twilio akan memberi anda nombor telefon untuk menghantar SMS. Untuk menyediakan Twilio:

  1. Daftar untuk akaun percuma di laman web Twilio
  2. SalinSID dan authToken akaun anda
  3. Klik pada "Sekatan Percubaan" dan pilih "dapatkan nombor telefon Twilio pertama anda"
  4. Salin nombor telefon baru anda

Langkah 2: Sediakan Pis Anda

Sediakan Pis Anda
Sediakan Pis Anda
Sediakan Pis Anda
Sediakan Pis Anda

Sebelum kita dapat memulakan program Pis, kita perlu melakukan beberapa persediaan. Pastikan anda mempunyai kata laluan untuk Pis anda. Mula-mula kita secara fizikal akan menghubungkan papan SenseHat ke Pis. Seterusnya, kami akan memasang perpustakaan SenseHat, Twilio dan Pyrebase yang diperlukan. Pangkalan data masa nyata Firebase direka untuk peranti mudah alih atau laman web. Namun, kita dapat membaca dan menulis pangkalan data awan melalui Rest API dengan perpustakaan pembantu seperti Pyrebase.

Sambungkan SenseHat Pastikan SenseHats disambungkan ke Pis anda. Sekiranya anda mempunyai kes yang tidak biasa, anda mungkin perlu mengeluarkan Pi sebelum menyambungkan SenseHat.

Memasang Perpustakaan Semua pemasangan perpustakaan akan dilakukan di Terminal

  • Boot Pis anda jika anda belum melakukannya.
  • Semasa boot, anda mendapat pelangi LED berwarna di SenseHat anda! (lihat gambar)
  • Pergi ke terminal dan kemas kini / dist-upgrade, ketik:

    • sudo apt-get kemas kini
    • sudo apt-get dist-upgrade
  • Setelah peningkatan dilakukan, taipkan yang berikut untuk memasang perpustakaan SenseHat:

    sudo apt-get install sense-hat

  • Untuk memasang Pyrebase, ketik:

    sudo pip pasang pyrebase

  • Akhir sekali, pasang Twilio

    sudo pip pasang twilio

Langkah 3: Skrip Python untuk Pi1

Seperti yang telah kami sebutkan sebelumnya, Pi1 akan menjadi Pi yang akan digunakan untuk mengesan pergerakan. Nilai akselerometer SenseHat akan digunakan untuk menentukan pergerakan. Oleh itu, kod untuk Pi1 berada di sekitar mengakses nilai kekuatan akselerometer dan mencatat pergerakan yang dikesan ke Pangkalan Data Firebase. Berikut adalah gambaran keseluruhan aliran proses:

  • Sekiranya Pi1 mengesan pergerakan, ia akan menambah entri pada anak "amaran" di Firebase DB.
  • Pi1 juga akan mengemas kini anak "notifypi2" dengan mesej pemberitahuan mengenai pergerakannya.
  • Pi2, kemudian membaca "notifypi2" dan memaparkan pemberitahuan pada paparan matriks LEDnya.

Saya telah memasukkan skrip Pi1 Python untuk anda ikuti. Komen dalam skrip menjelaskan apa yang dilakukan kod tersebut.

Catatan dan pandangan tambahan untuk skrip Pi1

  • Untuk persediaan Firebase dan Twilio. Isi kunci API, ID, kata laluan, dan lain-lain yang anda salin dari langkah sebelumnya.
  • Mengenai pengesahan Firebase, untuk keselamatan tambahan, anda boleh meminta input pengguna dan bukannya menggunakan kod kelayakan ini. Setiap kali kita menulis atau membaca dari pangkalan data, kita perlu memasukkannya

    pengguna ['idtoken'] dengan ika

    dapatkan (), tekan (), tetapkan () kaedah.

  • Suhu CPU diperlukan agar kita dapat campur tangan sekiranya Pi terlalu panas di dalam mobil atau di lingkungan tertutup.
  • Kami juga mengambil nilai mutlak daya G kerana kita tidak perlu mengetahui nilai negatif. Kita hanya perlu mengetahui sama ada terdapat kekuatan G.
  • Sekiranya penyataan akan memeriksa nilai pecutan. Sekiranya daya G lebih besar dari 1 ke arah mana pun, Pi1 akan mencatat masa pergerakan dan memaparkan tanda seru pada paparan LEDnya sendiri. Ia juga akan mengemas kini anak "notifypi2". Apabila "notifypi2" dikemas kini, Pi2 akan membacanya dan memaparkan "!!!" pada paparan LEDnya untuk memberitahu pengguna kemungkinan pergerakan / pemecahan. Pi1 juga akan mengirim pengguna pemberitahuan SMS mengenai pergerakan.
  • Semasa menggunakan kaedah push (), Firebase akan menghasilkan anak secara automatik dengan entri baru. Ini diperlukan supaya data pergerakan yang dicatat menjadi unik. kaedah set () sebaliknya akan menimpa data sebelumnya.
  • Gelung 10 saat untuk memeriksa pangkalan data diperlukan agar Pi anda tidak berulang kali meminta data dari Firebase. Sekiranya anda terus menghantar spam ke Firebase, Google akan log keluar anda dalam masa 10 minit.
  • Firebase juga akan mengeluarkan pengguna setiap 60 minit sekiranya token tidak disegarkan. Saya mempunyai set penyegaran hingga 1800 saat (30 minit).

Langkah 4: Skrip Python untuk Pi2

Skrip Python untuk Pi2
Skrip Python untuk Pi2

Jika anda melihat foto tersebut, itu adalah Pi2 yang menampilkan pemberitahuan kemungkinan pergerakan.

Skrip Pi2 hampir sama dengan Pi1 kecuali skrip tidak mengesan pergerakan. Pi2 hanya memaparkan atau menetapkan semula pesan pemberitahuan dari anak "notifypi2". Oleh kerana itulah satu-satunya perbezaan, saya akan menerangkannya di bawah.

  • Setiap 10 saat, Pi2 akan memeriksa "notifypi2" untuk dipaparkan. Sekiranya ada pesan pemberitahuan untuk ditampilkan, Pi2 akan memaparkannya secara berterusan sehingga pengguna melihatnya.
  • Hanya campur tangan pengguna dengan menekan butang joystick yang akan membersihkan dan menetapkan semula mesej di sebelah pangkalan data.

Langkah 5: Uji Pis

Image
Image
Uji Pis
Uji Pis

Masa untuk menguji Pis.

  • Jalankan skrip untuk Pis masing-masing.
  • Log masuk ke Firebase dan pergi ke bahagian pangkalan data projek anda.
  • Goncangkan Pi1 anda, anda akan melihat tanda seru merah pada paparan LED Pi1. Anda juga harus mendapat pesanan SMS.
  • Periksa pangkalan data, catatan amaran harus mula muncul. "notifypi2" juga harus dikemas kini.
  • Lihatlah Pi2. Anda juga harus menatal "!!!" Untuk membersihkan mesej pemberitahuan ini, cukup tekan pada joystick. "notifypi2" harus diset semula. Periksa Firebase anda untuk mengesahkan.
  • Sekiranya anda mendapati Pi1 terlalu sensitif terhadap pergerakan, tingkatkan ambang ke lebih besar daripada 1G dalam skrip Pi1.

Sekiranya semuanya berjalan lancar, skrip anda tidak akan rosak. Sekarang, anda mempunyai sistem pemberitahuan yang berfungsi. Setelah Pi1 mengesan pergerakan atau getaran, anda akan mendapat pemberitahuan mesej SMS dan pemberitahuan LED visual pada Pi2.

Langkah 6: Membangun Aplikasi IOS R-PiAlerts

Membina Aplikasi IOS R-PiAlerts
Membina Aplikasi IOS R-PiAlerts

Masa untuk membina aplikasi iOS! Aplikasi akan cukup mudah. Ia akan mempunyai LoginViewController dan ItemsTableViewController. ItemsTableViewController akan memaparkan pemberitahuan amaran dari anak "amaran". Seseorang juga boleh menghapus entri pangkalan data dari aplikasi. Untuk menjimatkan sakit kepala, jika anda merancang untuk melihat tutorial dalam talian untuk Firebase, pastikan anda mencari tutorial bertarikh selepas Mac 2016 kerana terdapat perubahan besar tahun lalu sekitar waktu itu. Apa sahaja sebelum Mac 2016 akan menjadi warisan. Saya berminat dengan fail pantas, sila semak komen dalam kod. Sekiranya anda mahukan tutorial terperinci mengenai cara membuat aplikasi Firebase yang membaca pangkalan data, lihat tutorial Ray Wunderlich.

Sediakan Gambaran Keseluruhan Projek iOS Anda

  • Buat projek iOS satu paparan dalam Xcode.
  • Salin pengenal kumpulan
  • Pergi ke projek Firebase anda di laman web dan buat fail info.plist dengan pengenal kumpulan.
  • Tambahkan fail GoogleService-info.plist ke projek anda. Info.plist ini hanya berfungsi dengan Projek Firebase tertentu yang anda buat.
  • Tutup Xcode dan pasang Firebase melalui Cocoapods. Pastikan memasang Auth dan Pangkalan Data.
  • Mulakan semula Xcode, kemudian konfigurasikan AppDelegate.swift anda untuk Firebase. Hanya memerlukan 2 baris kod.

    Import Firebase sebuah

    FIRApp.configure (). Sebagai pilihan, Firebase mempunyai ciri ketekunan yang hanya memerlukan 1 baris kod

    FIRDatabase.database (). KegigihanEnabled = true

  • Langkah-langkah pemasangan terperinci boleh didapati di Laman Web Firebase

Bagaimana Aplikasi Berinteraksi dengan Pangkalan Data Firebase:

  • Aplikasi ini perlu mengesahkan pengguna.
  • Setelah disahkan, aplikasi mengambil gambar pangkalan data Firebase dan menyimpannya sebagai objek "Item".
  • Objek tersebut akan mengisi larik. Susunan tersebut akan digunakan untuk mengisi paparan jadual.
  • Seorang pemerhati akan memerhatikan perubahan pada pangkalan data Firebase dan membuat snapshot.
  • Setelah perubahan dikesan, array akan ditambahkan dari snapshot baru.
  • Tableview kemudian akan dimuat semula untuk menunjukkan perubahan.

Garis Besar Umum Cara Membangun Aplikasi

  • Lihat gambar bagaimana aplikasi dibentangkan di pembangun antara muka Xcode.
  • Buat ViewController dalam pembangun antara muka dan arahkan kelas khusus ke LoginViewController.swift.
  • Tambahkan medan teks untuk e-mel dan kata laluan. Jangan lupa untuk menghidupkan "Secure Text Entry" untuk medan kata laluan. Tambahkan butang log masuk.
  • Pautkan medan teks dan butang ke LoginViewController.swift. LoginViewController.swift akan mengendalikan pengesahan.
  • Tambahkan Pengawal Navigasi dalam pembina antara muka. Buat segue dari LoginViewController ke Navigation Controller. Pastikan untuk memberikan pengenalan kepada segue.
  • Tetapkan kelas khusus tontonan jadual baru yang disertakan dengan pengawal navigasi ke titik ItemsTableViewController.swift. Saya juga mempunyai 2 butang pada ItemsTableViewController: Logout dan butang Tambah. Pautkan butang ke ItemsTableViewController.swift.
  • Mengenai kod LoginViewController.swift. Pengguna akan memasukkan kelayakan masuk dan Firebase akan mengembalikan pengguna. Sekiranya pengguna hadir, pengguna akan melakukan segue dengan pengecam. (lihat kod yang dilampirkan)
  • Tambahkan kelas Item.swift (lihat kod yang dilampirkan)
  • Mengenai kod ItemsTableViewController, ini adalah kod paparan jadual yang cukup standard. Akan ada pemerhati untuk memantau perubahan pada pangkalan data anda yang disimpan sebagai snapshot sebagai objek Item. Kemudian objek Item akan menambahkan array untuk mengisi paparan jadual. Butang Tambah menetapkan entri dalam pangkalan data Firebase agar Pi1 dapat dibaca dan dipaparkan. Untuk tertawa, saya juga menambah kod (lihat kod terlampir)

Langkah 7: Uji Aplikasi

Uji Aplikasi
Uji Aplikasi
Uji Aplikasi
Uji Aplikasi
Uji Aplikasi
Uji Aplikasi

Jalankan aplikasi anda

  • Log masuk dan goncangkan Pi1 anda. Anda harus mula melihat pemberitahuan amaran baru muncul.
  • Ketuk butang tambah dan lihat Pi1 anda memaparkan mesej anda.
  • Leret ke kiri, lihat entri "Makluman" dikeluarkan.
  • Menerima terlalu banyak pemberitahuan berturut-turut? sesuaikan ambang pecutan atau tingkatkan waktu tidur dalam skrip Pi1.

Langkah 8: Kesimpulannya

Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya

Hebat! Sekarang kami mempunyai Pis yang dapat mengesan pergerakan dan mengirimkan pemberitahuan pergerakan kepada anda. Selain itu, anda boleh menguruskan log mesej amaran anda dengan peranti iOS anda! Masa untuk menggunakan Pis. Letakkan Pi1 di sebelah pintu anda dan Pi2 di sekitar kawasan kerja anda. Apabila seseorang masuk, anda boleh melihat keadaannya! Atau lebih baik lagi, cuba bersembunyi di Pi di dalam kereta anda dengan pek bateri. Tepuk pintu beberapa kali, lihat apa yang berlaku!

Ini hanya permulaan untuk kemungkinan yang boleh anda lakukan dengan Raspberry Pi dan Firebase. The SenseHat juga merangkumi sensor persekitaran, gyros, dan kompas. Anda boleh mengatur Pis anda untuk mencatat perubahan tertentu ke persekitaran. Ingin meningkatkan permainan anda? Apabila Pi anda mengesan pergerakan, gunakan kamera merakam gambar dan beri Pi gambar anda foto. Cuba juga menggunakan algoritma penglihatan komputer untuk mengenali wajah. jika itu adalah wajah orang yang anda kenali, anda boleh diberitahu! Berseronok!

Disyorkan: