Raspberry Pi Linux Motion Google Photos -integraatio: 5 vaihetta
Raspberry Pi Linux Motion Google Photos -integraatio: 5 vaihetta
Anonim
Raspberry Pi Linux Motion Google Photos -integraatio
Raspberry Pi Linux Motion Google Photos -integraatio

Ajatuksena on ladata valokuvia ja videoita, jotka on tehty Raspberry Pi -liitäntään yhdistetyllä liikeaktivoidulla kameralla tiedostojen lataamiseksi pilveen. Motion -ohjelmisto tukee lataamista Google Driveen PyDriven kautta. Tässä artikkelissa liikettä käytetään lataamiseen Google -kuviin.

Laitteisto:

Vadelma Pi 3B+

USB -verkkokamera Logitech C920

Laitteiston valintaa ei määritetty, otin vain sen, mikä oli käsillä.

Edellytykset:

Mukavuuden vuoksi Raspberry pi pitäisi olla paikallisessa verkossa - hallita sitä ilman näyttöä/näppäimistöä ja ladata/ladata tiedostoja. Tätä varten sinulla pitäisi olla ssh agentti tietokoneellasi (esim. Kitti).

Paljon kiitoksia ssandbacille loistavasta opetusohjelmasta. Jos tarvitset lisätietoja ympäristön määrittämisestä, tutustu tähän artikkeliin. Lainasin siitä liikeasennusta ja vaiheiden konfigurointia ja lisäsin joitain muutoksia. Erityisesti tiedostojen ja hälytysten lähettämisen sijaan tämä esimerkki käyttää lataamista Google -valokuvien jaettuun albumiin ja ilmoituspalkissa olevien ilmoitusten tapaan "lisättyjä valokuvia".

Tässä on vaiheet:

Vaihe 1: Asenna Linux Motion Raspberryen

Erityisesti tässä esimerkissä käytettiin liikettä v4.0.

1.1 Päivitys pi

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Lataa liike

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

1.3 Muokkaa nyt tätä tiedostoa seuraavilla muutoksilla

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

# Käynnistä demoni (tausta) -tilassa ja vapauta pääte (oletus: pois päältä)

daemon päällä

# Tallenna lokiviestit tiedoston avulla, jos ei ole määritelty stderr ja syslog. (oletus: ei määritelty)

logfile /var/log/motion/motion.log

# Kuvan leveys (pikseliä). Kelvollinen alue: Kamerariippuvainen, oletus: 352

leveys 1920

# Kuvan korkeus (pikseliä). Kelvollinen alue: Kamerariippuvainen, oletus: 288

korkeus 1080

# Tallennettavien kuvien enimmäismäärä sekunnissa.

kehysnopeus 30

# Määrittää ennen ottoa otettujen (puskuroitujen) kuvien määrän

esikaappaus 5

# Liikkeen jälkeen otettavien kuvien määrää ei enää havaita

post_capture 5

# Tulosta "normaaleja" kuvia, kun liike havaitaan (oletus: päällä)

output_pictures pois päältä

# Jpeg -pakkauksen käyttämä laatu (prosentteina)

laatu 100

# Käytä ffmpeg -ohjelmaa elokuvien koodaamiseen reaaliajassa

ffmpeg_output_movies pois päältä

# tai alue 1-100, jossa 1 tarkoittaa huonointa laatua ja 100 on parasta.

ffmpeg_variable_bitrate 100

# Kun videoita luodaan, kehykset tulee kopioida järjestyksessä

ffmpeg_duplicate_frames epätosi

# Bool ottaa käyttöön tai poistaa käytöstä extpipe (oletus: pois päältä)

use_extpipe päällä

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i pipe: 0 -vcodec libx264 -esiasetus ultranopea -f mp4 %f.mp4

target_dir/var/lib/motion

# Komento suoritetaan, kun elokuvatiedosto

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

Jätä viimeinen puolipisteellä toistaiseksi (kommentoitu) kommentoitavaksi sen jälkeen, kun olet varmistanut, että videotallennus ja -lataus toimivat.

1.4 Vaihda sitten

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

pi@raspberrypi: ~ $ start_motion_daemon = kyllä

Vaihe 2: Määritä Google Photos -sovellusliittymä Pythonille

Asenna Google Kuvat -sovellusliittymä Pythonille
Asenna Google Kuvat -sovellusliittymä Pythonille
Asenna Google Kuvat -sovellusliittymä Pythonille
Asenna Google Kuvat -sovellusliittymä Pythonille

2.1 On suositeltavaa luoda uusi tili tätä tarkoitusta varten, jotta voit jakaa albumin tärkeimmän kanssa, jotta saat ilmoituksia uusien tiedostojen lisäämisestä ja lisää tallennustilaa. Ota käyttöön Google -kuvien sovellusliittymä tilille, jota aiot käyttää lataamiseen.

Sinulla pitäisi olla credentials.json -tiedosto tämän jälkeen.

2.2 Python -ympäristön asetukset

Pohjimmiltaan ympäristön määritys vaaditaan vain vadelmalla. Mutta se vaatii oauth -valtuutuksen, joka on helpompi suorittaa tietokoneella. Voit tehdä tämän vadelmassa liittämällä siihen näytön/näppäimistön tai määrittämällä etätyöpöydän käyttöliittymän. Asensin juuri saman ympäristön vadelmalle ja PC: lle. Joten vaiheet 2.2.1..2.2.3 tehtiin PC: llä, 2.2.1, 2.2.2, 2.2.5, 2.2.6 Rpi: llä

2.2.1 asenna Python 3

2.2.2 Asenna google -apipaketit ohjeen mukaan*(katso 5.1)

PC: llä

pip3 asennus-päivitä google-api-python-client google-auth-httplib2 google-auth-oauthlib

Vadelman päällä

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

2.2.3 Tarkista skriptien lataaminen google -kuviin. Se on sijoitettu githubiini. Laita se samaan hakemistoon credentials.json -tiedoston avulla.

2.2.4 Ota kuva ja testaa lataamista

python3 photos.py image.jpg

Asenna puuttuvat riippuvuudet ja yritä uudelleen. Tämän seurauksena sinun pitäisi saada token.pickle komentosarjan hakemistoon ja myös uusi jaettu albumi, joka on luotu Google -valokuvien verkkokäyttöliittymässä image-j.webp

2.2.5 Jaa albumi tilin kanssa siitä, mitä haluat saada ilmoituksia uudesta mediasta. Lisää tämä tili puhelimeesi.

2.2.6 Lisää photos.py ja token.pickle kohtaan/var/lib/motion vadelmalla. "Pi" -käyttäjä ei voi kirjoittaa "liikkeen ohjaimille", joten lataa ensin /home /pi

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

Kirjaudu sitten vadelmaan ja siirrä tiedostot sudon alle

ssh pi@IP

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

2.2.7 Tarkista, miten lataaminen toimii vadelmalla. Ota kuva fswebcamilla ja yritä ladata se

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

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

Albumissa "helloworld" voisi olla image-j.webp

Vaihe 3: Testaa

3.1 Käynnistä Motion -palvelu

pi@raspberrypi: ~ $ sudo -palvelun liike käynnistyy

Voit muuttaa komennon "stop" tai "restart"

3.2 Ota liikelokit käyttöön

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

3.2 Tarkastele kameran lähtöä toisessa laitteessa, joka on kytketty samaan paikalliseen verkkoon. Kirjoita selaimeen:

IP: 8081

3.3 Lokeja tarkasteltaessa odota, kunnes liike havaitaan ja tiedosto NAME.mp4 kirjoitetaan tiedostoon/var/lib/motion. Käynnistä sitten käsikirjoituksen lataaminen manuaalisesti

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

Tarkista python -jäljet. Odota, kunnes event_end näkyy motion.logissa. Siirry sitten Google -kuvien "helloworld" -albumiin ja tarkista, onko video ladattu.

3.4 Jos lataus onnistuu, poista kommentti /etc/motion.conf -riviltä:

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

# Komento suoritetaan, kun elokuvatiedosto on valmis

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

pi@raspberrypi: ~ $ sync

pi@raspberrypi: ~ $ sudo -palveluliikkeen uudelleenkäynnistys

3.5 Tarkista liikelokeista ja albumista, onko video ladattu automaattisesti.

3.6 Voit halutessasi jakaa albumin päätilisi kanssa, jotta saat ilmoituksen, kun uusi video tai valokuva lisätään.

Vaihe 4: Valinnainen: Määritä Web -käyttöoikeus reaaliaikaiseen suoratoistokameraan

Valinnainen: Määritä verkkokäyttö reaaliaikaiseen suoratoistokameraan
Valinnainen: Määritä verkkokäyttö reaaliaikaiseen suoratoistokameraan
Valinnainen: Määritä verkkokäyttö reaaliaikaiseen suoratoistokameraan
Valinnainen: Määritä verkkokäyttö reaaliaikaiseen suoratoistokameraan
Valinnainen: Määritä verkkokäyttö reaaliaikaiseen suoratoistokameraan
Valinnainen: Määritä verkkokäyttö reaaliaikaiseen suoratoistokameraan

Tämä vaihe perustuu Michelin Parreno -opetusohjelmaan. Valitsin juuri FreeDNS: n NoIP: n sijasta, kuten täällä suositellaan.

4.1 Määritä valtuutettu pääsy videon suoratoistopalvelimeen:

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

# Aseta todennusmenetelmä (oletus: 0)

# 0 = pois käytöstä

# 1 = Perustodennus

# 2 = MD5 -tiivistelmä (turvallisempi todennus)

stream_auth_metode 2

# Striimin todennus. Syntaksin käyttäjätunnus: salasana

# Oletus: ei määritelty (poistettu käytöstä)

webcontrol_authentication käyttäjätunnus: salasana

# Suurin kuvataajuus striimeille (oletus: 1)

stream_maxrate 30

# Rajoita suora yhteys vain localhostiin (oletus: päällä)

stream_localhost pois päältä

Jos et aio käyttää ulkoisen verkon web -käyttöliittymää, jätä se pois käytöstä (oletusarvoisesti)

# Rajoita ohjausyhteydet vain localhostiin (oletus: päällä)

webcontrol_localhost päällä

Lisäksi koska vadelma siirtyy verkkoon, suosittelen vaihtamaan vadelman oletussalasanan

pi@raspberrypi: ~ $ passwd

Vaikka ssh -porttia 22 ei ole reititetty vadelmaan, silti.

4.2 Siirry FreeDNS -sivustoon

4.3 Rekisteröidy

4.4 Lisää aliverkkotunnus (jäsenille -> aliverkkotunnukset)

4.5 Valitse Raspberryen asennettava DNS -asiakas (jäsenille -> dynaaminen DNS -> dynaamiset DNS -resurssit -> dynaamiset DNS -asiakkaat)

Valitsin wget_script update.sh Adam Deanilta (sivun alaosassa)

Paikkamerkkejä on _YOURAPIKEYHERE_ ja _YOURDOMAINHERE_. Saat ne valitsemalla (Jäsenille -> Dynaaminen DNS)

Alla olevalta sivulta löydät esimerkkejä APIKEY- ja DOMAIN -skripteistä (lisätty 4.4). Otin nämä arvot Wget Scriptistä ja korvasin _YOURAPIKEYHERE_ ja _YOURDOMAINHERE_ päivityksessä.sh

4.6 Suorita sitten update.sh vadelmalla. Se voi vaatia dnsutils nslookup. Asenna se sitten:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Määritä sitten reitittimesi ohjaamaan ulkoisen maailman pyynnöt uudelleen 8081 -porttiin vadelman IP -osoitteeseen

4.8 Varaa ip: n vadelman MAC DHCP -asetukselle, jotta Rpi: llä on aina sama IP

4.9 Kirjoita sitten selaimeen laitteessa, joka ei ole yhteydessä paikalliseen verkkoon:

verkkotunnuksesi: 8081

Kirjoita liikkeessä motion.conf määrittämäsi tunnistetiedot.

Testaa kuinka video toimii.

4.10 DDNS: n automaattisen asennuksen päivittämiseksi cron -tehtävä. Katso quick_cron_example on (Jäsenille -> Dynaaminen DNS)

Vaihe 5: Vinkkejä

5.1 Asenna python -paketit vadelmaan huolellisesti. Käytin päivän virheenkorjaukseen - ongelma oli se, että komentosarja toimi hyvin, mutta liiketapahtuman takaisinsoiton kutsuminen ei. Pahinta oli se, että jälkiä käsikirjoituksesta ei ollut saatavilla jälkimmäisessä tapauksessa.

Syy oli se, että oppaan mukaisesti asensin paketit 'pi' -käyttäjälle (joka on oletusarvoisesti hakemistossa /home /pi ja rajoitettu muille käyttäjille), mutta jotta komentosarja voitaisiin suorittaa liike -palvelun lapsena, paketit on saatavana myös "liike" -käyttäjälle. Joten lopulta korjasin sen asentamalla paketit nimellä

sudo pip3…

Tämä ei ole oikea tapa toimia edelleen. Asennus ilman sudoa nimellä pip3 -järjestelmä antoi minulle virheitä jostain syystä.

Vastaavasti komentosarjaa kutsutaan myös sudona (katso motion.conf).

Tämän vianetsinnän aikana tein paljon tarpeettomia muutoksia enkä ole varma tarvittavista ja nyt olen liian laiska kääntämään niitä asteittain taaksepäin ja katsomaan, milloin se lakkaa toimimasta. Erityisesti myönnetyt liikkeen järjestelmänvalvojan oikeudet:

pi@raspberrypi: ~ $ ryhmien liike

liike: liike adm sudo audio video käyttäjät netdev pi

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

pi ALL = (KAIKKI) NOPASSWD: KAIKKI

liike KAIKKI = (KAIKKI) NOPASSWD: KAIKKI

Myös tiedostojen omistajien ja käyttöoikeuksien muuttaminen muistuttaa lataamista Google Driveen. Luultavasti se voi auttaa sinua, jos sinulla on samanlainen ongelma.

5.2 Google Kuvat -sovellusliittymän avulla voit lisätä tiedostoja jaettuihin albumeihin vain siten, että kaikki linkin saaneet voivat käyttää sitä. Älä jaa sitä linkin kautta ja poista vanhoja elokuvia tai siirrä niitä roskakoriin tai albumista. Jälkimmäisessä tapauksessa ne jäävät tilille.

5.3 Google -valokuvien avustaja tunnistaa kasvot, mikä on varsin hyödyllistä, jos kameran laatu on hyvä. Bonuksena se tekee hienoja median kokoelmia ja-g.webp

5.4 Yritin käyttää 4G LTE USB -modeemia Internet-yhteyteen, ja tässä ovat tulokset. Siellä on https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ todella helppo opas kuinka tehdä se RaspAP: n avulla. 5.4.3 Dynaaminen DNS ei toiminut carrieni 4G -verkossa. On selitys miksi

5.5 Kun tätä järjestelmää oli käytetty muutaman viikon ajan, vaikka videoita on helpompi katsella ja ladata, Google Kuvat toimii paremmin kuvien kanssa. Esimerkiksi se mahdollistaa asioiden/kasvojen ryhmittelyn vain kuvien analysoimiseksi ja vasta sitten kasvojen/asioiden etsimisen videoiden kuvista, mutta ei päinvastoin. Joten aion testata kuvia, jotka lataavat pikemminkin videoita.