Мазмұны:
- 1 -қадам: Linux Motion бағдарламасын Raspberry -ге орнатыңыз
- 2 -қадам: Python үшін Google Photos API орнатыңыз
- 3 -қадам: Тест
- 4 -қадам: Қосымша: Нақты уақыттағы ағынды камераға Интернетке кіруді теңшеңіз
- 5 -қадам: кеңестер
Бейне: Raspberry Pi Linux Motion Google Photos интеграциясы: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Идея - бұлтты файлдарды жүктеу үшін 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 орнатыңыз
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 суреттермен жақсы жұмыс істейді. Мысалы, бұл заттарға/беттерге суреттерді талдауға мүмкіндік береді, содан кейін ғана бейнелердегі суреттерден беттерді/заттарды іздеуге мүмкіндік береді, бірақ керісінше емес. Сондықтан мен бейнелерді жүктейтін суреттерді тексеремін.
Ұсынылған:
DIY ақылды гараж есігі + үй көмекшісінің интеграциясы: 5 қадам
DIY ақылды гараж есігі + үй көмекшісінің интеграциясы: осы DIY жобасын қолдана отырып, гараждың қалыпты есігін ақылды етіңіз. Мен сізге оны қалай жасау керектігін көрсетемін және оны үй көмекшісінің көмегімен (MQTT арқылы) және гараждың есігін қашықтан ашып -жабу мүмкіндігіне ие боламын. Мен Wemos деп аталатын ESP8266 тақтасын қолданамын
DIY ақылды есік қоңырауы: код, орнату және HA интеграциясы: 7 қадам (суреттермен)
DIY Smart Doorbell: Code, Setup and HA интеграциясы: Бұл жобада мен сізге қазіргі функционалдылықты өзгертпестен немесе сымдарды үзбестен қалыпты қоңырауды ақылдыға қалай өзгерту керектігін көрсетемін. Мен Wemos D1 mini деп аталатын ESP8266 тақтасын қолданамын. ESP8266 жаңасы ма? Менің кіріспемді қараңыз
Қарапайым Kicker мәртебесі мен брондау жүйесі: Slack интеграциясы: 12 қадам (суреттермен)
Қарапайым Kicker мәртебесі және брондау жүйесі Slack интеграциясымен: Мен жұмыс істейтін компанияда шкаф үстелі бар. Компания көптеген қабаттарды алып жатыр, ал кейбір қызметкерлер үшін үстелге жету үшін 3 минут қажет … үстелдің бос тұрғанын түсіну үшін
Жалюзиді басқару ESP8266, Google Home және Openhab интеграциясы мен веб -бақылау: 5 қадам (суреттермен)
Жалюзиді басқару ESP8266, Google Home және Openhab интеграциясы мен веб -бақылау: Бұл нұсқаулықта мен жалюздерге автоматтандыруды қалай қосқанымды көрсетемін. Мен оны автоматтандыруды қосуды және алып тастауды қалаймын, сондықтан барлық қондырмалар қосылады. Негізгі бөліктер: ESP-01 ESP-01 реттегіш механизмі
Wifi басқарылатын Raspberry Pi көмегімен Task, Ifttt интеграциясы бар 12 вольтты жолағы: 15 қадам (суреттермен)
Task, Ifttt интеграциясы бар Raspberry Pi көмегімен Wi -Fi арқылы басқарылатын 12 вольтты жолақ. Бұл жобада мен сізге таңқурай pi көмегімен wifi желісінде қарапайым 12 вольтты аналогты жолақты қалай басқаруға болатынын көрсетемін. Бұл жоба үшін сізге қажет: 1x Raspberry Pi (I) Мен Raspberry Pi 1 Model B+) 1x RGB 12v Le қолданамын