Raspberry Pi Linux Motion Google Photos Integration: 5 korakov
Raspberry Pi Linux Motion Google Photos Integration: 5 korakov
Anonim
Raspberry Pi Linux Motion Integracija Google Fotografij
Raspberry Pi Linux Motion Integracija Google Fotografij

Zamisel je naložiti fotografije in video posnetke, narejene z kamero, aktivirano z gibanjem, povezano z Raspberry Pi, da naložite datoteke v oblak. Programska oprema "Motion" podpira nalaganje v Google Drive prek PyDrive. V tem članku se "Motion" uporablja za nalaganje v Google Foto.

Strojna oprema:

Raspberry Pi 3B+

Spletna kamera USB Logitech C920

Izbira strojne opreme ni bila določena, vzela sem samo tisto, kar je bilo pri roki.

Predpogoji:

Za udobje mora biti Raspberry pi v vašem lokalnem omrežju - za nadzor brez monitorja/tipkovnice in nalaganje/nalaganje datotek. V ta namen morate imeti v računalniku ssh agent (npr. Kit).

Najlepša hvala ssandbac za odlično vadnico. Če potrebujete več informacij o nastavitvi okolja, si oglejte ta članek. Od nje sem si izposodil namestitev gibanja in korake konfiguracije ter dodal nekaj sprememb. Namesto pošiljanja datotek in opozoril po e -pošti ta primer uporablja nalaganje v album v skupni rabi google photos in prejemanje obvestil v obliki »dodanih fotografij« v vrstici z obvestili.

Tu so koraki:

1. korak: Namestite Linux Motion na Raspberry

V tem primeru je bilo zlasti uporabljeno gibanje v4.0.

1.1 Posodobi pi

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Prenesite gibanje

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

1.3 Zdaj uredite to datoteko z naslednjimi spremembami

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

# Začni v daemon (ozadju) načinu in sprosti terminal (privzeto: izklopljeno)

demon vklopljen

# Uporabite datoteko za shranjevanje dnevniških sporočil, če nista določena stderr in syslog. (privzeto: ni definirano)

logfile /var/log/motion/motion.log

# Širina slike (slikovne pike). Veljavno območje: odvisno od kamere, privzeto: 352

širina 1920

# Višina slike (slikovne pike). Veljavno območje: odvisno od kamere, privzeto: 288

višina 1080

# Največje število sličic na sekundo.

hitrost sličic 30

# Določa število vnaprej posnetih (medpomnjenih) slik pred gibanjem

pre_capture 5

# Število sličic za zajem po gibanju ni več zaznano

post_capture 5

# Predvajajte "normalne" slike, ko zaznate gibanje (privzeto: vklopljeno)

izhodne_slike izklopljene

# Kakovost (v odstotkih) za stiskanje jpeg

kakovost 100

# Uporabite ffmpeg za kodiranje filmov v realnem času

ffmpeg_output_movies off

# ali razpon 1 - 100, kjer 1 pomeni najslabšo kakovost, 100 pa najboljšo.

ffmpeg_variable_bitrate 100

# Pri ustvarjanju videoposnetkov je treba okvirje podvojiti po vrstnem redu

ffmpeg_duplicate_frames false

# Bool za omogočanje ali onemogočanje extpipe (privzeto: izklopljeno)

use_extpipe vklopljeno

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i cev: 0 -vcodec libx264 -nastavljeno ultra hitro -f mp4 %f.mp4

target_dir/var/lib/motion

# Ukaz, ki ga je treba izvesti pri filmski datoteki

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

Zadnjega s podpičjem zaenkrat (komentirano) pustite, da komentira, potem ko zagotovite, da snemanje in nalaganje videa deluje.

1.4 Nato spremenite

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

pi@raspberrypi: ~ $ start_motion_daemon = da

2. korak: Nastavite Google Photos API za Python

Nastavite Google Photos API za Python
Nastavite Google Photos API za Python
Nastavite Google Photos API za Python
Nastavite Google Photos API za Python

2.1 Priporočljivo je, da v ta namen ustvarite nov račun, ki bo album delil z vašim glavnim, da boste prejemali obvestila o dodajanju novih datotek in več prostora za shranjevanje. Omogočite Google Photos API za račun, ki ga boste uporabili za nalaganje.

Po tem bi morali imeti datoteko credentials.json.

2.2 Nastavitev okolja Python

V osnovi je nastavitev okolja potrebna samo za maline. Vendar pa zahteva avtorizacijo oauth, ki je primernejša za izvedbo v računalniku. Če želite to narediti na malini, morate nanjo priključiti monitor/tipkovnico ali nastaviti nekaj uporabniškega vmesnika za oddaljeno namizje. Pravkar sem namestil isto okolje na malino in na računalnik. Koraki 2.2.1..2.2.3 so bili narejeni na osebnem računalniku, 2.2.1, 2.2.2, 2.2.5, 2.2.6 na Rpi

2.2.1 namestite Python 3

2.2.2 Namestite google api pakete v skladu z navodili*(glejte 5.1)

Na osebnem računalniku

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

Na malini

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

2.2.3 Oglejte si nalaganje skripta v google fotografije. Postavljen je na moj github. Dajte ga v isti imenik z credentials.json.

2.2.4 Fotografirajte in preizkusite nalaganje

python3 photos.py image.jpg

Namestite manjkajoče odvisnosti, če obstajajo, in poskusite znova. Posledično bi morali v imenik skripta dobiti token.pickle in tudi nov album v skupni rabi, ustvarjen v spletnem vmesniku Google Photos s image.jpg. Ko dobite token.pickle, za photos.py v istem imeniku ne potrebujete več credentials.json.

2.2.5 Dajte album v skupno rabo z računom o tem, kaj želite, da se dodajo obvestila o novih medijih. Dodajte ta račun v telefon.

2.2.6 Postavite photos.py in token.pickle v/var/lib/motion na malino. "Pi" uporabnik ne more pisati v "motion's dir's", zato ga najprej naložite v /home /pi

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

Nato se prijavite v malino in premaknite datoteke pod sudo

ssh pi@IP

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

2.2.7 Preverite, kako nalaganje deluje na malino. Fotografirajte s fswebcam in jo poskusite naložiti

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

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

V albumu "helloworld" bi moral biti image-j.webp

3. korak: Preizkusite

3.1 Zaženite storitev Motion

pi@raspberrypi: ~ $ sudo start motion start

Ukaz lahko spremenite v "stop" ali "restart"

3.2 Omogoči dnevnike gibanja

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

3.2 Oglejte si izhod kamere na drugi napravi, povezani v isto lokalno omrežje. V brskalnik vnesite:

IP: 8081

3.3 Če pogledate dnevnike, počakajte, da se zazna gibanje in datoteka NAME.mp4 zapiše v/var/lib/motion. Nato ročno zaženite nalaganje skripta

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

Preverite sledi pythona. Počakajte, da se event_end prikaže v motion.log. Nato pojdite v album »helloworld« na svojih fotografijah v Googlu in preverite, ali je naložen videoposnetek.

3.4 Če je nalaganje uspešno, komentirajte v /etc/motion.conf vrstici:

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

# Ukaz, ki ga je treba izvesti, ko je filmska datoteka pripravljena

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

pi@raspberrypi: ~ $ sinhronizacija

pi@raspberrypi: ~ $ sudo ponovni zagon gibanja storitve

3.5 Ogled dnevnikov gibanja in albuma preverite, ali se je videoposnetek samodejno naložil.

3.6 Po želji album delite z glavnim računom, da prejmete obvestilo o dodajanju novega videoposnetka ali fotografije.

4. korak: Izbirno: Konfigurirajte spletni dostop do pretočne kamere v realnem času

Izbirno: konfigurirajte spletni dostop do pretočne kamere v realnem času
Izbirno: konfigurirajte spletni dostop do pretočne kamere v realnem času
Izbirno: Konfigurirajte spletni dostop do pretočne kamere v realnem času
Izbirno: Konfigurirajte spletni dostop do pretočne kamere v realnem času
Izbirno: Konfigurirajte spletni dostop do pretočne kamere v realnem času
Izbirno: Konfigurirajte spletni dostop do pretočne kamere v realnem času

Ta korak temelji na Michelovi vadnici Parreno. Pravkar sem izbral FreeDNS namesto NoIP, kot je priporočeno tukaj.

4.1 Konfigurirajte pooblaščen dostop do strežnika za pretakanje videoposnetkov:

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

# Nastavite način preverjanja pristnosti (privzeto: 0)

# 0 = onemogočeno

# 1 = Osnovno preverjanje pristnosti

# 2 = povzetek MD5 (varnejša avtentikacija)

tok_auth_metoda 2

# Preverjanje pristnosti za tok. Uporabniško ime sintakse: geslo

# Privzeto: ni definirano (onemogočeno)

webcontrol_authentication uporabniško ime: geslo

# Največja hitrost sličic za tokove tokov (privzeto: 1)

stream_maxrate 30

# Omeji pretočne povezave samo na localhost (privzeto: vklopljeno)

stream_localhost izklopljen

Če ne boste uporabljali spletnega nadzornega vmesnika iz zunanjega omrežja, ga pustite onemogočenega (privzeto)

# Omejite nadzorne povezave samo na localhost (privzeto: vklopljeno)

webcontrol_localhost je vklopljen

Ker gre malina na splet, priporočam, da spremenite privzeto geslo za malino

pi@raspberrypi: ~ $ passwd

Čeprav vrata ssh 22 niso preusmerjena na malino, še vedno.

4.2 Pojdite na spletno mesto FreeDNS

4.3 Prijavite se

4.4 Dodajanje poddomene (za člane -> poddomene)

4.5 Izberite odjemalca DNS za namestitev na Raspberry (Za člane -> Dinamični DNS -> Viri sinamičnih DNS -> Odjemalci dinamičnih DNS)

Za Adama Deana sem izbral wget_script update.sh (na dnu strani)

Obstajata nadomestna znaka _YOURAPIKEYHERE_ in _YOURDOMAINHERE_. Če jih želite dobiti, pojdite na (Za člane -> Dinamični DNS)

Na spodnji strani boste našli primere skriptov z APIKEY in DOMAIN (tisto, dodano v 4.4). Te vrednosti sem vzel iz skripta Wget in zamenjal _YOURAPIKEYHERE_ in _YOURDOMAINHERE_ v update.sh

4.6 Nato zaženite update.sh na malini. Za nslookup lahko zahteva dnsutils. Nato ga namestite:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Nato usmerjevalnik konfigurirajte tako, da preusmeri zahteve zunanjega sveta na vrata 8081 v ip maline

4.8 Rezervirajte IP za nastavitev MAC vaše maline v nastavitvi DHCP, tako da bo Rpi vedno imel isti ip

4.9 Nato vnesite brskalnik v napravi, ki ni povezana z lokalnim omrežjem:

vaša domena: 8081

Vnesite poverilnice, ki ste jih določili v motion.conf.

Preizkusite, kako video deluje.

4.10 za posodobitev DDNS samodejno nastavi cron opravilo. Oglejte si quick_cron_example on (Za člane -> Dinamični DNS)

5. korak: Nasveti

5.1 Bodite previdni pri nameščanju paketov python na malino. En dan sem odpravljal napake - težava je bila v tem, da se je iz konzole skript dobro izvajal, klic iz povratnega klica pri dogodku gibanja pa ni. Še huje pa je bilo, da v slednjem primeru sledi iz scenarija niso bile na voljo.

Razlog je bil v tem, da sem po vodniku namestil pakete za uporabnika 'pi' (ki je privzeto v imeniku /home /pi in je omejen za druge uporabnike), a za zagon skripta kot podrejenca storitve 'motion' morajo biti paketi na voljo tudi uporabnikom 'motion'. Tako sem končno popravil namestitev paketov kot

sudo pip3 …

To še vedno ni pravilen način. Namestitev brez sudo kot pip3 --system mi je iz nekega razloga povzročala napake.

Skladno s tem se skript pokliče tudi pod sudo (glej motion.conf).

Med tem odpravljanjem težav sem naredil veliko nepotrebnih sprememb in nisem prepričan, kaj je potrebno, zdaj pa sem preveč len, da bi jih postopoma zavrnil in videl, kdaj preneha delovati. Zlasti podeljene pravice skrbnika gibanja:

pi@raspberrypi: ~ $ gibanje skupin

motion: motion adm sudo avdio video uporabniki netdev pi

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

pi ALL = (VSE) NOPASSWD: VSE

gibanje ALL = (VSE) NOPASSWD: VSE

Spreminjal se je tudi lastnik datotek in dovoljenja, podobna nalaganju v Google Drive. Verjetno vam lahko pomaga, če imate podobno težavo.

5.2 Google Photos API omogoča dodajanje datotek v albume v skupni rabi, tako da lahko do njih dostopa vsak, ki ima povezavo. Ne delite ga prek povezave in ne brišite starih filmov ali jih premikajte v koš ali iz albuma. V zadnjem primeru ostanejo na računu.

5.3 Googlov pomočnik za fotografije zazna obraze, kar je zelo koristno, če je kakovost kamere dobra. Kot bonus naredi fancy medijske vrste kompilacij in gifov itd.

5.4 Poskusil sem uporabiti 4G LTE USB modem za dostop do interneta in tukaj so moji rezultati. 5.4.1 Huawei E3372h-153 deluje z malino brez težav in dodatne programske opreme. 5.4.2 Omogočena je tudi dostopna točka, tako da je Rasperry delil internetno povezavo prek wifi. Obstaja https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ res enostaven vodnik, kako to storiti z uporabo RaspAP. 5.4.3 Dinamični DNS ni deloval v omrežju 4G moje carrie. Obstaja razlaga, zakaj

5.5 Po nekaj tednih uporabe tega sistema, čeprav so videoposnetki bolj priročni za ogled in nalaganje, Google Photos bolje deluje s slikami. Npr. Omogoča samo združevanje stvari/obrazov za analizo slik in šele nato iskanje obrazov/stvari iz slik v videoposnetkih, ne pa tudi obratno. Zato bom preizkusil slike, ki nalagajo videoposnetke.