Përmbajtje:

Raspberry Pi Linux Motion Integrimi i Google Photos: 5 hapa
Raspberry Pi Linux Motion Integrimi i Google Photos: 5 hapa

Video: Raspberry Pi Linux Motion Integrimi i Google Photos: 5 hapa

Video: Raspberry Pi Linux Motion Integrimi i Google Photos: 5 hapa
Video: Installing and Configuring Motion to setup a Web Cam Server 2024, Dhjetor
Anonim
Raspberry Pi Linux Motion Integrimi i Google Photos
Raspberry Pi Linux Motion Integrimi i Google Photos

Ideja është që të ngarkoni fotografi dhe video të bëra me kamerë të aktivizuar me lëvizje të lidhur me Raspberry Pi për të ngarkuar skedarë në një re. Softueri ‘Motion’ mbështet ngarkimin në Google Drive përmes PyDrive. Në këtë artikull 'Motion' përdoret për të ngarkuar në Google Photos.

Hardware:

Raspberry Pi 3B+

Webcam USB Logitech C920

Përzgjedhja e harduerit nuk ishte e përcaktuar, unë thjesht mora atë që ishte në dispozicion.

Parakushtet:

Për lehtësi Raspberry pi duhet të jetë në rrjetin tuaj lokal - ta kontrolloni atë pa monitor/tastierë dhe të ngarkoni/shkarkoni skedarë. Për këtë ju duhet të keni agjent ssh në kompjuterin tuaj (p.sh. stuko).

Shumë faleminderit ssandbac për një mësim të shkëlqyeshëm. Nëse keni nevojë për më shumë informacion se si të konfiguroni mjedisin, shikoni këtë artikull. Unë huazova instalimin e lëvizjes dhe konfigurimin e hapave prej tij dhe shtova disa ndryshime. Në veçanti, në vend të dërgimit me email të skedarëve dhe paralajmërimeve, ky shembull përdor ngarkimin në albumin e ndarë të fotografive në Google dhe marrjen e njoftimeve të llojit të "fotove të shtuara" në shiritin e njoftimeve.

Këtu janë hapat:

Hapi 1: Instaloni Linux Motion në Raspberry

Veçanërisht në këtë shembull u përdor lëvizja v4.0.

1.1 Përditëso pi

pi@raspberrypi: su $ sudo apt-merrni përditësim

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Shkarkoni lëvizjen

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

1.3 Tani modifikoni këtë skedar me ndryshimet e mëposhtme

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

# Filloni në modalitetin daemon (sfond) dhe lëshoni terminalin (parazgjedhja: joaktive)

demon më

# Përdorni një skedar për të ruajtur mesazhet e regjistrave, nëse nuk përcaktohet përdoret stderr dhe syslog. (parazgjedhje: nuk është përcaktuar)

logfile /var/log/motion/motion.log

# Gjerësia e figurës (piksele). Gama e vlefshme: E varur nga kamera, parazgjedhja: 352

gjerësia 1920

# Lartësia e figurës (piksele). Gama e vlefshme: E varur nga kamera, parazgjedhja: 288

lartësia 1080

# Numri maksimal i kornizave që do të kapen në sekondë.

shkalla e kornizës 30

# Specifikon numrin e fotografive të para-kapura (ruajtur) nga para lëvizjes

kapja paraprake 5

# Numri i kornizave për tu kapur pas lëvizjes nuk zbulohet më

kapja e postit 5

# Dalni fotografi 'normale' kur zbulohet lëvizja (parazgjedhja: aktiv)

daljet_figurimet e fikura

# Cilësia (në përqindje) që do të përdoret nga kompresimi jpeg

cilësi 100

# Përdorni ffmpeg për të koduar filma në kohë reale

ffmpeg_output_movies off

# ose diapazoni 1 - 100 ku 1 do të thotë cilësi më e keqe dhe 100 është më e mira.

ffmpeg_variable_bitrate 100

# Kur krijoni video, kornizat duhet të kopjohen sipas radhës

ffmpeg_duplicate_frames false

# Bool për të aktivizuar ose çaktivizuar extpipe (parazgjedhja: joaktive)

use_extpipe aktiv

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -madhësia e videos %wx %h -framerate %fps -i tub: 0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4

target_dir/var/lib/motion

# Komanda për t'u ekzekutuar kur një skedar filmi

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

Lëreni këtë të fundit me pikëpresje tani për tani (komentohet) për të mos u komentuar pasi të siguroheni që regjistrimi dhe ngarkimi i videos të funksionojë.

1.4 Pastaj ndryshoni

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

pi@raspberrypi: ~ $ start_motion_daemon = po

Hapi 2: Konfiguroni Google Photos API për Python

Konfiguro API -në e Google Photos për Python
Konfiguro API -në e Google Photos për Python
Konfiguro API -në e Google Photos për Python
Konfiguro API -në e Google Photos për Python

2.1 Rekomandohet të krijoni një llogari të re për këtë qëllim për të ndarë një album me atë kryesor për të marrë njoftime kur shtohen skedarë të rinj, plus më shumë hapësirë ruajtëse. Aktivizo API -në e Google Photos për llogarinë që do të përdorësh për ngarkim.

Ju duhet të keni skedarin e kredencialeve.json pas kësaj.

2.2 Konfigurimi i mjedisit Python

Në thelb, konfigurimi i mjedisit kërkohet vetëm në mjedër. Por kërkon autorizim të parë që është më i përshtatshëm për tu realizuar në PC. Për ta bërë këtë në mjedër ju duhet të lidhni monitorin/tastierën me të ose të konfiguroni një ndërfaqe të desktopit të largët. Sapo instalova të njëjtin mjedis në mjedër dhe PC të dy. Pra hapat 2.2.1..2.2.3 janë bërë në PC, 2.2.1, 2.2.2, 2.2.5, 2.2.6 në Rpi

2.2.1 instaloni Python 3

2.2.2 Instaloni paketat Google API sipas manualit*(shiko 5.1)

Në PC

instaloni pip3-azhurnoni google-api-python-client google-auth-httplib2 google-auth-oauthlib

Në mjedër

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

2.2.3 Shikoni ngarkimin e skripteve në fotot e Google. Isshtë vendosur në githubin tim. Vendoseni në të njëjtën drejtori me letrat kredenciale. Json.

2.2.4 Bëni disa fotografi dhe provoni ngarkimin

python3 photos.py image.jpg

Instaloni varësitë që mungojnë nëse ka dhe provoni përsëri. Si rezultat, duhet të merrni token.pickle në drejtorinë e skriptit dhe gjithashtu një album të ri të përbashkët të krijuar në ndërfaqen tuaj të internetit të Google Photos me image.jpg. Ndërsa merrni token.pickle ju nuk keni nevojë për kredencialet.json për photos.py në të njëjtin drejtori.

2.2.5 Ndani albumin me llogarinë për atë që dëshironi të merrni njoftime për mediat e reja të shtuara. Shtoni këtë llogari në telefonin tuaj.

2.2.6 Vendosni fotot.py dhe token.pickle në/var/lib/motion në mjedër. Përdoruesi 'pi' nuk mund t'i shkruajë dir -ve të 'lëvizjes', kështu që fillimisht ngarkoni në /home /pi

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

Pastaj identifikohuni në mjedër dhe zhvendosni skedarët nën sudo

ssh pi@IP

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

2.2.7 Kontrolloni se si funksionon ngarkimi në mjedër. Bëni një fotografi me fswebcam dhe përpiquni ta ngarkoni

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

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

Mund të ketë image-j.webp

Hapi 3: Testoni

3.1 Filloni shërbimin Motion

pi@raspberrypi: motion Fillimi i lëvizjes së shërbimit sudo $

Mund ta ndryshoni komandën në "stop", ose "restart"

3.2 Aktivizoni regjistrat e lëvizjes

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

3.2 Shikoni daljen e kamerës në një pajisje tjetër të lidhur me të njëjtin rrjet lokal. Shkruani në shfletuesin:

IP: 8081

3.3 Duke parë regjistrat prisni derisa lëvizja të zbulohet dhe skedari NAME.mp4 të shkruhet në/var/lib/motion. Pastaj filloni ngarkimin e shkrimit me dorë

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

Kontrolloni gjurmët e pitonit. Prisni derisa event_end të shfaqet në lëvizje.log. Pastaj shkoni në albumin "helloworld" në fotot tuaja të Google dhe kontrolloni nëse ka një video të ngarkuar.

3.4 Nëse ngarkimi është i suksesshëm mos komentoni në /etc/motion.conf linjën:

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

# Komanda për t'u ekzekutuar kur një skedar filmi është gati

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

pi@raspberrypi: ~ $ sync

pi@raspberrypi: su $ sudo rifillimi i lëvizjes së shërbimit

3.5 Duke parë regjistrat e lëvizjeve dhe në album kontrolloni nëse videoja ngarkohet automatikisht.

3.6 Ndani sipas dëshirës albumin me llogarinë tuaj kryesore për të marrë njoftim kur të shtohet video ose fotografi e re.

Hapi 4: Opsional: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale

Opsionale: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale
Opsionale: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale
Opsionale: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale
Opsionale: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale
Opsionale: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale
Opsionale: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale

Ky hap bazohet në mësimin e Michel’s Parreno. Unë sapo zgjodha FreeDNS në vend të NoIP siç rekomandohet këtu.

4.1 Konfiguroni qasjen e autorizuar në serverin e lëvizjes së transmetimit të videos:

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

# Vendosni metodën e vërtetimit (parazgjedhja: 0)

# 0 = me aftësi të kufizuara

# 1 = Vërtetimi bazë

# 2 = tretje MD5 (vërtetim më i sigurt)

metoda_aute_ e transmetimit 2

# Vërtetimi për transmetimin. Emri i përdoruesit të sintaksës: fjalëkalimi

# Parazgjedhja: nuk është përcaktuar (e çaktivizuar)

emri i përdoruesit i webcontrol_authentication: fjalëkalimi

# Shkalla maksimale e kornizave për transmetimet e transmetimit (parazgjedhja: 1)

maksimumi_i rrjedhës 30

# Kufizoni lidhjet e transmetimit vetëm me localhost (parazgjedhje: aktiv)

stream_localhost fikur

Nëse nuk do të përdorni ndërfaqen e kontrollit të uebit nga rrjeti i jashtëm lëreni të çaktivizuar (si parazgjedhje)

# Kufizoni lidhjet e kontrollit vetëm për localhost (parazgjedhje: aktiv)

webcontrol_localhost aktiv

Gjithashtu, meqenëse mjedra shkon në internet, unë rekomandoj të ndryshoni fjalëkalimin e paracaktuar të mjedrës

pi@raspberrypi: ~ $ passwd

Megjithëse porti ssh 22 nuk është ridrejtuar në mjedër, akoma.

4.2 Shko te faqja e FreeDNS

4.3 Regjistrohuni

4.4 Shtoni nën -domen (Për Anëtarët -> Nën -Fushat)

4.5 Zgjidhni klientin DNS për ta instaluar në Raspberry (Për Anëtarët -> Dynamic DNS -> Burimet Synamic DNS -> Dynamic DNS Klientë)

Zgjodha wget_script update.sh nga Adam Dean (në fund të faqes)

Ka vendmbajtës _YOURAPIKEYHERE_ dhe _YOURDOMAINHERE_. Për t'i marrë ato shkoni te (Për Anëtarët -> Dynamic DNS)

Dhe në faqen më poshtë do të gjeni shembuj të skripteve me APIKEY dhe DOMAIN tuaj (ai i shtuar në 4.4). I mora këto vlera nga Wget Script dhe zëvendësova _YOURAPIKEYHERE_ dhe _YOURDOMAINHERE_ në update.sh

4.6 Pastaj ekzekutoni update.sh në mjedër. Mund të kërkojë dnsutils për nslookup. Instaloni atëherë:

pi@raspberrypi: su $ sudo apt-get dnsutils

4.7 Pastaj konfiguroni ruterin tuaj për të ridrejtuar kërkesat e botës së jashtme në portin 8081 në IP -në e mjedrës

4.8 Rezervoni IP për MAC tuaj të mjedrës në cilësimin DHCP, kështu që Rpi do të ketë gjithmonë të njëjtën ip

4.9 Pastaj futni në shfletuesin në një pajisje që nuk është e lidhur me rrjetin lokal:

domeni juaj: 8081

Futni kredencialet tuaja që keni përcaktuar në lëvizje.conf.

Provoni se si funksionon video.

4.10 për të azhurnuar DDNS konfigurimin automatik të detyrës cron. Shikoni shembullin Quick_cron_ (Për Anëtarët -> Dynamic DNS)

Hapi 5: Këshilla

5.1 Jini të vëmendshëm duke instaluar pako python në mjedër. Kalova një ditë duke e korrigjuar këtë - çështja ishte se skenari shkonte mirë nga tastiera, por thirrja nga ngjarja e lëvizjes nuk kthehej. Ajo që e bëri atë më keq ishte se gjurmët nga skenari nuk ishin të disponueshme në rastin e fundit.

Arsyeja ishte se pas udhëzuesit unë instalova paketat për përdoruesin 'pi' (i cili si parazgjedhje është në /home /pi directory dhe i kufizuar për përdoruesit e tjerë) por për të ekzekutuar skriptin si fëmijë i shërbimit 'lëvizje', paketat duhet të jenë në dispozicion edhe për përdoruesit e 'lëvizjes'. Kështu që më në fund e rregullova duke instaluar paketat si

sudo pip3…

Kjo nuk është një mënyrë e duhur që ende funksionon. Instalimi pa sudo si pip3 -sistemi po më jepte gabime për ndonjë arsye.

Në përputhje me rrethanat, shkrimi quhet gjithashtu nën sudo (shiko lëvizjen.conf).

Gjatë kësaj zgjidhjeje të problemeve unë bëra shumë ndryshime të panevojshme dhe nuk isha i sigurt se çfarë janë të nevojshme dhe tani jam shumë dembel për t'i kthyer ato gradualisht dhe për të parë kur të ndalojë së punuari. Në veçanti, i janë dhënë të drejtat e administratorit të lëvizjes:

pi@raspberrypi: ~ $ grupe lëvizje

lëvizje: lëvizje adm sudo përdorues audio video video netdev pi

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

pi ALL = (ALL) NOPASSWD: ALL

lëvizja ALL = (ALL) NOPASSWD: ALL

Gjithashtu po ndryshonte pronarët e skedarëve dhe lejet e ngjashme me ngarkimin në Google Drive. Ndoshta mund t'ju ndihmojë në rast se keni një çështje të ngjashme.

5.2 API i Google Photos ju lejon të shtoni skedarë në albumet e ndara vetëm në mënyrë që kushdo që ka lidhjen të ketë qasje në të. Mos e ndani me lidhje dhe fshini filmat e vjetër ose mos i zhvendosni ato në plehra ose nga albumi. Në rastin e fundit ato mbeten në llogari.

5.3 Asistenti i fotove të Google zbulon fytyrat, gjë që është mjaft e dobishme nëse cilësia e kamerës është e mirë. Si shpërblim, bën media të zbukuruara si përmbledhje dhe gif, etj.

5.4 Unë u përpoqa të përdor modem 4G LTE USB për qasje në internet dhe këtu janë rezultatet e mia. 5.4.1 Huawei E3372h-153 punon me mjedër pa probleme dhe softuer shtesë 5.4.2 Gjithashtu aktivizoi pikën e nxehtë, kështu që Rasperry ndau lidhjen e internetit përmes wifi. Ka https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ një udhëzues vërtet të lehtë se si ta bëni këtë duke përdorur RaspAP. 5.4.3 DNS dinamike nuk funksionoi në rrjetin 4G të karrieres sime. Ka shpjegim pse

5.5 Pas përdorimit të këtij sistemi për disa javë doli, megjithëse videot janë më të përshtatshme për tu parë dhe ngarkuar, Google Photos punon më mirë me imazhe. Për shembull, mundëson që grupet e fytyrave të analizojnë vetëm imazhet, dhe vetëm atëherë të kërkojmë fytyra/gjëra nga imazhet në video, por jo të kundërtën. Kështu që unë do të testoj imazhet që ngarkojnë më tepër video.

Recommended: