Spisu treści:
- Krok 1: Skonfiguruj konta Firebase i Twilio
- Krok 2: Skonfiguruj swoje pis
- Krok 3: Skrypt Pythona dla Pi1
- Krok 4: Skrypt Pythona dla Pi2
- Krok 5: Przetestuj Pis
- Krok 6: Budowanie aplikacji R-PiAlerts IOS
- Krok 7: Przetestuj aplikację
- Krok 8: Wniosek
Wideo: R-PiAlerts: Zbuduj system bezpieczeństwa oparty na Wi-Fi za pomocą Raspberry Pis: 8 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Podczas pracy przy biurku nagle słyszysz odległy hałas. Czy ktoś właśnie wrócił do domu? Mój samochód jest zaparkowany przed moim domem, czy ktoś włamał się do mojego samochodu? Nie chcesz otrzymywać powiadomień na telefon lub przy biurku, abyś mógł zdecydować, czy chcesz zbadać sprawę? Cóż, nie pytaj więcej! R-PiAlerts jest tutaj!
Co to jest R-PiAlerts? R-PiAlerts to system bezpieczeństwa oparty na Raspberry Pi3, zbudowany wokół chmury Firebase. W przypadku wykrycia ruchu system powiadomi użytkownika o potencjalnym włamaniu za pomocą wiadomości tekstowej i migającego wyświetlacza LED (rodzaj cichego alarmu wizualnego). Gdy użytkownik otrzyma powiadomienie, może zbadać sprawę. Cały wykryty ruch będzie rejestrowany w bazie danych Firebase. Oprócz przeglądania dziennika ruchu w przeglądarce internetowej, użytkownik może również uzyskać dostęp do dziennika ruchu za pośrednictwem aplikacji iOS. Postanowiłem to zbudować ze względu na niedawny wzrost liczby włamań do pojazdów i domów w mojej okolicy.
Dlaczego Pi3? Potrzebowałem czegoś małego, co może wykryć ruch i w razie potrzeby wyładować baterię. Wtedy mogę schować urządzenie za drzwiami lub w samochodzie. Ponadto jednostka musi mieć możliwość wysyłania mi powiadomień lub alertów. Pi3 może robić wszystkie te rzeczy dzięki wbudowanemu Wi-Fi i możliwości wyładowania akumulatora USB. Inne powody, dla których wybrałem Pi3:
- Pi jest stosunkowo niedrogie
- Jest łatwy do wdrożenia i skalowania
- Jest konfigurowalny z punktu widzenia oprogramowania
- Umiejętność korzystania z wyświetlaczy i czujników. Ten projekt będzie wykorzystywał SenseHat
- Działaj bez głowy (bez monitora, klawiatury lub myszy)
Jak to działa
- Idealnie, użytkownik będzie potrzebował 2 Raspberry Pis podłączonych do bazy danych Firebase, ale jedno Pi też będzie działać.
- Korzystając z SenseHat, pierwsze Pi (Pi1) wykryje ruch za pomocą akcelerometru, podczas gdy drugie Pi (Pi2) wyświetli powiadomienia o ruchu.
-
Kiedy Pi1 wykryje ruch, robi 3 rzeczy
- logowanie ruchu do bazy danych
- utwórz wpis powiadomienia w bazie danych, aby Pi2 mógł wyświetlić
- wyślij użytkownikowi wiadomość tekstową powiadamiającą użytkownika o ruchu.
-
Gdy Pi2 wykryje powiadomienie do wyświetlenia z bazy danych, dzieją się dwie rzeczy
- Wyświetlacz LED Pi2 będzie wyświetlać powiadomienie w sposób ciągły
- Użytkownik może usunąć powiadomienie, naciskając przycisk Pi2 SenseHat. Spowoduje to również wyczyszczenie wpisu powiadomienia w bazie danych.
-
Dzięki aplikacji na iOS użytkownik może:
- uzyskać dostęp do bazy danych; przeczytaj i usuń dziennik ruchu
- użytkownik może wysłać Pi1, aby wyświetlić wiadomość na wyświetlaczu LED Pi1.
Praktyczne zastosowania
- Jeśli zaparkujesz samochód na ulicy w zasięgu Wi-Fi. Podłącz pakiet baterii do Pi1 (patrz zdjęcie). Ukryj Pi1 w swoim samochodzie. Umieść Pi2 w łatwo widocznym miejscu, na przykład obok biurka (patrz zdjęcie).
- Innym zastosowaniem jest umieszczenie Pi1 w domu z boku drzwi. Pi jest tak małe, że większość ludzi go nie zauważy, zwłaszcza jeśli znajduje się za stroną zawiasów (patrz zdjęcie). Następnie umieść Pi2 na biurku.
- Pies dostał się do miejsca w domu, którego nie powinien? Umieść Pi1 w tym obszarze. Upewnij się, że umieściłeś Pi w solidnym pudełku, aby Twój pies go nie przeżuł.
Dopóki Twój Pis znajduje się w zasięgu Wi-Fi, może ostrzegać lub powiadamiać Cię o ruchu. Jeśli nie masz drugiego Pi, możesz po prostu użyć Pi1 do wykrywania ruchu i otrzymywania powiadomień SMS za pośrednictwem telefonu komórkowego.
Zestawienie materiałów
- Dwa (2) Raspberry Pi 3 z systemem Raspbian (Raspberry Pi 2 będzie również działać z kluczem Wi-Fi)
- Dwa (2) Sense Hats
- Urządzenia Mac i iOS
Potrzebne oprogramowanie
- Biblioteka Pyrebase (połączenie z Firebase)
- Biblioteka SenseHat (dostęp do akcelerometru i wyświetlacza LED)
- Biblioteka Twilio (do wysyłania SMS-ów)
- Python 3, wbudowany w najnowszy Raspbian
- Raspbian z IDLE
- Xcode8 i Cocoapods na komputerze Mac
- Chęć do nauki i odkrywania
Uwaga boczna Nie jest to jedyne rozwiązanie zabezpieczające oparte na Pi. Jeśli masz jakieś pomysły, sugestie lub po prostu chcesz przerobić mój kod, zostaw komentarz poniżej! =)
Krok 1: Skonfiguruj konta Firebase i Twilio
Po pierwsze, zanim zaczniemy bawić się naszym Pis, musimy skonfigurować Firebase i Twilio. Firebase to backend Google jako usługa. Firebase obejmuje takie funkcje, jak baza danych, przesyłanie wiadomości w chmurze, uwierzytelnianie, przechowywanie itp. W tym projekcie będziemy potrzebować tylko bazy danych i uwierzytelniania Firebase w czasie rzeczywistym. Do odczytu i zapisu w bazie danych Firebase potrzebne będzie uwierzytelnienie. Aby skonfigurować Firebase:
- Zarejestruj darmowe konto Firebase
- Idź do konsoli. Utwórz nowy projekt i nadaj mu nazwę.
- W lewym menu kliknij „Przegląd”
- Kliknij „Dodaj Firebase do swojej aplikacji internetowej”, skopiuj klucz APIKey i identyfikator projektu (nie adres URL). Identyfikator projektu znajduje się pod różnymi adresami URL, takimi jak baza danych:
- W lewym menu kliknij „Uwierzytelnianie”. Przejdź do „Metody logowania” i włącz „E-mail/hasło”
- W sekcji „Użytkownik” utwórz nowe konto użytkownika z wybranym adresem e-mail/hasłem. Użyjesz tego poświadczenia, aby zalogować się do bazy danych.
- W lewym menu przejdź do „Baza danych”
- To jest Twoja Baza Danych. Jest teraz pusty. Po wypełnieniu będzie w formacie JSON. Adres URL powinien być taki sam, jak ten, który widziałeś wcześniej.
Twilio umożliwia programistom wysyłanie wiadomości do swoich klientów. Wykorzystamy go do wysłania SMS-a na Twój telefon, gdy Pi wykryje ruch. Twilio poda Ci numer telefonu do wysłania SMS-a. Aby skonfigurować Twilio:
- Załóż darmowe konto na stronie Twilio
- Skopiuj swój identyfikator konta i authToken
- Kliknij „Ograniczenia próbne” i wybierz „uzyskaj swój pierwszy numer telefonu Twilio”
- Skopiuj swój nowy numer telefonu
Krok 2: Skonfiguruj swoje pis
Zanim zaczniemy programować Pis, musimy wykonać pewne ustawienia. Upewnij się, że masz login hasła do swojego Pisa. Najpierw fizycznie podłączymy płyty SenseHat do Pis. Następnie zainstalujemy niezbędne biblioteki SenseHat, Twilio i Pyrebase. Baza danych czasu rzeczywistego Firebase została zaprojektowana z myślą o urządzeniach mobilnych lub stronach internetowych. Możemy jednak odczytywać i zapisywać bazę danych w chmurze za pośrednictwem interfejsu API Rest z biblioteką pomocniczą, taką jak Pyrebase.
Podłącz SenseHat Upewnij się, że SenseHats są połączone z Twoim Pis. Jeśli masz nietypowy przypadek, może być konieczne usunięcie Pi przed podłączeniem SenseHat.
Instalowanie bibliotekWszystkie instalacje bibliotek zostaną wykonane w terminalu
- Uruchom swoje Pis, jeśli jeszcze tego nie zrobiłeś.
- Po uruchomieniu otrzymasz tę kolorową tęczę LED na swoim SenseHat! (patrz zdjęcie)
-
Przejdź do terminala i zaktualizuj/zaktualizuj, wpisz:
- aktualizacja sudo apt-get
- sudo apt-get dist-upgrade
-
Po zakończeniu aktualizacji wpisz następujące polecenie, aby zainstalować biblioteki SenseHat:
sudo apt-get install sense-hat
-
Aby zainstalować Pyrebase, wpisz:
sudo pip zainstaluj pyrebase
-
Na koniec zainstaluj Twilio
sudo pip zainstaluj twilio
Krok 3: Skrypt Pythona dla Pi1
Jak wspomnieliśmy wcześniej, Pi1 będzie Pi, które będzie używane do wykrywania ruchu. Wartości akcelerometru SenseHat zostaną wykorzystane do określenia ruchu. W ten sposób kod dla Pi1 będzie dotyczył dostępu do wartości siły akcelerometru g i rejestrowania wykrytych ruchów w bazie danych Firebase. Oto przegląd przebiegu procesu:
- Jeśli Pi1 wykryje ruch, doda wpis do potomka „alertów” w Firebase DB.
- Pi1 zaktualizuje również dziecko „notifypi2” za pomocą powiadomienia dotyczącego ruchu.
- Pi2, następnie odczytuje „notifypi2” i wyświetla powiadomienie na swoim wyświetlaczu matrycowym LED.
Dołączyłem skrypt Pi1 Python, który możesz śledzić. Komentarze w skrypcie wyjaśniają, co robi kod.
Dodatkowe uwagi i spostrzeżenia dotyczące skryptu Pi1
- Do konfiguracji Firebase i Twilio. Wpisz odpowiednie klucze API, identyfikatory, hasła itp. skopiowane z poprzednich kroków.
-
Jeśli chodzi o uwierzytelnianie Firebase, dla dodatkowego bezpieczeństwa możesz poprosić użytkownika o wprowadzenie danych zamiast na stałe kodować te dane uwierzytelniające. Za każdym razem, gdy piszemy lub czytamy z bazy danych, będziemy musieli uwzględnić
użytkownik['idtoken'] z TH
get(), push(), set() metody.
- Temperatura procesora jest potrzebna, abyśmy mogli interweniować w przypadku przegrzania Pi w samochodzie lub w zamkniętym środowisku.
- Bierzemy również wartość bezwzględną sił G, ponieważ nie musimy znać wartości ujemnych. Musimy tylko wiedzieć, czy istnieją siły G.
- Instrukcja If sprawdzi wartości akcelerometru. Jeśli siły G są większe niż 1 w dowolnym kierunku, Pi1 zarejestruje czas ruchu i wyświetli wykrzyknik na własnym wyświetlaczu LED. Zaktualizuje również dziecko „notifypi2”. Gdy „notifypi2” zostanie zaktualizowane, Pi2 odczyta je i wyświetli „!!!” na swoim wyświetlaczu LED, aby powiadomić użytkownika o możliwym ruchu/włamaniu. Pi1 wyśle również użytkownikowi powiadomienie SMS o ruchu.
- Podczas korzystania z metody push() Firebase automatycznie wygeneruje element potomny z nowym wpisem. Jest to potrzebne, aby zarejestrowane dane o ruchu były unikalne. z drugiej strony metoda set() nadpisze poprzednie dane.
- 10-sekundowa pętla do sprawdzenia bazy danych jest konieczna, aby Twoje Pi nie żądało wielokrotnie danych z Firebase. Jeśli ciągle wysyłasz spam do Firebase, Google wyloguje Cię za około 10 minut.
- Firebase będzie też wyrzucać użytkownika co 60 minut, jeśli token nie zostanie odświeżony. Mam odświeżanie ustawione na 1800 sekund (30 minut).
Krok 4: Skrypt Pythona dla Pi2
Jeśli spojrzysz na zdjęcie, to znaczy, że Pi2 wyświetla powiadomienie o możliwym ruchu.
Skrypt Pi2 jest prawie taki sam jak Pi1, z wyjątkiem tego, że skrypt nie wykrywa ruchu. Pi2 wyświetla lub resetuje tylko komunikaty powiadomień od dziecka „notifypi2”. Ponieważ to jedyna różnica, wyjaśnię to poniżej.
- Co 10 sekund Pi2 sprawdza, czy wyświetla się „notifypi2”. Jeśli pojawi się komunikat z powiadomieniem, Pi2 wyświetli go w sposób ciągły, aby użytkownik mógł go zobaczyć.
- Dopiero interwencja użytkownika polegająca na naciśnięciu przycisku joysticka spowoduje skasowanie i zresetowanie komunikatu po stronie bazy danych.
Krok 5: Przetestuj Pis
Czas przetestować Pis.
- Uruchom skrypty dla odpowiedniego Pis.
- Zaloguj się do Firebase i przejdź do sekcji bazy danych projektów.
- Potrząśnij swoim Pi1, powinieneś zobaczyć czerwony wykrzyknik na wyświetlaczu LED Pi1. Powinieneś także otrzymać wiadomość SMS.
- Sprawdź bazę danych, powinny zacząć się pojawiać wpisy alertów. „notifypi2” również powinno zostać zaktualizowane.
- Spójrz na Pi2. Powinieneś także przewijać "!!!" Aby usunąć to powiadomienie, po prostu naciśnij na joysticku. „notifypi2” powinno zostać zresetowane. Sprawdź w Firebase, aby potwierdzić.
- Jeśli uważasz, że Pi1 jest zbyt czuły na ruch, zwiększ próg do większego niż 1G w skrypcie Pi1.
Jeśli wszystko pójdzie dobrze, twoje skrypty nie ulegną awarii. Teraz masz działający system powiadomień. Gdy Pi1 wykryje ruchy lub wibracje, otrzymasz powiadomienie o wiadomości SMS i wizualne powiadomienie LED na Pi2.
Krok 6: Budowanie aplikacji R-PiAlerts IOS
Czas zbudować aplikację na iOS! Aplikacja będzie dość prosta. Będzie miał LoginViewController i ItemsTableViewController. ItemsTableViewController wyświetli powiadomienia o alertach od podrzędnego "alertów". Można również usuwać wpisy do bazy danych z aplikacji. Aby oszczędzić sobie bólu głowy, jeśli planujesz przeglądać samouczki online dotyczące Firebase, pamiętaj, aby szukać samouczków datowanych po marcu 2016 r., ponieważ w zeszłym roku w tym czasie nastąpiły duże zmiany. Wszystko przed marcem 2016 będzie dziedziczone. Interesują Cię pliki Swift, przejrzyj komentarze w kodzie. Jeśli potrzebujesz szczegółowego samouczka na temat tworzenia aplikacji Firebase, która odczytuje bazę danych, zapoznaj się z samouczkiem Raya Wunderlicha.
Skonfiguruj swój projekt iOS - omówienie
- Utwórz projekt iOS z jednym widokiem w Xcode.
- Skopiuj identyfikator pakietu
- Przejdź do swojego projektu Firebase w witrynie i utwórz plik info.plist z identyfikatorem pakietu.
- Dodaj plik GoogleService-info.plist do swojego projektu. Ten plik info.plist działa tylko z konkretnym utworzonym przez Ciebie projektem Firebase.
- Zamknij Xcode i zainstaluj Firebase przez Cocoapods. Upewnij się, że zainstalowałeś Auth i Database.
-
Uruchom ponownie Xcode, a następnie skonfiguruj plik AppDelegate.swift dla Firebase. Zajmuje tylko 2 linijki kodu.
Importuj Firebase jakiś
FIRApp.configure(). Opcjonalnie Firebase ma funkcję trwałości, która zajmuje tylko 1 wiersz kodu
FIRDatabase.database().persistenceEnabled = prawda
- Szczegółowe instrukcje instalacji można znaleźć na stronie Firebase
Jak aplikacja współdziała z bazą danych Firebase:
- Aplikacja będzie musiała uwierzytelnić użytkownika.
- Po uwierzytelnieniu aplikacja wykonuje migawkę bazy danych Firebase i przechowuje ją jako obiekt „Element”.
- Wspomniany obiekt wypełni tablicę. Wspomniana tablica zostanie użyta do wypełnienia widoku tabeli.
- Obserwator będzie obserwował zmiany w bazie danych Firebase i utworzy migawkę.
- Po wykryciu zmian tablica zostanie dołączona z nowego zrzutu.
- Widok tabeli zostanie ponownie załadowany, aby pokazać zmiany.
Ogólny zarys tworzenia aplikacji
- Spójrz na obraz przedstawiający układ aplikacji w konstruktorze interfejsu Xcode.
- Utwórz ViewController w konstruktorze interfejsu i wskaż klasę niestandardową na LoginViewController.swift.
- Dodaj pola tekstowe na e-mail i hasło. Nie zapomnij włączyć „Bezpiecznego wprowadzania tekstu” w polu hasła. Dodaj przycisk logowania.
- Połącz pola tekstowe i przycisk z LoginViewController.swift. LoginViewController.swift obsłuży uwierzytelnianie.
- Dodaj kontroler nawigacji w konstruktorze interfejsu. Utwórz przejście z LoginViewController do kontrolera nawigacji. Upewnij się, że nadałeś segue identyfikator.
- Ustaw niestandardową klasę nowego widoku tabeli, który został dostarczony z kontrolerem nawigacji, aby wskazywał ItemsTableViewController.swift. Mam też 2 przyciski na ItemsTableViewController: Wyloguj i przycisk Dodaj. Połącz przyciski z ItemsTableViewController.swift.
- Odnośnie kodu LoginViewController.swift. Użytkownik wprowadzi dane logowania, a Firebase zwróci użytkownika. Jeśli użytkownik jest obecny, wykona segue z identyfikatorem. (patrz załączony kod)
- Dodaj klasę Item.swift (patrz załączony kod)
- Jeśli chodzi o kod ItemsTableViewController, jest to dość standardowy kod widoku tabeli. Będzie obserwator monitorujący zmiany w bazie danych zapisany jako migawka jako obiekt Item. Następnie obiekt Item dołączy tablicę, aby wypełnić widok tabeli. Przycisk Dodaj ustawia wpis w bazie danych Firebase do odczytu i wyświetlania przez Pi1. Dla chichotów dodałem też kod (patrz załączony kod)
Krok 7: Przetestuj aplikację
Uruchom swoją aplikację
- Zaloguj się i potrząśnij swoim Pi1. Powinieneś zacząć widzieć nowe powiadomienia o alertach.
- Stuknij przycisk dodawania i obserwuj, jak Pi1 wyświetla Twoją wiadomość.
- Przesuń palcem w lewo, zobacz wpisy „Alerty” są usuwane.
- Otrzymujesz zbyt wiele powiadomień w krótkich odstępach czasu? dostosuj próg akcelerometru lub zwiększ czas uśpienia w skrypcie Pi1.
Krok 8: Wniosek
Niesamowite! Teraz mamy Pis, który może wykrywać ruch i wysyłać Ci powiadomienia o ruchach. Co więcej, możesz zarządzać swoim dziennikiem komunikatów ostrzegawczych za pomocą urządzenia z systemem iOS! Czas rozmieścić Pis. Umieść Pi1 obok drzwi, a Pi2 wokół obszaru roboczego. Następnym razem, gdy ktoś wejdzie, możesz sprawdzić sytuację! Albo jeszcze lepiej, spróbuj ukryć się w Pi w samochodzie z akumulatorem. Zatrzaśnij drzwi kilka razy, zobacz, co się stanie!
To dopiero początek możliwości, jakie daje Raspberry Pi i Firebase. SenseHat zawiera również czujniki środowiskowe, żyroskopy i kompas. Możesz skonfigurować swojego Pisa, aby rejestrował pewne zmiany w środowisku. Chcesz przyspieszyć swoją grę? Gdy Twoje Pi wykryje ruchy, użyj aparatu do robienia zdjęć i wyślij tekst Pi do zdjęć. Spróbuj także użyć algorytmu widzenia komputerowego do rozpoznawania twarzy. jeśli to twarz kogoś, kogo znasz, możesz otrzymać powiadomienie! Baw się dobrze!
Zalecana:
Bezprzewodowy przycisk bezpieczeństwa dla bezpieczeństwa PLC: 6 kroków (ze zdjęciami)
Bezprzewodowy przycisk bezpieczeństwa dla bezpieczeństwa PLC: Ten projekt jest moim dowodem koncepcji wykorzystania IoT i (ewentualnie) robotyki do stworzenia dodatkowej warstwy bezpieczeństwa dla niebezpiecznych zakładów produkcyjnych. Ten przycisk może służyć do uruchamiania lub zatrzymywania wielu procesów, w tym sterowania sygnałem
Pool Pi Guy - System alarmowy oparty na sztucznej inteligencji i monitorowanie basenu za pomocą Raspberry Pi: 12 kroków (ze zdjęciami)
Pool Pi Guy - system alarmowy oparty na sztucznej inteligencji i monitorowanie basenu za pomocą Raspberry Pi: Posiadanie basenu w domu jest zabawne, ale wiąże się z wielką odpowiedzialnością. Moim największym zmartwieniem jest monitorowanie, czy ktoś znajduje się w pobliżu basenu bez opieki (szczególnie młodsze dzieci). Moją największą irytacją jest upewnienie się, że linia wody w basenie nigdy nie schodzi poniżej wejścia pompy
Utwórz system bezpieczeństwa SafeLock za pomocą Arduino MEGA: 6 kroków
Stwórz system bezpieczeństwa SafeLock za pomocą Arduino MEGA: Witam wszystkich… Przede wszystkim byłem wielkim fanem społeczności Instructables i wszystkich, którzy przesyłali tutaj swoje Instructables. Postanowiłem więc pewnego dnia opublikować własny Instructable. Więc przyjdź tutaj do ciebie z moim pierwszym Instructable „S
System bezpieczeństwa oparty na PIR: 7 kroków
System bezpieczeństwa oparty na PIR: ten moduł jest oparty na czujniku PIR i jest bardzo dokładny, składa się z modułu brzęczyka i zasilania rezerwowego dla większego bezpieczeństwa
System bezpieczeństwa RFID (oparty na Arduino): 6 kroków (ze zdjęciami)
System bezpieczeństwa RFID (bazujący na Arduino): Naprawdę fajne urządzenie, które możesz mieć w domu, nawet może