Innholdsfortegnelse:

Raspberry Pi Linux Motion Google Photos Integrasjon: 5 trinn
Raspberry Pi Linux Motion Google Photos Integrasjon: 5 trinn

Video: Raspberry Pi Linux Motion Google Photos Integrasjon: 5 trinn

Video: Raspberry Pi Linux Motion Google Photos Integrasjon: 5 trinn
Video: the Raspberry Pi 5 2024, November
Anonim
Raspberry Pi Linux Motion Google Photos Integration
Raspberry Pi Linux Motion Google Photos Integration

Tanken er å laste opp bilder og videoer laget med bevegelsesaktivert kamera koblet til Raspberry Pi for å laste opp filer til en sky. "Motion" -programvare støtter opplasting til Google Drive via PyDrive. I denne artikkelen brukes 'Motion' for å laste opp til Google Foto.

Maskinvare:

Bringebær Pi 3B+

USB -webkamera Logitech C920

Maskinvarevalg var ikke bestemt, jeg tok bare det som var tilgjengelig.

Forutsetninger:

For enkelhets skyld bør Raspberry pi være i ditt lokale nettverk - for å kontrollere den uten skjerm/tastatur og laste opp/laste ned filer. For dette bør du ha ssh -agent på PCen (f.eks. Kitt).

Tusen takk til ssandbac for en flott opplæring. Hvis du trenger mer informasjon om hvordan du konfigurerer miljøet, kan du lese denne artikkelen. Jeg lånte bevegelsesinstallasjon og konfigurerte trinn fra den og la til noen endringer. Spesielt, i stedet for å sende filer og varsler via e -post, bruker dette eksemplet opplasting til et delt fotoalbum for Google Photos og få varsler som "lagt til bilder" i varslingslinjen.

Her er trinnene:

Trinn 1: Installer Linux Motion på Raspberry

Spesielt i dette eksemplet ble det brukt motion v4.0.

1.1 Oppdater pi

pi@raspberrypi: ~ $ sudo apt-get oppdatering

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Last ned bevegelse

pi@raspberrypi: ~ $ sudo apt-get install bevegelse

1.3 Rediger denne filen med følgende endringer

pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf

# Start i demon (bakgrunns) modus og slipp terminal (standard: av)

demon på

# Bruk en fil for å lagre loggmeldinger, hvis ikke definert stderr og syslog brukes. (standard: ikke definert)

logfile /var/log/motion/motion.log

# Bildebredde (piksler). Gyldig rekkevidde: Kameravhengig, standard: 352

bredde 1920

# Bildehøyde (piksler). Gyldig rekkevidde: Kameravhengig, standard: 288

høyde 1080

# Maksimalt antall bilder som skal tas i sekundet.

framerate 30

# Spesifiserer antall forhåndsfangede (bufrede) bilder fra før bevegelse

pre_capture 5

# Antall bilder som skal tas etter bevegelse oppdages ikke lenger

post_capture 5

# Send ut "normale" bilder når bevegelse oppdages (standard: på)

output_pictures off

# Kvaliteten (i prosent) som skal brukes av jpeg -komprimeringen

kvalitet 100

# Bruk ffmpeg til å kode filmer i sanntid

ffmpeg_output_movies av

# eller området 1 - 100 hvor 1 betyr dårligste kvalitet og 100 er best.

ffmpeg_variable_bitrate 100

# Når du lager videoer, bør rammer kopieres i rekkefølge

ffmpeg_duplicate_frames false

# Bool for å aktivere eller deaktivere extpipe (standard: av)

use_extpipe på

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

# Kommando som skal utføres når en filmfil

; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &

La den siste med semikolon foreløpig (kommentert) stå uten å kommentere etter at du har sørget for at videoopptak og opplasting fungerer.

1.4 Endre deretter

pi@raspberrypi: ~ $ sudo nano/etc/default/motion

pi@raspberrypi: ~ $ start_motion_daemon = ja

Trinn 2: Konfigurer Google Foto -API for Python

Sett opp Google Foto API for Python
Sett opp Google Foto API for Python
Sett opp Google Foto API for Python
Sett opp Google Foto API for Python

2.1 Anbefales for å opprette en ny konto for dette formålet for å dele et album med det viktigste for å få varsler når nye filer legges til, pluss mer lagringsplass. Aktiver Google Foto API for kontoen du skal bruke til opplasting.

Du bør ha credentials.json -filen etter dette.

2.2 Oppsett av Python -miljø

I utgangspunktet kreves miljøoppsettet bare på bringebær. Men det krever autorisasjon som er mer praktisk å utføre på PC. For å gjøre dette på bringebær må du koble skjerm/tastatur til det eller sette opp et eksternt skrivebord -brukergrensesnitt. Jeg har nettopp installert det samme miljøet på bringebær og PC begge. Så trinnene 2.2.1..2.2.3 ble utført på PC, 2.2.1, 2.2.2, 2.2.5, 2.2.6 på Rpi

2.2.1 installere Python 3

2.2.2 Installer google api -pakker i henhold til manual*(se 5.1)

På PC

pip3 install-oppgrader google-api-python-klient google-auth-httplib2 google-auth-oauthlib

På bringebær

pi@raspberrypi: ~ $ sudo pip3 install-oppgrader google-api-python-klient google-auth-httplib2 google-auth-oauthlib

2.2.3 Sjekk opplasting av skript til google -bilder.. Det er plassert på min github. Sett den inn i den samme katalogen med credentials.json.

2.2.4 Ta et bilde og testopplasting

python3 photos.py image.jpg

Installer manglende avhengigheter hvis det er det, og prøv igjen. Som et resultat bør du få token.pickle i skriptkatalogen og også et nytt delt album opprettet i Google Foto -nettgrensesnittet med image.jpg. Når du får token.pickle trenger du ikke credentials.json for photos.py i samme katalog lenger.

2.2.5 Del albumet med kontoen om hva du vil at varsler om nye medier skal legges til. Legg denne kontoen til telefonen din.

2.2.6 Legg photos.py og token.pickle i/var/lib/motion på bringebær. 'Pi' bruker kan ikke skrive til 'motion's dir's, så last opp til /home /pi først

scp photos.py token.pickle pi@IP:/home/pi

Logg deretter på bringebær og flytt filene under sudo

ssh pi@IP

pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion

2.2.7 Sjekk hvordan opplasting fungerer på bringebær. Ta et bilde med fswebcam og prøv å laste det opp

pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg

pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg

Det skulle være image-j.webp

Trinn 3: Test

3.1 Start bevegelsestjenesten

pi@raspberrypi: ~ $ sudo service motion start

Du kan endre kommandoen til "stopp" eller "start på nytt"

3.2 Aktiver bevegelseslogger

pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log

3.2 Se kamerautgangen på en annen enhet som er koblet til det samme lokale nettverket. Skriv inn i nettleseren:

IP: 8081

3.3 Når du ser på loggene, vent til bevegelsen oppdages og filen NAME.mp4 skrives i/var/lib/motion. Start deretter opplastingsskriptet manuelt

pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4

Sjekk pytonsporene. Vent til event_end vises i motion.log. Gå deretter til “helloworld” -albumet i google -bildene dine og sjekk om det er lastet opp en video.

3.4 Hvis opplastingen lykkes, uncomment i /etc/motion.conf linjen:

pi@raspberrypi: ~ $ sudo nano /etc/motion.conf

# Kommando som skal utføres når en filmfil er klar

on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &

pi@raspberrypi: ~ $ sync

pi@raspberrypi: ~ $ sudo service motion restart

3.5 Se på bevegelsesloggene og i albumet, sjekk om videoen lastes opp automatisk.

3.6 Du kan eventuelt dele albumet med hovedkontoen din for å få varsel når den nye videoen eller bildet legges til.

Trinn 4: Valgfritt: Konfigurer nettilgang til sanntidskamera

Valgfritt: Konfigurer webtilgang til sanntidskamera
Valgfritt: Konfigurer webtilgang til sanntidskamera
Valgfritt: Konfigurer webtilgang til sanntidskamera
Valgfritt: Konfigurer webtilgang til sanntidskamera
Valgfritt: Konfigurer webtilgang til sanntidskamera
Valgfritt: Konfigurer webtilgang til sanntidskamera

Dette trinnet er basert på Michels Parreno -opplæring. Jeg valgte nettopp FreeDNS i stedet for NoIP som anbefalt her.

4.1 Konfigurer autorisert tilgang til videostreaming bevegelsesserver:

pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf

# Angi godkjenningsmetoden (standard: 0)

# 0 = deaktivert

# 1 = Grunnleggende autentisering

# 2 = MD5 -fordeling (den sikrere autentiseringen)

stream_auth_method 2

# Autentisering for strømmen. Syntaks brukernavn: passord

# Standard: ikke definert (deaktivert)

webcontrol_authentication brukernavn: passord

# Maksimal framerate for strømmer (standard: 1)

stream_maxrate 30

# Begrens strømtilkoblinger til bare localhost (standard: på)

stream_localhost av

Hvis du ikke skal bruke webkontrollgrensesnitt fra eksternt nettverk, la det være deaktivert (som standard)

# Begrens kontrolltilkoblinger til bare localhost (standard: på)

webcontrol_localhost på

Siden bringebær går på nettet, anbefaler jeg også å endre standard bringebærpassord

pi@raspberrypi: ~ $ passwd

Selv om ssh -port 22 ikke blir omdirigert til bringebæret, er det fortsatt.

4.2 Gå til FreeDNS -området

4.3 Registrer deg

4.4 Legg til underdomen (for medlemmer -> underdomener)

4.5 Velg DNS -klienten du vil installere på Raspberry (For medlemmer -> Dynamisk DNS -> Synamiske DNS -ressurser -> Dynamiske DNS -klienter)

Jeg valgte wget_script update.sh fra Adam Dean (nederst på siden)

Det er plassholdere _YOURAPIKEYHERE_ og _YOURDOMAINHERE_. For å få dem gå til (For medlemmer -> Dynamisk DNS)

Og på siden nedenfor finner du eksempler på skript med APIKEY og DOMAIN (det som er lagt til i 4.4). Jeg tok disse verdiene fra Wget Script og erstattet _YOURAPIKEYHERE_ og _YOURDOMAINHERE_ i update.sh

4.6 Kjør deretter update.sh på bringebær. Det kan kreve dnsutils for nslookup. Installer det da:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Konfigurer deretter ruteren til å omdirigere eksterne forespørsler til 8081 -porten til bringebærets ip

4.8 Reserver ip for bringebærets MAC i DHCP -innstilling, slik at Rpi alltid vil ha samme ip

4.9 Gå deretter inn i nettleseren på en enhet som ikke er koblet til det lokale nettverket:

domenet ditt: 8081

Skriv inn legitimasjonen din som du definerte i motion.conf.

Test hvordan videoen fungerer.

4.10 for å oppdatere DDNS automatisk oppsett av cron -oppgave. Se quick_cron_example på (for medlemmer -> dynamisk DNS)

Trinn 5: Tips

5.1 Vær oppmerksom på å installere pythonpakker på bringebær. Jeg brukte en dag på å feilsøke dette - problemet var at skriptet fra konsollen kjørte bra, men det ble ikke ringt fra tilbakeringing av bevegelseshendelse. Det som gjorde det verre var at spor fra manuset ikke var tilgjengelige i sistnevnte tilfelle.

Årsaken var at jeg fulgte veiledningen og installerte pakkene for 'pi' -bruker (som som standard er i /home /pi -katalogen og begrenset for andre brukere), men for å kjøre skriptet som et barn av 'motion' -tjenesten må pakkene være tilgjengelig også for 'bevegelse' -bruker. Så endelig fikset jeg det ved å installere pakkene som

sudo pip3 …

Dette er ikke en skikkelig måte som fortsatt fungerer. Installasjon uten sudo som pip3 -system ga meg feil av en eller annen grunn.

Tilsvarende kalles skriptet også under sudo (se motion.conf).

Under denne feilsøkingen gjorde jeg mange unødvendige endringer og ikke sikker på hva som er nødvendig og nå for lat til å rulle dem trinnvis tilbake og se når det slutter å fungere. Spesielt innvilget bevegelsesadministratorrettigheter:

pi@raspberrypi: ~ $ grupper bevegelse

motion: motion adm sudo lydvideobrukere netdev pi

pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd

pi ALL = (ALL) NOPASSWD: ALL

bevegelse ALL = (ALL) NOPASSWD: ALL

Endret også fileiere og tillatelser som ligner på opplasting til Google Disk. Sannsynligvis kan det hjelpe deg i et tilfelle du har et lignende problem.

5.2 Med Google Photos API kan du bare legge til filer i delte album, slik at alle med koblingen kan få tilgang til det. Ikke del den ved å lenke og slett gamle filmer eller flytt dem til papirkurven eller fra albumet. I sistnevnte tilfelle forblir de på kontoen.

5.3 Google fotoassistent oppdager ansikter, noe som er ganske nyttig hvis kamerakvaliteten er god. Som en bonus lager den flotte mediasorteringer, samlinger og-g.webp

5.4 Jeg prøvde å bruke 4G LTE USB-modem for internettilgang, og her er resultatene mine Huawei E3372h-153 fungerer med bringebær uten problemer og ekstra programvare 5.4.2 Også aktivert hotspot slik at Rasperry delte internettforbindelse via wifi. Det er https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ en veldig enkel guide til hvordan du gjør det ved hjelp av RaspAP. 5.4.3 Dynamisk DNS fungerte ikke i 4G -nettverket til min carrie. Det er forklaring på hvorfor

5.5 Etter å ha brukt dette systemet i et par uker viste det seg, selv om videoer er mer praktiske å se og laste opp, fungerer Google Foto bedre med bilder. F.eks. Gjør det mulig for ting/ansikter å gruppere bare analysere bilder, og først da lete etter ansikter/ting fra bildene i videoer, men ikke det motsatte. Så jeg skal teste bilder som laster opp videoer.

Anbefalt: