Sadržaj:

Raspberry Pi Linux Motion Integracija Google fotografija: 5 koraka
Raspberry Pi Linux Motion Integracija Google fotografija: 5 koraka

Video: Raspberry Pi Linux Motion Integracija Google fotografija: 5 koraka

Video: Raspberry Pi Linux Motion Integracija Google fotografija: 5 koraka
Video: Видеонаблюдение на raspberry pi motioneye 2024, Srpanj
Anonim
Raspberry Pi Linux Motion Integracija Google fotografija
Raspberry Pi Linux Motion Integracija Google fotografija

Ideja je prenijeti fotografije i videozapise snimljene kamerom pokretom povezane s Raspberry Pi za prijenos datoteka u oblak. Softver "Motion" podržava prijenos na Google disk putem PyDrivea. U ovom se članku "Motion" koristi za prijenos na Google fotografije.

Hardver:

Malina Pi 3B+

USB web kamera Logitech C920

Odabir hardvera nije određen, samo sam uzeo ono što mi je bilo pri ruci.

Preduvjeti:

Radi praktičnosti, Raspberry pi bi trebao biti u vašoj lokalnoj mreži - kontrolirati ga bez monitora/tipkovnice i učitavati/preuzimati datoteke. Za to trebate imati ssh agent na računalu (npr. Kit).

Veliko hvala ssandbac -u na izvrsnom vodiču. Ako trebate više informacija o postavljanju okruženja, pogledajte ovaj članak. Posudio sam instalaciju pokreta i korake konfiguriranja te dodao neke promjene. Konkretno, umjesto slanja datoteka i upozorenja putem e -pošte, ovaj primjer koristi prijenos na google fotografije podijeljenog albuma i primanje obavijesti u obliku "dodanih fotografija" na traci obavijesti.

Evo koraka:

Korak 1: Instalirajte Linux Motion na Raspberry

Posebno se u ovom primjeru koristilo gibanje v4.0.

1.1 Ažuriranje pi

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Preuzmite prijedlog

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

1.3 Sada uredite ovu datoteku sa sljedećim izmjenama

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

# Pokrenite u daemon (pozadini) načinu rada i otpustite terminal (zadano: isključeno)

demon uključen

# Koristite datoteku za spremanje poruka dnevnika, ako nije definirano koriste se stderr i syslog. (zadano: nije definirano)

logfile /var/log/motion/motion.log

# Širina slike (pikseli). Važeći raspon: ovisno o kameri, zadano: 352

širina 1920

# Visina slike (pikseli). Važeći raspon: Ovisno o kameri, zadano: 288

visina 1080

# Maksimalan broj kadrova za snimanje u sekundi.

broj sličica u sekundi 30

# Određuje broj unaprijed snimljenih (međuspremnih) slika od prije pokreta

pre_capture 5

# Broj kadrova za snimanje nakon kretanja više se ne detektira

post_capture 5

# Ispis "normalnih" slika kada se detektira pokret (zadano: uključeno)

izlazne_slike isključene

# Kvaliteta (u postocima) koju će koristiti jpeg kompresija

kvaliteta 100

# Koristite ffmpeg za kodiranje filmova u stvarnom vremenu

ffmpeg_output_movies off

# ili raspon 1 - 100 gdje 1 znači najlošiju kvalitetu, a 100 najbolju.

ffmpeg_variable_bitrate 100

# Prilikom stvaranja video zapisa, trebaju li se okviri duplicirati redom

ffmpeg_duplicate_frames false

# Bool za omogućavanje ili onemogućavanje extpipe -a (zadano: isključeno)

use_extpipe uključeno

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i pipe: 0 -vcodec libx264 -preset ultrabrzi -f mp4 %f.mp4

target_dir/var/lib/motion

# Naredba za izvršavanje datoteke filma

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

Zadnji sa zarezom za sada (komentirano) ostavite da komentira nakon što provjerite radi li snimanje i prijenos videozapisa.

1.4 Zatim promijenite

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

pi@raspberrypi: ~ $ start_motion_daemon = da

Korak 2: Postavite Google Photos API za Python

Postavite Google Photos API za Python
Postavite Google Photos API za Python
Postavite Google Photos API za Python
Postavite Google Photos API za Python

2.1 Preporučuje se stvaranje novog računa u tu svrhu za dijeljenje albuma s vašim glavnim da biste primali obavijesti o dodavanju novih datoteka, plus više prostora za pohranu. Omogućite Google fotografije API za račun koji ćete koristiti za prijenos.

Nakon ovoga biste trebali imati datoteku credentials.json.

2.2 Postavljanje okruženja Python

U osnovi je postavljanje okruženja potrebno samo na malini. Ali zahtijeva autorizaciju oauth -a što je prikladnije izvršiti na računalu. Da biste to učinili na malini, morate na nju spojiti monitor/tipkovnicu ili postaviti neko udaljeno korisničko sučelje. Upravo sam instalirao isto okruženje na malinu i na računalo. Dakle, koraci 2.2.1..2.2.3 napravljeni su na računalu, 2.2.1, 2.2.2, 2.2.5, 2.2.6 na Rpi

2.2.1 instalirajte Python 3

2.2.2 Instalirajte google api pakete prema priručniku*(vidi 5.1)

Na PC -u

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 Provjerite učitavanje skripte na google fotografije. Postavljeno je na moj github. Stavite ga u isti direktorij s vjerodajnicama.json.

2.2.4 Snimite sliku i testirajte prijenos

python3 photos.py image.jpg

Instalirajte ovisnosti koje nedostaju ako postoje i pokušajte ponovno. Kao rezultat toga, trebali biste dobiti token.pickle u direktoriju skripte, a također i novi zajednički album kreiran na vašem web sučelju Google fotografija sa image.jpg. Kako dobijete token.pickle, više vam ne trebaju vjerodajnice.json za photos.py u istom direktoriju.

2.2.5 Podijelite album s računom o tome na što želite primati obavijesti o novim medijima. Dodajte ovaj račun na telefon.

2.2.6 Postavite photos.py i token.pickle u/var/lib/motion na malinu. "Pi" korisnik ne može pisati u "motion's dir's" pa ga najprije prenesite na /home /pi

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

Zatim se prijavite na malinu i premjestite datoteke pod sudo

ssh pi@IP

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

2.2.7 Provjerite kako učitavanje radi na malini. Snimite neku sliku pomoću fsweb kamere i pokušajte je prenijeti

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

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

U albumu "helloworld" trebao bi biti image-j.webp

Korak 3: Testirajte

3.1 Pokrenite uslugu Motion

pi@raspberrypi: ~ $ sudo service motion start

Naredbu možete promijeniti u "stop" ili "restart"

3.2 Omogući zapisnike kretanja

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

3.2 Pogledajte izlaz kamere na drugom uređaju spojenom na istu lokalnu mrežu. Unesite u preglednik:

IP: 8081

3.3 Gledajući zapisnike pričekajte da se pokret otkrije i datoteka NAME.mp4 upiše u/var/lib/motion. Zatim ručno pokrenite prijenos skripte

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

Provjerite tragove pitona. Pričekajte da se event_end pojavi u motion.log. Zatim idite na album "helloworld" na svojim google fotografijama i provjerite ima li učitanog videozapisa.

3.4 Ako je prijenos uspješan, uklonite komentar u /etc/motion.conf retku:

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

# Naredba koja će se izvršiti kada je datoteka filma spremna

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

pi@raspberrypi: ~ $ sync

pi@raspberrypi: ~ $ sudo ponovno pokretanje pokreta

3.5 Gledajući zapisnike pokreta i album provjerite je li video automatski prenijet.

3.6 Po želji podijelite album sa svojim glavnim računom da biste dobili obavijest o dodavanju novog videozapisa ili fotografije.

Korak 4: Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu

Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu
Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu
Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu
Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu
Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu
Izborno: Konfigurirajte web pristup kameri za streaming u stvarnom vremenu

Ovaj se korak temelji na Michelovom vodiču Parreno. Upravo sam odabrao FreeDNS umjesto NoIP kako je ovdje preporučeno.

4.1 Konfigurirajte ovlašteni pristup poslužitelju pokreta za video streaming:

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

# Postavite način autentifikacije (zadano: 0)

# 0 = onemogućeno

# 1 = Osnovna provjera autentičnosti

# 2 = sažetak MD5 (sigurnija autentifikacija)

metoda_automatskog_toka 2

# Autentifikacija za stream. Korisničko ime sintakse: lozinka

# Zadano: nije definirano (onemogućeno)

webcontrol_authentication korisničko ime: lozinka

# Maksimalna brzina kadrova za streamove (zadano: 1)

stream_maxrate 30

# Ograniči stream veze samo na localhost (zadano: uključeno)

stream_localhost isključen

Ako nećete koristiti sučelje za web kontrolu s vanjske mreže, ostavite ga onemogućenim (prema zadanim postavkama)

# Ograniči kontrolne veze samo na localhost (zadano: uključeno)

webcontrol_localhost uključen

Također, budući da je malina na mreži, preporučujem da promijenite zadanu lozinku za malinu

pi@raspberrypi: ~ $ passwd

Iako ssh port 22 nije preusmjeren na malinu, ipak.

4.2 Idite na FreeDNS web mjesto

4.3 Prijavite se

4.4 Dodavanje poddomene (Za članove -> Poddomene)

4.5 Odaberite DNS klijent za instaliranje na Raspberry (Za članove -> Dinamički DNS -> Sinamički DNS resursi -> Dinamički DNS klijenti)

Odabrao sam wget_script update.sh od Adama Deana (pri dnu stranice)

Postoje rezervirana mjesta _YOURAPIKEYHERE_ i _YOURDOMAINHERE_. Da biste ih dobili, idite na (Za članove -> Dinamički DNS)

Na donjoj stranici pronaći ćete primjere skripti sa svojim APIKEY -om i DOMAIN -om (onim koji je dodan u 4.4). Uzeo sam ove vrijednosti iz Wget skripte i zamijenio _YOURAPIKEYHERE_ i _YOURDOMAINHERE_ u update.sh

4.6 Zatim pokrenite update.sh na malini. Za nslookup može zahtijevati dnsutils. Zatim ga instalirajte:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Zatim konfigurirajte svoj usmjerivač da preusmjeri zahtjeve vanjskog svijeta na port 8081 na ip maline

4.8 Rezervirajte ip za MAC vaše maline u DHCP postavci kako bi Rpi uvijek imao isti ip

4.9 Zatim u preglednik unesite uređaj koji nije povezan s lokalnom mrežom:

vaša domena: 8081

Unesite svoje vjerodajnice koje ste definirali u motion.conf.

Testirajte kako video radi.

4.10 radi ažuriranja DDNS -a, automatski postavlja cron zadatak. Pogledajte quick_cron_example on (Za članove -> Dinamički DNS)

Korak 5: Savjeti

5.1 Budite pažljivi pri instaliranju python paketa na malinu. Proveo sam dan u otklanjanju pogrešaka u ovome - problem je bio u tome što je skripta s konzole dobro radila, no poziv iz događaja pri kretanju nije uspio. Ono što je pogoršalo je to što u posljednjem slučaju tragovi iz scenarija nisu bili dostupni.

Razlog je bio u tome što sam slijedeći vodič instalirao pakete za 'pi' korisnika (koji je prema zadanim postavkama u /home /pi direktoriju i ograničen za druge korisnike), ali da bi se skripta pokrenula kao dijete 'motion' usluge, paketi moraju biti dostupna i za 'motion' korisnike. Na kraju sam to popravio instalirajući pakete kao

sudo pip3 …

Ovo nije pravilan način koji još uvijek radi. Instalacija bez sudoa kao pip3 --sustava mi je iz nekog razloga davala greške.

Shodno tome, skripta se naziva i pod sudo (vidi motion.conf).

Tijekom ovog rješavanja problema napravio sam mnogo nepotrebnih promjena i nisam siguran što je potrebno, a sada sam lijen da ih postupno vraćam i vidim kada će prestati raditi. Osobito su dodijeljena administratorska prava za kretanje:

pi@raspberrypi: ~ $ grupno kretanje

motion: motion adm sudo audio video korisnici netdev pi

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

pi ALL = (SVE) NOPASSWD: SVE

pokret ALL = (SVE) NOPASSWD: SVE

Također se mijenjala vlasnici datoteka i dopuštenja slična prijenosu na Google disk. Vjerojatno bi vam moglo pomoći u slučaju da imate sličan problem.

5.2 Google Photos API omogućuje dodavanje datoteka samo u dijeljene albume tako da im može pristupiti svatko s vezom. Nemojte ga dijeliti putem veze i brisati stare filmove niti ih premještati u otpad ili iz albuma. U potonjem slučaju ostaju na računu.

5.3 Googleov pomoćnik za fotografije prepoznaje lica, što je vrlo korisno ako je kvaliteta kamere dobra. Kao bonus, čini fensi medije kompilacijama i gifovima itd.

5.4 Pokušao sam koristiti 4G LTE USB modem za pristup internetu i evo mojih rezultata. 5.4.1 Huawei E3372h-153 radi s malinom bez problema i dodatnog softvera. 5.4.2 Omogućena je i hotspot tako da Rasperry dijeli internetsku vezu putem WiFi-ja. Postoji https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ stvarno jednostavan vodič kako to učiniti pomoću RaspAP-a. 5.4.3 Dinamički DNS nije radio u 4G mreži moje carrie. Postoji objašnjenje zašto

5.5 Nakon što se pokazalo da je ovaj sustav korišten nekoliko tjedana, iako je videozapise prikladnije pregledavati i učitavati, Google fotografije bolje rade sa slikama. Npr. Omogućuje grupiranje stvari/lica samo za analizu slika, a tek tada traži lica/stvari sa slika u video zapisima, ali ne i suprotno. Pa ću isprobati slike koje prenose videozapise.

Preporučeni: