INHOUDSOPGAWE:

Raspberry Pi Linux Motion Google Foto's -integrasie: 5 stappe
Raspberry Pi Linux Motion Google Foto's -integrasie: 5 stappe

Video: Raspberry Pi Linux Motion Google Foto's -integrasie: 5 stappe

Video: Raspberry Pi Linux Motion Google Foto's -integrasie: 5 stappe
Video: PiFrame - Ultimate Raspberry Pi Digital Picture Frame on a 7-inch LCD Tutorial 2024, November
Anonim
Raspberry Pi Linux Motion Google Foto's -integrasie
Raspberry Pi Linux Motion Google Foto's -integrasie

Die idee is om foto's en video's op te laai wat gemaak is met 'n bewegings geaktiveerde kamera wat aan Raspberry Pi gekoppel is om lêers na 'n wolk op te laai. 'Motion' -sagteware ondersteun oplaai na Google Drive via PyDrive. In hierdie artikel word 'beweging' gebruik om na Google Foto's op te laai.

Hardeware:

Framboos Pi 3B+

USB -webkamera Logitech C920

Die keuse van hardeware is nie vasgestel nie; ek het net geneem wat byderhand was.

Voorvereistes:

Vir die gemak moet Raspberry pi in u plaaslike netwerk wees - om dit te beheer sonder monitor/sleutelbord en lêers op te laai/af te laai. Hiervoor moet u ssh -agent op u rekenaar hê (bv. Stopverf).

Baie dankie aan ssandbac vir 'n wonderlike tutoriaal. As u meer inligting benodig oor hoe u die omgewing kan instel, kyk dan na hierdie artikel. Ek het bewegingsinstallasie geleen en stappe daaruit gekonfigureer en 'n paar veranderinge bygevoeg. In die besonder, in plaas daarvan om lêers en waarskuwings per e -pos te e -pos, gebruik hierdie voorbeeld oplaai na 'n gedeelde album van Google Foto's en kry kennisgewings soos 'foto's bygevoeg' in die kennisgewingbalk.

Hier is die stappe:

Stap 1: Installeer Linux Motion op Framboos

Veral in hierdie voorbeeld is motion v4.0 gebruik.

1.1 Dateer pi op

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Laai beweging af

pi@raspberrypi: ~ $ sudo apt-get installeer beweging

1.3 Wysig hierdie lêer nou met die volgende veranderinge

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

# Begin in die demoonmodus (agtergrond) en laat die terminale los (standaard: af)

daemon aan

# Gebruik 'n lêer om logboeke op te slaan, indien nie stderr en syslog gebruik word nie. (standaard: nie gedefinieer nie)

logfile /var/log/motion/motion.log

# Beeldwydte (pixels). Geldige omvang: kamera -afhanklik, standaard: 352

breedte 1920

# Beeldhoogte (pixels). Geldige omvang: kamera -afhanklik, standaard: 288

hoogte 1080

# Maksimum aantal rame wat per sekonde geneem moet word.

raamwerk 30

# Spesifiseer die aantal vooraf gemaakte (gebufferde) foto's van voor beweging

vooropvang 5

# Die aantal rame wat na beweging geneem moet word, word nie meer opgespoor nie

post_opvang 5

# Stel 'normale' foto's af wanneer beweging opgespoor word (standaard: aan)

uitvoer_foto's af

# Die kwaliteit (in persentasie) wat deur die jpeg -kompressie gebruik moet word

kwaliteit 100

# Gebruik ffmpeg om films intyds te enkodeer

ffmpeg_output_movies af

# of die reeks 1 - 100 waar 1 die slegste kwaliteit beteken en 100 die beste.

ffmpeg_variable_bitrate 100

# As rame gemaak word, moet rame in volgorde gedupliseer word

ffmpeg_duplicate_frames vals

# Bool om extpipe in of uit te skakel (standaard: af)

use_extpipe op

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

target_dir/var/lib/motion

# Opdrag wat uitgevoer moet word tydens 'n filmlêer

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

Laat die laaste met puntkomma vir eers (kommentaar lewer) op kommentaar, nadat u seker gemaak het dat video -opname en oplaai werk.

1.4 Verander dan

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

pi@raspberrypi: ~ $ start_motion_daemon = ja

Stap 2: Stel Google Foto's API op vir Python

Stel Google Foto's API vir Python op
Stel Google Foto's API vir Python op
Stel Google Foto's API vir Python op
Stel Google Foto's API vir Python op

2.1 Dit word aanbeveel om 'n nuwe rekening vir hierdie doel te skep om 'n album met u hoofrekenaar te deel om kennisgewings te kry wanneer nuwe lêers bygevoeg word, plus meer stoorplek. Aktiveer Google Foto's -API vir die rekening wat u gaan oplaai.

Hierna moet u die credentials.json -lêer hê.

2.2 Opstel van Python -omgewing

Die omgewingsopset is basies slegs op framboos nodig. Maar dit verg outomatiese toestemming, wat makliker is om op 'n rekenaar te doen. Om dit op framboos te doen, moet u die monitor/sleutelbord daaraan koppel of 'n eksterne UI vir die lessenaar instel. Ek het pas dieselfde omgewing op framboos en rekenaar geïnstalleer. Dus is die stappe 2.2.1..2.2.3 op 'n rekenaar uitgevoer, 2.2.1, 2.2.2, 2.2.5, 2.2.6 op Rpi

2.2.1 installeer Python 3

2.2.2 Installeer google api -pakkette volgens handleiding*(sien 5.1)

Op die rekenaar

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

Op framboos

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

2.2.3 Kyk na die oplaai van skrif na Google -foto's.. Dit word op my github geplaas. Plaas dit in dieselfde gids met credentials.json.

2.2.4 Neem 'n foto en toets die oplaai

python3 foto's.py beeld.jpg

Installeer ontbrekende afhanklikes as daar is en probeer weer. As gevolg hiervan moet u token.pickle in die gids van die script kry, en ook 'n nuwe gedeelde album wat in u Google Foto's -webkoppelvlak met image-j.webp

2.2.5 Deel die album met die rekening oor wat u wil hê dat kennisgewings oor nuwe media bygevoeg moet word. Voeg hierdie rekening by jou foon.

2.2.6 Sit photos.py en token.pickle in/var/lib/motion op framboos. 'Pi' -gebruiker kan nie na die' motion's dir's 'skryf nie, dus laai eers na /home /pi op

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

Meld dan aan by framboos en skuif die lêers onder sudo

ssh pi@IP

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

2.2.7 Kyk hoe die oplaai op framboos werk. Neem 'n foto met fswebcam en probeer dit oplaai

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

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

Daar moet image-j.webp

Stap 3: Toets

3.1 Begin bewegingsdiens

pi@raspberrypi: ~ $ sudo diensbeweging begin

U kan die opdrag verander na 'stop' of 'herbegin'

3.2 Aktiveer bewegingslogboeke

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

3.2 Kyk na die kamera -uitset op 'n ander toestel wat aan dieselfde plaaslike netwerk gekoppel is. Tik in die blaaier:

IP: 8081.0.0.1

3.3 As u na die logboeke kyk, wag totdat die beweging opgespoor word en die lêer NAME.mp4 in/var/lib/motion geskryf is. Begin dan die oplaai -script met die hand

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

Gaan die luislangspore na. Wag totdat event_end in motion.log verskyn. Gaan dan na die "helloworld" -album in u Google -foto's en kyk of daar 'n video opgelaai is.

3.4 As die oplaai suksesvol was, lewer 'n opmerking in /etc/motion.conf die reël:

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

# Die opdrag moet uitgevoer word as 'n filmlêer gereed is

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

pi@raspberrypi: ~ $ sync

pi@raspberrypi: ~ $ sudo diensbeweging herbegin

3.5 Kyk na die bewegingslogboeke en in die album of die video outomaties opgelaai word.

3.6 Deel die album opsioneel met u hoofrekening om kennisgewings te ontvang wanneer die nuwe video of foto bygevoeg word.

Stap 4: Opsioneel: Stel webtoegang in vir real -time streaming kamera

Opsioneel: Stel webtoegang in vir real -time streaming kamera
Opsioneel: Stel webtoegang in vir real -time streaming kamera
Opsioneel: Stel webtoegang in vir real -time streaming kamera
Opsioneel: Stel webtoegang in vir real -time streaming kamera
Opsioneel: Stel webtoegang in vir real -time streaming kamera
Opsioneel: Stel webtoegang in vir real -time streaming kamera

Hierdie stap is gebaseer op die Parreno -tutoriaal van Michel. Ek het net FreeDNS gekies in plaas van NoIP soos hier aanbeveel.

4.1 Stel gemagtigde toegang tot videostroombewegingsbediener op:

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

# Stel die verifikasiemetode in (standaard: 0)

# 0 = gedeaktiveer

# 1 = Basiese verifikasie

# 2 = MD5 -vertering (die veiliger verifikasie)

stroom_auth_metode 2

# Verifikasie vir die stroom. Sintaksis gebruikersnaam: wagwoord

# Standaard: nie gedefinieer nie (Uitgeskakel)

webcontrol_authentication gebruikersnaam: wagwoord

# Maksimum raamgetal vir stroomstrome (standaard: 1)

stroom_maxrate 30

# Beperk slegs stroomverbindings tot localhost (standaard: aan)

stream_localhost af

As u nie die webbeheer -koppelvlak van die eksterne netwerk gaan gebruik nie, moet u dit uitskakel (soos standaard)

# Beperk beheerverbindings slegs tot localhost (standaard: aan)

webcontrol_localhost op

Aangesien frambose aanlyn gaan, raai ek u aan om die standaard frambooswagwoord te verander

pi@raspberrypi: ~ $ passwd

Alhoewel ssh -poort 22 nie na die framboos herlei word nie, is dit steeds.

4.2 Gaan na FreeDNS -webwerf

4.3 Teken in

4.4 Voeg subdomein by (vir lede -> subdomeine)

4.5 Kies DNS -kliënt om op Framboos te installeer (vir lede -> dinamiese DNS -> sinamiese DNS -bronne -> dinamiese DNS -kliënte)

Ek het wget_script update.sh gekies van Adam Dean (onderaan die bladsy)

Daar is plekhouers _YOURAPIKEYHERE_ en _YOURDOMAINHERE_. Om hulle te kry, gaan na (Vir lede -> Dinamiese DNS)

En op die onderstaande bladsy vind u voorbeelde van skrifte met u APIKEY en DOMAIN (die een bygevoeg in 4.4). Ek het hierdie waardes uit Wget Script geneem en _YOURAPIKEYHERE_ en _YOURDOMAINHERE_ in update.sh vervang

4.6 Begin dan update.sh op framboos. Dit benodig dalk dnsutils vir nslookup. Installeer dit dan:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Stel dan u router op om eksterne versoeke na die 8081 -poort na die IP van die framboos te herlei

4.8 Bespreek die ip vir u framboos se MAC in DHCP -instelling, sodat Rpi altyd dieselfde IP sal hê

4.9 Gaan dan in die blaaier op 'n toestel wat nie aan die plaaslike netwerk gekoppel is nie:

jou domein: 8081

Voer u geloofsbriewe in wat u in motion.conf gedefinieer het.

Toets hoe die video werk.

4.10 om DDNS outomaties op te stel om die cron -taak op te stel. Sien quick_cron_example op (vir lede -> dinamiese DNS)

Stap 5: Wenke

5.1 Wees versigtig met die installering van luislangpakkette op framboos. Ek het 'n dag lank dit ontfout - die probleem was dat die skrip van die konsole af goed werk, maar om terug te bel vanaf 'n bewegingsgebeurtenis. Wat dit nog erger gemaak het, was dat spore uit die draaiboek in laasgenoemde geval nie beskikbaar was nie.

Die rede was dat ek die pakkette geïnstalleer het vir die 'pi' -gebruiker (wat standaard in /home /pi -gids is en vir ander gebruikers beperk is), maar om die script as 'n kind van' bewegings' -diens uit te voer, moet die pakkette ook beskikbaar vir 'beweging' -gebruiker. Uiteindelik het ek dit reggestel deur die pakkette te installeer as

sudo pip3 …

Dit werk nog steeds nie op die regte manier nie. Installasie sonder sudo as pip3 -stelsel het om een of ander rede foute veroorsaak.

Die skrif word dienooreenkomstig ook onder sudo genoem (sien motion.conf).

Tydens hierdie probleemoplossing het ek baie onnodige veranderings aangebring, en ek was nie seker wat nodig is nie en is nou te lui om dit geleidelik terug te draai en te sien wanneer dit ophou werk. Veral verleen bewegingsadministrateurregte:

pi@raspberrypi: ~ $ bewegings

beweging: beweging adm sudo klankvideogebruikers netdev pi

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

pi ALL = (ALL) NOPASSWD: ALLES

beweging ALL = (ALL) NOPASSWD: ALL

Ek verander ook die eienaars van lêers en toestemmings soortgelyk aan die oplaai na Google Drive. Dit kan u waarskynlik help as u 'n soortgelyke probleem het.

5.2 Met Google Foto's API kan slegs lêers by gedeelde albums gevoeg word sodat almal met die skakel toegang daartoe kan kry. Moenie dit met 'n skakel deel nie, en verwyder ou flieks of skuif dit na die asblik of uit die album. In laasgenoemde geval bly hulle op die rekening.

5.3 Google -foto -assistent bespeur gesigte, wat baie handig is as die kamera kwaliteit goed is. As 'n bonus maak dit pragtige media -versamelings en gif's, ens.

5.4 Ek het probeer om 'n 4G LTE USB-modem te gebruik vir internettoegang en hier is my resultate Huawei E3372h-153 werk met framboos sonder probleme en ekstra sagteware. Daar is https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ 'n baie maklike gids hoe u dit met RaspAP kan doen. 5.4.3 Dinamiese DNS werk nie in die 4G -netwerk van my karrie nie. Daar is 'n verduideliking hoekom

5.5 Nadat hierdie stelsel 'n paar weke gebruik is, blyk dit dat die foto's beter is om te kyk en op te laai, maar dit werk beter met Google Foto's. Dit maak dit byvoorbeeld moontlik om dinge/gesigte te groepeer deur slegs ontledingsbeelde te analiseer, en dan eers gesigte/dinge uit die beelde in video's te soek, maar nie die teenoorgestelde nie. Ek gaan dus beelde toets wat eerder video's oplaai.

Aanbeveel: