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, Juli
Anonim
Raspberry Pi Linux Motion Integracija Google fotografija
Raspberry Pi Linux Motion Integracija Google fotografija

Ideja je prenijeti fotografije i video zapise snimljene kamerom pokretom povezane s Raspberry Pi za postavljanje datoteka u oblak. Softver "Motion" podržava postavljanje na Google disk putem PyDrive -a. U ovom se članku "Motion" koristi za postavljanje na Google fotografije.

Hardver:

Raspberry Pi 3B+

USB web kamera Logitech C920

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

Preduslovi:

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

Veliko hvala ssandbac -u na odličnom vodiču. Ako vam je potrebno više informacija o tome kako postaviti okruženje, pogledajte ovaj članak. Od njega sam posudio instalaciju pokreta i korake za konfiguriranje i dodao neke promjene. Konkretno, umjesto slanja datoteka i upozorenja putem e -pošte, ovaj primjer koristi otpremanje na zajednički album google fotografija i primanje obavijesti o vrsti "dodanih fotografija" na traci s obavijestima.

Evo koraka:

Korak 1: Instalirajte Linux Motion na Raspberry

Posebno u ovom primjeru korišteno je motion v4.0.

1.1 Ažurirajte pi

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Preuzmite pokret

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)

daemon on

# 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.

framerate 30

# Određuje broj prethodno snimljenih (međuspremnika) slika od prije pokreta

pre_capture 5

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

post_capture 5

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

output_pictures off

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

kvalitet 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, okviri se trebaju duplicirati po redoslijedu

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 cijev: 0 -vcodec libx264 -prestavljeno ultrabrzo -f mp4 %f.mp4

target_dir/var/lib/motion

# Naredba koja se izvršava prilikom snimanja datoteke filma

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

Ostavite zadnju s tačkom i zarezom (komentirano) da se ukloni s komentara nakon što provjerite funkcionira li snimanje i postavljanje 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 sa vašim glavnim da biste primali obavještenja o dodavanju novih datoteka, plus više prostora za pohranu. Omogućite Google Photos API za račun koji ćete koristiti za otpremanje.

Nakon ovoga biste trebali imati datoteku credentials.json.

2.2 Podešavanje okruženja Python

U osnovi je postavljanje okruženja potrebno samo na malini. Ali to zahtijeva autorizaciju autorizacije koja je prikladnija za obavljanje na računaru. Da biste to učinili na malini, morate na nju spojiti monitor/tastaturu ili postaviti neki udaljeni korisnički interfejs. Upravo sam instalirao isto okruženje na malinu i na računaru. Dakle, koraci 2.2.1..2.2.3 napravljeni su na PC -u, 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 računaru

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 Pogledajte postavljanje skripte na google fotografije. Postavljeno je na moj github. Stavite ga u isti direktorij s credentials.json.

2.2.4 Snimite sliku i testirajte učitavanje

python3 photos.py image.jpg

Instalirajte nedostajuće zavisnosti ako postoje i pokušajte ponovo. 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 credentials.json za photos.py u istom direktoriju.

2.2.5 Podijelite album s računom o tome na šta želite da se dodaju obavještenja o novim medijima. Dodajte ovaj račun na telefon.

2.2.6 Postavite photos.py i token.pickle u/var/lib/motion na malinu. Korisnik „pi“ne može pisati u direktorij pokreta, pa ga prvo otpremite 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 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 pokret pokretanja pokreta

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

3.2 Omogući evidenciju 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 pretraživač:

IP: 8081

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

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

Provjerite tragove pythona. 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 učitavanje uspješno, uklonite komentar u /etc/motion.conf red:

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

# Naredba koja se izvršava 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 usluge

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

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

Korak 4: Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu

Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu
Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu
Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu
Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu
Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu
Opcionalno: Konfigurirajte web pristup kameri za prijenos u stvarnom vremenu

Ovaj korak se temelji na Michelovom vodiču Parreno. Upravo sam odabrao FreeDNS umjesto NoIP -a 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 autentifikacija

# 2 = sažetak MD5 (sigurnija autentifikacija)

stream_auth_method 2

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

# Zadano: nije definirano (onemogućeno)

webcontrol_authentication korisničko ime: lozinka

# Maksimalna brzina kadrova za stream prijenose (zadano: 1)

stream_maxrate 30

# Ograniči tok 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đe, s obzirom 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 lokaciju

4.3 Prijavite se

4.4 Dodajte poddomenu (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 oznake 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. Može zahtijevati dnsutils za nslookup. 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 unesite preglednik na uređaju koji nije povezan s lokalnom mrežom:

vaša domena: 8081

Unesite svoje vjerodajnice koje ste definirali u motion.conf.

Testirajte kako video funkcionira.

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

Korak 5: Savjeti

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

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 dostupno i za 'motion' korisnike. Pa sam konačno to popravio instalirajući pakete kao

sudo pip3…

Ovo nije ispravan način i dalje funkcionira. Instalacija bez sudo -a kao pip3 --sistema mi je iz nekog razloga davala greške.

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

Tijekom ovog rješavanja problema učinio sam mnogo nepotrebnih promjena i nisam siguran šta je potrebno, a sada sam previše lijen da ih postupno vraćam i vidim kada će prestati raditi. Konkretno, dodijeljena administratorska prava za kretanje:

pi@raspberrypi: ~ $ kretanje grupa

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 vlasnica datoteka i dozvole slične postavljanju na Google disk. Vjerojatno bi vam moglo pomoći u slučaju da imate sličan problem.

5.2 Google Photos API omogućava dodavanje datoteka u zajedničke albume samo tako da mu mogu pristupiti svi koji imaju vezu. Nemojte ga dijeliti putem veze i brisati stare filmove niti ih premještati u otpad ili iz albuma. U drugom slučaju oni 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/ zaista 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 sistem korišten nekoliko tjedana, iako je videozapise prikladnije pregledavati i učitavati, Google fotografije bolje rade sa slikama. Npr. Omogućava grupiranje stvari/lica samo za analizu slika, pa tek onda traženje lica/stvari sa slika u video zapisima, ali ne i suprotno. Zato ću testirati slike koje postavljaju videozapise.

Preporučuje se: