Obsah:

Integrácia Raspberry Pi Linux Motion Google Photos: 5 krokov
Integrácia Raspberry Pi Linux Motion Google Photos: 5 krokov

Video: Integrácia Raspberry Pi Linux Motion Google Photos: 5 krokov

Video: Integrácia Raspberry Pi Linux Motion Google Photos: 5 krokov
Video: Видеонаблюдение на raspberry pi motioneye 2024, November
Anonim
Integrácia Raspberry Pi Linux Motion Google Photos
Integrácia Raspberry Pi Linux Motion Google Photos

Cieľom je nahrať fotografie a videá vytvorené pomocou kamery aktivovanej pohybom pripojenej k Raspberry Pi na odosielanie súborov do cloudu. Softvér „Motion“podporuje nahrávanie na Disk Google prostredníctvom systému PyDrive. V tomto článku sa „Motion“používa na nahrávanie do služby Fotky Google.

Hardvér:

Raspberry Pi 3B+

Webová kamera USB Logitech C920

Výber hardvéru nebol určený, zobral som len to, čo bolo po ruke.

Predpoklady:

Pre pohodlie Raspberry pi by malo byť vo vašej lokálnej sieti - ovládať ho bez monitora/klávesnice a sťahovania/sťahovania súborov. Na to by ste mali mať vo svojom počítači agenta ssh (napr. Tmel).

Veľká vďaka ssandbac za skvelý návod. Ak potrebujete ďalšie informácie o nastavení prostredia, pozrite si tento článok. Požičal som si z toho pohybovú inštaláciu a konfiguračné kroky a pridal som niekoľko zmien. Tento príklad predovšetkým namiesto odosielania súborov a upozornení e -mailom používa nahrávanie do zdieľaného albumu fotografií Google a získavanie upozornení typu „pridané fotografie“na paneli s upozorneniami.

Tu sú kroky:

Krok 1: Nainštalujte Linux Motion na Raspberry

Najmä v tomto prípade bol použitý pohyb v4.0.

1.1 Aktualizácia pí

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Stiahnutie pohybu

pi@raspberrypi: ~ $ sudo apt-get install motion

1.3 Teraz upravte tento súbor pomocou nasledujúcich zmien

pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf

# Začnite v režime démona (na pozadí) a uvoľnite terminál (predvolené: vypnuté)

démon na

# Na uloženie správ denníkov použite súbor, ak nie sú definované stderr a syslog. (predvolené: nie je definované)

logfile /var/log/motion/motion.log

# Šírka obrázku (pixely). Platný rozsah: Závisí od fotoaparátu, predvolené: 352

šírka 1920

# Výška obrázku (pixely). Platný rozsah: Závisí od fotoaparátu, predvolené: 288

výška 1080

# Maximálny počet snímok, ktoré sa majú zachytiť za sekundu.

snímková frekvencia 30

# Špecifikuje počet vopred nasnímaných (vyrovnávacej pamäte) snímok spred pohybu

pre_capture 5

# Počet snímok, ktoré sa majú zachytiť po pohybe, sa už nezistí

post_capture 5

# Vytvárajte „normálne“obrázky, keď je detekovaný pohyb (predvolené: zapnuté)

výstupné obrázky sú vypnuté

# Kvalita (v percentách), ktorá sa má použiť pri kompresii jpeg

kvalita 100

# Pomocou príkazu ffmpeg kódujte filmy v reálnom čase

ffmpeg_output_movies vypnuté

# alebo rozsah 1 - 100, kde 1 znamená najhoršiu kvalitu a 100 je najlepšia.

ffmpeg_variable_bitrate 100

# Pri vytváraní videí by sa mali rámce duplikovať v uvedenom poradí

ffmpeg_duplicate_frames false

# Bool na povolenie alebo zakázanie extpipe (predvolené: vypnuté)

use_extpipe on

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i pipe: 0 -vcodec libx264 -preset ultrarýchle -f mp4 %f.mp4

target_dir/var/lib/motion

# Príkaz, ktorý sa má vykonať pri súbore filmu

; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &

Nechajte zatiaľ posledný bodkočiarkou (s komentárom), aby ste mohli zrušiť komentár, a potom zaistiť, aby nahrávanie a nahrávanie videa fungovalo.

1.4 Potom zmeňte

pi@raspberrypi: ~ $ sudo nano/etc/default/motion

pi@raspberrypi: ~ $ start_motion_daemon = áno

Krok 2: Nastavte rozhranie Google Photos API pre Python

Nastavte rozhranie Google Photos API pre Python
Nastavte rozhranie Google Photos API pre Python
Nastavte rozhranie Google Photos API pre Python
Nastavte rozhranie Google Photos API pre Python

2.1 Na tento účel sa odporúča vytvoriť nový účet na zdieľanie albumu s vašim hlavným účtom, aby ste dostávali upozornenia na pridanie nových súborov, plus viac úložného priestoru. Povoľte rozhranie Google Photos API pre účet, ktorý budete používať na nahrávanie.

Potom by ste mali mať súbor credentials.json.

2.2 Nastavenie prostredia Python

V zásade je nastavenie prostredia požadované iba pre malinu. Vyžaduje to však autorizáciu OAuth, ktorú je pohodlnejšie vykonať na počítači PC. Aby ste to urobili na maline, musíte k nemu pripojiť monitor/klávesnicu alebo nastaviť nejaké používateľské rozhranie vzdialenej pracovnej plochy. Práve som nainštaloval rovnaké prostredie na Raspberry aj na PC. Kroky 2.2.1..2.2.3 boli teda urobené na PC, 2.2.1, 2.2.2, 2.2.5, 2.2.6 na Rpi

2.2.1 nainštalovať Python 3

2.2.2 Nainštalujte balíky google api podľa manuálu*(pozri 5.1)

Na PC

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

Na maline

pi@raspberrypi: ~ $ sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

2.2.3 Pozrite sa na nahrávanie skriptov na fotografie Google.. Je umiestnené na mojom github. Vložte ho do rovnakého adresára s credentials.json.

2.2.4 Odfoťte sa a vyskúšajte nahrávanie

python3 photos.py image.jpg

Nainštalujte chýbajúce závislosti, ak existujú, a skúste to znova. V dôsledku toho by ste mali dostať token.pickle do adresára skriptu a tiež nový zdieľaný album vytvorený vo vašom webovom rozhraní Fotky Google s obrázkom.jpg. Keď získate token.pickle, už nepotrebujete credentials.json pre photos.py v rovnakom adresári.

2.2.5 Zdieľajte album s účtom o tom, čo chcete, aby ste dostávali upozornenia na nové médiá. Pridajte si tento účet do telefónu.

2.2.6 Vložte photos.py a token.pickle do/var/lib/motion na malinu. Používateľ „pi“nemôže písať do adresára „motion“, preto ho najskôr nahrajte na /home /pi

scp photos.py token.pickle pi@IP:/home/pi

Potom sa prihláste do maliny a presuňte súbory pod sudo

ssh pi@IP

pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion

2.2.7 Skontrolujte, ako funguje nahrávanie na maline. Odfoťte sa pomocou servera fswebcam a skúste ho nahrať

pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg

pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg

V albume „helloworld“by mohol byť obrázok-j.webp

Krok 3: Test

3.1 Spustiť službu Motion

pi@raspberrypi: ~ $ sudo služba spustenie pohybu

Príkaz môžete zmeniť na „zastaviť“alebo „reštartovať“

3.2 Povoliť protokoly pohybu

pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log

3.2 Zobrazte výstup kamery na inom zariadení pripojenom k tej istej lokálnej sieti. Zadajte do prehliadača:

IP: 8081

3.3 Pri pohľade na protokoly počkajte, kým sa nezistí pohyb a kým sa do súboru/var/lib/motion zapíše súbor NAME.mp4. Potom spustite nahrávanie skriptu manuálne

pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4

Skontrolujte stopy pythona. Počkajte, kým sa event_end nezobrazí v motion.log. Potom na svojich fotografiách Google prejdite do albumu „helloworld“a skontrolujte, či je nahraté video.

3.4 Ak je nahrávanie úspešné, odkomentujte príkaz v súbore /etc/motion.conf:

pi@raspberrypi: ~ $ sudo nano /etc/motion.conf

# Príkaz, ktorý sa má vykonať, keď je pripravený súbor filmu

on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &

pi@raspberrypi: ~ $ sync

pi@raspberrypi: ~ $ sudo service restart reštart

3.5 Pri pohľade do záznamov pohybu a v albume skontrolujte, či sa video nahralo automaticky.

3.6 Voliteľne zdieľajte album s hlavným účtom, aby ste dostali upozornenie, keď bude pridané nové video alebo fotka.

Krok 4: Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase

Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase
Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase
Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase
Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase
Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase
Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase

Tento krok je založený na návode Michela Parreno. Vybral som si FreeDNS namiesto NoIP, ako sa odporúča tu.

4.1 Konfigurovať autorizovaný prístup k serveru streamingu videa:

pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf

# Nastavte spôsob autentifikácie (predvolené: 0)

# 0 = deaktivované

# 1 = Základná autentifikácia

# 2 = súhrn MD5 (bezpečnejšia autentifikácia)

stream_auth_method 2

# Autentifikácia pre stream. Syntax používateľského mena: heslo

# Predvolené: nie je definované (deaktivované)

webcontrol_authentication užívateľské meno: heslo

# Maximálna snímková frekvencia pre streamy streamu (predvolené: 1)

stream_maxrate 30

# Obmedziť pripojenie k streamu iba na localhost (predvolené: zapnuté)

stream_localhost vypnutý

Ak nebudete používať webové ovládacie rozhranie z externej siete, nechajte ho deaktivované (ako predvolené)

# Obmedziť riadiace pripojenia iba na localhost (predvolené: zapnuté)

webcontrol_localhost zapnutý

Pretože je malina online, odporúčam zmeniť predvolené heslo pre malinu

pi@raspberrypi: ~ $ passwd

Aj keď ssh port 22 nie je presmerovaný na malinu, stále.

4.2 Prejdite na stránku FreeDNS

4.3 Prihlásiť sa

4.4 Pridať subdoménu (Pre členov -> Subdomény)

4.5 Vyberte klienta DNS, ktorý chcete nainštalovať na Raspberry (Pre členov -> Dynamický DNS -> Synamické prostriedky DNS -> Dynamickí klienti DNS)

Vybral som wget_script update.sh od Adama Deana (v spodnej časti stránky)

Existujú zástupné symboly _YOURAPIKEYHERE_ a _YOURDOMAINHERE_. Ak ich chcete získať, prejdite na stránku (Pre členov -> Dynamický DNS)

A na nižšie uvedenej stránke nájdete príklady skriptov s vašim APIKEY a DOMAIN (ten, ktorý bol pridaný v 4.4). Prevzal som tieto hodnoty z Wget Script a nahradil _YOURAPIKEYHERE_ a _YOURDOMAINHERE_ v update.sh

4.6 Potom spustite update.sh na maline. Na nslookup to môže vyžadovať dnsutils. Nainštalujte ho potom:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Potom nakonfigurujte smerovač tak, aby presmeroval požiadavky externého sveta na port 8081 na ip maliny

4.8 Rezervujte IP pre MAC malinovky v nastavení DHCP, aby mala Rpi vždy rovnakú IP

4.9 Potom zadajte do prehliadača na zariadení, ktoré nie je pripojené k lokálnej sieti:

vaša doména: 8081

Zadajte svoje poverenia, ktoré ste definovali v motion.conf.

Vyskúšajte si, ako video funguje.

4.10 za účelom aktualizácie DDNS automaticky nastaviť úlohu cron. Pozrite si príklad quick_cron_ex (pre členov -> dynamický DNS)

Krok 5: Tipy

5.1 Buďte opatrní pri inštalácii balíkov pythonu na malinu. Strávil som deň tým, že som to odladil - problém bol v tom, že z konzoly skript bežal dobre, ale volanie zo spätného volania pohybovej udalosti nie. Horšie bolo, že stopy v scenári boli v druhom prípade nedostupné.

Dôvodom bolo, že podľa tejto príručky som nainštaloval balíky pre používateľa „pi“(ktorý je v predvolenom nastavení v adresári /home /pi a je obmedzený pre ostatných používateľov), ale na spustenie skriptu ako podradenej služby „pohybu“musia byť balíky k dispozícii aj pre používateľa „pohybu“. Nakoniec som to opravil inštaláciou balíkov ako

sudo pip3…

Tento spôsob stále nefunguje. Inštalácia bez sudo ako pip3 --system mi z nejakého dôvodu spôsobovala chyby.

Zodpovedajúcim spôsobom sa skript nazýva aj pod sudo (pozri motion.conf).

Počas tohto odstraňovania problémov som urobil veľa zbytočných zmien a nebol som si istý, čo je potrebné, a teraz som lenivý ich postupne vracať späť a zistiť, kedy prestane fungovať. Zvlášť udelené práva správcu pohybu:

pi@raspberrypi: ~ $ skupiny pohybu

motion: motion adm sudo používatelia zvukového videa netdev pi

pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd

pi ALL = (ALL) NOPASSWD: ALL

pohyb ALL = (ALL) NOPASSWD: ALL

Tiež sa menili vlastníci súborov a povolenia podobné ako pri odosielaní na Disk Google. Pravdepodobne vám to môže pomôcť v prípade, že máte podobný problém.

5.2 Rozhranie Google Photos API umožňuje pridávať súbory iba do zdieľaných albumov, aby k nim mal prístup každý, kto má odkaz. Nezdieľajte ho prostredníctvom odkazu a odstraňujte staré filmy ani ich nepresúvajte do koša alebo z albumu. V druhom prípade zostanú na účte.

5.3 Asistent fotografií Google rozpoznáva tváre, čo je veľmi užitočné, ak je kvalita fotoaparátu v poriadku. Ako bonus robí z fantastického mediálneho druhu kompilácie a gify atď.

5.4 Skúsil som použiť 4G LTE USB modem na prístup na internet a tu sú moje výsledky. 5.4.1 Huawei E3372h-153 funguje s malinou bez problémov a s extra softvérom 5.4.2 Tiež povolil hotspot, takže Rasperry zdieľal internetové pripojenie prostredníctvom wifi. Existuje https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ skutočne jednoduchý návod, ako to urobiť pomocou RaspAP. 5.4.3 Dynamické DNS nefungovalo v 4G sieti mojej carrie. Existuje vysvetlenie, prečo

5.5 Po niekoľkých týždňoch používania tohto systému sa ukázalo, že hoci sú videá pohodlnejšie na prezeranie a odosielanie, Fotky Google lepšie fungujú s obrázkami. Umožňuje napríklad zoskupovanie vecí/tvárí analyzovať iba obrázky a až potom hľadať tváre/veci z obrázkov vo videách, ale nie naopak. Idem teda otestovať obrázky, ktoré odovzdávajú skôr videá.

Odporúča: