INHOUDSOPGAWE:
- Stap 1: Installeer Linux Motion op Framboos
- Stap 2: Stel Google Foto's API op vir Python
- Stap 3: Toets
- Stap 4: Opsioneel: Stel webtoegang in vir real -time streaming kamera
- Stap 5: Wenke
Video: Raspberry Pi Linux Motion Google Foto's -integrasie: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
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
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
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:
Motion Reactive Surfboard LED Strips: 8 stappe (met foto's)
Motion Reactive Surfboard LED Strips: Onlangs het ek en 'n paar vriende op 'n rivier ontdek. As ons in München woon, is ons gelukkig om drie surfbare riviergolwe te hê onder die beroemde Eisbach -branderplank. Die nadeel van branderplankry is dat dit nogal verslawend is, en daarom vind ek selde tyd vir
Motion Triggered Neopixel RGB -skoene!: 5 stappe (met foto's)
Motion Triggered Neopixel RGB -skoene!: NeoPixel's is wonderlik, ons kan honderde ligte met 3 drade beheer, dit wil sê 5V, Din & GND en in hierdie tutoriaal sal ek wys hoe u Motion Triggered NeoPixel RGB -skoene kan maak
Continuum - Slow Motion LED Art Display: 22 stappe (met foto's)
Continuum - Slow Motion LED Art Display: Continuum is 'n ligte kunsvertoning wat voortdurend in beweging is, met opsies om vinnig, stadig of ongelooflik stadig te beweeg. Die RGB -LED's op die skerm word 240 keer per sekonde bygewerk, met unieke kleure wat elke opdatering bereken word. 'N Skuifbalk aan die kant
Raspberry Pi Stop-Motion Animation Rig: 16 stappe (met foto's)
Raspberry Pi Stop-Motion Animation Rig: Stop-motion animasie is 'n tegniek waar voorwerpe fisies gemanipuleer word en raam-vir-raam gefotografeer word om die illusie van 'n bewegende beeld te skep. Ons mini-stop-motion animasie-uitstalling word gemaak met 'n Raspberry Pi , wat 'n " klein en aff
Motion Follow Animatronics Eyes: 8 stappe (met foto's)
Motion Follow Animatronics Eyes: Hierdie Arduino -projek gebruik 'n optiese vloeisensor (ADNS3080) om beweging vas te vang. Vertaal dan die data om die servo's te laat beweeg, sodat dit lyk asof die oë bewegende voorwerpe volg. Dit is nie 'n maklike konstruksie nie