Mündəricat:

Raspberry Pi Linux Motion Google Foto İnteqrasiyası: 5 addım
Raspberry Pi Linux Motion Google Foto İnteqrasiyası: 5 addım
Anonim
Raspberry Pi Linux Motion Google Foto İnteqrasiyası
Raspberry Pi Linux Motion Google Foto İnteqrasiyası

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

Python üçün Google Foto API qurun
Python üçün Google Foto API qurun
Python üçün Google Foto API qurun
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

İsteğe bağlı: Veb Girişini Real Zaman Streaming Kamerasına konfiqurasiya edin
İsteğe bağlı: Veb Girişini Real Zaman Streaming Kamerasına konfiqurasiya edin
İsteğe bağlı: Veb Girişini Real Zaman Streaming Kamerasına konfiqurasiya edin
İsteğe bağlı: Veb Girişini Real Zaman Streaming Kamerasına konfiqurasiya edin
İsteğe bağlı: Veb Girişini Real Zaman Axın Kamerasına konfiqurasiya edin
İ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ə: