Obsah:

Integrace Raspberry Pi Linux Motion Google Photos: 5 kroků
Integrace Raspberry Pi Linux Motion Google Photos: 5 kroků

Video: Integrace Raspberry Pi Linux Motion Google Photos: 5 kroků

Video: Integrace Raspberry Pi Linux Motion Google Photos: 5 kroků
Video: Marlin Firmware 2.0.x Explained 2024, Listopad
Anonim
Integrace Raspberry Pi Linux Motion Google Photos
Integrace Raspberry Pi Linux Motion Google Photos

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

Nastavit Google Photos API pro Python
Nastavit Google Photos API pro Python
Nastavit Google Photos API pro Python
Nastavit 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

Volitelné: Konfigurace webového přístupu na kameru pro streamování v reálném čase
Volitelné: Konfigurace webového přístupu na kameru pro streamování v reálném čase
Volitelné: Konfigurace webového přístupu na kameru pro streamování v reálném čase
Volitelné: Konfigurace webového přístupu na kameru pro streamování v reálném čase
Volitelné: Konfigurace webového přístupu na kameru pro streamování v reálném čase
Volitelné: Konfigurace webového přístupu na kameru pro streamování 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: