Talaan ng mga Nilalaman:

R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis: 8 Hakbang (na may Mga Larawan)
R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis: 8 Hakbang (na may Mga Larawan)

Video: R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis: 8 Hakbang (na may Mga Larawan)

Video: R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis: 8 Hakbang (na may Mga Larawan)
Video: 30 окончательных прогнозов и подсказок на 2020 год 2024, Nobyembre
Anonim
Image
Image
R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis
R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis
R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis
R-PiAlerts: Bumuo ng isang Sistema ng Security na Batay sa WiFi Sa Raspberry Pis

Habang nagtatrabaho sa iyong desk, biglang naririnig mo ang isang malayong ingay. May umuwi lang ba? Ang aking sasakyan ay nakaparada sa harap ng aking bahay, may sumabog sa aking sasakyan? Hindi mo ba nais na makakuha ka ng abiso sa iyong telepono o sa iyong desk upang makapasya ka kung mag-iimbestiga o hindi? Kaya hindi na magtanong pa! Narito na ang R-PiAlerts!

Ano ang R-PiAlerts? Ang R-PiAlerts ay isang sistemang seguridad batay sa Raspberry Pi3 na binuo sa paligid ng Cloud ng Firebase. Kung nakita ang paggalaw, aabisuhan ng system ang gumagamit ng isang potensyal na break-in gamit ang isang text message at isang kumikislap na LED display (tahimik na visual alarm ng mga uri). Kapag natanggap ng isang gumagamit ang isang notification, maaari siyang mag-imbestiga. Ang lahat ng kilalang kilusan ay mai-log sa Firebase database. Bukod sa pagtingin sa log ng kilusan sa isang web browser, maaari ring ma-access ng gumagamit ang log ng kilusan sa pamamagitan ng isang iOS app. Napagpasyahan kong itayo ito dahil sa kasalukuyang pagtaas ng break-in sa parehong mga sasakyan at bahay sa paligid ng aking lugar.

Bakit ang Pi3? Kailangan ko ng isang maliit na makakakita ng paggalaw at maubusan ng baterya kung kinakailangan. Pagkatapos, maitatago ko ang yunit sa likod ng isang pintuan o sa isang kotse. Gayundin ang yunit ay kailangang makapagpadala sa akin ng mga notification o alerto. Magagawa ng Pi3 ang lahat ng mga bagay na ito sa built in na wifi at ang kakayahang tumakbo sa isang USB baterya pack. Iba pang mga kadahilanan kung bakit pinili ko ang Pi3:

  • Ang Pi ay medyo mura
  • Madali nitong i-deploy at i-scale up
  • Maaaring i-configure ito mula sa pananaw ng software
  • Kakayahang gumamit ng mga display at sensor. Gagamitin ng proyektong ito ang SenseHat
  • Magpapatakbo ng Walang Head (walang monitor, keyboard o mouse)

Paano Ito Gumagana

  • Mainam na mangangailangan ang gumagamit ng 2 Raspberry Pis na konektado sa Firebase database, ngunit gagana rin ang isang solong Pi.
  • Ang paggamit ng SenseHat, ang unang Pi (Pi1) ay makakakita ng paggalaw gamit ang accelerometer habang ang pangalawang Pi (Pi2) ay magpapakita ng mga abiso ng paggalaw.
  • Kapag nakita ng Pi1 ang paggalaw, 3 bagay ang ginagawa nito

    • paggalaw ng log sa database
    • lumikha ng isang entry sa abiso sa database upang maipakita ang Pi2
    • padalhan ang gumagamit ng isang text message na aabisuhan ang gumagamit ng paggalaw.
  • Kapag nakita ni Pi2 ang isang notification na ipapakita mula sa database, dalawang bagay ang nangyayari

    • Ipinapakita ng LED display ng Pi2 ang notification nang tuloy-tuloy
    • Maaaring i-clear ng gumagamit ang abiso sa pamamagitan ng pagpindot sa pindutan ng Pi2 SenseHat. Malilinaw din nito ang pagpasok ng abiso sa database.
  • Gamit ang iOS app, magagawa ng gumagamit

    • i-access ang database; basahin at tanggalin ang log ng kilusan
    • maaaring magpadala ang gumagamit ng Pi1 upang maipakita ang isang mensahe sa LED display na Pi1.

Mga Praktikal na Aplikasyon

  1. Kung iparada mo sa kalye ang iyong sasakyan sa loob ng saklaw ng wifi. Maglakip ng isang pack ng baterya sa Pi1 (tingnan ang larawan). Itago ang Pi1 sa iyong kotse. Ilagay ang Pi2 sa isang lugar na madaling makita tulad ng sa tabi ng iyong desk (tingnan ang larawan).
  2. Ang isa pang aplikasyon ay upang ilagay ang Pi1 sa iyong bahay sa gilid ng isang pintuan. Napakaliit ng Pi na hindi napapansin ng karamihan sa mga tao lalo na kung nasa likod ng bisagra na bahagi (tingnan ang larawan). Pagkatapos ay ilagay ang iyong Pi2 sa iyong desk ng trabaho.
  3. Ang aso ay pumapasok sa isang lugar sa bahay hindi ito dapat ipagpalagay? Maglagay ng Pi1 sa lugar na iyon. Tiyaking inilagay mo ang Pi sa isang matibay na kahon upang hindi ito ngunguya ng iyong aso.

Hangga't ang iyong Pis ay nasa saklaw ng wifi, maaari ka nilang alerto o abisuhan tungkol sa paggalaw. Kung wala kang pangalawang Pi, maaari mo lamang gamitin ang Pi1 upang makita ang paggalaw at makatanggap ng mga notification sa SMS sa pamamagitan ng iyong cell phone.

Bill ng Mga Materyales

  • Dalawang (2) Raspberry Pi 3s na tumatakbo sa Raspbian (gagana rin ang Raspberry Pi 2 sa isang wifi dongle)
  • Dalawang (2) SenseHats
  • Ang aparato ng Mac at iOS

Kailangan ng Software

  • Pyrebase library (kumokonekta sa Firebase)
  • SenseHat library (para sa pag-access sa accelerometer at LED display)
  • Twilio library (para sa pagpapadala ng SMS)
  • Ang sawa 3, na naka-built in na may pinakabagong Raspbian
  • Raspbian na may IDLE
  • Xcode8 at Cocoapods sa iyong Mac
  • Handang malaman at tuklasin

Side NoteHindi ito ang tanging solusyon sa seguridad batay sa Pi. Kung mayroon kang anumang mga ideya, mungkahi, o nais lamang refactor ang aking code, mangyaring mag-iwan ng isang puna sa ibaba! =)

Hakbang 1: I-setup ang Mga Firebase at Twilio Account

I-setup ang Mga Firebase at Twilio Account
I-setup ang Mga Firebase at Twilio Account
I-setup ang Mga Firebase at Twilio Account
I-setup ang Mga Firebase at Twilio Account

Una, bago namin simulan ang pagkalikot sa aming Pis, kailangan naming i-setup ang Firebase at Twilio. Ang Firebase ay ang backend ng Google bilang isang serbisyo. Ang Firebase ay may kasamang mga tampok tulad ng database, cloud messaging, pagpapatotoo, imbakan, atbp. Para sa proyektong ito, kakailanganin lamang naming gamitin ang reebime database at pagpapatotoo ng Firebase. Kakailanganin ang pagpapatotoo upang mabasa at sumulat sa iyong Firebase database. Upang i-setup ang Firebase:

  1. Magrehistro para sa isang libreng Firebase account
  2. Pumunta sa console. Lumikha ng isang bagong proyekto at bigyan ito ng isang pangalan.
  3. Sa ilalim ng kaliwang menu, mag-click sa "Pangkalahatang-ideya"
  4. I-click ang "Magdagdag ng Firebase sa iyong web app", kopyahin ang iyong APIKey at napilitan (hindi ang url). Ang Project ID ay matatagpuan sa iba't ibang mga URL tulad ng database:
  5. Sa ilalim ng kaliwang menu, mag-click sa "Pagpapatotoo". Pumunta sa "Paraan ng Pag-sign in" at paganahin ang "Email / Password"
  6. Sa ilalim ng "Gumagamit" lumikha ng isang bagong account ng gumagamit na may email / password na iyong pinili. Gagamitin mo ang kredensyal na ito upang mag-log in sa database.
  7. Sa ilalim ng kaliwang menu, pumunta sa "Database"
  8. Ito ang iyong Database. Walang laman ito ngayon. Kapag napunan, ito ay nasa format na JSON. Ang URL ay dapat na kapareho ng isa na nakita mo nang mas maaga.

Pinapayagan ng Twilio na magpadala ng mga mensahe sa kanilang mga customer. Gagamitin namin ito upang magpadala ng SMS sa iyong telepono kapag nakita ng Pi ang paggalaw. Bibigyan ka ni Twilio ng isang numero ng telepono upang magpadala ng SMS. Upang i-setup ang Twilio:

  1. Mag-sign up para sa isang libreng account sa site ni Twilio
  2. Kopyahin ang iyong accountSID at authToken
  3. Mag-click sa "Mga Paghihigpit sa Pagsubok" at piliin ang "kunin ang iyong unang numero ng telepono ng Twilio"
  4. Kopyahin ang iyong bagong numero ng telepono

Hakbang 2: I-set up ang Iyong Pis

I-set up ang Iyong Pis
I-set up ang Iyong Pis
I-set up ang Iyong Pis
I-set up ang Iyong Pis

Bago namin masimulan ang pag-program ng Pis, kailangan naming gumawa ng ilang pag-setup. Tiyaking mayroon kang isang pag-login sa password para sa iyong Pis. Una ay pisikal na ikonekta namin ang mga board ng SenseHat sa Pis. Susunod, mai-install namin ang kinakailangang mga library ng SenseHat, Twilio at Pyrebase. Ang Firebase real time database ay dinisenyo para sa mga mobile device o website. Gayunpaman, maaari naming basahin at isulat ang cloud database sa pamamagitan ng Rest API na may isang helper library tulad ng Pyrebase.

Ikonekta ang SenseHatMakatiyak na ang SenseHats ay konektado sa iyong Pis. Kung mayroon kang isang hindi pangkaraniwang kaso, maaaring kailanganin mong alisin ang Pi bago ikonekta ang SenseHat.

Pag-install ng Mga Aklatan Lahat ng mga pag-install ng library ay magagawa sa Terminal

  • I-boot up ang iyong Pis kung hindi mo pa ito nagagawa.
  • Sa bootup, nakukuha mo ang makulay na LED na bahaghari sa iyong SenseHat! (tingnan ang larawan)
  • Pumunta sa terminal at i-update / dist-upgrade, uri:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Matapos magawa ang mga pag-upgrade, i-type ang sumusunod upang mai-install ang mga library ng SenseHat:

    sudo apt-get install na sense-hat

  • Upang mai-install ang Pyrebase, i-type:

    sudo pip install pyrebase

  • Panghuli, i-install ang Twilio

    sudo pip install twilio

Hakbang 3: Python Script para sa Pi1

Tulad ng nabanggit namin kanina, ang Pi1 ay ang Pi na gagamitin upang makita ang paggalaw. Gagamitin ang mga halaga ng accelerometer ng SenseHat upang matukoy ang paggalaw. Sa gayon, ang code para sa Pi1 ay nasa paligid ng pag-access sa mga halaga ng lakas ng accelerometer g at pag-log ng mga kilos na nakita sa Firebase Database. Narito ang isang pangkalahatang ideya ng daloy ng proseso:

  • Kung nakita ng Pi1 ang paggalaw, magdaragdag ito ng isang entry sa "mga alerto" na bata sa Firebase DB.
  • I-a-update din ni Pi1 ang bata na "notifypi2" na may isang mensahe sa pag-abiso patungkol sa paggalaw.
  • Ang Pi2, pagkatapos ay binabasa ang "notifypi2" at ipakita ang abiso sa display ng LED matrix nito.

Isinama ko ang Pi1 Python script para sundin mo. Ang mga komento sa iskrip ay nagpapaliwanag kung ano ang ginagawa ng code.

Mga karagdagang tala at pananaw para sa script ng Pi1

  • Para sa pag-set up ng Firebase at Twilio. Punan ang naaangkop na mga API key, ID, password, atbp na iyong kinopya mula sa mga nakaraang hakbang.
  • Tungkol sa pagpapatotoo ng Firebase, para sa labis na seguridad, maaari kang humiling ng pag-input ng gumagamit sa halip na hard coding ang mga kredensyal na ito. Sa tuwing nagsusulat o nagbasa kami mula sa database, kakailanganin naming isama

    gumagamit ['idtoken'] kasama ang ika

    kumuha (), itulak (), itakda () paraan.

  • Kailangan ang temperatura ng CPU upang makagambala kami kung sakaling ang overheat ng Pi sa isang kotse o isang saradong kapaligiran.
  • Kinukuha rin namin ang ganap na halaga ng mga puwersang G dahil hindi namin kailangang malaman ang mga negatibong halaga. Kailangan lamang nating malaman kung may mga puwersang G.
  • Kung susuriin ng pahayag ang mga halaga ng accelerometer. Kung ang mga puwersa ng G ay higit sa 1 sa anumang direksyon, i-log ng Pi1 ang oras ng paggalaw at ipapakita ang isang tandang padamdam sa sarili nitong LED display. I-a-update din nito ang "notifypi2" na bata. Kapag na-update ang "notifypi2", basahin ito ng Pi2 at ipapakita ang "!!!" sa LED display nito upang abisuhan ang gumagamit ng posibleng paggalaw / break-in. Magpadala rin ang Pi1 sa gumagamit ng isang notification sa SMS ng paggalaw.
  • Kapag ginagamit ang push () na pamamaraan, ang Firebase ay magpapasimula sa isang bata na may bagong entry. Kailangan ito upang ang data ng naka-log na kilusan ay magiging kakaiba. ang set () na pamamaraan sa kabilang banda ay mag-o-overlap sa nakaraang data.
  • 10 segundo loop upang suriin ang database ay kinakailangan upang ang iyong Pi ay hindi paulit-ulit na humiling ng data mula sa Firebase. Kung magpapatuloy kang mag-spam sa Firebase, mai-log out ka ng Google sa loob ng 10 minuto.
  • Sisipain din ng Firebase ang gumagamit tuwing 60 minuto kung ang token ay hindi na-refresh. Mayroon akong pag-refresh na nakatakda sa 1800 segundo (30 min).

Hakbang 4: Python Script para sa Pi2

Python Script para sa Pi2
Python Script para sa Pi2

Kung titingnan mo ang larawan, iyon ay sa Pi2 na nagpapakita ng isang abiso ng posibleng paggalaw.

Ang script ng Pi2 ay halos eksaktong kapareho ng Pi1 maliban sa script ay hindi nakakakita ng paggalaw. Nagpapakita lang o nagre-reset ang Pi2 ng mga mensahe ng notification mula sa batang "notifypi2". Dahil iyan lamang ang pagkakaiba, ipapaliwanag ko sa ibaba.

  • Tuwing 10 segundo, susuriin ni Pi2 ang "notifypi2" upang maipakita. Kung mayroong isang mensahe ng notification na ipapakita, patuloy na ipapakita ito ng Pi2 kaya't nakikita ito ng gumagamit.
  • Ang interbensyon lamang ng gumagamit ng pagpindot sa pindutan ng joystick ang malilinaw at mai-reset ang mensahe sa panig ng database.

Hakbang 5: Subukan ang Pis

Image
Image
Subukan ang Pis
Subukan ang Pis

Oras upang subukan ang Pis.

  • Patakbuhin ang mga script para sa pagkakasunod-sunod Pis.
  • Mag-log in sa Firebase at pumunta sa iyong seksyon ng mga proyekto sa database.
  • Kalugin ang iyong Pi1, dapat mong makita ang isang pulang tandang padamdam sa display na Pi1 LED. Dapat ka ring makakuha ng isang mensahe sa SMS.
  • Suriin ang database, ang mga entry na alerto ay dapat magsimulang magpakita. Ang "notifypi2" ay dapat ding i-update.
  • Tingnan ang Pi2. Dapat mo ring i-scroll ang "!!!" Upang i-clear ang mensahe ng notification na ito, pindutin lamang ang joystick. Dapat i-reset ang "notifypi2". Suriin ang iyong Firebase upang kumpirmahin.
  • Kung nakita mo ang Pi1 na masyadong sensitibo sa paggalaw, dagdagan ang threshold sa mas malaki sa 1G sa Pi1 script.

Kung maayos ang lahat, hindi mag-crash ang iyong mga script. Ngayon, mayroon kang isang gumaganang sistema ng abiso. Kapag nakita ng Pi1 ang mga paggalaw o panginginig, makakakuha ka ng isang notification sa mensahe sa SMS at isang visual na abiso sa LED sa Pi2.

Hakbang 6: Pagbuo ng R-PiAlerts IOS App

Pagbuo ng R-PiAlerts IOS App
Pagbuo ng R-PiAlerts IOS App

Oras upang buuin ang iOS app! Ang app ay magiging medyo simple. Magkakaroon ito ng isang LoginViewController at isang ItemsTableViewController. Ang ItemsTableViewController ay magpapakita ng mga alerto sa alerto mula sa "mga alerto" na bata. Maaari ding tanggalin ng isa ang mga entry sa database mula sa app. Upang mai-save ka ng ilang sakit ng ulo, kung balak mong tumingin sa mga online tutorial para sa Firebase, tiyaking naghahanap ka ng mga tutorial na napetsahan pagkalipas ng Marso 2016 dahil may mga pangunahing pagbabago noong nakaraang taon sa oras na iyon. Anumang bagay bago ang Marso 2016 ay magiging legacy. Interesado ako sa matulin na mga file, mangyaring suriin ang mga komento sa code. Kung nais mo ng isang detalyadong tutorial sa kung paano bumuo ng isang Firebase app na nagbabasa ng database, tingnan ang tutorial ni Ray Wunderlich.

I-set up ang Iyong Pangkalahatang-ideya ng iOS Project

  • Lumikha ng isang solong view ng proyekto sa iOS sa Xcode.
  • Kopyahin ang identifier ng bundle
  • Pumunta sa iyong proyekto sa Firebase sa website at lumikha ng isang info.plist file na may tagakilala ng bundle.
  • Idagdag ang GoogleService-info.plist file sa iyong proyekto. Gumagana lamang ang info.plist na ito sa tukoy na Firebase Project na iyong nilikha.
  • Isara ang Xcode at i-install ang Firebase sa pamamagitan ng Cocoapods. Tiyaking i-install ang Auth at Database.
  • I-restart ang Xcode, pagkatapos ay i-configure ang iyong AppDelegate.swift para sa Firebase. Tumatagal lamang ito ng 2 mga linya ng code.

    I-import ang Firebase isang

    FIRApp.configure (). Opsyonal, ang Firebase ay may tampok na pagtitiyaga na tumatagal lamang ng 1 linya ng code

    FIRDatabase.database (). Pagtitiyaga Pinagana = totoo

  • Ang mga hakbang sa detalyeng pag-install ay matatagpuan sa Website ng Firebase

Paano Nakikipag-ugnay ang App sa Firebase Database:

  • Kakailanganin ng app na patunayan ang gumagamit.
  • Sa sandaling napatunayan, ang app ay kukuha ng isang snapshot ng Firebase database at iniimbak ito bilang isang "Item" na object.
  • Pupunuin ng nasabing bagay ang isang array. Gagamitin ang nasabing array upang punan ang tableview.
  • Ang isang tagamasid ay manonood para sa mga pagbabago sa Firebase database at lilikha ng isang snapshot.
  • Kapag nakita ang mga pagbabago, idaragdag ang array mula sa bagong snapshot.
  • Pagkatapos ay i-reload ang tableview upang maipakita ang mga pagbabago.

Pangkalahatang Balangkas sa Paano Bumuo ng App

  • Tumingin sa imahe kung paano inilalagay ang app sa tagabuo ng interface ng Xcode.
  • Lumikha ng isang ViewController sa tagabuo ng interface at ituro ang pasadyang klase sa LoginViewController.swift.
  • Magdagdag ng mga textfield para sa email at password. Huwag kalimutang i-on ang "Secure Text Entry" para sa patlang ng password. Magdagdag ng isang pindutan sa pag-login.
  • I-link ang mga textfield at pindutan sa LoginViewController.swift. Hahawakan ng LoginViewController.swift ang pagpapatotoo.
  • Magdagdag ng isang Navigation Controller sa tagabuo ng interface. Lumikha ng isang segue mula sa LoginViewController sa Navigation Controller. Siguraduhing bigyan ang tagila ng isang identifier.
  • Itakda ang pasadyang klase ng bagong tableview na kasama ng nabigong controller upang ituro ang ItemsTableViewController.swift. Mayroon din akong 2 mga pindutan sa ItemsTableViewController: Mag-logout at isang Magdagdag ng pindutan. I-link ang mga pindutan sa ItemsTableViewController.swift.
  • Tungkol sa LoginViewController.swift code. Ipapasok ng gumagamit ang mga kredensyal sa pag-login at ibabalik ng Firebase ang isang gumagamit. Kung ang isang gumagamit ay naroroon, magsasagawa ito ng isang segue kasama ang identifier. (tingnan ang kalakip na code)
  • Idagdag ang klase ng Item.swift (tingnan ang nakalakip na code)
  • Tungkol sa ItemsTableViewController code, ito ay medyo pamantayan ng tableview code. Magkakaroon ng isang tagamasid upang subaybayan ang mga pagbabago sa iyong database na nai-save bilang isang snapshot bilang isang item na Item. Pagkatapos ang item ng Item ay idagdag ang array upang punan ang tableview. Nagtatakda ang pindutang Magdagdag ng isang entry sa Firebase database para mabasa at ipakita ng Pi1. Para sa mga giggles, nagdagdag din ako ng code (tingnan ang nakalakip na code)

Hakbang 7: Subukan ang App

Subukan ang App
Subukan ang App
Subukan ang App
Subukan ang App
Subukan ang App
Subukan ang App

Patakbuhin ang iyong app

  • Mag-login at iling ang iyong Pi1. Dapat mong simulang makita ang pagpapakita ng mga bagong notification sa alerto.
  • I-tap ang add button at panoorin ang iyong Pi1 na ipinapakita ang iyong mensahe.
  • Mag-swipe pakaliwa, tingnan ang "Mga Alerto" na naalis ang mga entry.
  • Tumatanggap ng masyadong maraming mga abiso sa mabilis na pagkakasunud-sunod? ayusin ang threshold ng accelerometer o dagdagan ang oras ng pagtulog sa Pi1 script.

Hakbang 8: Konklusyon

Konklusyon
Konklusyon
Konklusyon
Konklusyon

Galing! Ngayon mayroon kaming Pis na makakakita ng paggalaw at magpapadala sa iyo ng mga notification ng mga paggalaw. Sa tuktok na, maaari mong pamahalaan ang iyong log ng alerto sa mensahe sa iyong iOS aparato! Oras upang i-deploy ang Pis. Ilagay ang Pi1 sa tabi ng iyong pintuan at Pi2 sa paligid ng lugar ng iyong pinagtatrabahuhan. Sa susunod na may dumating, maaari mong suriin ang sitwasyon! O mas mabuti pa, subukang magtago sa Pi sa iyong kotse gamit ang isang pack ng baterya. Slamlam ang mga pintuan ng ilang beses, tingnan kung ano ang mangyayari!

Ito ay simula lamang sa mga posibilidad sa kung ano ang maaari mong gawin sa isang Raspberry Pi at Firebase. Kasama rin sa SenseHat ang mga sensor ng kapaligiran, gyros, at isang compass. Maaari mong i-set up ang iyong Pis upang mag-log ng ilang mga pagbabago sa kapaligiran. Nais mong dagdagan ang iyong laro? Kapag nakita ng iyong Pi ang mga paggalaw, gumamit ng mga imahe ng pagkuha ng camera at i-text sa iyo ng Pi ang mga larawan. Subukan ding gumamit ng computer vision algorithm upang makilala ang mga mukha. kung ito ay isang mukha ng isang kakilala mo, maaari kang maabisuhan! Magsaya ka!

Inirerekumendang: