Spisu treści:

Monitorowanie domu Raspberry Pi za pomocą Dropbox: 7 kroków
Monitorowanie domu Raspberry Pi za pomocą Dropbox: 7 kroków

Wideo: Monitorowanie domu Raspberry Pi za pomocą Dropbox: 7 kroków

Wideo: Monitorowanie domu Raspberry Pi za pomocą Dropbox: 7 kroków
Wideo: Domoticz na Pi ZeroW w 2021 - wciąż daje radę !! [Domoticz #1] 2024, Listopad
Anonim
Monitorowanie domu Raspberry Pi za pomocą Dropbox
Monitorowanie domu Raspberry Pi za pomocą Dropbox

Ten samouczek pokaże Ci, jak stworzyć prosty i rozszerzalny system monitorowania domu przy użyciu Raspberry Pi, kamery internetowej, kilku komponentów elektrycznych i konta Dropbox. Gotowy system pozwoli Ci zdalnie żądać i wyświetlać obrazy z kamery internetowej, a także korzystać z gotowego cyfrowego czujnika temperatury do monitorowania temperatury w domu przez Internet, a wszystko to za pomocą Dropbox.

Był to pierwszy projekt, który wymyśliłem po otrzymaniu Raspberry Pi 2 model B. Moim celem było stworzenie systemu monitorowania opartego na Pythonie, który mógłbym kontrolować i odbierać dane z Internetu. Chociaż istnieje wiele różnych sposobów na zrobienie tego, postanowiłem użyć Dropbox jako interfejsu między Pi a Internetem, ponieważ mają one proste API Pythona, które pozwala przesyłać, modyfikować i wyszukiwać pliki w określonych folderach za pomocą kilku linijek kod.

Chciałem również, aby moje rozwiązanie było lekkie i proste oraz aby uniknąć zaśmiecania mojego Pi niepotrzebnymi bibliotekami i programami. Komponent oprogramowania tego projektu składa się z pojedynczego skryptu Pythona, co oznacza, że możesz normalnie korzystać z Pi, nawet gdy system monitorowania jest uruchomiony.

Do tego projektu będziesz potrzebować:

Raspberry Pi. Każdy model powinien działać, użyłem zestawu startowego all-in-one, ale być może potrzebujesz tylko jednostki centralnej

Kamera internetowa USB. Kupiłem tani ADVENT AWC72015, który akurat działał bez zarzutu. Dobrym pomysłem może być zapoznanie się z listą kamer internetowych, które potwierdzono, że działają z Pi. Zauważ, że niektóre wymagają zasilanego koncentratora USB (mój działa dobrze bez)

Konto Dropbox. Używam mojego standardowego darmowego konta, ponieważ ten projekt nie wymaga dużo miejsca do przechowywania

Cyfrowy czujnik temperatury DS18B20 i rezystor 4,7k. Możesz kupić czujnik tutaj, a może warto wziąć paczkę różnych rezystorów

Niektóre akcesoria do budowy obwodów. Zalecam użycie płytki stykowej i kilku kabli połączeniowych, aby proces budowania obwodu był jak najłatwiejszy

[Jeśli zdecydujesz się na zakup któregokolwiek z tych produktów, będę bardzo wdzięczny, jeśli uzyskasz dostęp do aukcji za pomocą powyższych linków - w ten sposób otrzymuję niewielką część zysków bez dodatkowych kosztów!]

Krok 1: Skonfiguruj sprzęt

Skonfiguruj sprzęt
Skonfiguruj sprzęt

Pierwszym krokiem jest upewnienie się, że Twoje Pi i powiązane z nim urządzenia peryferyjne są skonfigurowane.

Najpierw połącz swoje Pi z Internetem. Jest to konieczne, aby program monitorujący mógł odbierać Twoje żądania i przesyłać dane do Dropbox. Używam połączenia Ethernet, aby zapewnić niezawodność, ale połączenie Wi-Fi również powinno działać dobrze, a jednocześnie ma tę zaletę, że jest lepsza przenośność. Jeśli wybierzesz Wi-Fi, polecam ten klucz USB dla Pi.

Następnie podłącz kamerę internetową do Pi, podłączając ją do jednego z portów USB. Podczas gdy instrukcje mojej kamery internetowej Advent nie mówiły wyraźnie, że będzie działać z Linuksem, wszystko, co musiałem zrobić, to podłączyć ją i uruchomić Pi. Nie była potrzebna dalsza instalacja. Inne kamery internetowe mogą się różnić. Możesz sprawdzić, czy Twoja kamera internetowa została wykryta przez Linuksa, używając następującego polecenia:

lsusb

Na powyższym obrazku moja kamera internetowa jest wymieniona jako „0c45:6340 Microdia”

Na koniec możesz podłączyć czujnik temperatury DS18B20 do nagłówka GPIO Pi. Używam swojej płytki prototypowej, aby ułatwić proces tworzenia obwodów i polecam zrobić to samo, zwłaszcza że DS18B20 wymaga umieszczenia rezystora 4,7 k pomiędzy dwoma z trzech styków. To łącze zapewnia dobry schemat połączeń pokazujący, w jaki sposób można wykorzystać płytkę stykową do połączenia z tym czujnikiem temperatury.

Następna strona powyższego samouczka zawiera również kroki potrzebne do wczytania danych z DS18B20 i pokazuje, jak sprawdzić, czy działa. Ważne jest, aby wykonać te kroki konfiguracji przed użyciem DS18B20 w tym projekcie. Będziemy również integrować przykładowy skrypt Pythona z samouczka z naszym programem monitorującym, więc możesz chcieć szybko przejrzeć ten kod.

Zanotuj również unikalny numer swojego DS18B20. Jest to numer zaczynający się od „28-”, na który natkniesz się podczas samouczka konfiguracji. Będziesz musiał wprowadzić go do nadchodzącego programu w Pythonie, aby umożliwić mu odczytanie temperatury.

Krok 2: Skonfiguruj Dropbox

Skonfiguruj Dropbox
Skonfiguruj Dropbox

Aby Twoje Pi mogło współpracować z Dropbox, musisz skonfigurować nową aplikację Dropbox. Dostarczy Ci to szczegółów potrzebnych do zarządzania plikami online przy użyciu Pythona. Zakładając, że utworzyłeś konto Dropbox i zalogowałeś się, możesz utworzyć nową aplikację, korzystając z opcji menu „Deweloperzy”. Zobacz powyższy obrazek, aby zobaczyć podsumowanie ważnych kroków.

W menu „ Deweloperzy” wybierz „ Moje aplikacje”, a następnie naciśnij przycisk „ Utwórz aplikację”. Aby wypełnić formularz wynikowy, wybierz „Dropbox API”, a następnie „Folder aplikacji”. Na koniec możesz wybrać unikalną nazwę dla swojej aplikacji w Dropbox. Kliknij „Utwórz aplikację”.

Następnie zostaniesz przeniesiony na stronę ustawień swojej aplikacji w Dropbox. Jest jeszcze tylko jedna rzecz, którą musisz zrobić - wygenerować sobie Access Token. W tym celu przewiń w dół do sekcji „ OAuth 2” i w sekcji „ Wygenerowany token dostępu” kliknij przycisk „ Generuj”.

Spowoduje to wyświetlenie długiego ciągu znaków, które są potrzebne, aby uzyskać dostęp do konta Dropbox za pomocą Pythona. Zanotuj ten token dostępu, ponieważ będziesz musiał określić go później w kodzie. Jeśli zgubisz token, możesz wrócić do ustawień aplikacji, klikając „Moje aplikacje” w sekcji „Deweloperzy” Dropbox i wygenerować nowy token.

Pozostałe ustawienia możesz pozostawić bez zmian. Aby potwierdzić, że Twoja aplikacja utworzyła niezbędne foldery na Twoim koncie Dropbox, przejdź do strony głównej miejsca przechowywania i poszukaj folderu „Aplikacje”. W tym folderze powinien znajdować się podfolder o nazwie wybranej dla nowej aplikacji. Tutaj zostaną umieszczone wszystkie pliki dla twojego systemu monitorowania.

Krok 3: Przygotowanie folderu aplikacji Dropbox

Przygotowywanie folderu aplikacji Dropbox
Przygotowywanie folderu aplikacji Dropbox

Po skonfigurowaniu aplikacji Dropbox nadszedł czas, aby zastanowić się, w jaki sposób będziesz używać folderu wynikowego na koncie Dropbox do interakcji z Twoim Pi. Osiąga się to po prostu. Skrypt Pythona, który będzie działał na Pi, użyje podzbioru poleceń z interfejsu API Dropbox do wyszukiwania i modyfikowania nazw niektórych pustych plików bez rozszerzeń w folderze Twojej aplikacji. Nazywamy te pliki „plikami parametrów”, ponieważ każdy z nich pozwoli Ci kontrolować inny aspekt zachowania systemu monitorowania. Powyższy obrazek pokazuje cztery pliki parametrów, które muszą znajdować się w folderze aplikacji Dropbox dla tego projektu. Ich tworzenie jest proste:

Zaczynając od całkowitego pustego folderu aplikacji, otwórz program do edycji tekstu na swoim komputerze. Chociaż można to zrobić za pomocą Pi, okazało się, że łatwiej jest używać mojego laptopa z systemem Windows w tej fazie konfiguracji. Po otwarciu edytora tekstu (użyłem Notatnika w systemie Windows 7), wystarczy zapisać całkowicie pusty plik tekstowy w dowolnym miejscu na komputerze. Jako nasz pierwszy przykład, utworzymy pierwszy parametr w obrazie nagłówka. Nazwij plik „delay=10” podczas zapisywania.

Podsumowując, powinieneś mieć teraz pusty plik tekstowy przechowywany na swoim komputerze o nazwie 'delay=10'. Plik będzie miał również rozszerzenie „.txt”, które może być widoczne lub nie.

Następnym krokiem jest przesłanie tego pliku do folderu aplikacji Dropbox. To tak jak w przypadku każdego innego przesyłania do Dropbox. Po prostu przejdź do folderu swojej aplikacji, kliknij przycisk „Prześlij” i wybierz plik „delay=10”.

Po przesłaniu tego pliku musisz usunąć rozszerzenie „.txt”, które powinno być teraz widoczne w nazwie pliku. Aby to zrobić, po prostu kliknij plik prawym przyciskiem myszy i wybierz „Zmień nazwę”. Usuń część „.txt” z nazwy pliku. Powinieneś teraz pozostać z plikiem o nazwie „delay=10” bez rozszerzenia pliku, jak pokazano na obrazku nagłówka.

Plik parametrów „opóźnienie” jest jednym z czterech, które będą używane przez program monitorujący. Aby utworzyć inne, możesz po prostu skopiować i zmienić nazwę pliku „opóźnienia”, klikając go prawym przyciskiem myszy. Po utworzeniu trzech kopii nazwij je tak, jak pokazano na obrazie nagłówka, aby folder aplikacji był identyczny z pokazanym na początku tego kroku.

Krok 4: Pierwsze kroki z kodem

Jak już wspomnieliśmy, rdzeń naszego systemu monitorowania będzie składał się z pojedynczego skryptu Pythona, który będzie komunikował się z Dropbox. Aby program monitorujący był aktywny, ten skrypt będzie musiał działać w tle na twoim Pi. Myślę, że najdokładniej opisuje się go jako skrypt „demon”, co oznacza, że można go po prostu uruchomić i zapomnieć o nim. Skrypt jest dołączony do tego kroku, więc nie ma sensu powtarzać kodu w tym miejscu. Teraz może być dobry moment, aby go pobrać i zapoznać się z nim.

Zanim będziesz mógł uruchomić skrypt, ważne jest, aby upewnić się, że masz zainstalowane odpowiednie biblioteki Pythona. Te, których potrzebujesz, są wymienione na górze załączonego skryptu. Oni są:

importuj skrzynkę?

import pygame.camera import systemu operacyjnego czas importu

Instalacja Pythona na moim Pi zawierała już pygame, system operacyjny i czas, więc jedynym, który musiałem zainstalować, był Dropbox. Zrobiłem to, korzystając z ich bardzo prostych instrukcji instalacji z pipem.

Po skonfigurowaniu bibliotek musisz edytować dwa górne wiersze dołączonego skryptu, aby dopasować swój token dostępu Dropbox i unikalny identyfikator czujnika temperatury DS18B20. Oto dwie linie, które należy edytować:

APP_ACCESS_TOKEN = '**********'

THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'

Po prostu zastąp **** poprawnymi wartościami. W tym momencie jesteś już gotowy do rozpoczęcia korzystania z programu monitorującego! Zamiast po prostu wskakiwać, radzę przejść do następnego kroku, aby uzyskać ogólny przegląd kodu.

WAŻNE: Po uruchomieniu tego skryptu chcesz, aby działał on w tle, aby a) można było nadal używać Pi i b) po zamknięciu sesji SSH skrypt będzie nadal działał. Oto polecenie, którego używam podczas uruchamiania skryptu:

python nohup DropCamTherm.py &

Osiąga to trzy rzeczy: uruchomi skrypt ('python DropCamTherm.py'), natychmiast zwróci sterowanie do wiersza poleceń, dzięki czemu można nadal używać Pi ('&') i wyśle dane wyjściowe Pythona, które normalnie wyświetlane w wierszu poleceń w pliku o nazwie 'nohup.out'. Można to odczytać za pomocą edytora tekstu w Linuksie (moim ulubionym jest nano) i zostanie utworzone automatycznie w katalogu, z którego uruchamiany jest skrypt.

Krok 5: Zagłębianie się w kod

Po otwarciu skryptu zauważysz, że składa się on z trzech funkcji wraz z blokiem kodu, który implementuje te funkcje po uruchomieniu skryptu. Funkcje wykorzystują interfejs API Dropbox i uzyskują dostęp do pliku dziennika temperatury DS18B20 w celu nasłuchiwania poleceń z Dropbox i przesyłania najnowszych odczytów temperatury. Poniżej znajduje się przegląd funkcji i sposobu ich wykorzystania do działania systemu monitorowania:

- poll_parameter():

Ta funkcja pokazuje przeznaczenie plików parametrów Dropbox, które utworzyliśmy w kroku 3. Przeszukuje folder aplikacji Dropbox w poszukiwaniu pliku zawierającego tekst „param=”. Następnie wyodrębnia tekst po znaku „=” i próbuje przekonwertować go na liczbę całkowitą. Widać, że pozwala nam to sterować programem poprzez ręczne dodawanie odpowiednich numerów na końcu plików parametrów. Następny krok będzie zawierał krótką instrukcję obsługi pokazującą, jak używać każdego z plików parametrów do kontrolowania aspektu programu.

- set_parameter():

Ta funkcja umożliwia programowi zmianę nazwy pliku parametrów z poziomu Pythona. Robi to przy kilku okazjach, głównie w celu zmniejszenia potrzeby nadmiernego ręcznego zmieniania nazw plików.

- set_latest_temp():

Ta funkcja wykorzystuje metodę set_parameter(), aby przesłać najnowszą temperaturę do folderu aplikacji Dropbox, dołączając ją do pliku parametrów „temperatura”. Funkcja odczytuje ostatnią temperaturę z pliku dziennika DS18B20 (który jest dostępny w systemie Linux pod ścieżką wskazaną przez zmienną THERMOMETER_FILE).

Ostatnia część programu zawiera kod, który zostanie wykonany po uruchomieniu skryptu. Po wykonaniu kilku czynności konfiguracyjnych wymaganych dla czujnika DS18B20 otwiera on sesję Dropbox przy użyciu tokena dostępu i używa pygame do wyszukiwania kamery internetowej. Jeśli kamera internetowa zostanie znaleziona, wejdzie w pętlę, w której używa funkcji poll_parameter() do wyodrębniania informacji z Dropbox i działania na niej.

WAŻNE: zauważysz następujący wiersz kodu:

kamera = pygame.camera. Camera(cam_list[0], (864, 480))

…jest to próba stworzenia użytecznego interfejsu kamery z pierwszej kamery internetowej, którą wykryje pygame. Może być konieczna zmiana rozdzielczości, aby dopasować ją do kamery internetowej. Eksperymentuj z kilkoma wartościami, aby znaleźć najlepsze rozwiązanie.

Krok 6: Korzystanie z plików parametrów Dropbox

Więc teraz powinieneś mieć działający skrypt, który po uruchomieniu zgodnie z instrukcjami z kroku 4 pozwoli Twojemu Pi rozpocząć monitorowanie folderu aplikacji pod kątem danych wejściowych. Przy pierwszym uruchomieniu folder aplikacji powinien zawierać następujące pliki parametrów:

opóźnienie=10

exitprogram=0 imagerequest=0 temperatura=0

Interakcja z programem jest osiągana poprzez ręczne zmienianie nazw plików parametrów za pośrednictwem Dropbox. Aby to zrobić, kliknij prawym przyciskiem myszy jeden z plików i wybierz „zmień nazwę”. Każdy plik parametrów ma inną funkcję:

- opóźnienie:

Ten plik informuje program monitorujący, ile sekund ma czekać między każdą iteracją pętli monitorowania. Kiedy wiem, że nie będę się zbytnio komunikował z programem, ustawiam go na 60 lub 120. Kiedy wiem, że chcę często żądać danych od Pi, ustawiam go na 10.

- program wyjścia:

Powinien być ustawiony na 1 lub 0. Jeśli program wykryje, że jest ustawiony na 1, zakończy skrypt. Jeśli ustawisz go na 1, a skrypt zakończy działanie, będziesz musiał ponownie zalogować się do Pi, aby uruchomić go z powrotem. Ten parametr istnieje, aby można było bezpiecznie zakończyć program monitorujący, gdy nie jest już potrzebny (na przykład, jeśli wróciłeś do domu i nie chcesz już zdalnie monitorować kamery internetowej).

- zapytanie o zdjęcie:

To chyba najważniejszy parametr. Powinien być ustawiony na 1 lub 0. Jeśli program wykryje, że jest ustawiony na 1, zażąda obrazu z kamery internetowej i prześle go do folderu aplikacji (o tytule 'image.jpg'). Jeśli istnieje inny plik „image.jpg”, zastąpi go.

- temperatura:

Jest to odczyt temperatury DS18B20 ustawiony przez funkcję set_latest_temp(). Edycja tego pliku parametrów nigdy nie powinna być konieczna - jest on ustawiany automatycznie przez program.

Zauważ, że jeśli ustawisz 'exitprogram' lub 'imagerequest' na 1, program automatycznie przywróci je do 0 przed wykonaniem odpowiedniego kodu. To jest dla wygody. Możesz również zauważyć, że kod zawiera wiele bloków „try” i „except” otaczających wiele krytycznych funkcji. Ma to na celu zapewnienie, że skrypt nie będzie zgłaszał wyjątków (i tym samym przestanie działać), jeśli coś pójdzie nie tak (na przykład problem z połączeniem internetowym uniemożliwiający dostęp do Dropbox).

Krok 7: Wniosek

Ten projekt przedstawił sposób kontrolowania Raspberry Pi za pomocą Pythona i Dropbox. Chociaż sprzęt użyty w tym projekcie to czujnik temperatury i kamera internetowa USB, istnieje wiele innych zastosowań do tej metody sterowania Pi. W rzeczywistości każdy element sprzętowy, który jest dostępny przez GPIO, może być kontrolowany przy użyciu podobnej struktury programu, dzięki czemu system jest bardzo łatwy w rozbudowie.

W następnym kroku możesz również użyć biblioteki GUI, takiej jak Tkinter, wraz z interfejsem API Dropbox, aby stworzyć program kliencki, który umożliwiłby modyfikowanie plików parametrów bez konieczności logowania się do Dropbox.

Mam nadzieję, że ten samouczek był jasny, a jeśli masz jakieś pytania lub chciałbyś, żebym coś wyjaśnił, napisz komentarz!

Zalecana: