Indholdsfortegnelse:
- Trin 1: Installer Linux Motion på Raspberry
- Trin 2: Konfigurer Google Fotos API til Python
- Trin 3: Test
- Trin 4: Valgfrit: Konfigurer webadgang til realtidskamera
- Trin 5: Tips
Video: Raspberry Pi Linux Motion Google Fotos Integration: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Ideen er at uploade fotos og videoer, der er lavet med bevægelsesaktiveret cam, der er forbundet til Raspberry Pi for at uploade filer til en sky. ‘Motion’ -software understøtter upload til Google Drive via PyDrive. I denne artikel bruges 'Motion' til at uploade til Google Fotos.
Hardware:
Raspberry Pi 3B+
USB -webkamera Logitech C920
Valg af hardware blev ikke bestemt, jeg tog bare det, der var ved hånden.
Forudsætninger:
For nemheds skyld bør Raspberry pi være i dit lokale netværk - for at styre det uden skærm/tastatur og uploade/downloade filer. Til dette skal du have ssh agent på din pc (f.eks. Kit).
Mange tak til ssandbac for en fantastisk tutorial. Hvis du har brug for mere information om, hvordan du opsætter miljø, kan du læse denne artikel. Jeg lånte bevægelsesinstallation og konfigurerede trin fra det og tilføjede nogle ændringer. Især i stedet for at e -maile filer og advarsler bruger dette eksempel især upload til google fotos delte album og får notifikationer som "tilføjede fotos" i meddelelseslinjen.
Her er trinene:
Trin 1: Installer Linux Motion på Raspberry
Især i dette eksempel blev brugt motion v4.0.
1.1 Opdater pi
pi@raspberrypi: ~ $ sudo apt-get opdatering
pi@raspberrypi: ~ $ sudo apt-get upgrade
1.2 Download bevægelse
pi@raspberrypi: ~ $ sudo apt-get installer bevægelse
1.3 Rediger nu denne fil med følgende ændringer
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Start i dæmon (baggrund) og slip terminal (standard: slukket)
dæmon på
# Brug en fil til at gemme logbeskeder, hvis der ikke er defineret stderr og syslog bruges. (standard: ikke defineret)
logfil /var/log/motion/motion.log
# Billedbredde (pixels). Gyldigt område: Kameraafhængig, standard: 352
bredde 1920
# Billedhøjde (pixels). Gyldigt område: Kameraafhængig, standard: 288
højde 1080
# Maksimalt antal billeder, der skal optages pr. Sekund.
framerate 30
# Angiver antallet af forhåndsoptagede (bufrede) billeder fra før bevægelse
pre_capture 5
# Antal rammer, der skal optages efter bevægelse, registreres ikke længere
post_capture 5
# Udsend 'normale' billeder, når der registreres bevægelse (standard: tændt)
output_pictures slukket
# Kvaliteten (i procent), der skal bruges ved jpeg -komprimering
kvalitet 100
# Brug ffmpeg til at kode film i realtid
ffmpeg_output_movies slukket
# eller området 1 - 100, hvor 1 betyder dårligste kvalitet og 100 er bedst.
ffmpeg_variable_bitrate 100
# Når du opretter videoer, skal rammer kopieres i rækkefølge
ffmpeg_duplicate_frames falsk
# Fedt for at aktivere eller deaktivere extpipe (standard: slukket)
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, der skal udføres, når en filmfil
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Lad den sidste med semikolon foreløbig (kommenteret) stå uden kommentarer, efter at du har sikret, at videooptagelse og upload fungerer.
1.4 Skift derefter
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
pi@raspberrypi: ~ $ start_motion_daemon = ja
Trin 2: Konfigurer Google Fotos API til Python
2.1 Anbefales at oprette en ny konto til dette formål for at dele et album med dit hovedalbum for at få notifikationer, når nye filer tilføjes, plus mere lagerplads. Aktiver Google Fotos API for den konto, du skal bruge til at uploade.
Du skulle have credentials.json -fil efter dette.
2.2 Opsætning af Python -miljø
Grundlæggende er miljøopsætningen kun påkrævet på hindbær. Men det kræver oauth -autorisation, som er mere praktisk at udføre på pc. For at gøre dette på hindbær skal du slutte skærm/tastatur til det eller konfigurere et fjernskrivebord -brugergrænseflade. Jeg har lige installeret det samme miljø på både hindbær og pc. Så trin 2.2.1..2.2.3 blev foretaget på PC, 2.2.1, 2.2.2, 2.2.5, 2.2.6 på Rpi
2.2.1 installer Python 3
2.2.2 Installer google api -pakker i henhold til manual*(se 5.1)
På pc
pip3 install-opgrader google-api-python-klient google-auth-httplib2 google-auth-oauthlib
På hindbær
pi@raspberrypi: ~ $ sudo pip3 install-opgrader google-api-python-klient google-auth-httplib2 google-auth-oauthlib
2.2.3 Tjek script -upload til google fotos.. Det placeres på min github. Sæt det i den samme mappe med credentials.json.
2.2.4 Tag et billede, og test upload
python3 photos.py image.jpg
Installer manglende afhængigheder, hvis der er, og prøv igen. Som følge heraf skulle du få token.pickle i scriptets bibliotek og også et nyt delt album oprettet i din Google Fotos webgrænseflade med image.jpg. Når du får token.pickle, behøver du ikke længere credentials.json til photos.py i den samme mappe.
2.2.5 Del albummet med kontoen om, hvad du gerne vil have underretninger om nye medier tilføjet. Føj denne konto til din telefon.
2.2.6 Sæt photos.py og token.pickle i/var/lib/motion på hindbær. 'Pi' bruger kan ikke skrive til 'motion's dir'er, så upload først til /home /pi
scp photos.py token.pickle pi@IP:/home/pi
Log derefter ind på hindbær og flyt filerne under sudo
ssh pi@IP
pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion
2.2.7 Kontroller, hvordan upload fungerer på hindbær. Tag et billede med fswebcam og prøv at uploade det
pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
Der skulle være image-j.webp
Trin 3: Test
3.1 Start Motion -service
pi@raspberrypi: ~ $ sudo service motion start
Du kan ændre kommandoen til "stop" eller "genstart"
3.2 Aktiver bevægelseslogfiler
pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log
3.2 Se kameraets output på en anden enhed, der er tilsluttet det samme lokale netværk. Indtast i browseren:
IP: 8081
3.3 Når man ser på logfilerne, skal man vente, indtil bevægelsen opdages, og filen NAME.mp4 skrives i/var/lib/motion. Start derefter upload -script manuelt
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Kontroller python -sporene. Vent, indtil event_end vises i motion.log. Gå derefter til albummet "helloworld" i dine google -fotos og kontroller, om der er uploadet en video.
3.4 Hvis uploaden lykkes, udelades en kommentar i /etc/motion.conf:
pi@raspberrypi: ~ $ sudo nano /etc/motion.conf
# Kommando, der skal udføres, når en filmfil er klar
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi: ~ $ synk
pi@raspberrypi: ~ $ sudo service motion genstart
3.5 Kigger på bevægelseslogfiler og i albummet, om videoen uploades automatisk.
3.6 Del eventuelt albummet med din hovedkonto for at få besked, når den nye video eller foto tilføjes.
Trin 4: Valgfrit: Konfigurer webadgang til realtidskamera
Dette trin er baseret på Michels Parreno -tutorial. Jeg valgte lige FreeDNS i stedet for NoIP som anbefalet her.
4.1 Konfigurer autoriseret adgang til video streaming motion server:
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Indstil godkendelsesmetoden (standard: 0)
# 0 = deaktiveret
# 1 = Grundlæggende godkendelse
# 2 = MD5 -fordøjelse (den sikrere godkendelse)
stream_auth_metode 2
# Godkendelse til strømmen. Syntaks brugernavn: adgangskode
# Standard: ikke defineret (deaktiveret)
webcontrol_authentication brugernavn: adgangskode
# Maksimal framerate for stream streams (standard: 1)
stream_maxrate 30
# Begræns streamforbindelser til kun localhost (standard: tændt)
stream_localhost slukket
Hvis du ikke vil bruge webkontrolinterface fra eksternt netværk, skal du lade det være deaktiveret (som standard)
# Begræns kontrolforbindelser til kun localhost (standard: tændt)
webcontrol_localhost på
Da hindbær også går online, anbefaler jeg også at ændre standard hindbæradgangskode
pi@raspberrypi: ~ $ passwd
Selvom ssh -port 22 ikke omdirigeres til hindbær, stadig.
4.2 Gå til FreeDNS -webstedet
4.3 Tilmeld dig
4.4 Tilføj underdomæne (For medlemmer -> Underdomæner)
4.5 Vælg DNS -klient, der skal installeres på Raspberry (For medlemmer -> Dynamisk DNS -> Synamiske DNS -ressourcer -> Dynamiske DNS -klienter)
Jeg valgte wget_script update.sh fra Adam Dean (nederst på siden)
Der er pladsholdere _YOURAPIKEYHERE_ og _YOURDOMAINHERE_. For at få dem skal du gå til (For medlemmer -> Dynamisk DNS)
Og på siden herunder finder du eksempler på scripts med din APIKEY og DOMAIN (den tilføjet i 4.4). Jeg tog disse værdier fra Wget Script og erstattede _YOURAPIKEYHERE_ og _YOURDOMAINHERE_ i update.sh
4.6 Kør derefter update.sh på hindbær. Det kan kræve dnsutils til nslookup. Installer det derefter:
pi@raspberrypi: ~ $ sudo apt-get dnsutils
4.7 Konfigurer derefter din router til at omdirigere anmodninger fra eksterne verden til 8081 port til hindbærets ip
4.8 Reserver ip'en til din hindbærs MAC i DHCP -indstilling, så Rpi altid vil have den samme ip
4.9 Indtast derefter i browseren på en enhed, der ikke er forbundet til det lokale netværk:
dit domæne: 8081
Indtast dine legitimationsoplysninger, som du definerede i motion.conf.
Test hvordan videoen fungerer.
4.10 for at opdatere DDNS automatisk opsætning af cron -opgave. Se quick_cron_example på (for medlemmer -> dynamisk DNS)
Trin 5: Tips
5.1 Vær opmærksom på at installere pythonpakker på hindbær. Jeg tilbragte en dag med at debugge dette - problemet var, at scriptet fra konsollen kørte godt, men det blev ikke kaldt fra tilbagekald fra bevægelsesbegivenheder. Hvad der gjorde det værre var, at spor fra scriptet ikke var tilgængelige i sidstnævnte tilfælde.
Årsagen var, at efter vejledningen installerede jeg pakkerne til 'pi' bruger (som som standard er i /home /pi bibliotek og begrænset til andre brugere), men for at køre scriptet som et barn af 'motion' service, skal pakkerne være også tilgængelig for 'motion' -bruger. Så endelig fik jeg det rettet ved at installere pakkerne som
sudo pip3 …
Dette er ikke en ordentlig måde, der stadig fungerer. Installation uden sudo som pip3 -system gav mig fejl af en eller anden grund.
Tilsvarende kaldes scriptet også under sudo (se motion.conf).
Under denne fejlfinding foretog jeg mange unødvendige ændringer og var ikke sikker på, hvad der er nødvendigt og nu for doven til at rulle dem trinvist tilbage og se, hvornår det holder op med at fungere. Især bevilget bevægelsesadministratorrettigheder:
pi@raspberrypi: ~ $ grupper bevægelse
motion: motion adm sudo lydvideobrugere netdev pi
pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALL = (ALL) NOPASSWD: ALL
bevægelse ALL = (ALL) NOPASSWD: ALL
Ændrede også filejere og tilladelser, der lignede upload til Google Drev. Sandsynligvis kan det hjælpe dig i tilfælde af at du har et lignende problem.
5.2 Google Fotos API lader kun tilføje filer til delte album, så alle med linket kan få adgang til det. Del det ikke ved at linke og slet gamle film eller flyt dem til papirkurven eller fra album. I sidstnævnte tilfælde forbliver de på kontoen.
5.3 Google fotos assistent registrerer ansigter, hvilket er ganske nyttigt, hvis kamerakvaliteten er fin. Som en bonus laver den flotte medieformater til kompileringer og gifs osv.
5.4 Jeg forsøgte at bruge 4G LTE USB-modem til internetadgang og her er mine resultater 5.4.4.1 Huawei E3372h-153 fungerer med hindbær uden problemer og ekstra software 5.4.2 Også aktiveret hotspot, så Rasperry delte internetforbindelse via wifi. Der er https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ en virkelig nem vejledning til, hvordan man gør det ved hjælp af RaspAP. 5.4.3 Dynamisk DNS fungerede ikke i 4G -netværket i min carrie. Der er forklaring på hvorfor
5.5 Efter at have brugt dette system i et par uger viste sig, selvom videoer er mere bekvemme at se og uploade, fungerer Google Fotos bedre med billeder. F.eks. Gør det det muligt for ting/ansigter at gruppere analyser af billeder, og først derefter lede efter ansigter/ting fra billederne i videoer, men ikke det modsatte. Så jeg vil teste billeder, der uploader snarere videoer.
Anbefalede:
DIY Smart Garage Door Opener + Home Assistant Integration: 5 trin
DIY Smart Garage Door Opener + Home Assistant Integration: Gør din normale garageport smart ved hjælp af dette DIY -projekt. Jeg vil vise dig, hvordan du bygger det og styrer det ved hjælp af Home Assistant (over MQTT) og har mulighed for eksternt at åbne og lukke din garageport.Jeg bruger et ESP8266 -bord kaldet Wemos
DIY Smart Doorbell: Kode, opsætning og HA -integration: 7 trin (med billeder)
DIY Smart Doorbell: Code, Setup og HA Integration: I dette projekt vil jeg vise dig, hvordan du kan omdanne din normale dørklokke til en smart uden at ændre nogen af de nuværende funktioner eller klippe ledninger. Jeg vil bruge et ESP8266 -kort kaldet Wemos D1 mini. Nyt til ESP8266? Se min introduktion
Simple Kicker Status og Reservationssystem Med Slack Integration: 12 trin (med billeder)
Simple Kicker Status og Reservationssystem Med Slack Integration: I et firma, hvor jeg arbejder, er der et kickerbord. Virksomheden indtager mange etager, og for nogle af medarbejderne tager det op til 3 minutter at komme til bordet og … at indse, at bordet allerede er optaget. Derfor opstod en idé om at bygge et ki
Blinds Control med ESP8266, Google Home og Openhab Integration og Webcontrol: 5 trin (med billeder)
Blinds Control Med ESP8266, Google Home og Openhab Integration og Webcontrol: I denne Instructable viser jeg dig, hvordan jeg tilføjede automatisering til mine persienner. Jeg ville være i stand til at tilføje og fjerne automatiseringen, så al installation er klip på. Hoveddelene er: Trinmotor Stepperdriverstyret ved ESP-01 Gear og montering
Wifi -kontrolleret 12v Led Strip ved hjælp af Raspberry Pi Med Tasker, Ifttt Integration .: 15 trin (med billeder)
Wifi -kontrolleret 12v Led Strip ved hjælp af Raspberry Pi Med Tasker, Ifttt Integration .: I dette projekt vil jeg vise dig, hvordan du styrer en simpel 12v analog led strip over wifi ved hjælp af en hindbær pi. Til dette projekt skal du bruge: 1x Raspberry Pi (I bruger en Raspberry Pi 1 Model B+) 1x RGB 12v Le