Съдържание:
- Стъпка 1: Инсталирайте Linux Motion на Raspberry
- Стъпка 2: Настройка на Google Photos API за Python
- Стъпка 3: Тествайте
- Стъпка 4: По избор: Конфигурирайте уеб достъпа до поточна камера в реално време
- Стъпка 5: Съвети
Видео: Raspberry Pi Linux Motion Интеграция с Google Снимки: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Идеята е да качите снимки и видеоклипове, направени с камера с активирано движение, свързана към Raspberry Pi, за да качите файлове в облак. Софтуерът „Motion“поддържа качване в Google Диск чрез PyDrive. В тази статия „Motion“се използва за качване в Google Photos.
Хардуер:
Малина Pi 3B+
USB уеб камера Logitech C920
Изборът на хардуер не беше определен, просто взех това, което беше под ръка.
Предпоставки:
За удобство Raspberry pi трябва да е във вашата локална мрежа - да го контролирате без монитор/клавиатура и да качвате/изтегляте файлове. За целта трябва да имате ssh агент на вашия компютър (например шпакловка).
Много благодаря на ssandbac за страхотен урок. Ако имате нужда от повече информация как да настроите среда, вижте тази статия. Заех инсталация на движение и стъпки за конфигуриране от нея и добавих някои промени. По -специално, вместо да изпраща имейли на файлове и сигнали, този пример използва качване в споделен албум на снимки на Google и получаване на известия като „добавени снимки“в лентата за известия.
Ето стъпките:
Стъпка 1: Инсталирайте Linux Motion на Raspberry
По -специално в този пример е използвано движение v4.0.
1.1 Актуализиране на pi
pi@raspberrypi: ~ $ sudo apt-get update
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
# Определя броя на предварително заснетите (буферирани) снимки от преди движение
pre_capture 5
# Брой кадри за заснемане след движение вече не се открива
post_capture 5
# Извеждане на „нормални“снимки при откриване на движение (по подразбиране: включено)
output_pictures изключен
# Качеството (в проценти), което да се използва от jpeg компресията
качество 100
# Използвайте ffmpeg за кодиране на филми в реално време
ffmpeg_output_movies изключено
# или диапазон 1 - 100, където 1 означава най -лошото качество, а 100 е най -доброто.
ffmpeg_variable_bitrate 100
# Когато създавате видеоклипове, кадрите трябва да се дублират по ред
ffmpeg_duplicate_frames false
# Bool за активиране или деактивиране на extpipe (по подразбиране: изключено)
use_extpipe е включен
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i тръба: 0 -vcodec libx264 -preset ultrafast -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: Настройка на Google Photos API за Python
2.1 Препоръчително е да създадете нов акаунт за тази цел, за да споделите албум с основния си, за да получавате известия, когато се добавят нови файлове, плюс повече място за съхранение. Активирайте Google Photos API за акаунта, който ще използвате за качване.
След това трябва да имате файл credentials.json.
2.2 Настройка на Python среда
По принцип настройката на околната среда се изисква само на малината. Но това изисква разрешение за oauth, което е по -удобно да се извърши на компютър. За да направите това на малинка, трябва да свържете монитор/клавиатура към нея или да настроите някой потребителски интерфейс за отдалечен работен плот. Току -що инсталирах една и съща среда и на малинка, и на компютър. Така че стъпките 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 --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
На малина
pi@raspberrypi: ~ $ sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 Вижте качването на скрипт в google photos.. Той е поставен на моя github. Поставете го в същата директория с credentials.json.
2.2.4 Направете снимка и тествайте качването
python3 photos.py image.jpg
Инсталирайте липсващи зависимости, ако има такива, и опитайте отново. В резултат на това трябва да получите token.pickle в директорията на скрипта, а също и нов споделен албум, създаден във вашия уеб интерфейс на Google Photos с image.jpg. С получаването на token.pickle вече не се нуждаете от credentials.json за photos.py в същата директория.
2.2.5 Споделете албума с акаунта за това, което искате да получавате известия за нови медии. Добавете този акаунт към телефона си.
2.2.6 Поставете photos.py и token.pickle в/var/lib/motion върху малината. Потребителят на „pi“не може да пише в директорията на „motion’s“, така че първо да го качите в /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.jpg.
Стъпка 3: Тествайте
3.1 Стартирайте услугата Motion
pi@raspberrypi: ~ $ sudo service start start
Можете да промените командата на „стоп“или „рестартиране“
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
Проверете следите на python. Изчакайте, докато event_end се появи в motion.log. След това отидете в албума „helloworld“във вашите снимки в Google и проверете дали има качено видео.
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 на Michel. Просто избрах FreeDNS вместо NoIP, както се препоръчва тук.
4.1 Конфигурирайте разрешен достъп до сървър за движение на поточно видео:
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Задайте метода за удостоверяване (по подразбиране: 0)
# 0 = забранено
# 1 = Основно удостоверяване
# 2 = MD5 дайджест (по -безопасното удостоверяване)
метод на поток_аут 2
# Удостоверяване за потока. Потребителско име за синтаксис: парола
# По подразбиране: не е дефинирано (забранено)
webcontrol_authentication потребителско име: парола
# Максимална скорост на кадрите за поточни потоци (по подразбиране: 1)
stream_maxrate 30
# Ограничете поточните връзки само до localhost (по подразбиране: включено)
stream_localhost изключен
Ако няма да използвате интерфейса за уеб управление от външна мрежа, оставете го деактивиран (по подразбиране)
# Ограничете контролните връзки само до localhost (по подразбиране: включено)
webcontrol_localhost е включен
Също така, тъй като малинката е онлайн, препоръчвам да смените паролата за малината по подразбиране
pi@raspberrypi: ~ $ passwd
Въпреки че ssh порт 22 не е пренасочен към малина, все пак.
4.2 Отидете на сайта на FreeDNS
4.3 Регистрирайте се
4.4 Добавяне на поддомейн (за членове -> поддомейни)
4.5 Изберете DNS клиент, който да инсталирате на Raspberry (За членове -> Dynamic DNS -> Synamic DNS Resources -> Dynamic DNS Clients)
Избрах wget_script update.sh от Адам Дийн (в долната част на страницата)
Има заместители _YOURAPIKEYHERE_ и _YOURDOMAINHERE_. За да ги получите, отидете на (For Members -> Dynamic DNS)
И на страницата по -долу ще намерите примери за скриптове с вашия APIKEY и DOMAIN (този, добавен в 4.4). Взех тези стойности от Wget Script и замених _YOURAPIKEYHERE_ и _YOURDOMAINHERE_ в update.sh
4.6 След това стартирайте update.sh на малинка. Може да изисква dnsutils за nslookup. След това го инсталирайте:
pi@raspberrypi: ~ $ sudo apt-get dnsutils
4.7 След това конфигурирайте вашия рутер да пренасочва заявки за външен свят към порт 8081 към ip на малината
4.8 Запазете ip за MAC на вашата малинка в настройката DHCP, така че Rpi винаги да има един и същ ip
4.9 След това въведете в браузъра на устройство, което не е свързано към локалната мрежа:
вашиядомен: 8081
Въведете вашите идентификационни данни, които сте дефинирали в motion.conf.
Тествайте как работи видеото.
4.10 с цел актуализиране на DDNS автоматично настройване на cron задача. Вижте quick_cron_example on (For Members -> Dynamic DNS)
Стъпка 5: Съвети
5.1 Бъдете внимателни при инсталирането на пакети на python на малинка. Прекарах един ден в отстраняване на грешки в това - проблемът беше, че от конзолата скриптът работи добре, но извикването от обратно извикване на събитие при движение не. Това, което го влоши, беше, че следите от сценария бяха недостъпни във втория случай.
Причината беше, че следвайки ръководството, инсталирах пакетите за потребителя „pi“(който по подразбиране е в директорията /home /pi и е ограничен за други потребители), но за да стартирам скрипта като дете на услугата „движение“, пакетите трябва да бъдат наличен и за потребител на „движение“. Така че най -накрая го поправих, като инсталирах пакетите като
sudo pip3 …
Това все още не е правилен начин. Инсталирането без sudo като pip3 -система ми даваше грешки по някаква причина.
Съответно скриптът се извиква и под sudo (вижте 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 Диск. Вероятно може да ви помогне в случай, че имате подобен проблем.
5.2 Google Photos API позволява да се добавят файлове само към споделени албуми, така че всеки с връзката да има достъп до него. Не го споделяйте чрез връзка и изтривайте стари филми или ги премествайте в кошчето или от албума. В последния случай те остават в сметката.
5.3 Google Photos Assistant разпознава лица, което е доста полезно, ако качеството на камерата е добро. Като бонус той прави фантастични медийни компилации и gifs и т.н.
5.4 Опитах се да използвам 4G LTE USB модем за достъп до интернет и ето моите резултати. 5.4.1 Huawei E3372h-153 работи с малина без проблеми и допълнителен софтуер 5.4.2 Също така е активирана гореща точка, така че Rasperry споделя интернет връзка чрез wifi. Има 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 работи по -добре с изображения. Например, позволява да се групират неща/лица само за анализиране на изображения и едва след това да се търсят лица/неща от изображенията във видеоклипове, но не и обратното. Така че ще тествам изображения, качващи по -скоро видеоклипове.
Препоръчано:
Интелигентен звънец на вратата: код, настройка и интеграция с HA: 7 стъпки (със снимки)
Направи си сам интелигентен звънец на вратата: Код, настройка и HA интеграция: В този проект ще ви покажа как можете да трансформирате нормалния си звънец на вратата в интелигентен, без да променяте някоя от текущите функции или да прекъсвате проводници. Ще използвам платка ESP8266, наречена Wemos D1 mini. Ново към ESP8266? Гледайте моето представяне
Система за опростено състояние и резервация на Kicker със слаба интеграция: 12 стъпки (със снимки)
Simple Kicker Status and Reserve System with Slack Integration: Във фирма, в която работя, има маса за кикър. Компанията заема много етажи и за някои от служителите са необходими до 3 минути, за да стигнат до масата и … да осъзнаят, че масата вече е заета. Затова възникна идея за изграждане на ки
Контрол на щорите с ESP8266, Google Home и Openhab интеграция и уеб контрол: 5 стъпки (със снимки)
Контрол на щори с ESP8266, интегриране и уебконтрол на Google Home и Openhab: В тази инструкция ще ви покажа как добавих автоматизация към моите щори. Исках да мога да добавя и премахвам автоматизацията, така че цялата инсталация е закрепена. Основните части са: Стъпков двигател Стъпков шофьор, управляван от bij ESP-01 Gear и монтаж
Сензор за врати с батерия с интеграция на домашната автоматизация, WiFi и ESP-NOW: 5 стъпки (със снимки)
Сензор за врати с батерия с интеграция на домашната автоматизация, WiFi и ESP-СЕГА: В тази инструкция ще ви покажа как направих сензор за врата на батерия с интеграция за домашна автоматизация. Виждал съм някои други хубави сензори и алармени системи, но исках сам да си направя такъв. Моите цели: Сензор, който открива и докладва doo
Wi -Fi 12V LED лента, използваща Raspberry Pi с Tasker, Ifttt интеграция .: 15 стъпки (със снимки)
Wifi контролирана 12v LED лента, използваща Raspberry Pi с Tasker, Ifttt интеграция. използвам Raspberry Pi 1 модел B+) 1x RGB 12v Le