Obsah:
- Krok 1: Nainstalujte Linux Motion na Raspberry
- Krok 2: Nastavení rozhraní Google Photos API pro Python
- Krok 3: Test
- Krok 4: Volitelné: Konfigurujte webový přístup k streamovací kameře v reálném čase
- Krok 5: Tipy
Video: Integrace Raspberry Pi Linux Motion Google Photos: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Cílem je nahrát fotografie a videa vytvořená pomocí pohybem aktivované kamery připojené k Raspberry Pi a odesílat soubory do cloudu. Software „Motion“podporuje nahrávání na Disk Google prostřednictvím PyDrive. V tomto článku se „Motion“používá k nahrávání do Fotek Google.
Hardware:
Raspberry Pi 3B+
Webová kamera USB Logitech C920
Výběr hardwaru nebyl určen, jen jsem vzal to, co bylo po ruce.
Předpoklady:
Pro větší pohodlí by měl Raspberry pi být ve vaší místní síti - ovládat jej bez monitoru/klávesnice a nahrávání/stahování souborů. K tomu byste měli mít na počítači agent ssh (např. Tmel).
Mnohokrát děkuji ssandbac za skvělý tutoriál. Pokud potřebujete více informací o nastavení prostředí, podívejte se na tento článek. Vypůjčil jsem si z něj pohybovou instalaci a konfigurační kroky a přidal nějaké změny. Zejména v tomto případě místo odesílání e -mailů souborům a výstrahám tento příklad používá nahrávání do sdíleného alba fotografií Google a získávání oznámení typu „přidaných fotografií“na oznamovací liště.
Zde jsou kroky:
Krok 1: Nainstalujte Linux Motion na Raspberry
Zejména v tomto příkladu byl použit Motion v4.0.
1.1 Aktualizace pí
pi@raspberrypi: ~ $ sudo apt-get update
pi@raspberrypi: ~ $ sudo apt-get upgrade
1.2 Stáhnout pohyb
pi@raspberrypi: ~ $ sudo apt-get install motion
1.3 Nyní upravte tento soubor s následujícími změnami
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Začněte v režimu démona (pozadí) a uvolněte terminál (výchozí: vypnuto)
zapnutý démon
# Pomocí souboru ukládejte zprávy protokolů, pokud není použit definovaný stderr a syslog. (výchozí: není definováno)
logfile /var/log/motion/motion.log
# Šířka obrázku (pixely). Platný rozsah: Závisí na fotoaparátu, výchozí: 352
šířka 1920
# Výška obrázku (pixely). Platný rozsah: Závisí na fotoaparátu, výchozí: 288
výška 1080
# Maximální počet snímků, které lze zachytit za sekundu.
snímková frekvence 30
# Specifikuje počet předem zachycených (uložených) snímků před pohybem
pre_capture 5
# Počet snímků, které lze zachytit po pohybu, již není detekován
post_capture 5
# Výstup „normálních“obrázků při detekci pohybu (výchozí: zapnuto)
output_pictures off
# Kvalita (v procentech), která má být použita při kompresi jpeg
kvalita 100
# Použijte ffmpeg ke kódování filmů v reálném čase
ffmpeg_output_movies vypnuto
# nebo rozsah 1 - 100, kde 1 znamená nejhorší kvalitu a 100 je nejlepší.
ffmpeg_variable_bitrate 100
# Při vytváření videí by měly být rámce duplikovány v pořadí
ffmpeg_duplicate_frames false
# Bool pro povolení nebo zakázání extpipe (výchozí: vypnuto)
use_extpipe na
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i pipe: 0 -vcodec libx264 -preset ultrarychlé -f mp4 %f.mp4
cílový_adresář/var/lib/pohyb
# Příkaz, který se má provést, když je filmový soubor
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Nechte zatím ten poslední se středníkem (s komentářem), abyste jej odkomentovali poté, co se ujistíte, že nahrávání a nahrávání videa funguje.
1.4 Poté změňte
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
pi@raspberrypi: ~ $ start_motion_daemon = ano
Krok 2: Nastavení rozhraní Google Photos API pro Python
2.1 Doporučuje se za tímto účelem vytvořit nový účet pro sdílení alba s vaším hlavním, abyste mohli dostávat oznámení o přidání nových souborů, plus více úložného prostoru. Povolte rozhraní Google Photos API pro účet, který budete používat k nahrávání.
Poté byste měli mít soubor credentials.json.
2.2 Nastavení prostředí Pythonu
Nastavení prostředí je v zásadě vyžadováno pouze u malin. Vyžaduje to však autorizaci OAuth, což je pohodlnější provést na PC. Chcete -li to provést na malině, musíte k němu připojit monitor/klávesnici nebo nastavit nějaké uživatelské rozhraní vzdálené plochy. Právě jsem nainstaloval stejné prostředí na Raspberry a PC oba. Takže kroky 2.2.1..2.2.3 byly provedeny na PC, 2.2.1, 2.2.2, 2.2.5, 2.2.6 na Rpi
2.2.1 nainstalovat Python 3
2.2.2 Nainstalujte balíčky google api podle manuálu*(viz 5.1)
Na PC
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Na malinu
pi@raspberrypi: ~ $ sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 Podívejte se na nahrávání skriptů na fotky Google.. Je umístěno na mém githubu. Vložte jej do stejného adresáře s credentials.json.
2.2.4 Udělejte obrázek a vyzkoušejte nahrávání
python3 photos.py image.jpg
Nainstalujte chybějící závislosti, pokud existují, a zkuste to znovu. V důsledku toho byste měli dostat token.pickle do adresáře skriptu a také nové sdílené album vytvořené ve vašem webovém rozhraní Google Photos s image.jpg. Jak získáte token.pickle, již nepotřebujete credentials.json pro photos.py ve stejném adresáři.
2.2.5 Sdílejte album s účtem o tom, co chcete, aby vám byla zasílána oznámení o nových médiích. Přidejte si tento účet do telefonu.
2.2.6 Vložte photos.py a token.pickle do/var/lib/motion na malinu. Uživatel „pi“nemůže zapisovat do adresáře „motion“, proto jej nejprve nahrajte na /home /pi
scp photos.py token.pickle pi@IP:/home/pi
Poté se přihlaste k malině a přesuňte soubory pod sudo
ssh pi@IP
pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion
2.2.7 Zkontrolujte, jak funguje nahrávání na malině. Vyfoťte se pomocí fswebcam a zkuste to nahrát
pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
V albu „helloworld“by mělo být image-j.webp
Krok 3: Test
3.1 Spusťte službu Motion
pi@raspberrypi: ~ $ sudo service motion start
Příkaz můžete změnit na „zastavit“nebo „restartovat“
3.2 Povolit protokoly pohybu
pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log
3.2 Zobrazte výstup kamery na jiném zařízení připojeném ke stejné místní síti. Zadejte do prohlížeče:
IP: 8081
3.3 Při prohlížení protokolů počkejte, až bude detekován pohyb a do souboru/var/lib/motion bude zapsán soubor NAME.mp4. Potom spusťte nahrávání skriptu ručně
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Zkontrolujte stopy pythonu. Počkejte, až se event_end zobrazí v motion.log. Poté přejděte do alba „helloworld“na svých fotografiích Google a zkontrolujte, zda je nahráno video.
3.4 Pokud je nahrávání úspěšné, odkomentujte řádek v souboru /etc/motion.conf:
pi@raspberrypi: ~ $ sudo nano /etc/motion.conf
# Příkaz, který se má provést, když je připraven soubor filmu
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi: ~ $ sync
pi@raspberrypi: ~ $ sudo service restart restart
3.5 Prohlédnutím záznamů pohybu a v albu zkontrolujte, zda se video nahrálo automaticky.
3.6 Volitelně sdílejte album se svým hlavním účtem, abyste dostali oznámení o přidání nového videa nebo fotografie.
Krok 4: Volitelné: Konfigurujte webový přístup k streamovací kameře v reálném čase
Tento krok vychází z výukového programu Michel Parreno. Právě jsem vybral FreeDNS místo NoIP, jak je zde doporučeno.
4.1 Konfigurace autorizovaného přístupu k serveru pro streamování videa:
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Nastavte způsob autentizace (výchozí: 0)
# 0 = deaktivováno
# 1 = Základní autentizace
# 2 = souhrn MD5 (bezpečnější autentizace)
stream_auth_method 2
# Ověření pro stream. Syntaxe uživatelské jméno: heslo
# Výchozí: není definováno (Zakázáno)
webcontrol_authentication uživatelské jméno: heslo
# Maximální snímková frekvence pro streamy streamů (výchozí: 1)
stream_maxrate 30
# Omezit připojení streamu pouze na localhost (výchozí: zapnuto)
stream_localhost vypnut
Pokud nebudete používat webové ovládací rozhraní z externí sítě, nechte jej deaktivované (jako ve výchozím nastavení)
# Omezit ovládací připojení pouze na localhost (výchozí: zapnuto)
webcontrol_localhost zapnuto
Protože je malina online, doporučuji změnit výchozí heslo pro malinu
pi@raspberrypi: ~ $ passwd
Přestože ssh port 22 není přesměrován na malinu, přesto.
4.2 Přejděte na web FreeDNS
4.3 Zaregistrujte se
4.4 Přidat subdoménu (Pro členy -> Subdomény)
4.5 Vyberte klienta DNS, který chcete nainstalovat na Raspberry (pro členy -> dynamický DNS -> prostředky Synamic DNS -> dynamičtí klienti DNS)
Vybral jsem wget_script update.sh od Adama Deana (v dolní části stránky)
Existují zástupné symboly _YOURAPIKEYHERE_ a _YOURDOMAINHERE_. Chcete -li je získat, přejděte na (For Members -> Dynamic DNS)
A na níže uvedené stránce najdete příklady skriptů pro vaše APIKEY a DOMAIN (ten přidaný v 4.4). Vzal jsem tyto hodnoty z Wget Script a nahradil _YOURAPIKEYHERE_ a _YOURDOMAINHERE_ v update.sh
4.6 Poté spusťte update.sh na malině. Pro nslookup může vyžadovat dnsutils. Nainstalujte jej tedy:
pi@raspberrypi: ~ $ sudo apt-get dnsutils
4.7 Poté nakonfigurujte router tak, aby přesměroval požadavky externího světa na port 8081 na ip maliny
4.8 Zarezervujte ip pro MAC vašeho maliny v nastavení DHCP, aby Rpi měla vždy stejnou IP
4.9 Poté zadejte do prohlížeče na zařízení, které není připojeno k místní síti:
vaše doména: 8081
Zadejte přihlašovací údaje, které jste definovali v souboru motion.conf.
Vyzkoušejte si, jak video funguje.
4.10 za účelem aktualizace DDNS automaticky nastavit úlohu cron. Viz quick_cron_example na (For Members -> Dynamic DNS)
Krok 5: Tipy
5.1 Buďte opatrní při instalaci balíčků pythonu na malinu. Strávil jsem den laděním - problém spočíval v tom, že z konzoly skript běžel dobře, ale volání z zpětného volání události pohybu ne. Ještě horší bylo, že stopy ve skriptu nebyly v druhém případě k dispozici.
Důvodem bylo, že podle průvodce jsem nainstaloval balíčky pro uživatele 'pi' (který je ve výchozím nastavení v adresáři /home /pi a omezený pro ostatní uživatele), ale pro spuštění skriptu jako podřízené služby 'pohybu' musí být balíčky k dispozici také pro uživatele „pohybu“. Nakonec jsem to opravil instalací balíčků jako
sudo pip3…
Toto není správný způsob, jak to stále funguje. Instalace bez sudo jako pip3 --system mi z nějakého důvodu způsobovala chyby.
Odpovídajícím způsobem se skript nazývá také pod sudo (viz motion.conf).
Během tohoto řešení jsem provedl spoustu zbytečných změn a nebyl jsem si jistý, co je nutné, a teď jsem líný je postupně vrátit zpět a zjistit, kdy přestane fungovat. Zvláště udělená práva správce pohybu:
pi@raspberrypi: ~ $ skupiny pohybu
motion: motion adm sudo uživatelé audio videa netdev pi
pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALL = (ALL) NOPASSWD: ALL
pohyb ALL = (ALL) NOPASSWD: ALL
Také se měnili vlastníci souborů a oprávnění podobná jako při nahrávání na Disk Google. Pravděpodobně vám to může pomoci v případě, že máte podobný problém.
5.2 Rozhraní Google Photos API umožňuje přidávat soubory pouze do sdílených alb, aby k nim měl přístup kdokoli s odkazem. Nesdílejte to odkazem a mazejte staré filmy ani je nepřesouvejte do koše nebo z alba. V druhém případě zůstávají na účtu.
5.3 Google photos assistant detekuje tváře, což je docela užitečné, pokud je kvalita fotoaparátu v pořádku. Jako bonus to dělá z efektního mediálního druhu kompilace a gify atd.
5.4 Zkoušel jsem použít 4G LTE USB modem pro přístup k internetu a zde jsou moje výsledky. Existuje https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ opravdu snadný návod, jak to udělat pomocí RaspAP. 5.4.3 Dynamické DNS nefungovalo v 4G síti mé carrie. Existuje vysvětlení proč
5.5 Po několika týdnech používání tohoto systému se ukázalo, že ačkoli jsou videa pohodlnější pro prohlížení a nahrávání, Fotky Google fungují lépe s obrázky. Například umožňuje seskupování věcí/tváří analyzovat pouze obrázky a teprve potom hledat tváře/věci z obrázků ve videích, ale ne naopak. Budu tedy testovat obrázky, které nahrávají spíše videa.
Doporučuje:
Inteligentní otvírač garážových vrat DIY + integrace domácího asistenta: 5 kroků
Integrace inteligentních garážových vrat DIY + integrace domácího asistenta: Proměňte své normální garážová vrata chytře pomocí tohoto projektu DIY. Ukážu vám, jak jej sestavit a ovládat pomocí Home Assistant (přes MQTT) a mít schopnost dálkově otevírat a zavírat garážová vrata. Budu používat desku ESP8266 s názvem Wemos
DIY Smart Doorbell: kód, nastavení a integrace HA: 7 kroků (s obrázky)
DIY Smart Doorbell: Kód, nastavení a integrace HA: V tomto projektu vám ukážu, jak můžete svůj normální zvonek přeměnit na chytrý, aniž byste změnili některou ze současných funkcí nebo přestřihli kabely. Budu používat desku ESP8266 s názvem Wemos D1 mini. Novinka v ESP8266? Sledujte můj Úvod
Ovládání žaluzií pomocí ESP8266, integrace Google Home a Openhab a Webcontrol: 5 kroků (s obrázky)
Ovládání žaluzií S ESP8266, Google Home a Openhab Integration a Webcontrol: V tomto Instructable vám ukážu, jak jsem do svých žaluzií přidal automatizaci. Chtěl jsem mít možnost přidat a odebrat automatizaci, takže veškerá instalace je jednoduchá. Hlavní části jsou: krokový motor, krokový ovladač ovládaný bij ESP-01 převodovka a montáž
Wifi ovládaný 12v LED pás pomocí Raspberry Pi s Taskerem, integrace Ifttt .: 15 kroků (s obrázky)
Wifi ovládaný 12v LED pásek využívající Raspberry Pi s integrací Tasker, Ifttt .: V tomto projektu vám ukážu, jak ovládat jednoduchý 12v analogový LED pásek přes wifi pomocí malinového pi. Pro tento projekt budete potřebovat: 1x Raspberry Pi (I používám Raspberry Pi 1 Model B+) 1x RGB 12v Le
Chytrá hudba v ložnici a vaně s Raspberry Pi - integrace multiroomu, alarmu, ovládání tlačítky a domácí automatizace: 7 kroků
Chytrá hudba v ložnici a vaně s Raspberry Pi - integrace Multiroom, alarmu, ovládání tlačítkem a domácí automatizace: Dnes vám chceme dát dva příklady toho, jak můžete Raspberry Pi používat s naším softwarem Max2Play pro domácí automatizaci: v koupelně a ložnici . Oba projekty jsou si podobné v tom, že vysoce věrnou hudbu z různých zdrojů lze streamovat prostřednictvím