Obsah:
- Krok 1: Nainštalujte Linux Motion na Raspberry
- Krok 2: Nastavte rozhranie Google Photos API pre Python
- Krok 3: Test
- Krok 4: Voliteľné: Nakonfigurujte webový prístup na kameru na streamovanie v reálnom čase
- Krok 5: Tipy
Video: Integrácia Raspberry Pi Linux Motion Google Photos: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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
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:
Inteligentný otvárač garážových brán DIY + integrácia domáceho asistenta: 5 krokov
Inteligentný otvárač garážových brán DIY + integrácia domáceho asistenta: Premeňte svoje normálne garážové brány na inteligentné pomocou tohto projektu DIY. Ukážem vám, ako ho postaviť a ovládať pomocou Home Assistant (cez MQTT) a mať možnosť diaľkovo otvárať a zatvárať garážové brány. Budem používať dosku ESP8266 s názvom Wemos
DIY Smart Doorbell: Kód, nastavenie a integrácia HA: 7 krokov (s obrázkami)
DIY Smart Doorbell: Kód, nastavenie a integrácia HA: V tomto projekte vám ukážem, ako môžete svoj normálny zvonček zmeniť na inteligentný bez toho, aby ste zmenili akékoľvek zo súčasných funkcií alebo prerušili akékoľvek káble. Budem používať dosku ESP8266 s názvom Wemos D1 mini. Novinka v ESP8266? Sledujte môj Úvod
Ovládanie žalúzií s ESP8266, integrácia Google Home a Openhab a webové ovládanie: 5 krokov (s obrázkami)
Ovládanie žalúzií S ESP8266, integráciou Google Home a Openhab a webovým ovládaním: V tomto návode vám ukážem, ako som k svojim žalúziám pridal automatizáciu. Chcel som mať možnosť pridať a odstrániť automatizáciu, takže všetka inštalácia je nasadená. Hlavnými časťami sú: krokový motor, krokový ovládač ovládaný bij ESP-01 prevodovka a montáž
Wifi riadený 12v LED pásik s použitím Raspberry Pi s Tasker, integrácia Ifttt .: 15 krokov (s obrázkami)
Wifi riadený 12v LED pásik s použitím Raspberry Pi s integráciou Tasker, Ifttt .: V tomto projekte vám ukážem, ako ovládať jednoduchý 12 V analógový LED pás cez wifi pomocou malinového pi. Na tento projekt budete potrebovať: 1x Raspberry Pi (I používam Raspberry Pi 1 Model B+) 1x RGB 12v Le
Inteligentná hudba v spálni a vani s Raspberry Pi - integrácia multiroomu, alarmu, ovládania tlačidlami a domácej automatizácie: 7 krokov
Inteligentná hudba v spálni a vani s Raspberry Pi - integrácia multiroomu, alarmu, ovládania tlačítkami a domácej automatizácie: Dnes vám chceme dať dva príklady toho, ako môžete Raspberry Pi používať s naším softvérom Max2Play na domácu automatizáciu: v kúpeľni a spálni . Oba projekty sú podobné v tom, že hudbu s vysokou vernosťou z rôznych zdrojov je možné streamovať prostredníctvom