Raspberry Pi Linux Motion Google Photos integratsiyasi: 5 qadam
Raspberry Pi Linux Motion Google Photos integratsiyasi: 5 qadam
Anonim
Raspberry Pi Linux Motion Google Photos integratsiyasi
Raspberry Pi Linux Motion Google Photos integratsiyasi

Fayllarni bulutga yuklash uchun Raspberry Pi -ga ulangan harakatlanuvchi kamera yordamida olingan fotosuratlar va videolarni yuklash g'oyasi. "Motion" dasturi PyDrive orqali Google Drive -ga yuklashni qo'llab -quvvatlaydi. Ushbu maqolada "Motion" Google Photos -ga yuklash uchun ishlatiladi.

Uskuna:

Raspberry Pi 3B+

Logitech C920 USB veb -kamerasi

Uskunani tanlash aniqlanmagan, men qo'limdagini oldim.

Old shartlar:

Qulaylik uchun Raspberry pi sizning mahalliy tarmog'ingizda bo'lishi kerak - uni monitor/klaviaturasiz boshqarish va fayllarni yuklash/yuklab olish. Buning uchun kompyuteringizda ssh agenti bo'lishi kerak (masalan, macun).

Ajoyib darslik uchun ssandbacga katta rahmat. Agar sizga muhitni sozlash haqida ko'proq ma'lumot kerak bo'lsa, ushbu maqolani o'qing. Men harakatni o'rnatish va undan qadamlarni sozlash uchun qarz oldim va ba'zi o'zgarishlarni qo'shdim. Xususan, bu misol fayllar va ogohlantirishlarni elektron pochta orqali yuborish o'rniga, Google albomlarining umumiy albomini yuklash va xabarlar panelida "qo'shilgan rasmlar" kabi bildirishnomalarni olishdan foydalanadi.

Mana, qadamlar:

1 -qadam: Raspberry -ga Linux Motion -ni o'rnating

Ayniqsa, bu misolda v4.0 harakati ishlatilgan.

1.1 pi -ni yangilang

pi@raspberrypi: ~ $ sudo apt-get yangilanishi

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Yuklab olish harakati

pi@raspberrypi: ~ $ sudo apt-get install motion

1.3 Endi ushbu faylni quyidagi o'zgartirishlar bilan tahrir qiling

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

# Daemon (fon) rejimida boshlang va terminalni chiqaring (standart: o'chirilgan)

demon yoqilgan

# Agar belgilangan bo'lmasa stderr va syslog ishlatilsa, jurnal xabarlarini saqlash uchun fayldan foydalaning. (standart: aniqlanmagan)

logfile /var/log/motion/motion.log

# Rasm kengligi (piksel). Yaroqli diapazon: Kameraga bog'liq, standart: 352

kengligi 1920

# Rasm balandligi (piksel). Yaroqli diapazon: Kameraga bog'liq, standart: 288

balandligi 1080

# Sekundiga olinadigan maksimal kadrlar soni.

kadrlar soni 30

# Harakatdan oldin olingan (buferlangan) rasmlar sonini belgilaydi

oldindan yozib olish 5

# Harakatdan keyin olinadigan kadrlar soni endi aniqlanmaydi

post_capture 5

# Harakat aniqlanganda "oddiy" rasmlarni chiqarish (standart: yoqilgan)

chiqish_rasmlari o'chirilgan

# Jpegni siqishda ishlatiladigan sifat (foizda)

sifat 100

# Filmlarni real vaqtda kodlash uchun ffmpeg -dan foydalaning

ffmpeg_output_movies o'chirilgan

# yoki 1 - 100 oralig'i, bu erda 1 - eng yomon sifat, 100 - eng yaxshisi.

ffmpeg_variable_bitrate 100

# Video yaratishda ramkalar tartibda takrorlanishi kerak

ffmpeg_duplicate_frames noto'g'ri

Extpipe -ni yoqish yoki o'chirish uchun # Bool (standart: o'chirilgan)

use_extpipe -ni yoqing

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i trubkasi: 0 -vcodec libx264 -ultra tezkor -f mp4 %f.mp4

target_dir/var/lib/harakat

# Kino fayli bajarilganda bajariladigan buyruq

; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &

Oxirgi nuqtani nuqta -vergul bilan qoldiring (sharhlangan), video yozish va yuklash ishlayotganiga ishonch hosil qiling.

1.4 Keyin o'zgartiring

pi@raspberrypi: ~ $ sudo nano/etc/default/motion

pi@raspberrypi: ~ $ start_motion_daemon = ha

2 -qadam: Python uchun Google Photos API -ni o'rnating

Python uchun Google Photos API -ni o'rnating
Python uchun Google Photos API -ni o'rnating
Python uchun Google Photos API -ni o'rnating
Python uchun Google Photos API -ni o'rnating

2.1 Yangi fayllar qo'shilganda va qo'shimcha saqlash joyida xabarlar olish uchun albomni asosiy albom bilan bo'lishish uchun yangi hisob yaratish tavsiya etiladi. Yuklash uchun foydalanmoqchi bo'lgan hisob uchun Google Photos API -ni yoqing.

Shundan so'ng credentials.json fayli bo'lishi kerak.

2.2 Python muhitini sozlash

Asosan, muhitni sozlash faqat malinada talab qilinadi. Ammo bu kompyuterda bajarish uchun qulayroq bo'lgan avtorizatsiyani talab qiladi. Buni malinada qilish uchun unga monitor/klaviaturani ulash yoki masofadan ish stoli interfeysini o'rnatish kerak. Men malina va kompyuterda bir xil muhitni o'rnatdim. Shunday qilib, 2.2.1..2.2.3 bosqichlari kompyuterda, 2.2.1, 2.2.2, 2.2.5, 2.2.6 da Rpi da bajarildi.

2.2.1 Python 3 ni o'rnating

2.2.2 Google api paketlarini qo'llanmaga muvofiq o'rnating*(5.1 ga qarang)

Kompyuterda

pip3 install-google-api-python-client google-auth-httplib2 google-auth-oauthlib-ni yangilang

Malinada

pi@raspberrypi: ~ $ sudo pip3 install-google-api-python-client google-auth-httplib2 google-auth-oauthlib-ni yangilang

2.2.3 Google rasmlariga skript yuklanishini tekshiring.. U mening gitubimga joylashtirilgan. Uni credentials.json bilan bir xil katalogga qo'ying.

2.2.4 Rasmga oling va yuklashni test qiling

python3 rasmlar.py image.jpg

Agar mavjud bo'lsa, yo'qolgan bog'liqliklar o'rnating va qaytadan urining. Natijada siz skript katalogida token.pickle -ni, shuningdek Google Photos veb -interfeysida image-j.webp

2.2.5 Albomni yangi ommaviy axborot vositalari haqida xabarlar olishni xohlagan hisobingiz bilan baham ko'ring. Bu hisobni telefoningizga qo'shing.

2.2.6 malina ustida photos.py va token.pickle ni/var/lib/motion ga qo'ying. "Pi" foydalanuvchisi "harakat" diriga yozolmaydi, shuning uchun avval /home /pi ga yuklang

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

Keyin malinaga kiring va fayllarni sudo ostiga o'tkazing

ssh pi@IP

pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion

2.2.7 Malinaga yuklash qanday ishlashini tekshiring. Fswebcam yordamida rasm oling va uni yuklashga harakat qiling

pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg

pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg

"Helloworld" albomida image-j.webp

3 -qadam: Sinov

3.1 Motion xizmatini ishga tushirish

pi@raspberrypi: ~ $ sudo xizmati harakatining boshlanishi

Siz buyruqni "to'xtatish" yoki "qayta boshlash" ga o'zgartirishingiz mumkin.

3.2 Harakat jurnallarini yoqish

pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log

3.2 Xuddi shu mahalliy tarmoqqa ulangan boshqa qurilmadagi kamera chiqishini ko'rish. Brauzerga kiring:

IP: 8081

3.3 Jurnallarga qarab, harakat aniqlanmaguncha va NAME.mp4 fayli/var/lib/motion formatida yozilishini kuting. Keyin skriptni qo'lda yuklashni boshlang

pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4

Python izlarini tekshiring. Event_end harakati.log paydo bo'lguncha kuting. Keyin Google rasmlaringizdagi "helloworld" albomiga o'ting va yuklangan video borligini tekshiring.

3.4 Agar yuklash muvaffaqiyatli bo'lsa /etc/motion.conf satriga yozib qo'ying:

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

# Kino fayli tayyor bo'lganda bajariladigan buyruq

on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &

pi@raspberrypi: ~ $ sinxronlash

pi@raspberrypi: ~ $ sudo xizmatining harakatini qayta boshlash

3.5 Harakat jurnallariga qarab va albomda videoning avtomatik yuklanganligini tekshiring.

3.6 Majburiy emas, yangi video yoki rasm qo'shilganda xabarnoma olish uchun albomni asosiy hisob qaydnomangiz bilan baham ko'ring.

4 -qadam: Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang

Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang
Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang
Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang
Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang
Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang
Majburiy emas: Internetga kirishni real vaqtda oqim kamerasiga sozlang

Bu qadam Mishelning Parreno darsligiga asoslangan. Men bu erda tavsiya etilganidek NoIP o'rniga FreeDNS ni tanladim.

4.1 Video oqim harakati serveriga ruxsat berilgan kirishni sozlang:

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

# Autentifikatsiya usulini o'rnating (standart: 0)

# 0 = o'chirilgan

# 1 = Asosiy autentifikatsiya

# 2 = MD5 hazm qilish (xavfsizroq autentifikatsiya)

oqim_auth_ usuli 2

# Oqim uchun autentifikatsiya. Sintaksis foydalanuvchi nomi: parol

# Standart: aniqlanmagan (O'chirilgan)

webcontrol_authentication foydalanuvchi nomi: parol

# Oqim oqimlari uchun maksimal tezlik (standart: 1)

oqim_maxrati 30

# Oqim ulanishlarini faqat localhost bilan cheklash (standart: yoqilgan)

stream_localhost o'chirilgan

Agar siz tashqi tarmoqdan veb -boshqaruv interfeysidan foydalanmoqchi bo'lmasangiz, uni o'chirib qo'ying (sukut bo'yicha).

# Boshqaruv ulanishlarini faqat localhost bilan cheklash (standart: yoqilgan)

webcontrol_localhost yoqilgan

Bundan tashqari, malina Internetga kirganligi sababli, men malinali standart parolni o'zgartirishni maslahat beraman

pi@raspberrypi: ~ $ passwd

22 -ssh porti malinaga qayta yo'naltirilmagan bo'lsa -da.

4.2 FreeDNS saytiga o'ting

4.3 Ro'yxatdan o'tish

4.4 Subdomain qo'shish (A'zolar uchun -> Subdomainlar)

4.5 Raspberry -ga o'rnatish uchun DNS mijozini tanlang (A'zolar uchun -> Dinamik DNS -> Dinamik DNS manbalari -> Dinamik DNS mijozlari)

Men Adam Din dan wget_script update.sh ni tanladim (sahifaning pastki qismida)

_YOURAPIKEYHERE_ va _YOURDOMAINHERE_ kabi joy egalari bor. Ularni olish uchun (A'zolar uchun -> Dinamik DNS) ga o'ting.

Quyidagi sahifada siz APIKEY va DOMAIN (4.4 ga qo'shilgan) bilan skriptlar misollarini topasiz. Men bu qiymatlarni Wget skriptidan olib, update.sh da _YOURAPIKEYHERE_ va _YOURDOMAINHERE_ ni almashtirdim.

4.6 Keyin malina ustida update.sh -ni ishga tushiring. Nslookup uchun dnsutils kerak bo'lishi mumkin. Keyin o'rnating:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Keyin yo'riqchingizni tashqi dunyo so'rovlarini 8081 portiga malina ipiga yo'naltirish uchun sozlang.

4.8 Malinali MAC uchun IPni DHCP sozlamasida saqlang, shunda Rpi har doim bir xil bo'ladi

4.9 Lokal tarmoqqa ulanmagan qurilmaga brauzerni kiriting:

Sizning domeningiz: 8081

Motion.conf -da aniqlagan hisob ma'lumotlarini kiriting.

Video qanday ishlashini tekshiring.

4.10 DDNS -ni yangilash uchun cron vazifasini avtomatik ravishda o'rnatadi. Quick_cron_example -ni ko'ring (A'zolar uchun -> Dinamik DNS)

5 -qadam: Maslahatlar

5.1 Malinaga python paketlarini o'rnatishda ehtiyot bo'ling. Men bir kunni disk raskadrovka qildim - muammo shundaki, konsoldan skript yaxshi ishlagan, lekin harakatdan qayta qo'ng'iroq qilish chaqirilmagan. Eng yomoni shundaki, ssenariydan izlar ikkinchi holatda mavjud emas edi.

Buning sababi shundaki, men ko'rsatmaga binoan "pi" foydalanuvchisi uchun paketlarni o'rnatdim (u sukut bo'yicha /home /pi katalogida va boshqa foydalanuvchilar uchun cheklangan), lekin "harakat" xizmatining bolasi sifatida skriptni ishlatish uchun paketlar bo'lishi kerak. "harakat" foydalanuvchisi uchun ham mavjud. Nihoyat, men uni paketlarni o'rnatishni o'rnatdim

sudo pip3…

Bu to'g'ri usul emas, u hali ham ishlaydi. Sudo -ni pip3 -system sifatida o'rnatish negadir menga xatolar berdi.

Shunga ko'ra, skript sudo ostida ham chaqiriladi (qarang motion.conf).

Nosozliklarni tuzatish paytida men juda ko'p keraksiz o'zgarishlarni qildim va nima kerakligini bilmay qoldim va endi ularni asta -sekin orqaga qaytarish va qachon ishlamay qolishini ko'rish juda dangasa. Ayniqsa, ma'muriy huquqlar berilgan:

pi@raspberrypi: ~ $ guruhlar harakati

harakat: harakat adm sudo audio video foydalanuvchilar netdev pi

pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd

pi ALL = (ALL) NOPASSWD: HAMMA

harakat ALL = (ALL) NOPASSWD: ALL

Bundan tashqari, fayllar egalari va Google Drive -ga yuklashga o'xshash ruxsatlar o'zgartirildi. Ehtimol, bu sizga o'xshash muammoga duch kelganda sizga yordam berishi mumkin.

5.2 Google Photos API fayllarni faqat umumiy albomlarga qo'shish imkonini beradi, shunda havolaga ega bo'lganlar unga kira oladi. Uni havola orqali baham ko'rmang va eski filmlarni o'chirmang, axlat qutisiga yoki albomga ko'chirmang. Ikkinchi holda, ular hisobda qoladi.

5.3 Google rasmlar yordamchisi yuzlarni aniqlaydi, bu kamera sifati yaxshi bo'lsa juda foydali. Bonus sifatida u ajoyib ommaviy axborot vositalarini kompilyatsiya va sovg'alar turiga aylantiradi.

5.4 Men Internetga kirish uchun 4G LTE USB-modemidan foydalanishga harakat qildim va bu mening natijalarim. 5.4.1 Huawei E3372h-153 malina bilan muammosiz va qo'shimcha dasturiy ta'minotsiz ishlaydi 5.4.2 Shuningdek, hotspot yoqilgan, shuning uchun Rasperry Wi-Fi orqali Internetga ulandi. Https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ buni RaspAP yordamida qanday qilish kerakligi haqida juda oson ko'rsatma mavjud. 5.4.3 Dinamik DNS mening karimning 4G tarmog'ida ishlamadi. Buning sababini tushuntirish bor

5.5 Bir necha hafta davomida ushbu tizimdan foydalangandan so'ng, videolarni ko'rish va yuklash qulayroq bo'lsa -da, Google Photos tasvirlar bilan yaxshi ishlaydi. Masalan, bu narsalar/yuzlarni guruhlarga ajratishga imkon beradi, faqat tasvirlarni tahlil qiladi va shundan keyingina videodagi tasvirlardan yuzlarni/narsalarni qidiradi, lekin aksincha emas. Shunday qilib, men videolarni yuklaydigan rasmlarni sinab ko'raman.