Raspberry Pi Linux Motion Google Фото Интеграциясы: 5 кадам
Raspberry Pi Linux Motion Google Фото Интеграциясы: 5 кадам
Anonim
Raspberry Pi Linux Motion Google Фото Интеграциясы
Raspberry Pi Linux Motion Google Фото Интеграциясы

Идея - булутка файлдарды жүктөө үчүн Raspberry Pi менен байланышкан кыймылга кошулган камера менен жасалган сүрөттөрдү жана видеолорду жүктөө. 'Motion' программасы PyDrive аркылуу Google Driveга жүктөөнү колдойт. Бул макалада 'Motion' Google Фотого жүктөө үчүн колдонулат.

Аппараттык:

Raspberry Pi 3B+

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

Аппараттык тандоо аныкталган жок, мен болгону колумда болгонун алдым.

Алдын ала шарттар:

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

Улуу окуу куралы үчүн ssandbacке чоң рахмат. Эгер сизге айлана -чөйрөнү кантип орнотуу жөнүндө көбүрөөк маалымат керек болсо, бул макаланы карап көрүңүз. Мен кыймыл орнотууну жана андан кадамдарды конфигурациялоону карызга алып, кээ бир өзгөртүүлөрдү коштум. Тактап айтканда, бул мисал файлдарды жана эскертүүлөрдү электрондук почтага жөнөтүүнүн ордуна, бөлүшүлгөн альбомду Google сүрөттөрүнө жүктөө жана эскертме тилкесинен "кошулган сүрөттөр" сыяктуу билдирүүлөрдү алуу үчүн колдонулат.

Бул жерде кадамдар:

1 -кадам: Raspberryге Linux Motion орнотуңуз

Өзгөчө бул мисалда v4.0 кыймылы колдонулган.

1.1 pi жаңыртуу

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get жогорулатуу

1.2 Жүктөө кыймылы

pi@raspberrypi: ~ $ sudo apt-get install кыймылы

1.3 Эми бул файлды төмөнкү өзгөртүүлөр менен түзөтүңүз

pi@raspberrypi: ~ $ sudo нано /etc/motion/motion.conf

# Демон (фондук) режиминен баштаңыз жана терминалды чыгарыңыз (демейки: өчүк)

демон күйүк

# Белгиленбеген болсо, журналдарды сактоо үчүн файлды колдонуңуз stderr жана syslog. (демейки: аныкталган эмес)

logfile /var/log/motion/motion.log

# Сүрөттүн туурасы (пикселдер). Жарактуу диапазон: Камерага көз каранды, демейки: 352

туурасы 1920

# Сүрөттүн бийиктиги (пикселдер). Жарактуу диапазон: Камерага көз каранды, демейки: 288

бийиктиги 1080

# Секундуна түшүрүлө турган кадрлардын максималдуу саны.

кадр 30

# Кыймылдан мурун тартылган (буферленген) сүрөттөрдүн санын аныктайт

алдын ала тартуу 5

# Кыймылдан кийин тартуу үчүн кадрлардын саны мындан ары аныкталбайт

post_capture 5

# Кыймыл аныкталганда "нормалдуу" сүрөттөрдү чыгаруу (демейки: күйүк)

output_pictures өчүк

# Сапаты (пайыз менен) 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 pipe: 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 Фото API орнотуу

Python үчүн Google Фото API орнотуу
Python үчүн Google Фото API орнотуу
Python үчүн Google Фото API орнотуу
Python үчүн Google Фото API орнотуу

2.1 Жаңы файлдар кошулганда эскертмелерди алуу үчүн альбомуңузду негизги альбомуңуз менен бөлүшүү үчүн жаңы эсеп түзүү сунушталат, жана дагы сактоо мейкиндиги. Жүктөө үчүн колдоно турган каттоо эсебиңиз үчүн Google Фото API иштетүү.

Ушундан кийин credentials.json файлыңыз болушу керек.

2.2 Python чөйрөсүн орнотуу

Негизинен чөйрөнү жөндөө малинада гана талап кылынат. Бирок бул компьютерде аткарууга ыңгайлуу болгон авторизациянын авторизациясын талап кылат. Малинада муну кылуу үчүн ага мониторду/клавиатураны туташтыруу же алыскы рабочий интерфейсин орнотуу керек. Мен жөн эле малинага жана компьютерге бирдей чөйрөнү орноттум. Ошентип, 2.2.1..2.2.3 кадамдары PCде, 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 орнотуу-google-api-python-client google-auth-httplib2 google-auth-oauthlib жаңыртуу

Малина боюнча

pi@raspberrypi: ~ $ sudo pip3 орнотуу-google-api-python-client google-auth-httplib2 google-auth-oauthlib жаңыртуу

2.2.3 Google сүрөттөрүнө жүктөлүүчү скриптти текшериңиз.. Ал менин гитубума жайгаштырылган. Аны credentials.json менен ошол каталогго салыңыз.

2.2.4 Сүрөткө тартып, жүктөп көрүңүз

python3 photos.py image.jpg

Эгерде жок болсо, жок болгон көз карандылыктарды орнотуп, кайра аракет кылыңыз. Натыйжада скрипттин каталогунан token.pickle, ошондой эле image-j.webp

2.2.5 Альбомду жаңы медиа жөнүндө эскертмелерди алууну каалаган нерселериңиз менен бөлүшүңүз. Бул эсепти телефонуңузга кошуңуз.

2.2.6 Малинадагы photos.py жана token.pickle/var/lib/motion кой. "Pi" колдонуучусу "кыймылдын диригине" жаза албайт, андыктан адегенде /home /piге жүктөңүз

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

Анан малинага кирип, файлдарды sudo астына жылдырыңыз

ssh pi@IP

pi@raspberrypi: ~ $ sudo mv photos.py токен.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 -кадам: Кошумча: Реалдуу убакытта агылтуу камерасына веб кирүүнү конфигурациялоо

Кошумча: Интернетке кирүүнү реалдуу убакытта агымдык камерага конфигурациялоо
Кошумча: Интернетке кирүүнү реалдуу убакытта агымдык камерага конфигурациялоо
Кошумча: Интернетке кирүүнү реалдуу убакытта агылтуу камерасына конфигурациялоо
Кошумча: Интернетке кирүүнү реалдуу убакытта агылтуу камерасына конфигурациялоо
Кошумча: Интернетке кирүүнү реалдуу убакытта агымдык камерага конфигурациялоо
Кошумча: Интернетке кирүүнү реалдуу убакытта агымдык камерага конфигурациялоо

Бул кадам Мишелдин Паррено үйрөткүчүнө негизделген. Мен бул жерде сунушталгандай эле NoIPтин ордуна FreeDNSти тандадым.

4.1 Видео агымдык кыймыл серверине уруксат берилген кирүүнү конфигурациялоо:

pi@raspberrypi: ~ $ sudo нано /etc/motion/motion.conf

# Аутентификация ыкмасын коюңуз (демейки: 0)

# 0 = өчүрүлгөн

# 1 = Негизги аутентификация

# 2 = MD5 дайджест (коопсуз тастыктоо)

stream_auth_method 2

# Агым үчүн аутентификация. Синтаксистин колдонуучу аты: сырсөз

# Демейки: аныкталган эмес (Өчүрүлгөн)

webcontrol_authentication колдонуучунун аты: сырсөз

# Агым агымдары үчүн максималдуу кадр ылдамдыгы (демейки: 1)

30

# Агым байланыштарын localhostко гана чектөө (демейки: күйүк)

stream_localhost өчүк

Эгерде сиз тышкы тармактан вебди башкаруу интерфейсин колдонууну каалабасаңыз, аны өчүрүп коюңуз (демейки боюнча)

# Башкаруу байланыштарын 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 Андан кийин роутериңизди тышкы дүйнөнүн сурамдарын 8081 портуна малинанын ipине багыттоо үчүн конфигурациялаңыз.

4.8 DHCP жөндөөлөрүндө малинаңыздын MAC үчүн IPди сактап коюңуз, андыктан Rpi дайыма бирдей IPге ээ болот

4.9 Андан кийин жергиликтүү тармакка туташпаган түзмөккө браузерди киргизиңиз:

Сиздин домен: 8081

Motion.conf ичинде аныктаган ишеним грамоталарыңызды киргизиңиз.

Видео кантип иштээрин текшериңиз.

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

5 -кадам: Кеңештер

5.1 Малинага python пакеттерин орнотууга этият болуңуз. Мен муну мүчүлүштүктөрдү оңдоо үчүн бир күн өткөрдүм - маселе консолдон скрипт жакшы иштейт, бирок кыймылдын чакыруусунан чакыруу болгон жок. Эң жаманы, акыркы учурда сценарийдин издери жок болгон.

Себеп, мен "pi" колдонуучусуна (демейки боюнча /home /pi каталогунда жайгашкан жана башка колдонуучулар үчүн чектелген) пакеттерди орноткондон кийин, бирок сценарийди "кыймыл" кызматынын баласы катары иштетүү үчүн пакеттер болушу керек болчу. "Кыймыл" колдонуучусу үчүн да жеткиликтүү. Ошентип, акыры мен аны пакеттерди орнотуу менен чечтим

sudo pip3…

Бул туура эмес, дагы эле иштейт. Pip3 --system катары sudo жок орнотуу мага эмнегедир ката берип жатты.

Тиешелүү түрдө скрипт дагы Sudo деп аталат (see motion.conf).

Бул көйгөйлөрдү чечүү учурунда мен көптөгөн керексиз өзгөртүүлөрдү киргиздим жана эмне керек экенин билбедим, эми аларды этап -этабы менен артка жылдырып, качан иштебей калганын көрүү үчүн өтө жалкоо болдум. Айрыкча, кыймылдын администраторунун укуктары берилген:

pi@raspberrypi: ~ $ группалардын кыймылы

кыймыл: кыймыл adm sudo аудио видео колдонуучулар netdev pi

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

pi ALL = (ALL) NOPASSWD: ALL

кыймыл ALL = (ALL) NOPASSWD: ALL

Ошондой эле Google Drive'га жүктөөгө окшош файлдардын ээлери жана уруксаттары өзгөрдү. Балким, бул сизге окшош көйгөйгө туш болгон учурда сизге жардам бериши мүмкүн.

5.2 Google Сүрөттөр APIси файлдарды бөлүшүлгөн альбомдорго гана кошууга мүмкүндүк берет, андыктан шилтемеси барлар ага кире алышат. Аны шилтеме аркылуу бөлүшпөңүз жана эски тасмаларды өчүрүп же таштандыга же альбомго жылдырбаңыз. Акыркы учурда, алар эсеп боюнча калат.

5.3 Google сүрөттөрдүн жардамчысы жүздөрдү аныктайт, бул камеранын сапаты жакшы болсо абдан пайдалуу. Бонус катары ал кооз медианы компиляциялар жана gifs ж.

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 Фото сүрөттөр менен жакшы иштейт. Мисалы, бул нерселерди/жүздөрдү топтоштурууга, сүрөттөрдү талдоого жана андан кийин гана видеодогу сүрөттөрдөн жүздөрдү/нерселерди издөөгө мүмкүндүк берет, бирок тескерисинче эмес. Ошентип, мен видеолорду жүктөгөн сүрөттөрдү сынап көрөм.

Сунушталууда: