Përmbajtje:
- Hapi 1: Instaloni Linux Motion në Raspberry
- Hapi 2: Konfiguroni Google Photos API për Python
- Hapi 3: Testoni
- Hapi 4: Opsional: Konfiguroni qasjen në ueb në kamerën e transmetimit në kohë reale
- Hapi 5: Këshilla
Video: Raspberry Pi Linux Motion Integrimi i Google Photos: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
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
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
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:
DIY Smart Garage Opener Door + Home Assistant Integrimi: 5 hapa
DIY Smart Garage Opener Door + Home Assistant Integrimi: Kthejeni derën tuaj të zakonshme të garazhit të zgjuar duke përdorur këtë projekt DIY. Unë do t'ju tregoj se si ta ndërtoni dhe kontrolloni atë duke përdorur Home Assistant (mbi MQTT) dhe të keni aftësinë për të hapur dhe mbyllur nga distanca derën tuaj të garazhit. Unë do të përdor një tabelë ESP8266 të quajtur Wemos
DIY Smart Doorbell: Kodi, Konfigurimi dhe Integrimi HA: 7 hapa (me fotografi)
DIY Smart Doorbell: Code, Setup dhe HA Integration: Në këtë projekt, unë do t'ju tregoj se si mund ta shndërroni zilen tuaj normale të derës në një të zgjuar pa ndryshuar ndonjë nga funksionet aktuale ose duke prerë telat. Unë do të përdor një tabelë ESP8266 të quajtur Wemos D1 mini. E re në ESP8266? Shikoni prezantimin tim
Home Assistant Geiger Counter Integrimi: 8 hapa
Ndihmësi i Shtëpisë Geiger Counter Integrimi: Në këtë tutorial do të tregoj se si të shtoni sensorë të personalizuar në HASS (asistent në shtëpi) më konkretisht një sportel geiger, por procesi është i ngjashëm edhe për sensorë të tjerë. Ne do të përdorim bordin NodeMCU, një numërues geiger me bazë arduino
Armatura e shpatullave të printuara 3D Integrimi me tela EL: 5 hapa
Armatura e shpatullave të printuara 3D Integrimi me tela EL: Unë printova 3D një forca të blinduara të shpatullave dhe tela të integruar EL në të. Ju mund ta përdorni këtë teknikë për personazhet në ndërtimin e kostumeve komike
Arduino dhe Apple HomeKit Integrimi - Kontrolloni shtëpinë tuaj nga Siri! IoT është këtu: 6 hapa
Arduino dhe Apple HomeKit Integrimi - Kontrolloni shtëpinë tuaj nga Siri! IoT është këtu: Ky Instructable do t'ju japë një mënyrë të shpejtë dhe të lehtë për të shtuar një bord arduino në HomeKit të Apple në një pajisje iOS. Ajo hap të gjitha llojet e mundësive, përfshirë Skriptet që funksionojnë në server, të kombinuara me Apples HomeKit " Skenat ", ajo bën