Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
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
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.