Բովանդակություն:
- Քայլ 1: Տեղադրեք Linux Motion- ը ազնվամորու վրա
- Քայլ 2: Կարգավորեք Google Photos API- ը Python- ի համար
- Քայլ 3: Փորձարկում
- Քայլ 4. Լրացուցիչ. Կարգավորեք վեբ հասանելիությունը իրական ժամանակի հոսքային տեսախցիկին
- Քայլ 5: Խորհուրդներ
Video: Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Գաղափարն այն է, որ Raspberry Pi- ի հետ կապված շարժումով ակտիվացված տեսախցիկով արված լուսանկարներ և տեսանյութեր վերբեռնեն ՝ ֆայլերը ամպի վրա վերբեռնելու համար: «Շարժում» ծրագրակազմն աջակցում է PyDrive- ի միջոցով Google Drive- ում բեռնելուն: Այս հոդվածում «Շարժումը» օգտագործվում է Google Լուսանկարներ վերբեռնելու համար:
Սարքավորումներ:
Ազնվամորի Pi 3B+
USB տեսախցիկ Logitech C920
Սարքավորման ընտրությունը որոշված չէր, ես պարզապես վերցրեցի այն, ինչ ձեռքի տակ էր:
Նախադրյալներ.
Հարմարության համար Raspberry pi- ն պետք է լինի ձեր տեղական ցանցում `այն վերահսկելու առանց մոնիտորի/ստեղնաշարի և ֆայլեր վերբեռնելու/ներբեռնելու: Դրա համար դուք պետք է ունենաք ssh գործակալ ձեր համակարգչում (օրինակ ՝ ծեփոն):
Շատ շնորհակալություն ssandbac- ին հիանալի ձեռնարկի համար: Եթե Ձեզ անհրաժեշտ են լրացուցիչ տեղեկություններ շրջակա միջավայրի կարգավորման մասին, ապա կարդացեք այս հոդվածը: Ես վերցրեցի շարժման տեղադրումը և դրանից կազմաձևող քայլերը և ավելացրեցի որոշ փոփոխություններ: Մասնավորապես, ֆայլերի և ահազանգերի էլ. Փոստի փոխարեն այս օրինակը օգտագործում է Google լուսանկարների ալբոմի վերբեռնումը և ծանուցումների տողում ծանուցումների «ավելացված լուսանկարների» ստացումը:
Ահա քայլերը.
Քայլ 1: Տեղադրեք Linux Motion- ը ազնվամորու վրա
Մասնավորապես այս օրինակում օգտագործվել է շարժում v4.0:
1.1 Թարմացնել pi
pi@raspberrypi: su $ sudo apt-get թարմացում
pi@raspberrypi: su $ sudo apt-get upgrade
1.2 Ներբեռնեք միջնորդությունը
pi@raspberrypi: su $ sudo apt-get տեղադրել շարժում
1.3 Այժմ խմբագրեք այս ֆայլը հետևյալ փոփոխություններով
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Սկսեք դեմոն (ֆոն) ռեժիմում և թողարկեք տերմինալ (կանխադրված ՝ անջատված)
դեյմոնը միացված է
# Օգտագործեք ֆայլ ՝ տեղեկամատյանների հաղորդագրությունները պահպանելու համար, եթե սահմանված չէ stderr և syslog: (կանխադրված. սահմանված չէ)
logfile /var/log/motion/motion.log
# Պատկերի լայնություն (պիքսել): Վավեր տիրույթ. Տեսախցիկից կախված, կանխադրված `352
լայնություն 1920
# Պատկերի բարձրություն (պիքսել): Վավեր տիրույթ ՝ տեսախցիկից կախված, կանխադրված ՝ 288
բարձրությունը 1080
# Մեկ վայրկյանում նկարահանվելու շրջանակների առավելագույն քանակը:
շրջանակի արագություն 30
# Նշում է նախքան շարժումից առաջ նկարահանված (բուֆերացված) նկարների քանակը
նախաբանը 5
# Շարժումից հետո նկարելու շրջանակների քանակն այլևս չի հայտնաբերվում
գրառման_գրում 5
# Ելք «նորմալ» նկարներ, երբ շարժումը հայտնաբերվում է (կանխադրված ՝ միացված)
output_pictures անջատված է
# Որակը (տոկոսներով), որը պետք է օգտագործվի jpeg սեղմման միջոցով
որակ 100
# Օգտագործեք ffmpeg ՝ իրական ժամանակում ֆիլմերը կոդավորելու համար
ffmpeg_output_movies անջատված է
# կամ 1-100 միջակայքը, որտեղ 1 -ը նշանակում է ամենավատ որակը, իսկ 100 -ը `լավագույնը:
ffmpeg_variable_bitrate 100
# Տեսանյութեր ստեղծելիս շրջանակները պետք է կրկնօրինակվեն ըստ հերթականության
ffmpeg_duplicate_frames false
# Bool ՝ extpipe- ը միացնելու կամ անջատելու համար (կանխադրված ՝ անջատված)
use_extpipe- ը միացված է
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i խողովակ ՝ 0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4
target_dir/var/lib/motion
# Հրաման, որը պետք է կատարվի, երբ ֆիլմի ֆայլը
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Վերջինը ստորակետով առայժմ թողեք (մեկնաբանված) `մեկնաբանության չտրամադրելով այն բանից հետո, երբ համոզվեք, որ տեսագրումը և վերբեռնումը կաշխատեն:
1.4 Այնուհետեւ փոխեք
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
pi@raspberrypi: ~ $ start_motion_daemon = այո
Քայլ 2: Կարգավորեք Google Photos API- ը Python- ի համար
2.1 Առաջարկվում է այս նպատակով ստեղծել նոր հաշիվ ՝ ձեր հիմնականի հետ ալբոմը կիսելու համար ՝ նոր ֆայլեր ավելացնելիս ծանուցումներ ստանալու համար, ինչպես նաև ավելի շատ պահեստային տարածք: Միացրեք Google Photos API- ն այն հաշվի համար, որը պատրաստվում եք օգտագործել վերբեռնման համար:
Դրանից հետո դուք պետք է ունենաք credentials.json ֆայլ:
2.2 Python միջավայրի կարգավորում
Հիմնականում միջավայրի կարգավորումը պահանջվում է միայն ազնվամորու վրա: Բայց դա պահանջում է արտոնագիր, որն ավելի հարմար է իրականացնել ԱՀ -ում: Ազնվամորու վրա դա անելու համար հարկավոր է միացնել մոնիտորը/ստեղնաշարը դրան կամ կարգաբերել ինչ -որ հեռավոր աշխատասեղանի UI: Ես պարզապես տեղադրել եմ նույն միջավայրը ազնվամորու և երկուսի վրա: Այսպիսով, 2.2.1..2.2.3 քայլերը կատարվել են համակարգչի վրա, 2.2.1, 2.2.2, 2.2.5, 2.2.6 ՝ Rpi- ի վրա
2.2.1 տեղադրեք Python 3
2.2.2 Տեղադրեք google api փաթեթները ՝ ըստ ձեռնարկի*(տես 5.1)
ԱՀ -ում
pip3 install-արդիականացնել google-api-python-client google-auth-httplib2 google-auth-oauthlib
Ազնվամորու վրա
pi@raspberrypi: su $ sudo pip3 install-upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 Ստուգեք Google- ի լուսանկարներում սցենարի վերբեռնումը: Այն տեղադրված է իմ github- ում: Տեղադրեք այն նույն գրացուցակում ՝ հավատարմագրերով: json:
2.2.4 Լուսանկարեք և փորձեք վերբեռնում
python3 photos.py image.jpg
Տեղադրեք բացակայող կախվածությունները, եթե կան և նորից փորձեք: Արդյունքում, դուք պետք է ձեռք բերեք token.pickle- ը սցենարի գրացուցակում և նաև նոր ընդհանուր ալբոմ, որը ստեղծվել է ձեր Google Photos վեբ ինտերֆեյսում ՝ image.jpg- ով: Երբ ստանում եք token.pickle- ը, այլևս նույն գրացուցակում photos.py- ի համար հավատարմագրերի կարիք չունեք:
2.2.5 Կիսեք ալբոմը հաշվի հետ այն մասին, թե ինչ կցանկանայիք ստանալ նոր մեդիայի մասին ծանուցումներ: Ավելացրեք այս հաշիվը ձեր հեռախոսին:
2.2.6 Ազնվամորու վրա/var/lib/motion- ում տեղադրեք photos.py և token.pickle: «Pi» օգտագործողը չի կարող գրել «motion's dir's» - ին, ուստի նախ վերբեռնեք /home /pi
scp photos.py token.pickle pi@IP ՝/home/pi
Այնուհետեւ մուտք գործեք ազնվամորի եւ ֆայլերը տեղափոխեք sudo- ի ներքո
ssh pi@IP
pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion
2.2.7 Ստուգեք, թե ինչպես է բեռնվում ազնվամորու վրա: Նկարեք fswebcam- ով և փորձեք վերբեռնել այն
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
«Helloworld» ալբոմում կարող է լինել image.jpg, իսկ հեռախոսի բարում ՝ ծանուցում:
Քայլ 3: Փորձարկում
3.1 Գործարկել շարժման ծառայությունը
pi@raspberrypi: ~ $ sudo ծառայության շարժման սկիզբ
Կարող եք փոխել հրամանը ՝ «դադարեցնել» կամ «վերագործարկել»
3.2 Միացնել շարժման տեղեկամատյանները
pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log
3.2 Դիտեք տեսախցիկի ելքը մեկ այլ սարքի վրա, որը միացված է նույն տեղական ցանցին: Մուտքագրեք զննարկիչ.
IP: 8081
3.3 Տեղեկամատյաններին նայելը սպասեք, մինչև շարժումը հայտնաբերվի, և NAME.mp4 ֆայլը գրվի/var/lib/motion- ում: Այնուհետեւ ձեռքով գործարկեք սցենարի վերբեռնումը
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Ստուգեք պիթոնի հետքերը: Սպասեք, մինչև event_end- ը հայտնվի motion.log- ում: Այնուհետև գնացեք «helloworld» ալբոմ ձեր google լուսանկարներում և ստուգեք ՝ արդյո՞ք վերբեռնված տեսանյութ կա:
3.4 Եթե վերբեռնումը հաջող է, ապա /et/motion.conf- ում մեկնաբանեք տողը.
pi@raspberrypi: ~ $ sudo nano /etc/motion.conf
# Հրաման, որը պետք է կատարվի, երբ ֆիլմի ֆայլը պատրաստ լինի
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi: ~ $ համաժամեցում
pi@raspberrypi: su $ sudo ծառայության շարժման վերագործարկում
3.5 Նայելով շարժման տեղեկամատյաններին և ալբոմում ստուգեք ՝ արդյոք տեսանյութը ինքնաբերաբար վերբեռնվում է:
3.6 ptionանկության դեպքում կիսվեք ալբոմով ձեր հիմնական հաշվին `նոր տեսանյութ կամ լուսանկար ավելացնելիս ծանուցում ստանալու համար:
Քայլ 4. Լրացուցիչ. Կարգավորեք վեբ հասանելիությունը իրական ժամանակի հոսքային տեսախցիկին
Այս քայլը հիմնված է Միշելի Պարրենոյի ձեռնարկի վրա: Ես պարզապես ընտրեցի FreeDNS- ը NoIP- ի փոխարեն, ինչպես խորհուրդ է տրվում այստեղ:
4.1 Կարգավորեք վիդեո հոսքի շարժման սերվերի լիազորված մուտքը.
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Սահմանեք նույնականացման եղանակը (կանխադրված ՝ 0)
# 0 = հաշմանդամ
# 1 = Հիմնական վավերացում
# 2 = MD5 մարսողություն (ավելի անվտանգ վավերացում)
հոսքի_օդան_մեթոդ 2
# Նույնականացում հոսքի համար: Շարահյուսական օգտվողի անուն ՝ գաղտնաբառ
# Լռելյայն ՝ սահմանված չէ (անջատված է)
webcontrol_authentication օգտվողի անուն ՝ գաղտնաբառ
# Առավելագույն արագություն հոսքերի հոսքերի համար (կանխադրված ՝ 1)
հոսքի_մաքսատ 30
# Սահմանափակեք հոսքի միացումները միայն localhost- ին (կանխադրված ՝ միացված)
stream_localhost- ն անջատված է
Եթե դուք չեք պատրաստվում օգտագործել արտաքին ցանցից վեբ կառավարման միջերեսը, թողեք այն անջատված (ինչպես լռելյայն)
# Սահմանափակեք հսկողության միացումները միայն localhost- ին (կանխադրված ՝ միացված)
webcontrol_localhost- ը միացված է
Բացի այդ, քանի որ ազնվամորին առցանց է, խորհուրդ եմ տալիս փոխել ազնվամորիի կանխադրված գաղտնաբառը
pi@raspberrypi: ~ $ passwd
Չնայած ssh նավահանգիստ 22 -ը չի վերափոխվում դեպի ազնվամորի, այնուամենայնիվ:
4.2 Գնացեք FreeDNS կայք
4.3 Գրանցվել
4.4 Ավելացնել ենթադոմեյն (անդամների համար -> ենթադոմեյն)
4.5 Ընտրեք DNS հաճախորդ ՝ Raspberry- ում տեղադրելու համար (Անդամների համար -> Dynamic DNS -> Synamic DNS Resources -> Dynamic DNS Clients)
Ես ընտրեցի wget_script update.sh Ադամ Դինից (էջի ներքևում)
Կան տեղաբաշխիչներ _YOURAPIKEYHERE_ և _YOURDOMAINHERE_: Նրանց ստանալու համար գնացեք (Անդամների համար -> Դինամիկ DNS)
Իսկ ստորև բերված էջում դուք կգտնեք սցենարների օրինակներ ձեր APIKEY- ով և DOMAIN- ով (մեկը, որն ավելացվել է 4.4 -ում): Վերցրեցի այս արժեքները Wget Script- ից և փոխարինեցի _YOURAPIKEYHERE_ և _YOURDOMAINHERE_ Update.sh- ում
4.6 Այնուհետև գործարկեք update.sh- ը ազնվամորու վրա: Այն կարող է պահանջել dnsutils nslookup- ի համար: Տեղադրեք այն.
pi@raspberrypi: su $ sudo apt-get dnsutils
4.7 Այնուհետև կազմաձևեք ձեր երթուղիչը ՝ արտաքին աշխարհի հարցումները 8081 նավահանգստով վերափոխելու համար ազնվամորիի IP- ին
4.8 Պահպանեք ip- ն ձեր ազնվամորու MAC- ի համար DHCP- ի պարամետրերում, որպեսզի Rpi- ն միշտ ունենա նույն ip- ն
4.9 Այնուհետև մուտքագրեք դիտարկիչ սարքում, որը միացված չէ տեղական ցանցին.
ձեր տիրույթը ՝ 8081
Մուտքագրեք ձեր լիազորությունները, որոնք սահմանել եք motion.conf- ում:
Փորձարկեք, թե ինչպես է աշխատում տեսանյութը:
4.10 ՝ DDNS- ի ավտոմատ կարգավորումը cron առաջադրանքը թարմացնելու համար: Տեսեք Quick_cron_example- ը (Անդամների համար -> Դինամիկ DNS)
Քայլ 5: Խորհուրդներ
5.1 Ուշադիր եղեք ազնվամորու վրա պիթոնի փաթեթներ տեղադրելիս: Ես մեկ օր անցկացրեցի այս խնդիրը կարգաբերելու համար: Հարցն այն էր, որ վահանակից սցենարը լավ էր աշխատում, բայց շարժման իրադարձությունից հետ կանչվելը այդպես չէր: Ավելի վատը այն էր, որ սցենարից հետքեր վերջին դեպքում անհասանելի էին:
Պատճառն այն էր, որ ուղեցույցից հետո ես տեղադրեցի փաթեթները «pi» օգտվողի համար (որը լռելյայն գտնվում է /home /pi գրացուցակում և սահմանափակված է այլ օգտվողների համար), բայց սցենարը որպես «շարժման» ծառայության երեխան գործարկելու համար փաթեթները պետք է լինեն հասանելի է նաև «շարժման» օգտագործողի համար: Այսպիսով, վերջապես, ես այն շտկեցի ՝ փաթեթները տեղադրելով որպես
sudo pip3…
Սա դեռևս պատշաճ ձև չէ: Տեղադրումը առանց sudo- ի, ինչպես pip3 -համակարգը ինչ -ինչ պատճառներով սխալներ էր տալիս ինձ:
Համապատասխանաբար, սցենարը կոչվում է նաև sudo (տես motion.conf):
Այս անսարքությունների վերացման ընթացքում ես շատ անհարկի փոփոխություններ կատարեցի և չգիտեի, թե ինչն է անհրաժեշտ, և այժմ չափազանց ծույլ է դրանք աստիճանաբար հետ տանել և տեսնել, թե երբ այն դադարում է աշխատել: Մասնավորապես, շարժման կառավարչի իրավունքներին.
pi@raspberrypi: ~ $ խմբերի շարժում
շարժում. շարժում adm sudo աուդիո վիդեո օգտագործողներ netdev pi
pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALL = (ALL) NOPASSWD: ALL
շարժում ALL = (ALL) NOPASSWD: ALL
Նաև փոխվում էր ֆայլերի սեփականատերերը և Google Drive- ում վերբեռնման նմանատիպ թույլտվությունները: Հավանաբար, դա կարող է օգնել ձեզ այն դեպքում, երբ դուք ունեք նման խնդիր:
5.2 Google Photos API- ն թույլ է տալիս ֆայլեր ավելացնել ընդհանուր ալբոմներին միայն այնպես, որ հղում ունեցողները կարողանան մուտք գործել դրան: Մի կիսվեք հղումով և ջնջեք հին ֆիլմերը կամ դրանք տեղափոխեք աղբարկղ կամ ալբոմից: Վերջին դեպքում դրանք մնում են հաշվում:
5.3 Google լուսանկարների օգնականը հայտնաբերում է դեմքերը, ինչը բավականին օգտակար է, եթե տեսախցիկի որակը լավ է: Որպես բոնուս, դա դարձնում է շքեղ լրատվամիջոցների մի շարք հավաքածուներ և gif- ներ և այլն:
5.4 Ես փորձեցի 4G LTE USB մոդեմ օգտագործել ինտերնետ հասանելիության համար, և ահա իմ արդյունքները: Կա https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ իսկապես հեշտ ուղեցույց, թե ինչպես դա անել RaspAP- ի միջոցով: 5.4.3 Dynamic DNS- ը չի աշխատել իմ carrie- ի 4G ցանցում: Կա բացատրություն, թե ինչու
5.5 Այս համակարգը մի քանի շաբաթ օգտագործելուց հետո պարզվեց, որ չնայած տեսանյութերն ավելի հարմար են դիտելու և վերբեռնելու համար, բայց Google Լուսանկարներն ավելի լավ են աշխատում պատկերների հետ: Օրինակ ՝ այն հնարավորություն է տալիս խմբավորելու միայն պատկերները վերլուծող իրերը/դեմքերը, և միայն դրանից հետո տեսանյութերում պատկերներից դեմքեր/իրեր փնտրել, բայց ոչ հակառակը: Այսպիսով, ես փորձարկելու եմ պատկերներ, որոնք վերբեռնում են բավականին շատ տեսանյութեր:
Խորհուրդ ենք տալիս:
3D տպագրված ուսի զրահ EL Wire ինտեգրում. 5 քայլ
3D տպագրված ուսի զրահ EL Wire Integration: I 3D տպել եմ ուսի զրահ և դրա մեջ ինտեգրված EL մետաղալար: Դուք կարող եք օգտագործել այս տեխնիկան կերպարների համար ՝ կոմիքսների զգեստների ստեղծման մեջ
Google ստվարաթղթե լուսանկարների ներմուծում ՝ 5 քայլ
Google Cardboard Photospheres- ի ներմուծում. Google Cardboard- ի կանխադրված հավելվածը կարող է ցուցադրել " kitkat/nexus " - ում արված ցանկացած լուսոլորտ: տեսախցիկի ծրագիր, բայց նաև հաճելի է դուրս գալ և տեսնել այն վայրերը, որտեղ դեռ չեք եղել: Առաջին բանը, որ ուզում էի անել, այլ համայնապատկերային պատկերներ բեռնելն էր, բայց նույնիսկ
Wifi- ով կառավարվող 12 վ լուսադիոդային ժապավեն ՝ օգտագործելով Raspberry Pi- ն Tasker- ով, Ifttt ինտեգրում. 15 քայլ (նկարներով)
Wifi վերահսկվող 12v Led Strip օգտագործելով Raspberry Pi With Tasker, Ifttt Integration. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես կարելի է վերահսկել պարզ 12 վ անալոգային լուսադիոդային ժապավենը WiFi- ի միջոցով `օգտագործելով ազնվամորի pi- ն: Այս նախագծի համար ձեզ հարկավոր է. 1x Raspberry Pi (I ես օգտագործում եմ Raspberry Pi 1 Model B+) 1x RGB 12v Le
Arduino և Apple HomeKit ինտեգրում. Վերահսկեք ձեր տունը Siri- ից: IoT- ն այստեղ է. 6 քայլ
Arduino և Apple HomeKit ինտեգրում. Վերահսկեք ձեր տունը Siri- ից: IoT- ն այստեղ է. Այս Instructable- ը ձեզ կտա արագ և հեշտ միջոց ՝ արդուինո տախտակ ավելացնել Apple- ի HomeKit- ին iOS սարքի վրա: Այն բացում է բոլոր հնարավորությունները, ներառյալ սերվերի վրա աշխատող սցենարները ՝ զուգորդված Apples HomeKit " տեսարաններով "
Պարզ Arduino Uno և ESP8266 ինտեգրում ՝ 6 քայլ
Պարզ Arduino Uno և ESP8266 ինտեգրում. Մեր նպատակն էր ստեղծել Esp8266 AT հրամանատարական գրադարան (ITEAD գրադարանի հիման վրա), որը լավ կաշխատի ESP8266 սարքերի մեծ մասի ծրագրային սերիայի վրա, եթե ունենան որոնվածը, որն արձագանքում է AT հրամաններին (ինչը սովորաբար արտադրողի կանխադրված)