Satura rādītājs:

Raspberry Pi Linux Motion Google fotoattēlu integrācija: 5 soļi
Raspberry Pi Linux Motion Google fotoattēlu integrācija: 5 soļi

Video: Raspberry Pi Linux Motion Google fotoattēlu integrācija: 5 soļi

Video: Raspberry Pi Linux Motion Google fotoattēlu integrācija: 5 soļi
Video: Установка домашнего помощника на Raspberry Pi (2022) 2024, Decembris
Anonim
Raspberry Pi Linux Motion Google fotoattēlu integrācija
Raspberry Pi Linux Motion Google fotoattēlu integrācija

Ideja ir augšupielādēt fotoattēlus un videoklipus, kas izveidoti, izmantojot kustību aktivizētu kameru, kas savienota ar Raspberry Pi, lai augšupielādētu failus mākonī. Programma “Motion” atbalsta augšupielādi Google diskā, izmantojot PyDrive. Šajā rakstā “Kustība” tiek izmantota, lai augšupielādētu pakalpojumā Google fotoattēli.

Aparatūra:

Raspberry Pi 3B+

USB tīmekļa kamera Logitech C920

Aparatūras izvēle nebija noteikta, es vienkārši paņēmu to, kas bija pa rokai.

Priekšnosacījumi:

Ērtības labad Raspberry pi vajadzētu būt jūsu lokālajā tīklā - lai to kontrolētu bez monitora/tastatūras un augšupielādētu/lejupielādētu failus. Lai to izdarītu, datorā jābūt ssh aģentam (piemēram, tepe).

Liels paldies ssandbac par lielisko pamācību. Ja jums nepieciešama plašāka informācija par vides iestatīšanu, izlasiet šo rakstu. Es no tā aizņēmos kustības instalēšanu un darbību konfigurēšanu un pievienoju dažas izmaiņas. Jo īpaši, tā vietā, lai nosūtītu failus un brīdinājumus pa e -pastu, šajā piemērā tiek izmantota augšupielāde Google fotoattēlu kopīgotajā albumā un paziņojumu joslā tiek saņemti paziņojumi par “pievienotiem fotoattēliem”.

Tālāk ir norādītas darbības.

1. darbība: instalējiet Linux Motion vietnē Raspberry

Īpaši šajā piemērā tika izmantota kustība v4.0.

1.1 Atjaunināt pi

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get upgrade

1.2 Kustības lejupielāde

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

1.3 Tagad rediģējiet šo failu ar šādām izmaiņām

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

# Sāciet dēmona (fona) režīmā un atlaidiet termināli (noklusējums: izslēgts)

ieslēgts dēmons

# Izmantojiet failu, lai saglabātu žurnālu ziņojumus, ja netiek izmantoti stderr un syslog. (noklusējums: nav definēts)

logfails /var/log/motion/motion.log

# Attēla platums (pikseļi). Derīgs diapazons: atkarīgs no kameras, noklusējums: 352

platums 1920

# Attēla augstums (pikseļi). Derīgs diapazons: atkarīgs no kameras, noklusējums: 288

augstums 1080

# Maksimālais uzņemamo kadru skaits sekundē.

kadru ātrums 30

# Norāda iepriekš uzņemto (buferizēto) attēlu skaitu pirms kustības

5

# Kadru skaits, ko uzņemt pēc kustības, vairs netiek noteikts

post_capture 5

# Izvadiet “normālus” attēlus, kad tiek konstatēta kustība (noklusējums: ieslēgts)

output_pictures izslēgts

# Jpeg saspiešanai izmantojamā kvalitāte (procentos)

kvalitāte 100

# Izmantojiet ffmpeg, lai reāllaikā kodētu filmas

ffmpeg_output_movies izslēgts

# vai diapazons 1 - 100, kur 1 nozīmē sliktāko kvalitāti un 100 ir labākā.

ffmpeg_variable_bitrate 100

# Veidojot videoklipus, kadri ir jādublē secībā

ffmpeg_duplicate_frames nepatiesa

# Bool, lai iespējotu vai atspējotu ekstpipe (noklusējums: izslēgts)

use_extpipe on

extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i caurule: 0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4

target_dir/var/lib/motion

# Komanda, kas jāizpilda filmas faila gadījumā

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

Pēdējo atstājiet ar semikolu (komentēts), lai komentētu pēc tam, kad esat nodrošinājis, ka videoieraksts un augšupielāde darbojas.

1.4 Pēc tam mainiet

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

pi@raspberrypi: ~ $ start_motion_daemon = jā

2. darbība. Iestatiet Google fotoattēlu API Python

Iestatiet Google fotoattēlu API Python
Iestatiet Google fotoattēlu API Python
Iestatiet Google fotoattēlu API Python
Iestatiet Google fotoattēlu API Python

2.1 Šim nolūkam ieteicams izveidot jaunu kontu, lai kopīgotu albumu ar galveno, lai saņemtu paziņojumus par jaunu failu pievienošanu, kā arī vairāk vietas krātuvē. Iespējojiet Google fotoattēlu API kontam, kuru izmantosit augšupielādei.

Pēc tam jums vajadzētu iegūt failu credentials.json.

2.2 Python vides iestatīšana

Būtībā vides iestatīšana ir nepieciešama tikai avenēm. Bet tam ir nepieciešama autorizācija, kas ir ērtāk izpildāma datorā. Lai to izdarītu avenēs, tam jāpievieno monitors/tastatūra vai jāizveido attālās darbvirsmas lietotāja saskarne. Es tikko instalēju to pašu vidi gan avenēs, gan datorā. Tātad soļi 2.2.1..2.2.3 tika veikti personālajā datorā, 2.2.1, 2.2.2, 2.2.5, 2.2.6 Rpi

2.2.1 instalējiet Python 3

2.2.2 Instalējiet Google API paketes saskaņā ar rokasgrāmatu*(sk. 5.1)

Datorā

pip3 instalēt-jaunināt google-api-python-client google-auth-httplib2 google-auth-oauthlib

Uz aveņu

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

2.2.3 Pārbaudiet skripta augšupielādi Google fotoattēlos. Tas ir ievietots manā github. Ievietojiet to tajā pašā direktorijā ar credentials.json.

2.2.4 Uzņemiet attēlu un pārbaudiet augšupielādi

python3 photos.py image.jpg

Instalējiet trūkstošās atkarības, ja tādas ir, un mēģiniet vēlreiz. Rezultātā jums vajadzētu iegūt token.pickle skripta direktorijā un arī jaunu koplietojamu albumu, kas izveidots jūsu Google fotoattēlu tīmekļa saskarnē ar attēlu.jpg. Iegūstot token.pickle, jums vairs nav nepieciešami credentials.json vietnei photos.py tajā pašā direktorijā.

2.2.5 Kopīgojiet albumu ar kontu, kurā vēlaties saņemt paziņojumus par jaunu multivides pievienošanu. Pievienojiet šo kontu savam tālrunim.

2.2.6 Ievietojiet photos.py un token.pickle mapē/var/lib/motion on aveņu. “Pi” lietotājs nevar rakstīt “motion” dir, tāpēc vispirms augšupielādējiet to /home /pi

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

Pēc tam piesakieties avenēs un pārvietojiet failus zem sudo

ssh pi@IP

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

2.2.7 Pārbaudiet, kā augšupielāde darbojas avenēs. Uzņemiet kādu attēlu ar fswebcam un mēģiniet to augšupielādēt

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

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

Albumā “helloworld” varētu būt image-j.webp

3. darbība: pārbaudiet

3.1 Sāciet Motion pakalpojumu

pi@raspberrypi: ~ $ sudo pakalpojuma kustības sākšana

Jūs varat mainīt komandu uz "stop" vai "restart"

3.2 Iespējot kustību žurnālus

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

3.2 Skatiet kameras izvadi citā ierīcē, kas savienota ar to pašu vietējo tīklu. Ievadiet pārlūkprogrammā:

IP: 8081

3.3 Aplūkojot žurnālus, pagaidiet, līdz tiek konstatēta kustība un fails NAME.mp4 tiek ierakstīts mapē/var/lib/motion. Pēc tam manuāli palaidiet skripta augšupielādi

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

Pārbaudiet pitona pēdas. Pagaidiet, kamēr event_end tiks parādīts kustībā.log. Pēc tam dodieties uz albumu “helloworld” savos Google fotoattēlos un pārbaudiet, vai ir augšupielādēts videoklips.

3.4 Ja augšupielāde ir veiksmīga, komentējiet /etc/motion.conf rindā:

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

# Komanda, kas jāizpilda, kad filmas fails ir gatavs

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

pi@raspberrypi: ~ $ sync

pi@raspberrypi: ~ $ sudo pakalpojuma kustības restartēšana

3.5 Skatoties kustību žurnālos un albumā, pārbaudiet, vai videoklips tiek augšupielādēts automātiski.

3.6 Pēc izvēles kopīgojiet albumu ar savu galveno kontu, lai saņemtu paziņojumu par jaunā videoklipa vai fotoattēla pievienošanu.

4. darbība: pēc izvēles: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai

Neobligāti: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai
Neobligāti: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai
Neobligāti: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai
Neobligāti: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai
Neobligāti: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai
Neobligāti: konfigurējiet piekļuvi tīmeklim reāllaika straumēšanas kamerai

Šis solis ir balstīts uz Mišela Parreno apmācību. Es vienkārši izvēlējos FreeDNS, nevis NoIP, kā ieteikts šeit.

4.1 Konfigurējiet autorizētu piekļuvi video straumēšanas kustību serverim:

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

# Iestatiet autentifikācijas metodi (noklusējums: 0)

# 0 = atspējots

# 1 = Pamata autentifikācija

# 2 = MD5 īssavilkums (drošāka autentifikācija)

straume_auth_metode 2

# Straumes autentifikācija. Sintakses lietotājvārds: parole

# Noklusējums: nav definēts (atspējots)

webcontrol_authentication lietotājvārds: parole

# Maksimālais kadru ātrums straumēm (noklusējums: 1)

30. straume

# Ierobežot straumes savienojumus tikai ar localhost (noklusējums: ieslēgts)

stream_localhost izslēgts

Ja jūs neizmantojat tīmekļa vadības saskarni no ārējā tīkla, atstājiet to atspējotu (pēc noklusējuma)

# Ierobežot vadības savienojumus tikai ar localhost (noklusējums: ieslēgts)

webcontrol_localhost ir ieslēgts

Turklāt, tā kā avenes ir tiešsaistē, iesaku mainīt aveņu noklusējuma paroli

pi@raspberrypi: ~ $ passwd

Lai gan ssh 22. ports nav novirzīts uz aveņu, tomēr.

4.2 Dodieties uz FreeDNS vietni

4.3 Reģistrēties

4.4 Pievienot apakšdomēnu (dalībniekiem -> apakšdomēni)

4.5 Izvēlieties DNS klientu, ko instalēt Raspberry (Dalībniekiem -> Dinamiskais DNS -> Dinamiskie DNS resursi -> Dinamiskie DNS klienti)

Es izvēlējos wget_script update.sh no Adam Dean (lapas apakšā)

Ir vietturi _YOURAPIKEYHERE_ un _YOURDOMAINHERE_. Lai tos iegūtu, dodieties uz (Dalībniekiem -> Dinamiskais DNS)

Tālāk esošajā lapā atradīsit skriptu piemērus ar savu APIKEY un DOMAIN (tas, kas pievienots 4.4). Es paņēmu šīs vērtības no Wget Script un nomainīju _YOURAPIKEYHERE_ un _YOURDOMAINHERE_ vietnē update.sh

4.6 Pēc tam palaidiet update.sh uz aveņu. Tas var prasīt dnsutils nslookup. Instalējiet to pēc tam:

pi@raspberrypi: ~ $ sudo apt-get dnsutils

4.7 Pēc tam konfigurējiet savu maršrutētāju, lai pārvirzītu ārējās pasaules pieprasījumus uz 8081 portu uz aveņu ip

4.8 Rezervējiet IP savu aveņu MAC DHCP iestatījumā, lai Rpi vienmēr būtu vienāds ip

4.9. Pēc tam ievadiet pārlūkprogrammā ierīcē, kas nav savienota ar vietējo tīklu:

jūsu domēns: 8081

Ievadiet savus akreditācijas datus, ko definējāt kustībā.conf.

Pārbaudiet, kā darbojas video.

4.10, lai atjauninātu DDNS automātiski iestatīt cron uzdevumu. Skatīt Quick_cron_example on (Dalībniekiem -> Dinamiskais DNS)

5. solis: padomi

5.1 Esiet uzmanīgs, instalējot pitona pakotnes uz avenēm. Es pavadīju dienu, lai to atkļūdotu - problēma bija tāda, ka skripts no konsoles darbojās labi, bet zvanīšana no kustības notikuma atzvanīšanas - ne. Vēl vairāk pasliktināja tas, ka pēdējos gadījumos skripta pēdas nebija pieejamas.

Iemesls bija tāds, ka, ievērojot rokasgrāmatu, es instalēju paketes “pi” lietotājam (kas pēc noklusējuma ir direktorijā /home /pi un ir ierobežots citiem lietotājiem), bet, lai skriptu palaistu kā “kustības” pakalpojuma bērnu, pakotnēm jābūt pieejams arī “kustības” lietotājam. Tāpēc beidzot es to laboju, instalējot paketes kā

sudo pip3…

Tas nav pareizs veids, kas joprojām darbojas. Instalēšana bez sudo kā pip3 -sistēma kaut kādu iemeslu dēļ man radīja kļūdas.

Attiecīgi skriptu sauc arī zem sudo (sk. Motion.conf).

Šīs problēmu novēršanas laikā es veicu daudzas nevajadzīgas izmaiņas un neesmu pārliecināts, kas ir nepieciešams, un tagad esmu slinks, lai tās pakāpeniski atgrieztu un redzētu, kad tas pārstās darboties. Jo īpaši piešķirtas kustības administratora tiesības:

pi@raspberrypi: ~ $ grupas kustība

kustība: kustība adm sudo audio video lietotāji netdev pi

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

pi ALL = (ALL) NOPASSWD: ALL

kustība ALL = (ALL) NOPASSWD: ALL

Mainījās arī failu īpašnieki un atļaujas, kas līdzīgas augšupielādei Google diskā. Iespējams, tas var jums palīdzēt, ja jums ir līdzīga problēma.

5.2 Google fotoattēlu API ļauj pievienot failus koplietotajiem albumiem, lai ikviens, kam ir saite, varētu tam piekļūt. Nekopīgojiet to ar saiti un dzēsiet vecās filmas vai pārvietojiet tās uz miskasti vai no albuma. Pēdējā gadījumā tie paliek kontā.

5.3 Google fotoattēlu palīgs nosaka sejas, kas ir ļoti noderīgi, ja kameras kvalitāte ir laba. Kā bonuss tas padara izsmalcinātus mediju apkopojumus un-g.webp

5.4 Es mēģināju izmantot 4G LTE USB modemu, lai piekļūtu internetam, un šeit ir mani rezultāti. 5.4.1. Huawei E3372h-153 bez problēmām darbojas kopā ar avenēm un papildu programmatūru. Ir https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ patiešām vienkāršs ceļvedis, kā to izdarīt, izmantojot RaspAP. 5.4.3 Dinamiskais DNS nedarbojās manas pārneses 4G tīklā. Ir izskaidrojums, kāpēc

5.5 Pēc šīs sistēmas izmantošanas pāris nedēļas izrādījās, lai gan videoklipus ir ērtāk apskatīt un augšupielādēt, Google fotoattēli darbojas labāk ar attēliem. Piemēram, tas ļauj lietu/seju grupēšanai analizēt tikai attēlus un tikai pēc tam meklēt sejas/lietas no videoklipos redzamajiem attēliem, bet ne otrādi. Tāpēc es pārbaudīšu attēlus, augšupielādējot videoklipus.

Ieteicams: