Мазмұны:

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 қадам
Бейне: Видеонаблюдение на raspberry pi motioneye 2024, Қараша
Anonim
Raspberry Pi Linux Motion Google Photos интеграциясы
Raspberry Pi Linux Motion Google Photos интеграциясы

Идея - бұлтты файлдарды жүктеу үшін Raspberry Pi -ге қосылған қозғалысты камерамен жасалған фотосуреттер мен бейнелерді жүктеу. 'Motion' бағдарламалық құралы PyDrive арқылы Google Drive -қа жүктеуді қолдайды. Бұл мақалада 'Motion' Google фотосуреттеріне жүктеу үшін қолданылады.

Жабдық:

Raspberry Pi 3B+

Logitech C920 USB веб -камерасы

Жабдықты таңдау анықталмады, мен қолда барды алдым.

Пререквизиттер:

Ыңғайлы болу үшін Raspberry pi жергілікті желіде болуы керек - оны мониторсыз/пернетақтамен басқару және файлдарды жүктеу/жүктеу. Бұл үшін сіздің компьютеріңізде ssh агенті болуы керек (мысалы, замазка).

Керемет оқулық үшін ssandbac -қа көп рахмет. Егер сізге қоршаған ортаны орнату туралы қосымша ақпарат қажет болса, осы мақаланы қараңыз. Мен қозғалысты орнатуды және одан қадамдарды конфигурациялауды алдым және кейбір өзгерістерді қостым. Атап айтқанда, бұл мысал файлдар мен ескертулерді электрондық поштамен жіберудің орнына, ортақ альбомды Google фотосуреттеріне жүктеуді және хабарландыру жолағында «қосылған фотосуреттер» туралы хабарландыруларды алуды қолданады.

Міне, қадамдар:

1 -қадам: Linux Motion бағдарламасын Raspberry -ге орнатыңыз

Әсіресе бұл мысалда v4.0 қозғалысы қолданылды.

1.1 pi жаңарту

pi@raspberrypi: ~ $ sudo apt-get жаңарту

pi@raspberrypi: ~ $ sudo apt-get жаңарту

1.2 Қозғалысты жүктеу

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

1.3 Енді бұл файлды келесі өзгертулермен өңдеңіз

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

# Демон (фондық) режимінен бастаңыз және терминалды босатыңыз (әдепкі: өшірулі)

демон қосылды

# Журнал хабарламаларын сақтау үшін файлды пайдаланыңыз, егер stderr мен syslog анықталмаса. (әдепкі: анықталмаған)

logfile /var/log/motion/motion.log

# Суреттің ені (пиксель). Жарамды диапазон: камераға тәуелді, әдепкі: 352

ені 1920 ж

# Кескін биіктігі (пиксель). Жарамды диапазон: камераға тәуелді, әдепкі: 288

биіктігі 1080

# Секундына түсірілетін кадрлардың максималды саны.

30

# Қозғалыс алдындағы алдын ала түсірілген (буферленген) суреттер санын көрсетеді

алдын ала түсіру 5

# Қозғалыс кезінде түсірілетін кадрлар саны енді анықталмайды

post_capture 5

# Қозғалыс анықталған кезде «қалыпты» суреттерді шығарады (әдепкі: қосулы)

шығару_суреттері өшірулі

# Jpeg қысу кезінде қолданылатын сапа (пайызбен)

сапасы 100

# Фильмдерді нақты уақытта кодтау үшін ffmpeg пайдаланыңыз

ffmpeg_output_movies өшірулі

# немесе 1 - 100 диапазоны, мұнда 1 ең нашар сапаны білдіреді, ал 100 - ең жақсы.

100

# Бейне жасау кезінде кадрларды ретімен қайталау керек

ffmpeg_duplicate_frames жалған

Қосымша құбырды қосу немесе өшіру үшін # Bool (әдепкі: өшірулі)

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: ~ $ sudo nano/etc/default/motion

pi@raspberrypi: ~ $ start_motion_daemon = иә

2 -қадам: Python үшін Google Photos API орнатыңыз

Python үшін Google Photos API орнатыңыз
Python үшін Google Photos API орнатыңыз
Python үшін Google Photos API орнатыңыз
Python үшін Google Photos API орнатыңыз

2.1 Жаңа файлдар қосылған кезде хабарландыру алу үшін альбомды негізгі альбоммен бөлісу үшін жаңа есептік жазба жасау ұсынылады, сонымен қатар көбірек сақтау орны. Жүктеу үшін пайдаланылатын есептік жазба үшін Google Photos API қосыңыз.

Осыдан кейін сізде credentials.json файлы болуы керек.

2.2 Python ортасын орнату

Негізінде ортаны орнату тек таңқурайға қажет. Бірақ бұл компьютерде орындалуға ыңғайлы авторизацияны қажет етеді. Мұны таңқурайда жасау үшін оған мониторды/пернетақтаны қосу немесе қашықтағы жұмыс үстелінің интерфейсін орнату қажет. Мен жай ғана таңқурай мен компьютерге бірдей ортаны орнаттым. Сонымен 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: ~ $ sudo pip3 install-google-api-python-client google-auth-httplib2 google-auth-oauthlib жаңарту

2.2.3 Google фотосуреттеріне жүктелетін сценарийді тексеріңіз. Ол менің гитубымда орналасқан. Оны credentials.json көмегімен сол каталогқа салыңыз.

2.2.4 Суретке түсіріңіз және жүктеуді тексеріңіз

python3 суреттері.py image.jpg

Егер жоқ болса, тәуелділіктерді орнатып, әрекетті қайталаңыз. Нәтижесінде сіз сценарий каталогында token.pickle және Google Photos веб -интерфейсінде image-j.webp

2.2.5 Альбомды жаңа медиа туралы хабарландырулар алғыңыз келетіні туралы есептік жазбамен бөлісіңіз. Бұл есептік жазбаны телефонға қосыңыз.

2.2.6 Таңқурайға photos.py және token.pickle/var/lib/motion қойыңыз. 'Pi' пайдаланушысы 'motion' dir 'ге жаза алмайды, сондықтан алдымен /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: ~ $ sudo fswebcam /var/lib/motion/image.jpg

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

«Helloworld» альбомында image-j.webp

3 -қадам: Тест

3.1 Motion қызметін бастау

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 қозғалыста.log пайда болғанша күтіңіз. Содан кейін Google фотосуреттеріндегі «helloworld» альбомына өтіп, жүктелген бейне бар -жоғын тексеріңіз.

3.4 Егер жүктеу сәтті орындалса /etc/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: ~ $ sudo қызметінің қозғалысын қайта бастау

3.5 Қозғалыс журналдарына қарап, альбомнан бейне автоматты түрде жүктелгенін тексеріңіз.

3.6 Жаңа бейне немесе фото қосылған кезде хабарландыру алу үшін альбомды негізгі есептік жазбаңызбен бөлісіңіз.

4 -қадам: Қосымша: Нақты уақыттағы ағынды камераға Интернетке кіруді теңшеңіз

Қосымша: Нақты уақыттағы ағынды камераға вебке кіруді теңшеңіз
Қосымша: Нақты уақыттағы ағынды камераға вебке кіруді теңшеңіз
Қосымша: Нақты уақыттағы ағынды камераға Интернетке кіруді теңшеңіз
Қосымша: Нақты уақыттағы ағынды камераға Интернетке кіруді теңшеңіз
Қосымша: Нақты уақыттағы ағынды камераға вебке кіруді теңшеңіз
Қосымша: Нақты уақыттағы ағынды камераға вебке кіруді теңшеңіз

Бұл қадам Мишельдің Parreno оқулығына негізделген. Мен мұнда ұсынылған NoIP орнына FreeDNS таңдадым.

4.1 Бейне ағыны қозғалысы серверіне рұқсат етілген қатынауды теңшеңіз:

pi@raspberrypi: ~ $ 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 Raspberry -ге орнату үшін DNS клиентін таңдаңыз (Мүшелер үшін -> Динамикалық DNS -> Динамикалық DNS ресурстары -> Динамикалық DNS клиенттері)

Мен Адам Диннен wget_script update.sh таңдадым (беттің төменгі жағында)

_YOURAPIKEYHERE_ және _YOURDOMAINHERE_ толтырғыштары бар. Оларды алу үшін (Мүшелер үшін -> Динамикалық DNS) өтіңіз.

Төмендегі бетте сіз APIKEY және DOMAIN (4.4 -ке қосылған) бар сценарийлердің мысалдарын таба аласыз. Мен бұл мәндерді Wget Script -тен алдым және update.sh -те _YOURAPIKEYHERE_ мен _YOURDOMAINHERE_ алмастырдым.

4.6 Содан кейін таңқурайдағы update.sh іске қосыңыз. Nslookup үшін dnsutils қажет болуы мүмкін. Содан кейін оны орнатыңыз:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Содан кейін маршрутизаторды сыртқы әлемнің сұраныстарын таңқурайдың IP -ге 8081 портына қайта бағыттауға конфигурациялаңыз.

4.8 DHCP параметрінде таңқурайдың MAC үшін IP сақтаңыз, сондықтан Rpi әрқашан бірдей IP болады

4.9 Содан кейін жергілікті желіге қосылмаған құрылғыға шолғышқа кіріңіз:

Сіздің доменіңіз: 8081

Motion.conf ішінде анықтаған тіркелгі деректеріңізді енгізіңіз.

Бейне қалай жұмыс істейтінін тексеріңіз.

4.10 DDNS жаңарту үшін автоматты түрде cron тапсырмасын орнатады. Quick_cron_example бөлімін қараңыз (Мүшелер үшін -> Динамикалық DNS)

5 -қадам: кеңестер

5.1 Таңқурайға питон пакеттерін орнатуға мұқият болыңыз. Мен бұл мәселені бір күнде отладтаумен өткіздім - мәселе консольден сценарий жақсы жұмыс істеді, бірақ қозғалыс оқиғасынан кері шақырудан шақыру болмады. Ең қиыны, сценарийдегі іздер соңғы жағдайда қол жетімді болмады.

Нұсқаулыққа сәйкес, мен 'pi' пайдаланушыға арналған пакеттерді орнаттым (ол әдепкі бойынша /home /pi каталогында және басқа пайдаланушылар үшін шектелген), бірақ сценарийді «қозғалыс» қызметі ретінде іске қосу үшін пакеттер болуы керек. «қозғалыс» пайдаланушысы үшін де қол жетімді. Ақырында мен пакеттерді орнатуды шештім

sudo pip3…

Бұл дұрыс әдіс емес, ол әлі де жұмыс істейді. Pip3 -жүйесі ретінде sudo жоқ орнату маған қандай да бір себептермен қате жіберді.

Сәйкесінше сценарий sudo астында да аталады (motion.conf қараңыз).

Бұл ақауларды жою кезінде мен көптеген қажетсіз өзгерістер жасадым, не қажет екенін білмедім, енді оларды біртіндеп артқа айналдыруға және жұмыс істемейтінін көруге жалқау болдым. Атап айтқанда, қозғалыс әкімшісінің құқықтары берілген:

pi@raspberrypi: ~ $ қозғалыстарды топтайды

қозғалыс: қозғалыс adm sudo аудио бейне қолданушылары netdev pi

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

pi БАРЛЫҚ = (БАРЛЫҚ) НОТАССВД: БАРЛЫҚ

қозғалыс БАРЛЫҚ = (БАРЛЫҚ) NOPASSWD: БАРЛЫҚ

Сонымен қатар Google Drive -қа жүктеуге ұқсас файлдардың иелері мен рұқсаттары өзгерді. Мүмкін, сізге ұқсас мәселе туындаған жағдайда сізге көмектесуі мүмкін.

5.2 Google Photos API файлдарды ортақ альбомдарға қосуға мүмкіндік береді, сондықтан сілтемесі бар кез келген адам оған кіре алады. Оны сілтеме арқылы бөліспеңіз және ескі фильмдерді жоймаңыз немесе оларды қоқыс жәшігіне немесе альбомға жібермеңіз. Соңғы жағдайда олар шотта қалады.

5.3 Google фотосуреттер көмекшісі беттерді анықтайды, бұл камераның сапасы жақсы болса өте пайдалы. Бонус ретінде ол сәнді медианы компиляциялар мен гифтер түріне айналдырады.

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 Динамикалық DNS менің кариегімнің 4G желісінде жұмыс істемеді. Неліктен түсіндірме бар

5.5 Бұл жүйені бірнеше апта қолданғаннан кейін, бейнелерді қарау және жүктеу ыңғайлы болғанымен, Google Photos суреттермен жақсы жұмыс істейді. Мысалы, бұл заттарға/беттерге суреттерді талдауға мүмкіндік береді, содан кейін ғана бейнелердегі суреттерден беттерді/заттарды іздеуге мүмкіндік береді, бірақ керісінше емес. Сондықтан мен бейнелерді жүктейтін суреттерді тексеремін.

Ұсынылған: