Სარჩევი:

Raspberry Pi Linux Motion Google Photos ინტეგრაცია: 5 ნაბიჯი
Raspberry Pi Linux Motion Google Photos ინტეგრაცია: 5 ნაბიჯი

ვიდეო: Raspberry Pi Linux Motion Google Photos ინტეგრაცია: 5 ნაბიჯი

ვიდეო: Raspberry Pi Linux Motion Google Photos ინტეგრაცია: 5 ნაბიჯი
ვიდეო: Leap Motion SDK 2024, დეკემბერი
Anonim
Raspberry Pi Linux Motion Google Photos ინტეგრაცია
Raspberry Pi Linux Motion Google Photos ინტეგრაცია

იდეა იმაში მდგომარეობს, რომ ატვირთოთ Raspberry Pi– სთან დაკავშირებული მოძრაობით გააქტიურებული კამერით გადაღებული ფოტოები და ვიდეოები ღრუბელში ფაილების ასატვირთად. ‘Motion’ პროგრამული უზრუნველყოფა მხარს უჭერს Google Drive– ში PyDrive– ის საშუალებით ატვირთვას. ამ სტატიაში "მოძრაობა" გამოიყენება Google Photos- ზე ასატვირთად.

აპარატურა:

ჟოლო 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 install motion

1.3 ახლა შეცვალეთ ეს ფაილი შემდეგი ცვლილებებით

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

# დაიწყეთ დემონის (ფონის) რეჟიმში და გაათავისუფლეთ ტერმინალი (ნაგულისხმევი: გამორთული)

დემონი ჩართულია

# გამოიყენეთ ფაილი ჟურნალების შეტყობინებების შესანახად, თუ არ არის განსაზღვრული stderr და syslog გამოიყენება. (ნაგულისხმევი: არ არის განსაზღვრული)

logfile /var/log/motion/motion.log

# სურათის სიგანე (პიქსელი). მოქმედი დიაპაზონი: კამერაზეა დამოკიდებული, ნაგულისხმევი: 352

სიგანე 1920

# სურათის სიმაღლე (პიქსელი). მოქმედი დიაპაზონი: კამერაზეა დამოკიდებული, ნაგულისხმევი: 288

სიმაღლე 1080

# კადრების მაქსიმალური რაოდენობა წამში.

ჩარჩოს სიჩქარე 30

# განსაზღვრავს წინასწარ გადაღებული (ბუფერული) სურათების რაოდენობას მოძრაობის წინ

წინამორბედი 5

# კადრების რაოდენობა მოძრაობის შემდეგ გადასაღებად აღარ არის გამოვლენილი

პოსტი_დაპყრობა 5

# გამოუშვით "ნორმალური" სურათები მოძრაობის გამოვლენისას (ნაგულისხმევი: ჩართული)

გამომავალი_ სურათები გამორთულია

# ხარისხი (პროცენტებში), რომელიც გამოიყენება jpeg შეკუმშვისთვის

ხარისხი 100

# გამოიყენეთ ffmpeg ფილმების დასაშიფრებლად რეალურ დროში

ffmpeg_output_movies გამორთულია

# ან დიაპაზონი 1 - 100, სადაც 1 ნიშნავს უარეს ხარისხს და 100 საუკეთესო.

ffmpeg_variable_bitrate 100

# ვიდეოების შექმნისას ჩარჩოები დუბლირებული უნდა იყოს თანმიმდევრობით

ffmpeg_duplicate_frames ყალბი

# Bool extpipe ჩართვის ან გამორთვისთვის (ნაგულისხმევი: გამორთული)

use_extpipe ჩართულია

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i მილები: 0 -vcodec libx264 -გადატვირთვა ულტრა სწრაფი -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: su $ sudo nano/etc/default/motion

pi@raspberrypi: ~ $ start_motion_daemon = დიახ

ნაბიჯი 2: დააყენეთ Google Photos API პითონისთვის

დააყენეთ Google Photos API პითონისთვის
დააყენეთ Google Photos API პითონისთვის
დააყენეთ Google Photos API პითონისთვის
დააყენეთ Google Photos API პითონისთვის

2.1 მიზანშეწონილია შექმნათ ახალი ანგარიში ამ მიზნით, რომ გააზიაროთ ალბომი თქვენს მთავართან, რომ მიიღოთ შეტყობინებები ახალი ფაილების დამატებისას, დამატებით მეტი საცავი. ჩართეთ Google Photos API იმ ანგარიშისთვის, რომლის ასატვირთად აპირებთ გამოყენებას.

ამის შემდეგ თქვენ უნდა გქონდეთ credentials.json ფაილი.

2.2 პითონის გარემოს დაყენება

ძირითადად გარემოს დაყენება საჭიროა მხოლოდ ჟოლოზე. მაგრამ ეს მოითხოვს ავტორიზაციას, რაც უფრო მოსახერხებელია კომპიუტერზე. ჟოლოზე ამის გასაკეთებლად თქვენ უნდა დააკავშიროთ მონიტორი/კლავიატურა მას ან დააინსტალიროთ დისტანციური დესკტოპის ინტერფეისი. მე მხოლოდ იგივე გარემო დავაყენე ჟოლოზე და კომპიუტერზე ორივეზე. ნაბიჯები 2.2.1..2.2.3 გაკეთდა კომპიუტერზე, 2.2.1, 2.2.2, 2.2.5, 2.2.6 Rpi– ზე

2.2.1 დააინსტალირეთ პითონი 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 თქვენ აღარ გჭირდებათ credentials.json for photos.py იმავე დირექტორიაში.

2.2.5 გაუზიარეთ ალბომი ანგარიშს, თუ რა გსურთ მიიღოთ შეტყობინებები ახალ მედიაში. დაამატეთ ეს ანგარიში თქვენს ტელეფონში.

2.2.6 განათავსეთ photos.py და token.pickle in/var/lib/motion ჟოლოზე. "პი" მომხმარებელს არ შეუძლია ჩაწეროს "მოძრაობის რეჟიმზე", ასე რომ ატვირთეთ ჯერ /სახლში /პიზე

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

შემდეგ შედით ჟოლოში და გადაიტანეთ ფაილები sudo– ს ქვეშ

ssh pi@IP

pi@raspberrypi: su $ 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

შეიძლება იყოს image-j.webp

ნაბიჯი 3: ტესტი

3.1 დაიწყეთ მოძრაობის სერვისი

pi@raspberrypi: su $ 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: su $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4

შეამოწმეთ პითონის კვალი. დაელოდეთ სანამ event_end გამოჩნდება მოძრაობაში. Log. შემდეგ გადადით "helloworld" ალბომში თქვენს Google ფოტოებში და შეამოწმეთ არის თუ არა ვიდეო ატვირთული.

3.4 თუ ატვირთვა წარმატებულია, გამოაქვეყნეთ კომენტარი /და ა.შ.

pi@raspberrypi: su $ 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 სურვილისამებრ გაუზიარეთ ალბომი თქვენს მთავარ ანგარიშს, რომ მიიღოთ შეტყობინება ახალი ვიდეოს ან ფოტოს დამატებისას.

ნაბიჯი 4: სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში ნაკადი კამერაზე

სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში სტრიმინგის კამერაზე
სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში სტრიმინგის კამერაზე
სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში სტრიმინგის კამერაზე
სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში სტრიმინგის კამერაზე
სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში სტრიმინგის კამერაზე
სურვილისამებრ: დააკონფიგურირეთ ვებ წვდომა რეალურ დროში სტრიმინგის კამერაზე

ეს ნაბიჯი ემყარება მიშელ პარენოს გაკვეთილს. მე უბრალოდ ავირჩიე FreeDNS ნაცვლად NoIP, როგორც აქ არის რეკომენდებული.

4.1 ვიდეო ნაკადის მოძრაობის სერვერზე უფლებამოსილი წვდომის კონფიგურაცია:

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

# დააყენეთ ავტორიზაციის მეთოდი (ნაგულისხმევი: 0)

# 0 = გამორთულია

# 1 = ძირითადი ავტორიზაცია

# 2 = MD5 დაიჯესტი (უსაფრთხო ავტორიზაცია)

ნაკადი_ავტოს_ მეთოდი 2

# ავთენტიფიკაცია ნაკადისათვის. სინტაქსის მომხმარებლის სახელი: პაროლი

# ნაგულისხმევი: არ არის განსაზღვრული (გამორთულია)

webcontrol_authentication მომხმარებლის სახელი: პაროლი

# კადრების მაქსიმალური სიჩქარე ნაკადის ნაკადებისთვის (ნაგულისხმევი: 1)

ნაკადის_მაქსრატი 30

# შეზღუდეთ ნაკადის კავშირები მხოლოდ ლოკალური ჰოსტისთვის (ნაგულისხმევი: ჩართული)

stream_localhost გამორთულია

თუ თქვენ არ აპირებთ გამოიყენოთ გარე კონტროლის ვებ კონტროლის ინტერფეისი, დატოვეთ ის გამორთული (როგორც ნაგულისხმევი)

# შეზღუდეთ კონტროლის კავშირები მხოლოდ ლოკალური ჰოსტისთვის (ნაგულისხმევი: ჩართული)

webcontrol_localhost ჩართულია

ასევე, რადგან ჟოლო გადის ინტერნეტში, მე გირჩევთ შეცვალოთ ჟოლოს ნაგულისხმევი პაროლი

pi@raspberrypi: ~ $ passwd

მიუხედავად იმისა, რომ ssh პორტი 22 არ არის გადანაწილებული ჟოლოზე, მაინც.

4.2 გადადით FreeDNS საიტზე

4.3 დარეგისტრირდით

4.4 ქვედომენის დამატება (წევრებისთვის -> ქვედომენები)

4.5 შეარჩიეთ DNS კლიენტი ჟოლოზე დასაყენებლად (წევრებისთვის -> დინამიური DNS -> დინამიური DNS რესურსები -> დინამიური DNS კლიენტები)

მე ავირჩიე wget_script update.sh ადამ დინისგან (გვერდის ბოლოში)

არსებობს ადგილის დამცავები _YOURAPIKEYHERE_ და _YOURDOMAINHERE_. მათი მისაღებად გადადით (წევრებისთვის -> დინამიური DNS)

და ქვემოთ მოცემულ გვერდზე თქვენ ნახავთ სკრიპტების მაგალითებს თქვენი APIKEY და DOMAIN (ის, რაც დამატებულია 4.4 -ში). მე ავიღე ეს მნიშვნელობები Wget Script– დან და ჩავანაცვლე _YOURAPIKEYHERE_ და _YOURDOMAINHERE_ განახლებაში.შ

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

შეიყვანეთ თქვენი რწმუნებათა სიგელები, რომლებიც თქვენ განსაზღვრეთ მოძრაობაში. Conf.

შეამოწმეთ როგორ მუშაობს ვიდეო.

4.10 DDNS განახლების მიზნით, ავტომატურად დააყენეთ cron ამოცანა. იხილეთ Quick_cron_example (წევრებისთვის -> დინამიური DNS)

ნაბიჯი 5: რჩევები

5.1 ფრთხილად დააინსტალირეთ პითონის პაკეტები ჟოლოზე. ერთი დღე გავატარე ამის გამოსწორებაზე - საკითხი იმაში მდგომარეობდა, რომ კონსოლიდან სცენარი კარგად გამოდიოდა, მაგრამ მოძრაობის ღონისძიებიდან დარეკვა არ იყო. რაც უარესს ხდიდა იყო ის, რომ სცენარის კვალი ამ უკანასკნელ შემთხვევაში მიუწვდომელი იყო.

მიზეზი ის იყო, რომ სახელმძღვანელოს შემდეგ დავაყენე პაკეტები "pi" მომხმარებლისთვის (რომელიც სტანდარტულად არის /home /pi დირექტორიაში და შეზღუდულია სხვა მომხმარებლებისთვის), მაგრამ სკრიპტის გასაშვებად, როგორც "მოძრაობის" სერვისის ბავშვი, პაკეტები უნდა იყოს ხელმისაწვდომია "მოძრაობის" მომხმარებლისთვისაც. ასე რომ, საბოლოოდ მე დავაფიქსირე პაკეტების დაყენება როგორც

sudo pip3…

ეს ჯერ კიდევ არ არის სწორი გზა. Sudo– ს გარეშე დაყენება pip3– სისტემა რატომღაც მაძლევდა შეცდომებს.

შესაბამისად, დამწერლობას ასევე უწოდებენ sudo (იხ. მოძრაობა. კონფიგურაცია).

ამ პრობლემების გადასაჭრელად მე გავაკეთე ბევრი არასაჭირო ცვლილება და არ ვარ დარწმუნებული რა არის საჭირო და ახლა ძალიან ზარმაცი ვარ, რომ თანდათანობით დავაბრუნო ისინი და ვნახო როდის შეწყვეტს მუშაობას. კერძოდ, მოძრაობის ადმინისტრატორის უფლებები:

pi@raspberrypi: ~ $ ჯგუფების მოძრაობა

მოძრაობა: მოძრაობა adm sudo აუდიო ვიდეო მომხმარებლები netdev pi

pi@raspberrypi: su $ 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 ფოტოების ასისტენტი ამოიცნობს სახეებს, რაც საკმაოდ სასარგებლოა, თუ კამერის ხარისხი კარგია. როგორც ბონუსი, ის ქმნის მედია სახის შედგენებსა და გიფებს და ა.

5.4 მე შევეცადე გამოვიყენო 4G LTE USB მოდემი ინტერნეტისთვის და აქ არის ჩემი შედეგები. 5.4.1 Huawei E3372h-153 მუშაობს ჟოლოს უპრობლემოდ და დამატებითი პროგრამული უზრუნველყოფა 5.4.2 ასევე ჩართულია ცხელ წერტილში, ასე რომ რასპერრიმ ინტერნეტი გაზიარა wifi– ს საშუალებით. არსებობს https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ მართლაც მარტივი სახელმძღვანელო, თუ როგორ უნდა გავაკეთოთ ეს RaspAP– ის გამოყენებით. 5.4.3 დინამიური DNS არ მუშაობდა ჩემი კარის 4G ქსელში. არის ახსნა რატომ

5.5 ამ სისტემის გამოყენების შემდეგ რამდენიმე კვირა აღმოჩნდა, თუმცა ვიდეოები უფრო მოსახერხებელია სანახავად და ასატვირთად, Google Photos უკეთ მუშაობს სურათებთან. მაგალითად, ეს საშუალებას აძლევს საგნებს/სახეებს დააჯგუფოს სურათების გაანალიზება და მხოლოდ ამის შემდეგ მოძებნოს სახეები/საგნები სურათებიდან ვიდეოებში, მაგრამ არა პირიქით. ასე რომ, მე ვაპირებ გამოვცადო სურათების ატვირთვა საკმაოდ ვიდეო.

გირჩევთ: