Inhaltsverzeichnis:

Raspberry Pi Home Monitoring mit Dropbox - Gunook
Raspberry Pi Home Monitoring mit Dropbox - Gunook

Video: Raspberry Pi Home Monitoring mit Dropbox - Gunook

Video: Raspberry Pi Home Monitoring mit Dropbox - Gunook
Video: Monitoring an IP Camera using a Raspberry Pi (no internet) 2024, November
Anonim
Raspberry Pi Heimüberwachung mit Dropbox
Raspberry Pi Heimüberwachung mit Dropbox

Dieses Tutorial zeigt Ihnen, wie Sie mit einem Raspberry Pi, einer Webcam, einigen elektrischen Komponenten und Ihrem Dropbox-Konto ein einfaches und erweiterbares Heimüberwachungssystem erstellen. Mit dem fertigen System können Sie Bilder von Ihrer Webcam aus der Ferne anfordern und anzeigen und gleichzeitig einen handelsüblichen digitalen Temperatursensor verwenden, um die Temperatur Ihres Hauses über das Internet zu überwachen, alles mit Dropbox.

Dies war das erste Projekt, das ich mir ausdachte, nachdem ich einen Raspberry Pi 2 Modell B erhalten hatte. Mein Ziel war es, ein Python-basiertes Überwachungssystem zu entwickeln, das ich steuern und Daten über das Internet empfangen kann. Obwohl es viele verschiedene Möglichkeiten gibt, dies zu tun, habe ich mich entschieden, Dropbox als Schnittstelle zwischen dem Pi und dem Internet zu verwenden, da sie eine einfache Python-API haben, die es Ihnen ermöglicht, Dateien in bestimmten Ordnern mit wenigen Zeilen hochzuladen, zu ändern und nach Dateien zu suchen Code.

Ich wollte auch, dass meine Lösung leicht und einfach ist und meinen Pi nicht mit unnötigen Bibliotheken und Programmen überfüllt. Die Softwarekomponente dieses Projekts besteht aus einem einzigen Python-Skript, sodass Sie Ihren Pi auch bei laufendem Überwachungssystem wie gewohnt verwenden können.

Für dieses Projekt benötigen Sie:

Ein Raspberry-Pi. Jedes Modell sollte funktionieren, ich habe ein All-in-One-Starterkit verwendet, aber vielleicht brauchst du nur die Zentraleinheit

Eine USB-Webcam. Ich habe einen billigen ADVENT AWC72015 gekauft, der zufällig gut funktioniert hat. Es kann eine gute Idee sein, diese Liste der Webcams zu konsultieren, von denen bestätigt wurde, dass sie mit dem Pi funktionieren. Beachten Sie, dass einige einen USB-Hub mit eigener Stromversorgung benötigen (meiner funktioniert ohne)

Ein Dropbox-Konto. Ich verwende mein kostenloses Standardkonto, da dieses Projekt nicht viel Speicherplatz benötigt

Ein digitaler Temperatursensor DS18B20 und ein 4.7k Widerstand. Sie können den Sensor hier kaufen, und es lohnt sich möglicherweise, auch eine Packung verschiedener Widerstände zu greifen

Einiges Zubehör für den Schaltungsbau. Ich würde empfehlen, ein Steckbrett und einige Überbrückungskabel zu verwenden, um den Schaltungsaufbau so einfach wie möglich zu gestalten

[Wenn Sie sich entscheiden, eines dieser Produkte zu kaufen, würde ich es sehr schätzen, wenn Sie über die obigen Links auf die Angebote zugreifen - auf diese Weise erhalte ich einen winzigen Anteil des Gewinns ohne zusätzliche Kosten für Sie!]

Schritt 1: Einrichten der Hardware

Einrichten der Hardware
Einrichten der Hardware

Der erste Schritt besteht darin, sicherzustellen, dass Ihr Pi und die zugehörigen Peripheriegeräte eingerichtet sind.

Verbinden Sie zuerst Ihren Pi mit dem Internet. Dies ist notwendig, um sicherzustellen, dass das Überwachungsprogramm Ihre Anfragen empfangen und Daten in Dropbox hochladen kann. Ich verwende eine Ethernet-Verbindung, um die Zuverlässigkeit zu gewährleisten, aber eine Wi-Fi-Verbindung sollte auch gut funktionieren und gleichzeitig den Vorteil einer verbesserten Portabilität haben. Wenn Sie sich für Wi-Fi entscheiden, würde ich diesen USB-Dongle für den Pi empfehlen.

Verbinden Sie als Nächstes Ihre Webcam mit dem Pi, indem Sie sie an einen der USB-Anschlüsse anschließen. Während die Anleitung meiner Advents-Webcam nicht ausdrücklich sagte, dass sie mit Linux funktionieren würde, musste ich sie nur anschließen und den Pi booten. Es war keine weitere Installation erforderlich. Andere Webcams können abweichen. Sie können mit dem folgenden Befehl überprüfen, ob Ihre Webcam von Linux erkannt wurde:

lsusb

Im obigen Bild ist meine Webcam als '0c45:6340 Microdia' aufgeführt.

Schließlich können Sie Ihren DS18B20-Temperatursensor an den GPIO-Header des Pi anschließen. Ich verwende mein Steckbrett, um das Erstellen von Schaltungen zu vereinfachen, und ich würde Ihnen empfehlen, dasselbe zu tun, zumal der DS18B20 einen 4,7k-Widerstand zwischen zwei seiner drei Pins benötigt. Dieser Link bietet einen guten Schaltplan, der zeigt, wie ein Steckbrett zum Anschluss an diesen Temperatursensor verwendet werden kann.

Die nächste Seite des obigen Tutorials behandelt auch die Schritte, die zum Einlesen von Daten aus dem DS18B20 erforderlich sind, und zeigt Ihnen, wie Sie überprüfen können, ob es funktioniert. Es ist wichtig, diese Einrichtungsschritte durchzuführen, bevor Sie den DS18B20 für dieses Projekt verwenden können. Wir werden auch das Python-Beispielskript aus dem Tutorial in unser Überwachungsprogramm integrieren, sodass Sie diesen Code vielleicht kurz überfliegen möchten.

Bitte notieren Sie sich auch die eindeutige Nummer Ihres DS18B20. Es ist die Nummer, die mit '28-' beginnt und auf die Sie während des Setup-Tutorials stoßen. Sie müssen es in das kommende Python-Programm eingeben, damit es die Temperatur einlesen kann.

Schritt 2: Dropbox einrichten

Dropbox einrichten
Dropbox einrichten

Damit Ihr Pi mit Dropbox verbunden werden kann, müssen Sie eine neue Dropbox-App einrichten. Dadurch erhalten Sie Details, die Ihr Pi benötigt, um die Online-Dateiverwaltung mit Python durchzuführen. Angenommen, Sie haben ein Dropbox-Konto erstellt und sich angemeldet, können Sie über die Menüoption "Entwickler" eine neue App erstellen. In der obigen Abbildung finden Sie eine Zusammenfassung der wichtigen Schritte.

Wählen Sie im Menü „Entwickler“die Option „Meine Apps“und klicken Sie dann auf die Schaltfläche „App erstellen“. Um das resultierende Formular auszufüllen, wählen Sie „Dropbox API“gefolgt von „App Folder“. Schließlich können Sie in Dropbox einen eindeutigen Namen für Ihre App wählen. Klicken Sie auf „App erstellen“.

Sie werden dann in Dropbox zur Einstellungsseite Ihrer App weitergeleitet. Hier müssen Sie nur noch eines tun - sich ein Access Token generieren. Scrollen Sie dazu nach unten zum Abschnitt „OAuth 2“und klicken Sie unter „Generiertes Zugriffstoken“auf die Schaltfläche „Generieren“.

Dadurch erhalten Sie eine lange Zeichenfolge, die Sie benötigen, um mit Python auf Ihr Dropbox-Konto zuzugreifen. Notieren Sie sich dieses Zugriffstoken, da Sie es später in Ihrem Code angeben müssen. Wenn Sie das Token verlieren, können Sie zu den Einstellungen Ihrer App zurückkehren, indem Sie im Dropbox-Bereich "Entwickler" auf "Meine Apps" klicken und ein neues Token generieren.

Die anderen Einstellungen können Sie so belassen. Um zu bestätigen, dass Ihre App die erforderlichen Ordner in Ihrem Dropbox-Konto erstellt hat, navigieren Sie zu Ihrer Speicher-Startseite und suchen Sie nach dem Ordner „Apps“. In diesem Ordner sollte sich ein Unterordner mit dem Namen befinden, den Sie für Ihre neue App gewählt haben. Hier werden alle Dateien für Ihr Überwachungssystem abgelegt.

Schritt 3: Vorbereiten Ihres Dropbox-App-Ordners

Vorbereiten Ihres Dropbox-App-Ordners
Vorbereiten Ihres Dropbox-App-Ordners

Nachdem Sie Ihre Dropbox-App eingerichtet haben, ist es an der Zeit, darüber nachzudenken, wie Sie den resultierenden Ordner in Ihrem Dropbox-Konto verwenden, um mit Ihrem Pi zu interagieren. Dies geschieht ganz einfach. Das Python-Skript, das auf dem Pi ausgeführt wird, verwendet eine Teilmenge von Befehlen der Dropbox-API, um die Namen einiger leerer Dateien ohne Erweiterungen in Ihrem App-Ordner zu suchen und zu ändern. Wir nennen diese Dateien 'Parameterdateien', da Sie mit jeder einen anderen Aspekt des Verhaltens des Überwachungssystems steuern können. Das obige Bild zeigt die vier Parameterdateien, die für dieses Projekt in Ihrem Dropbox-App-Ordner vorhanden sein müssen. Sie zu erstellen ist einfach:

Beginnen Sie mit einem vollständig leeren App-Ordner und öffnen Sie ein Texteditorprogramm auf Ihrem Computer. Obwohl dies mit dem Pi möglich war, fand ich es einfacher, meinen Windows-Laptop für diese Einrichtungsphase zu verwenden. Sobald der Texteditor geöffnet ist (ich habe Notepad unter Windows 7 verwendet), müssen Sie nur eine vollständig leere Textdatei irgendwo auf Ihrem Computer speichern. Als erstes Beispiel erstellen wir den ersten Parameter im Header-Image. Benennen Sie die Datei 'delay=10', wenn Sie sie speichern.

Zusammenfassend sollten Sie jetzt eine leere Textdatei mit dem Namen 'delay=10' auf Ihrem Computer gespeichert haben. Die Datei hat auch die Erweiterung '.txt', die sichtbar oder nicht sichtbar sein kann.

Der nächste Schritt besteht darin, diese Datei in Ihren Dropbox-App-Ordner hochzuladen. Dies ist wie bei jedem anderen Dropbox-Upload. Navigieren Sie einfach zum Ordner Ihrer App, klicken Sie auf „Hochladen“und wählen Sie Ihre Datei „delay=10“aus.

Wenn diese Datei hochgeladen wurde, müssen Sie die Erweiterung '.txt' entfernen, die jetzt im Dateinamen sichtbar sein sollte. Klicken Sie dazu einfach mit der rechten Maustaste auf die Datei und wählen Sie „Umbenennen“. Entfernen Sie den '.txt'-Teil des Dateinamens. Sie sollten nun eine Datei namens 'delay=10' ohne Dateierweiterung haben, wie im Header-Bild gezeigt.

Die Parameterdatei 'delay' ist eine von vier, die vom Überwachungsprogramm verwendet werden. Um die anderen zu erstellen, können Sie einfach Ihre 'Delay'-Datei kopieren und umbenennen, indem Sie mit der rechten Maustaste darauf klicken. Nachdem Sie drei Kopien erstellt haben, benennen Sie sie wie in der Kopfzeile gezeigt, sodass Ihr App-Ordner mit dem zu Beginn dieses Schritts identisch ist.

Schritt 4: Erste Schritte mit dem Code

Wie bereits erwähnt, besteht der Kern unseres Überwachungssystems aus einem einzigen Python-Skript, das mit Dropbox verbunden wird. Damit das Überwachungsprogramm aktiv ist, muss dieses Skript im Hintergrund auf Ihrem Pi ausgeführt werden. Ich denke, es wird am genauesten als 'Daemon'-Skript beschrieben, was bedeutet, dass Sie es einfach zum Laufen bringen und es vergessen können. Das Skript ist an diesen Schritt angehängt, daher macht es keinen Sinn, den Code hier zu wiederholen. Jetzt ist vielleicht ein guter Zeitpunkt, um es herunterzuladen und sich damit vertraut zu machen.

Bevor Sie das Skript ausführen können, müssen Sie sicherstellen, dass die entsprechenden Python-Bibliotheken installiert sind. Die von Ihnen benötigten sind oben im angehängten Skript aufgeführt. Sie sind:

Dropbox importieren

pygame.camera importieren Betriebssystem importieren Zeit importieren

Die Python-Installation auf meinem Pi beinhaltete bereits pygame, os und time, also musste ich nur Dropbox installieren. Ich habe dies mit ihrer sehr einfachen Installationsanleitung mit Pip getan.

Sobald Ihre Bibliotheken eingerichtet sind, müssen Sie die oberen beiden Zeilen des angehängten Skripts bearbeiten, damit sie mit Ihrem Dropbox-Zugriffstoken und der eindeutigen Kennung Ihres DS18B20-Temperatursensors übereinstimmen. Dies sind die beiden Zeilen, die bearbeitet werden müssen:

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

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

Ersetzen Sie einfach die ****s durch die richtigen Werte. An diesem Punkt sind Sie tatsächlich bereit, das Überwachungsprogramm zu verwenden! Anstatt einfach einzusteigen, empfehle ich Ihnen, mit dem nächsten Schritt fortzufahren, um einen allgemeinen Überblick über den Code zu erhalten.

WICHTIG: Wenn Sie dieses Skript ausführen, möchten Sie, dass es im Hintergrund ausgeführt wird, damit a) Sie das Pi weiterhin verwenden können und b) wenn Sie Ihre SSH-Sitzung schließen, das Skript weiterhin ausgeführt wird. Dies ist der Befehl, den ich verwende, wenn ich das Skript ausführe:

nohup python DropCamTherm.py &

Dadurch werden drei Dinge erreicht: Es führt das Skript aus ('python DropCamTherm.py'), es gibt die Kontrolle sofort an die Befehlszeile zurück, sodass Sie das Pi weiter verwenden können ('&'), und es sendet Python-Ausgaben, die normalerweise auf der Kommandozeile in einer Datei namens 'nohup.out' angezeigt werden. Diese kann mit einem Linux-Texteditor (mein Favorit ist nano) gelesen werden und wird automatisch in dem Verzeichnis erstellt, von dem aus das Skript ausgeführt wird.

Schritt 5: Tiefer in den Code eintauchen

Wenn Sie das Skript öffnen, werden Sie feststellen, dass es aus drei Funktionen zusammen mit einem Codeblock besteht, der diese Funktionen implementiert, wenn das Skript ausgeführt wird. Die Funktionen verwenden die Dropbox-API und greifen auf die Temperaturprotokolldatei des DS18B20 zu, um auf Befehle von Dropbox zu hören und den neuesten Temperaturmesswert hochzuladen. Nachfolgend finden Sie eine Übersicht über die Funktionen der Funktionen und wie sie verwendet werden, um das Überwachungssystem zu betreiben:

- poll_parameter():

Diese Funktion zeigt den Zweck der Dropbox-Parameterdateien, die wir in Schritt 3 erstellt haben. Sie durchsucht den Dropbox-App-Ordner nach einer Datei mit dem Text 'param='. Es extrahiert dann den Text nach dem '=' und versucht, ihn in eine ganze Zahl umzuwandeln. Sie sehen, dass wir damit das Programm steuern können, indem wir die entsprechenden Nummern manuell an das Ende der Parameterdateien anhängen. Der nächste Schritt enthält eine kurze Anleitung, die Ihnen zeigt, wie Sie jede der Parameterdateien verwenden, um einen Aspekt des Programms zu steuern.

- set_parameter():

Diese Funktion ermöglicht es dem Programm, eine Parameterdatei aus Python heraus umzubenennen. Dies geschieht bei einigen Gelegenheiten, hauptsächlich um die Notwendigkeit einer übermäßigen manuellen Umbenennung der Dateien zu reduzieren.

- set_latest_temp():

Diese Funktion verwendet set_parameter(), um die neueste Temperatur in den Dropbox-App-Ordner hochzuladen, indem sie an die Parameterdatei 'temperature' angehängt wird. Die Funktion liest die neueste Temperatur aus der Protokolldatei des DS18B20 (die unter Linux unter dem Pfad verfügbar ist, auf den die Variable THERMOMETER_FILE verweist).

Der letzte Teil des Programms enthält den Code, der ausgeführt wird, wenn das Skript ausgeführt wird. Nach einigen Einrichtungsschritten, die für den DS18B20-Sensor erforderlich sind, öffnet er eine Dropbox-Sitzung mit Ihrem Zugriffstoken und verwendet pygame, um Ihre Webcam zu suchen. Wenn eine Webcam gefunden wird, tritt sie in eine Schleife ein, in der sie poll_parameter() verwendet, um Informationen aus Dropbox zu extrahieren und darauf zu reagieren.

WICHTIG: Sie werden die folgende Codezeile bemerken:

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

…dieser Versuch, aus der ersten Webcam, die pygame erkennt, eine brauchbare Kameraschnittstelle zu erstellen. Möglicherweise muss die Auflösung an Ihre Webcam angepasst werden. Experimentieren Sie mit einer Reihe von Werten, um herauszufinden, was am besten funktioniert.

Schritt 6: Verwenden der Dropbox-Parameterdateien

Jetzt sollten Sie also ein funktionierendes Skript haben, das es Ihrem Pi ermöglicht, den App-Ordner auf Ihre Eingaben zu überwachen, wenn es gemäß den Anweisungen aus Schritt 4 ausgeführt wird. Bei Ihrer ersten Ausführung sollte der App-Ordner die folgenden Parameterdateien enthalten:

Verzögerung=10

Exitprogramm=0 Bildanforderung=0 Temperatur=0

Die Interaktion mit dem Programm erfolgt durch manuelles Umbenennen der Parameterdateien über Dropbox. Klicken Sie dazu einfach mit der rechten Maustaste auf eine der Dateien und wählen Sie „Umbenennen“. Jede Parameterdatei hat eine andere Funktion:

- verzögern:

Diese Datei teilt dem Überwachungsprogramm mit, wie viele Sekunden zwischen jeder Iteration der Überwachungsschleife gewartet werden soll. Wenn ich weiß, dass ich nicht viel mit dem Programm interagiere, setze ich es auf 60 oder 120. Wenn ich weiß, dass ich oft Daten vom Pi anfordern möchte, setze ich es auf 10.

- Exitprogramm:

Dieser sollte auf 1 oder 0 gesetzt werden. Wenn das Programm erkennt, dass er auf 1 gesetzt ist, beendet es das Skript. Wenn Sie es auf 1 setzen und das Skript beendet wird, müssen Sie sich erneut beim Pi anmelden, um es wieder zu starten. Dieser Parameter ist vorhanden, damit Sie das Überwachungsprogramm ordnungsgemäß beenden können, wenn es nicht mehr ausgeführt werden soll (z. B. wenn Sie nach Hause zurückgekehrt sind und die Webcam nicht mehr aus der Ferne überwachen möchten).

- Bildanfrage:

Dies ist vielleicht der wichtigste Parameter. Dies sollte auf 1 oder 0 gesetzt werden. Wenn das Programm erkennt, dass es auf 1 gesetzt ist, fordert es ein Bild von der Webcam an und lädt es in den App-Ordner (mit dem Titel 'image.jpg'). Wenn ein anderes 'image.jpg' existiert, wird es überschrieben.

- Temperatur:

Dies ist der von der Funktion set_latest_temp() eingestellte DS18B20-Temperaturmesswert. Sie sollten diese Parameterdatei niemals bearbeiten müssen - sie wird automatisch vom Programm eingestellt.

Beachten Sie, dass, wenn Sie 'exitprogram' oder 'imagerequest' auf 1 setzen, das Programm sie automatisch auf 0 zurücksetzt, bevor der entsprechende Code ausgeführt wird. Dies dient der Bequemlichkeit. Möglicherweise stellen Sie auch fest, dass der Code viele 'try'- und 'except'-Blöcke enthält, die viele der kritischen Funktionen umgeben. Dadurch soll sichergestellt werden, dass das Skript keine Ausnahmen auslöst (und daher nicht mehr ausgeführt wird), wenn etwas schief geht (z. B. ein Problem mit der Internetverbindung, das den Dropbox-Zugriff verhindert).

Schritt 7: Fazit

Dieses Projekt hat eine Möglichkeit vorgestellt, einen Raspberry Pi mit Python und Dropbox zu steuern. Während die in diesem Projekt verwendete Hardware ein Temperatursensor und eine USB-Webcam ist, gibt es viele andere Anwendungen für diese Methode zur Steuerung des Pi. Tatsächlich kann jede Hardwarekomponente, die über GPIO zugänglich ist, über eine ähnliche Programmstruktur gesteuert werden, wodurch das System sehr einfach erweitert werden kann.

Als nächsten Schritt können Sie auch eine GUI-Bibliothek wie Tkinter zusammen mit der Dropbox-API verwenden, um ein Client-Programm zu erstellen, mit dem Sie die Parameterdateien ändern können, ohne sich bei Dropbox anmelden zu müssen.

Ich hoffe, dass dieses Tutorial verständlich war, und wenn Sie Fragen haben oder möchten, dass ich etwas klarstelle, schreiben Sie bitte einen Kommentar!

Empfohlen: