Inhaltsverzeichnis:
- Schritt 1: Installieren Sie Linux Motion auf Raspberry
- Schritt 2: Google Fotos API für Python einrichten
- Schritt 3: Testen
- Schritt 4: Optional: Konfigurieren Sie den Webzugriff für die Echtzeit-Streaming-Kamera
- Schritt 5: Tipps
Video: Raspberry Pi Linux Motion Google Fotos Integration - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Die Idee ist, Fotos und Videos hochzuladen, die mit einer bewegungsaktivierten Kamera erstellt wurden, die mit dem Raspberry Pi verbunden ist, um Dateien in eine Cloud hochzuladen. Die Software „Motion“unterstützt das Hochladen auf Google Drive über PyDrive. In diesem Artikel wird „Bewegung“verwendet, um auf Google Fotos hochzuladen.
Hardware:
Raspberry Pi 3B+
USB-Webcam Logitech C920
Hardwareauswahl war nicht bestimmt, ich habe einfach das zur Hand genommen.
Voraussetzungen:
Der Einfachheit halber sollte sich Raspberry Pi in Ihrem lokalen Netzwerk befinden – um es ohne Monitor/Tastatur und Upload/Download von Dateien zu steuern. Dazu sollten Sie einen ssh-Agenten auf Ihrem PC haben (zB putty).
Vielen Dank an ssandbac für ein tolles Tutorial. Wenn Sie weitere Informationen zum Einrichten der Umgebung benötigen, lesen Sie diesen Artikel. Ich habe mir Motion-Installations- und Konfigurationsschritte davon ausgeliehen und einige Änderungen hinzugefügt. Anstatt Dateien und Benachrichtigungen per E-Mail zu versenden, wird in diesem Beispiel insbesondere das Hochladen in das geteilte Album von Google Fotos verwendet und Benachrichtigungen in der Art von "Hinzugefügte Fotos" in der Benachrichtigungsleiste erhalten.
Hier sind die Schritte:
Schritt 1: Installieren Sie Linux Motion auf Raspberry
Besonders in diesem Beispiel wurde Motion v4.0 verwendet.
1.1 Update-Bilder
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get upgrade
1.2 Bewegung herunterladen
pi@raspberrypi:~ $ sudo apt-get install motion
1.3 Bearbeiten Sie nun diese Datei mit den folgenden Änderungen
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
# Starten Sie im Daemon-Modus (Hintergrund) und geben Sie das Terminal frei (Standard: aus)
Dämon an
# Verwenden Sie eine Datei, um Protokollnachrichten zu speichern, wenn nicht definiert stderr und syslog verwendet wird. (Standard: nicht definiert)
Protokolldatei /var/log/motion/motion.log
# Bildbreite (Pixel). Gültiger Bereich: Kameraabhängig, Standard: 352
Breite 1920
# Bildhöhe (Pixel). Gültiger Bereich: Kameraabhängig, Standard: 288
Höhe 1080
# Maximale Anzahl von Frames, die pro Sekunde erfasst werden sollen.
Bildrate 30
# Gibt die Anzahl der vorab aufgenommenen (gepufferten) Bilder vor der Bewegung an
pre_capture 5
# Anzahl der zu erfassenden Bilder, nachdem keine Bewegung mehr erkannt wurde
post_capture 5
# 'normale' Bilder ausgeben, wenn eine Bewegung erkannt wird (Standard: ein)
Ausgabe_Bilder aus
# Die Qualität (in Prozent), die von der JPEG-Komprimierung verwendet werden soll
Qualität 100
# Verwenden Sie ffmpeg, um Filme in Echtzeit zu codieren
ffmpeg_output_movies aus
# oder der Bereich 1 - 100, wobei 1 die schlechteste Qualität und 100 die beste Qualität bedeutet.
ffmpeg_variable_bitrate 100
# Beim Erstellen von Videos sollten Frames der Reihe nach dupliziert werden
ffmpeg_duplicate_frames false
# Bool, um extpipe zu aktivieren oder zu deaktivieren (Standard: off)
use_extpipe an
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx%h -Framerate %fps -i pipe:0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4
target_dir /var/lib/motion
# Befehl, der ausgeführt werden soll, wenn eine Filmdatei
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Lassen Sie das letzte vorerst mit Semikolon (kommentiert) und entkommentieren Sie, nachdem sichergestellt wurde, dass die Videoaufnahme und das Hochladen funktioniert.
1.4 Dann ändern
pi@raspberrypi:~ $ sudo nano /etc/default/motion
pi@raspberrypi:~ $ start_motion_daemon=yes
Schritt 2: Google Fotos API für Python einrichten
2.1 Es wird empfohlen, zu diesem Zweck ein neues Konto zu erstellen, um ein Album mit Ihrem Hauptkonto zu teilen, um Benachrichtigungen zu erhalten, wenn neue Dateien hinzugefügt werden, sowie mehr Speicherplatz. Aktivieren Sie die Google Fotos API für das Konto, das Sie zum Hochladen verwenden möchten.
Danach sollten Sie die Datei "credentials.json" haben.
2.2 Einrichtung der Python-Umgebung
Grundsätzlich ist die Umgebungskonfiguration nur auf Raspberry erforderlich. Es erfordert jedoch eine Oauth-Autorisierung, die auf dem PC bequemer zu bewerkstelligen ist. Um dies auf Raspberry zu tun, müssen Sie Monitor / Tastatur daran anschließen oder eine Remote-Desktop-Benutzeroberfläche einrichten. Ich habe gerade die gleiche Umgebung auf Raspberry und PC installiert. Also wurden die Schritte 2.2.1.2.2.3 auf PC gemacht, 2.2.1, 2.2.2, 2.2.5, 2.2.6 auf Rpi
2.2.1 Python 3 installieren
2.2.2 Google-API-Pakete gemäß Handbuch installieren* (siehe 5.1)
Auf dem PC
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Auf Himbeere
pi@raspberrypi:~ $ sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 Überprüfen Sie das Hochladen von Skripten auf Google-Fotos. Es befindet sich auf meinem Github. Legen Sie es in das gleiche Verzeichnis mit Credentials.json.
2.2.4 Machen Sie ein Foto und testen Sie das Hochladen
python3 photos.py image.jpg
Installieren Sie fehlende Abhängigkeiten, falls vorhanden, und versuchen Sie es erneut. Als Ergebnis sollten Sie token.pickle im Verzeichnis des Skripts und auch ein neues freigegebenes Album erhalten, das in Ihrer Google Fotos-Weboberfläche mit image-j.webp
2.2.5 Teilen Sie das Album mit dem Konto darüber, was Sie Benachrichtigungen zu neuen Medien erhalten möchten. Fügen Sie dieses Konto zu Ihrem Telefon hinzu.
2.2.6 Legen Sie photos.py und token.pickle in /var/lib/motion auf raspberry ab. 'pi'-Benutzer kann nicht in die 'Bewegungsverzeichnisse' schreiben, also zuerst nach /home/pi hochladen
scp photos.py token.pickle pi@IP:/home/pi
Dann loggen Sie sich bei Raspberry ein und verschieben Sie die Dateien unter sudo
ssh pi@IP
pi@raspberrypi:~ $ sudo mv photos.py token.pickle /var/lib/motion
2.2.7 Überprüfen Sie, wie das Hochladen auf Himbeere funktioniert. Mach ein Foto mit fswebcam und versuche es hochzuladen
pi@raspberrypi:~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi:~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
Es sollte image-j.webp
Schritt 3: Testen
3.1 Motion-Dienst starten
pi@raspberrypi:~ $ sudo service motion start
Sie können den Befehl in "Stopp" oder "Neustart" ändern.
3.2 Bewegungsprotokolle aktivieren
pi@raspberrypi:~ $ tail -f /var/log/motion/motion.log
3.2 Zeigen Sie die Kameraausgabe auf einem anderen Gerät an, das mit demselben lokalen Netzwerk verbunden ist. Geben Sie im Browser ein:
IP:8081
3.3 Beim Betrachten der Logs warten Sie, bis die Bewegung erkannt und die Datei NAME.mp4 in /var/lib/motion geschrieben wird. Starten Sie dann das Upload-Skript manuell
pi@raspberrypi:~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Überprüfen Sie die Python-Spuren. Warten Sie, bis event_end in motion.log angezeigt wird. Gehen Sie dann in Ihren Google-Fotos zum Album „helloworld“und prüfen Sie, ob ein Video hochgeladen wurde.
3.4 Wenn das Hochladen erfolgreich war, entkommentieren Sie in /etc/motion.conf die Zeile:
pi@raspberrypi:~ $ sudo nano /etc/motion.conf
# Befehl, der ausgeführt werden soll, wenn eine Filmdatei fertig ist
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi:~ $ sync
pi@raspberrypi:~ $ sudo service motion restart
3.5 Sehen Sie sich die Bewegungsprotokolle an und überprüfen Sie im Album, ob das Video automatisch hochgeladen wurde.
3.6 Teilen Sie das Album optional mit Ihrem Hauptkonto, um eine Benachrichtigung zu erhalten, wenn das neue Video oder Foto hinzugefügt wird.
Schritt 4: Optional: Konfigurieren Sie den Webzugriff für die Echtzeit-Streaming-Kamera
Dieser Schritt basiert auf Michels Parreno-Tutorial. Ich habe einfach FreeDNS anstelle von NoIP gewählt, wie hier empfohlen.
4.1 Konfigurieren Sie den autorisierten Zugriff auf den Videostreaming-Bewegungsserver:
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
# Legen Sie die Authentifizierungsmethode fest (Standard: 0)
# 0 = deaktiviert
# 1 = Basisauthentifizierung
# 2 = MD5-Digest (die sicherere Authentifizierung)
stream_auth_method 2
# Authentifizierung für den Stream. Syntax Benutzername:Passwort
# Standard: nicht definiert (Deaktiviert)
webcontrol_authentication Benutzername:Passwort
# Maximale Framerate für Stream-Streams (Standard: 1)
stream_maxrate 30
# Stream-Verbindungen nur auf localhost beschränken (Standard: on)
stream_localhost aus
Wenn Sie die Websteuerungsschnittstelle von einem externen Netzwerk nicht verwenden möchten, lassen Sie sie deaktiviert (als Standard)
# Kontrollverbindungen nur auf localhost beschränken (Standard: on)
webcontrol_localhost an
Da Raspberry online geht, empfehle ich außerdem, das Standard-Raspberry-Passwort zu ändern
pi@raspberrypi:~ $ passwd
Obwohl der ssh-Port 22 nicht auf die Himbeere umgeleitet wird, ist dies immer noch nicht der Fall.
4.2 Gehen Sie zur FreeDNS-Site
4.3 Anmelden
4.4 Subdomain hinzufügen (Für Mitglieder -> Subdomains)
4.5 DNS-Client zur Installation auf Raspberry auswählen (Für Mitglieder -> Dynamisches DNS -> Synamic DNS-Ressourcen -> Dynamische DNS-Clients)
Ich habe wget_script update.sh von Adam Dean gewählt (unten auf der Seite)
Es gibt Platzhalter _YOURAPIKEYHERE_ und _YOURDOMAINHERE_. Um sie zu erhalten, gehen Sie zu (Für Mitglieder -> Dynamisches DNS)
Und auf der Seite unten finden Sie Beispiele für Skripte mit Ihrem APIKEY und Ihrer DOMAIN (die in 4.4 hinzugefügt wurde). Ich habe diese Werte aus dem Wget-Skript genommen und _YOURAPIKEYHERE_ und _YOURDOMAINHERE_ in update.sh ersetzt
4.6 Führen Sie dann update.sh auf Raspberry aus. Es kann dnsutils für nslookup erfordern. Installieren Sie es dann:
pi@raspberrypi:~ $ sudo apt-get dnsutils
4.7 Konfigurieren Sie dann Ihren Router, um externe Weltanfragen an den 8081-Port an die IP-Adresse der Himbeere umzuleiten
4.8 Reservieren Sie die IP für den MAC Ihrer Himbeere in der DHCP-Einstellung, damit Rpi immer die gleiche IP hat
4.9 Geben Sie dann auf einem Gerät, das nicht mit dem lokalen Netzwerk verbunden ist, im Browser ein:
IhreDomain:8081
Geben Sie Ihre Zugangsdaten ein, die Sie in motion.conf definiert haben.
Testen Sie, wie das Video funktioniert.
4.10, um DDNS automatisch zu aktualisieren, Setup-Cron-Task. Siehe quick_cron_example auf (Für Mitglieder -> Dynamisches DNS)
Schritt 5: Tipps
5.1 Seien Sie bei der Installation von Python-Paketen auf Raspberry aufmerksam. Ich habe einen Tag damit verbracht, dies zu debuggen – das Problem war, dass das Skript von der Konsole aus gut lief, aber das Aufrufen von einem Bewegungsereignis-Callback nicht. Was es noch schlimmer machte, war, dass im letzteren Fall keine Spuren aus dem Skript verfügbar waren.
Der Grund war, dass ich nach der Anleitung die Pakete für den Benutzer „pi“installiert habe (der sich standardmäßig im Verzeichnis /home/pi befindet und für andere Benutzer eingeschränkt ist), aber um das Skript als Kind des Dienstes „motion“auszuführen, müssen die Pakete sein auch für 'motion'-Benutzer verfügbar. Also habe ich es endlich behoben, indem ich die Pakete installiert habe als
sudo pip3 …
Dies ist kein richtiger Weg, der immer noch funktioniert. Die Installation ohne sudo als pip3 --system gab mir aus irgendeinem Grund Fehler.
Entsprechend wird das Skript auch unter sudo aufgerufen (siehe motion.conf).
Während dieser Fehlerbehebung habe ich viele unnötige Änderungen vorgenommen und bin mir nicht sicher, was notwendig ist, und jetzt zu faul, um sie inkrementell zurückzusetzen und zu sehen, wann es nicht mehr funktioniert. Insbesondere gewährte Bewegungsadministratorrechte:
pi@raspberrypi:~ $ Gruppenbewegung
motion: motion adm sudo audio video users netdev pi
pi@raspberrypi:~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALLE=(ALLE) NOPASSWD: ALLE
Bewegung ALLE=(ALLE) NOPASSWD: ALLE
Außerdem wurden Dateibesitzer und Berechtigungen ähnlich wie beim Hochladen auf Google Drive geändert. Wahrscheinlich kann es Ihnen in einem Fall helfen, in dem Sie ein ähnliches Problem haben.
5.2 Mit der Google Fotos-API können nur Dateien zu freigegebenen Alben hinzugefügt werden, damit jeder mit dem Link darauf zugreifen kann. Teilen Sie es nicht per Link und löschen Sie alte Filme oder verschieben Sie sie in den Papierkorb oder aus dem Album. Im letzteren Fall verbleiben sie auf dem Konto.
5.3 Der Google Fotos-Assistent erkennt Gesichter, was bei guter Kameraqualität sehr nützlich ist. Als Bonus macht es ausgefallene Medienzusammenstellungen und Gifs usw.
5.4 Ich habe versucht, ein 4G LTE-USB-Modem für den Internetzugang zu verwenden, und hier sind meine Ergebnisse. Es gibt https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ eine wirklich einfache Anleitung, wie man es mit RaspAP macht. 5.4.3 Dynamisches DNS funktionierte nicht im 4G-Netzwerk meines Trägers. Es gibt eine Erklärung warum
5.5 Nachdem Sie dieses System einige Wochen lang verwendet haben, stellte sich heraus, dass Google Fotos mit Bildern besser funktioniert, obwohl Videos bequemer anzuzeigen und hochzuladen sind. ZB ermöglicht es die Gruppierung von Dingen/Gesichtern, nur Bilder zu analysieren und erst dann nach Gesichtern/Dingen aus den Bildern in Videos zu suchen, aber nicht das Gegenteil. Also teste ich mal Bilder und lade eher Videos hoch.
Empfohlen:
Anhängen von Google Kalender an Google Sites: 5 Schritte
Anhängen von Google-Kalendern an Google Sites: Dies ist eine Anleitung, die Ihnen beibringt, wie Sie Google-Kalender erstellen, verwenden und bearbeiten und sie dann mithilfe der Freigabefunktionen an eine Google-Site anhängen. Dies kann für viele Menschen von Vorteil sein, da Google Sites verwendet werden kann, um i
Leap-Motion-Controller. (Progetto Arduino): 4 Schritte
Leap-Motion-Controller. (Arduino Progetto): Progetto-Quest-Progetto und Leap-Motion-Steuerung per Kontrolle der Intensität und Farbe der RGB-LEDs in der Bewegungsumgebung des Mani-nello-Spazio.Referenz:Leap Motion SDK: https:// entwicklerarchiv.leapmotion.com/doc
Fügen Sie Google Maps ganz einfach automatisch und kostenlos zu Ihren Google Sheets hinzu: 6 Schritte
Fügen Sie Google Maps ganz einfach automatisch und kostenlos zu Ihren Google Sheets hinzu: Genau wie viele Maker habe ich nur wenige GPS-Tracker-Projekte erstellt. Heute können wir GPS-Punkte schnell direkt in Google Sheets visualisieren, ohne eine externe Website oder API zu verwenden. Das Beste ist, es ist KOSTENLOS
Arduino- und Apple HomeKit-Integration - Steuern Sie Ihr Zuhause von Siri aus! IoT ist hier: 6 Schritte
Arduino- und Apple HomeKit-Integration - Steuern Sie Ihr Zuhause von Siri aus! IoT ist hier: Dieses Instructable bietet Ihnen eine schnelle und einfache Möglichkeit, ein Arduino-Board zu Apples HomeKit auf einem iOS-Gerät hinzuzufügen. Es eröffnet alle möglichen Möglichkeiten, einschließlich Skripte, die auf dem Server ausgeführt werden, kombiniert mit Apples HomeKit "Szenen", es macht
MQTT-Integration: 4 Schritte
MQTT-Integration: Unser Facebook-Post: https://www.facebook.com/IoTGuruLive/videos/359772791497906