
Мазмуну:
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:51

Идея - булутка файлдарды жүктөө үчүн 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 орнотуу


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

Home Assistant Geiger Counter Integration: Бул үйрөткүчтө мен HASSке (үй жардамчысы) бажы сенсорлорун кантип кошуу керектигин көрсөтөм, тагыраагы геигер эсептегич, бирок процесс башка сенсорлорго окшош. Биз NodeMCU тактасын, arduino негизделген гейгер эсептегичин колдонобуз
Жалюзи контролдоо ESP8266, Google Home жана Openhab интеграциясы жана Webcontrol: 5 кадам (сүрөттөр менен)

Жалюзи контролдоо ESP8266, Google Home жана Openhab интеграциясы жана Webcontrol: Бул Нускамада мен жалюзиңизге автоматиканы кантип кошконумду көрсөтөм. Мен аны автоматташтырууну кошуп жана алып салгым келди, андыктан бардык орнотуулар клипте. Негизги бөлүктөрү: Stepper мотору Stepper айдоочусу ESP-01 Gij жана монтаждоочу
Arduino жана Apple HomeKit интеграциясы - Үйүңүздү Siriден башкарыңыз! IoT бул жерде: 6 кадам

Arduino жана Apple HomeKit интеграциясы - Үйүңүздү Siriден башкарыңыз! IoT Бул жерде: Бул Instructable сизге iOS түзмөгүндө Apple HomeKitке arduino тактасын кошуунун тез жана оңой жолун берет. Ал бардык мүмкүнчүлүктөрдү ачат, анын ичинде серверде иштеген скрипттер, Apple HomeKit " Көрүнүштөр " менен бирге
Жөнөкөй Arduino Uno жана ESP8266 интеграциясы: 6 кадам

Жөнөкөй Arduino Uno жана ESP8266 интеграциясы: Биздин максат Esp8266 AT командалык китепканасын (ITEAD китепканасынын негизинде) түзүү болчу, ал ESP8266 түзмөктөрүнүн көбүндө сериялык программалык камсыздоолордо жакшы иштейт, эгерде аларда AT буйруктарына жооп бере турган программалык камсыздоо болсо (адатта өндүрүүчү демейки)
MQTT интеграциясы: 4 кадам

MQTT интеграциясы: Биздин Facebook постубуз: https://www.facebook.com/IoTGuruLive/videos/359772791497906