Բովանդակություն:

Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում. 5 քայլ
Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում. 5 քայլ

Video: Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում. 5 քայլ

Video: Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում. 5 քայլ
Video: MotionEye Демонстрация создания сервера видеонаблюдения на базе Linux 2024, Հուլիսի
Anonim
Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում
Raspberry Pi Linux Motion Google Լուսանկարների ինտեգրում

Գաղափարն այն է, որ 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- ի համար

Կարգավորեք Google Photos API- ը Python- ի համար
Կարգավորեք Google Photos API- ը Python- ի համար
Կարգավորեք Google Photos API- ը Python- ի համար
Կարգավորեք 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 Լուսանկարներն ավելի լավ են աշխատում պատկերների հետ: Օրինակ ՝ այն հնարավորություն է տալիս խմբավորելու միայն պատկերները վերլուծող իրերը/դեմքերը, և միայն դրանից հետո տեսանյութերում պատկերներից դեմքեր/իրեր փնտրել, բայց ոչ հակառակը: Այսպիսով, ես փորձարկելու եմ պատկերներ, որոնք վերբեռնում են բավականին շատ տեսանյութեր:

Խորհուրդ ենք տալիս: