Mündəricat:
- Addım 1: Raspberry üzərində Linux Motion qurun
- Addım 2: Python üçün Google Foto API qurun
- Addım 3: Test edin
- Addım 4: İsteğe bağlı: Veb Girişini Real Zaman Axın Kamerasına konfiqurasiya edin
- Addım 5: İpuçları
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Fikir, faylları bir buluda yükləmək üçün Raspberry Pi ilə əlaqəli hərəkətli kamera ilə çəkilmiş foto və videoları yükləməkdir. 'Motion' proqramı PyDrive vasitəsilə Google Diskə yükləməyi dəstəkləyir. Bu yazıda 'Motion' Google Fotoşəkillərə yükləmək üçün istifadə olunur.
Avadanlıq:
Raspberry Pi 3B+
USB veb kamerası Logitech C920
Avadanlıq seçimi müəyyən edilmədi, yalnız əlimdə olanı götürdüm.
Ön şərtlər:
Rahatlıq üçün Raspberry pi yerli şəbəkənizdə olmalıdır - monitor/klaviatura olmadan idarə etmək və faylları yükləmək/yükləmək. Bunun üçün kompüterinizdə ssh agenti olmalıdır (məsələn, macun).
Böyük bir dərs üçün ssandbac -a çox təşəkkürlər. Ətraf mühitin necə qurulacağına dair daha çox məlumata ehtiyacınız varsa, bu məqaləyə baxın. Hərəkət quraşdırma və addımlar konfiqurasiya borc götürdüm və bəzi dəyişikliklər əlavə etdim. Xüsusilə, bu nümunə, faylları və xəbərdarlıqları e -poçt göndərmək əvəzinə paylaşılan albomu google şəkillərinə yükləməyi və bildiriş çubuğunda "əlavə edilmiş fotoşəkillər" kimi bildirişlər əldə etməyi istifadə edir.
İşdə addımlar:
Addım 1: Raspberry üzərində Linux Motion qurun
Xüsusilə bu nümunədə hərəkət v4.0 istifadə edilmişdir.
1.1 Pi yeniləyin
pi@raspberrypi: ~ $ sudo apt-get yeniləmə
pi@raspberrypi: ~ $ sudo apt-get yeniləmə
1.2 Yükləmə hərəkəti
pi@raspberrypi: ~ $ sudo apt-get install motion
1.3 İndi bu faylı aşağıdakı dəyişikliklərlə redaktə edin
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Daemon (fon) rejimində başlayın və terminal buraxın (standart: söndürülmüş)
daemon aktivdir
# Stderr və syslog istifadə edilmədikdə, qeydləri saxlamaq üçün bir fayl istifadə edin. (standart: təyin olunmayıb)
logfile /var/log/motion/motion.log
# Şəkil genişliyi (piksel). Etibarlı diapazon: Kameradan asılıdır, standart: 352
eni 1920
# Şəkil hündürlüyü (piksel). Etibarlı diapazon: Kameradan asılıdır, standart: 288
hündürlük 1080
# Saniyədə çəkiləcək maksimum çərçivə sayı.
çərçivə 30
# Hərəkətdən əvvəl çəkilmiş (tamponlanmış) şəkillərin sayını təyin edir
əvvəlcədən çəkmə 5
# Hərəkətdən sonra çəkiləcək çərçivə sayı artıq aşkar edilmir
post_capture 5
# Hərəkət aşkar edildikdə 'normal' şəkillər çıxarın (standart: açıq)
output_pictures söndürüldü
# Jpeg sıxılma ilə istifadə ediləcək keyfiyyət (faizlə)
keyfiyyət 100
# Filmləri real vaxtda kodlaşdırmaq üçün ffmpeg istifadə edin
ffmpeg_output_movies deaktivdir
# və ya 1 - 100 aralığı, burada 1 ən pis keyfiyyət və 100 ən yaxşısı deməkdir.
ffmpeg_variable_bitrate 100
# Videolar yaradılarkən çərçivələr ardıcıllıqla təkrarlanmalıdır
ffmpeg_duplicate_frames saxta
Extpipe -i aktiv etmək və ya deaktiv etmək üçün # Bool (standart: söndürülmüş)
use_extpipe -i aktiv edin
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i boru: 0 -vcodec libx264 -quraşdırılmış ultra -f mp4 %f.mp4
target_dir/var/lib/motion
# Bir film faylı olduqda icra ediləcək əmr
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Video qeyd və yükləmənin işlədiyini təmin etdikdən sonra sonuncunu nöqtəli vergüllə buraxın (şərh yazın).
1.4 Sonra dəyişdirin
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
pi@raspberrypi: ~ $ start_motion_daemon = bəli
Addım 2: Python üçün Google Foto API qurun
2.1 Yeni fayllar əlavə edildikdə bildirişlər almaq və daha çox saxlama sahəsi əldə etmək üçün bu albomu əsas albomunuzla paylaşmaq üçün yeni bir hesab yaratmaq tövsiyə olunur. Yükləmək üçün istifadə edəcəyiniz hesab üçün Google Foto API -ni aktiv edin.
Bundan sonra credentials.json faylınız olmalıdır.
2.2 Python mühitinin qurulması
Ətraf mühitin qurulması yalnız moruqda tələb olunur. Ancaq PC -də yerinə yetirmək üçün daha rahat olan oauth icazəsi tələb olunur. Moruqda bunu etmək üçün ona monitor/klaviatura bağlamalı və ya uzaq masaüstü UI qurmalısınız. Mən yalnız moruqda və PC -də eyni mühiti qurdum. Beləliklə, 2.2.1..2.2.3 addımları PC -də, 2.2.1, 2.2.2, 2.2.5, 2.2.6 -da Rpi -də edildi.
2.2.1 Python 3 qurun
2.2.2 Google api paketlərini təlimata uyğun olaraq quraşdırın*(bax 5.1)
PC -də
pip3 install-google-api-python-client google-auth-httplib2 google-auth-oauthlib -i təkmilləşdirin
Moruq üzərində
pi@raspberrypi: ~ $ sudo pip3 install-google-api-python-client google-auth-httplib2 google-auth-oauthlib -i təkmilləşdirin
2.2.3 Google fotoşəkillərinə yüklənən skriptə baxın.. Githubumda yerləşdirilib. Credentials.json ilə eyni qovluğa daxil edin.
2.2.4 Bir az şəkil çəkin və yükləyin
python3 photos.py image.jpg
Varsa itkin asılılıqları quraşdırın və yenidən cəhd edin. Nəticədə skriptin kataloqunda token.pickle və həmçinin Google Photos veb interfeysinizdə image-j.webp
2.2.5 Əlavə edilən yeni mediada bildiriş almaq istədiyinizi hesabla paylaşın. Bu hesabı telefonunuza əlavə edin.
2.2.6 Moruqda photos.py və token.pickle/var/lib/motion qoyun. 'Pi' istifadəçisi 'hərəkətin dirlərinə' yaza bilməz, buna görə əvvəl /home /pi -yə yükləyin
scp photos.py token.pickle pi@IP:/home/pi
Sonra moruq daxil olun və faylları sudo altında hərəkət etdirin
ssh pi@IP
pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion
2.2.7 Yükləmənin moruq üzərində necə işlədiyini yoxlayın. Fswebcam ilə bir şəkil çəkin və yükləməyə çalışın
pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
"Helloworld" albomunda image-j.webp
Addım 3: Test edin
3.1 Start Motion xidməti
pi@raspberrypi: ~ $ sudo xidməti hərəkəti başlanğıcı
Komandanı "dayandır" və ya "yenidən başladın" olaraq dəyişə bilərsiniz.
3.2 Hərəkət qeydlərini aktiv edin
pi@raspberrypi: ~ $ quyruq -f /var/log/motion/motion.log
3.2 Eyni yerli şəbəkəyə qoşulmuş başqa bir cihazda kamera çıxışına baxın. Brauzerə daxil olun:
IP: 8081
3.3 Günlüklərə baxaraq, hərəkətin aşkarlanmasını və NAME.mp4 faylının/var/lib/motion ilə yazılmasını gözləyin. Sonra əl ilə skript yükləməyə başlayın
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Python izlərini yoxlayın. Event_end hərəkətdə görünənə qədər gözləyin.log. Sonra google şəkillərinizdəki "helloworld" albomuna gedin və yüklənmiş bir videonun olub olmadığını yoxlayın.
3.4 Yükləmə uğurlu olarsa /etc/motion.conf sətrinə yazın:
pi@raspberrypi: ~ $ sudo nano /etc/motion.conf
# Bir film faylı hazır olduqda icra ediləcək əmr
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi: ~ $ sync
pi@raspberrypi: ~ $ sudo xidmət hərəkəti yenidən başladın
3.5 Hərəkət qeydlərinə və alboma baxaraq videonun avtomatik yükləndiyini yoxlayın.
3.6 İstədiyiniz halda yeni video və ya şəkil əlavə edildikdə bildiriş almaq üçün albomu əsas hesabınızla paylaşın.
Addım 4: İsteğe bağlı: Veb Girişini Real Zaman Axın Kamerasına konfiqurasiya edin
Bu addım Mişelin Parreno dərsliyinə əsaslanır. Burada tövsiyə edildiyi kimi NoIP əvəzinə FreeDNS seçdim.
4.1 Video axını hərəkət serverinə icazəli girişi konfiqurasiya edin:
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Doğrulama metodunu təyin edin (standart: 0)
# 0 = deaktivdir
# 1 = Əsas identifikasiya
# 2 = MD5 həzmi (daha etibarlı identifikasiya)
stream_auth_metod 2
# Axın üçün Doğrulama. Sintaksis istifadəçi adı: parol
# Varsayılan: təyin olunmayıb (Əlil)
webcontrol_authentication istifadəçi adı: parol
# Axın axınları üçün maksimum kadr tezliyi (standart: 1)
stream_maxrate 30
# Axın əlaqələrini yalnız localhost ilə məhdudlaşdırın (standart: açıq)
stream_localhost deaktivdir
Xarici şəbəkədən veb nəzarət interfeysindən istifadə etməyəcəksinizsə, onu deaktiv edin (standart olaraq)
# Nəzarət əlaqələrini yalnız localhost ilə məhdudlaşdırın (standart: açıq)
webcontrol_localhost aktivdir
Həmçinin, moruq internetə daxil olduğu üçün standart moruq parolunu dəyişdirməyi məsləhət görürəm
pi@raspberrypi: ~ $ passwd
Ssh port 22 moruq üçün yenidən yönləndirilməsə də, yenə də.
4.2 FreeDNS saytına daxil olun
4.3 Qeydiyyat
4.4 Alt alan əlavə edin (Üzvlər üçün -> Alt Alanlar)
4.5 Moruqda quraşdırılacaq DNS müştərisini seçin (Üzvlər üçün -> Dinamik DNS -> Dinamik DNS qaynaqları -> Dinamik DNS Müştəriləri)
Adam Deandan wget_script update.sh seçdim (səhifənin altındakı)
_YOURAPIKEYHERE_ və _YOURDOMAINHERE_ yer tutucuları var. Onları əldə etmək üçün (Üzvlər üçün -> Dinamik DNS)
Aşağıdakı səhifədə APIKEY və DOMAIN ilə skript nümunələrini tapa bilərsiniz (4.4 -də əlavə olunan). Bu dəyərləri Wget Script -dən götürdüm və update.sh -də _YOURAPIKEYHERE_ və _YOURDOMAINHERE_ əvəz etdim.
4.6 Sonra moruqda update.sh -i işə salın. Nslookup üçün dnsutils tələb oluna bilər. Sonra quraşdırın:
pi@raspberrypi: ~ $ sudo apt-get dnsutils
4.7 Sonra yönlendiricinizi xarici dünya istəklərini 8081 portuna moruq ipinə yönləndirmək üçün konfiqurasiya edin.
4.8 Moruqun MAC -ı üçün DHCP -də IP ayırın, beləliklə Rpi həmişə eyni ipə sahib olacaq
4.9 Sonra yerli şəbəkəyə bağlı olmayan bir cihazda brauzerə daxil olun:
domeniniz: 8081
Motion.conf -da təyin etdiyiniz etimadnamənizi daxil edin.
Videonun necə işlədiyini yoxlayın.
DDNS -ni yeniləmək üçün avtomatik olaraq cron tapşırığını quraşdırın. Quick_cron_example -ə baxın (Üzvlər üçün -> Dinamik DNS)
Addım 5: İpuçları
5.1 Moruq üzərində python paketləri qurarkən diqqətli olun. Bunu düzəltmək üçün bir gün sərf etdim - məsələ konsoldan skriptin yaxşı işləməsi idi, amma hərəkətli hadisə geri çağırışından alınmadı. Daha da pisləşdirən odur ki, sonuncu halda skriptdən izlərin olmaması.
Səbəb, təlimata uyğun olaraq paketləri 'pi' istifadəçisi üçün qurduğum (default olaraq /home /pi kataloqunda olan və digər istifadəçilər üçün məhdudlaşdırılmış), lakin 'hərəkət' xidmətinin uşağı olaraq skriptin işləməsi üçün paketlərin 'hərəkət' istifadəçisi üçün də mövcuddur. Nəhayət, paketləri olduğu kimi quraşdıraraq həll etdim
sudo pip3…
Bu düzgün bir yol deyil, hələ də işləyir. Pip3 --system olaraq sudo olmadan quraşdırma nədənsə mənə səhvlər verirdi.
Müvafiq olaraq, skript sudo altında da adlanır (bax motion.conf).
Bu problemi həll edərkən bir çox lazımsız dəyişikliklər etdim və nəyin lazım olduğunu bilmədim və indi onları tədricən geri qaytarmaq və işləmədiyini görmək üçün çox tənbəl oldum. Xüsusilə, hərəkət idarəçisi hüquqları verilir:
pi@raspberrypi: ~ $ qrupları hərəkəti
hərəkət: hərəkət adm sudo audio video istifadəçiləri netdev pi
pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALL = (TÜM) NOPASSWD: BÜTÜN
hərəkət ALL = (ALL) NOPASSWD: ALL
Google Diskə yükləməyə bənzər fayl sahibləri və icazələri də dəyişdirildi. Yəqin ki, oxşar bir probleminiz varsa sizə kömək edə bilər.
5.2 Google Şəkillər API yalnız paylaşılan albomlara fayl əlavə etməyə imkan verir ki, linki olan hər kəs ona daxil ola bilsin. Bağlantı ilə paylaşmayın və köhnə filmləri silin, zibil qutusuna və ya albomdan köçürməyin. İkinci halda, hesabda qalır.
5.3 Google fotoşəkilləri köməkçisi üzləri aşkar edir, bu da kamera keyfiyyəti yaxşı olarsa olduqca faydalıdır. Bir bonus olaraq, xülya medianı bir çox tərtibat və hədiyyə edir.
5.4 İnternetə çıxmaq üçün 4G LTE USB modemindən istifadə etməyə çalışdım və nəticələrim budur. 5.4.1 Huawei E3372h-153 moruqla problemsiz və əlavə proqram təminatı olmadan işləyir 5.4.2 Həmçinin hotspot aktivdir ki, Rasperry wifi vasitəsilə internet bağlantısı paylaşsın. Https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ ilə RaspAP-dan istifadə etməklə bunu etmək üçün həqiqətən asan bir bələdçi var. 5.4.3 Dinamik DNS arabamın 4G şəbəkəsində işləmədi. Səbəbinin izahı var
5.5 Bu sistemi bir neçə həftə istifadə etdikdən sonra videoların baxılması və yüklənməsi daha rahat olmasına baxmayaraq, Google Foto şəkillərlə daha yaxşı işləyir. Məsələn, şeyləri/üzləri qruplaşdırmağa imkan verir, yalnız görüntüləri təhlil edir və yalnız bundan sonra videodakı şəkillərdən üzləri/əşyaları axtarır, əksinə deyil. Buna görə video yükləyən şəkilləri yoxlayacağam.
Tövsiyə:
DIY Ağıllı Qaraj Qapı Açacağı + Ev köməkçisi inteqrasiyası: 5 addım
DIY Ağıllı Qaraj Qapı Açacağı + Ev Köməkçisi İnteqrasiyası: Bu DIY layihəsindən istifadə edərək normal qaraj qapınızı ağıllı çevirin. Evin köməkçisi (MQTT üzərindən) istifadə edərək onu necə quracağınızı və idarə edəcəyinizi və qaraj qapınızı uzaqdan açıb bağlaya biləcəyinizi sizə göstərəcəyəm. Wemos adlı bir ESP8266 lövhəsindən istifadə edəcəm
Ev köməkçisi Geiger sayğac inteqrasiyası: 8 addım
Ev köməkçisi Geiger sayğac inteqrasiyası: Bu dərslikdə HASS -a (ev köməkçisi) xüsusi olaraq bir geiger sayğacına necə xüsusi sensorlar əlavə edəcəyinizi göstərəcəyəm, amma proses digər sensorlar üçün də oxşardır. Arduino əsaslı geiger sayğacı olan NodeMCU lövhəsindən istifadə edəcəyik
ESP8266, Google Home və Openhab İnteqrasiyası və Veb Nəzarəti ilə Pərdələrə Nəzarət: 5 Addım (Şəkillərlə birlikdə)
ESP8266, Google Home və Openhab İnteqrasiyası və Veb Nəzarəti ilə Pərdələrə Nəzarət: Bu Təlimat kitabında pərdələrimə avtomatlaşdırmanı necə əlavə etdiyimi göstərirəm. Avtomatlaşdırmanı əlavə edə və silə bilmək istədim, buna görə də bütün quraşdırma klipdədir. Əsas hissələr bunlardır: Step motor Stepper sürücüsü idarə olunan bij ESP-01 Ötürücü və montaj
3D çaplı çiyin zirehi EL tel inteqrasiyası: 5 addım
3D Çaplı Çiyin Zirehi EL Tel İnteqrasiyası: Mən 3D bir çiyin zirehi və ona birləşdirilmiş EL teli çap etdim. Bu texnikadan komik kostyum quruluşundakı personajlar üçün istifadə edə bilərsiniz
Wifi Tasker, Ifttt İnteqrasiyası ilə Raspberry Pi istifadə edərək 12v Led Şeridi İdarə edir .: 15 Addım (Şəkillərlə)
Task, Ifttt İnteqrasiyası ilə Raspberry Pi istifadə edərək Wifi İdarə Edilən 12v Led Strip .: Bu proyektdə moruq pi istifadə edərək wifi üzərindən sadə 12v analoqlu led şeridi necə idarə edəcəyinizi göstərəcəyəm. Bu layihə üçün sizə lazım olacaq: 1x Raspberry Pi (I Raspberry Pi 1 Model B+) 1x RGB 12v Le istifadə edirəm