Turinys:
- 1 veiksmas: įdiekite „Linux Motion“į „Raspberry“
- 2 veiksmas: nustatykite „Google“nuotraukų API, skirtą „Python“
- 3 žingsnis: išbandykite
- 4 veiksmas: neprivaloma: sukonfigūruokite prieigą prie žiniatinklio prie realaus laiko transliacijos kameros
- 5 žingsnis: patarimai
Video: „Raspberry Pi Linux Motion“„Google“nuotraukų integravimas: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Idėja yra įkelti nuotraukas ir vaizdo įrašus, padarytus naudojant judesio aktyvuotą kamerą, prijungtą prie „Raspberry Pi“, kad būtų galima įkelti failus į debesį. „Motion“programinė įranga palaiko įkėlimą į „Google“diską per „PyDrive“. Šiame straipsnyje „Judėjimas“naudojamas įkelti į „Google“nuotraukas.
Techninė įranga:
Raspberry Pi 3B+
„USB“kamera „Logitech C920“
Techninės įrangos pasirinkimas nebuvo nustatytas, aš tiesiog pasiėmiau tai, kas buvo po ranka.
Būtinos sąlygos:
Patogumui „Raspberry pi“turėtų būti jūsų vietiniame tinkle - valdyti jį be monitoriaus/klaviatūros ir įkelti/atsisiųsti failus. Norėdami tai padaryti, kompiuteryje turėtumėte turėti ssh agentą (pvz., Glaistą).
Labai ačiū ssandbac už puikią pamoką. Jei jums reikia daugiau informacijos apie tai, kaip nustatyti aplinką, skaitykite šį straipsnį. Iš jo pasiskolinau judesio diegimo ir konfigūravimo veiksmus ir pridėjau keletą pakeitimų. Visų pirma, vietoj failų ir įspėjimų siuntimo el. Paštu šiame pavyzdyje naudojamas įkėlimas į „Google“nuotraukų bendrinamą albumą ir pranešimų juostoje gaunami pranešimai apie „pridėtas nuotraukas“.
Štai šie veiksmai:
1 veiksmas: įdiekite „Linux Motion“į „Raspberry“
Ypač šiame pavyzdyje buvo naudojamas judesys v4.0.
1.1 Atnaujinti pi
pi@raspberrypi: ~ $ sudo apt-get update
pi@raspberrypi: ~ $ sudo apt-get upgrade
1.2 Atsisiųsti judesį
pi@raspberrypi: ~ $ sudo apt-get install motion
1.3 Dabar redaguokite šį failą atlikdami šiuos pakeitimus
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Pradėkite demono (fono) režimu ir paleiskite terminalą (numatytasis: išjungtas)
demonas įjungtas
# Naudokite failą, kad išsaugotumėte žurnalų pranešimus, jei nenurodyta stderr ir syslog. (numatytasis: neapibrėžtas)
logfile /var/log/motion/motion.log
# Vaizdo plotis (pikseliais). Tinkamas diapazonas: priklauso nuo fotoaparato, numatytasis: 352
plotis 1920 m
# Vaizdo aukštis (pikseliais). Tinkamas diapazonas: priklauso nuo fotoaparato, numatytasis: 288
aukštis 1080
# Maksimalus kadrų, kuriuos reikia užfiksuoti per sekundę, skaičius.
kadrų dažnis 30
# Nurodo iš anksto užfiksuotų (buferinių) nuotraukų skaičių prieš judesį
5
# Kadrų, kuriuos reikia užfiksuoti po judesio, skaičius jau neaptinkamas
5
# Išveskite „normalias“nuotraukas, kai aptinkamas judesys (numatytasis: įjungtas)
output_pictures išjungtas
# Kokybė (procentais), naudojama jpeg glaudinimui
kokybė 100
# Naudokite ffmpeg, kad koduotumėte filmus realiuoju laiku
ffmpeg_output_movies išjungtas
# arba diapazonas nuo 1 iki 100, kur 1 reiškia blogiausią kokybę, o 100 - geriausia.
100 ffmpeg_variable_bitrate 100
# Kuriant vaizdo įrašus, ar kadrai turėtų būti dubliuojami eilės tvarka
ffmpeg_duplicate_frames klaidinga
# „Bool“, kad įjungtumėte arba išjungtumėte „Extpipe“(numatytasis: išjungtas)
use_extpipe on
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i pipe: 0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4
target_dir/var/lib/motion
# Komanda, kurią reikia vykdyti, kai yra filmo failas
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Paskutinį kartą palikite kabliataškiu (pakomentavo), kad galėtumėte nekomentuoti, įsitikinę, kad vaizdo įrašymas ir įkėlimas veikia.
1.4 Tada keiskite
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
pi@raspberrypi: ~ $ start_motion_daemon = taip
2 veiksmas: nustatykite „Google“nuotraukų API, skirtą „Python“
2.1 Rekomenduojama šiuo tikslu sukurti naują paskyrą, kad galėtumėte bendrinti albumą su pagrindiniu, kad gautumėte pranešimus apie pridėtus naujus failus ir daugiau vietos saugykloje. Įgalinkite „Google“nuotraukų API paskyroje, kurią ketinate įkelti.
Po to turėtumėte turėti failą credentials.json.
2.2 „Python“aplinkos sąranka
Iš esmės aplinkos nustatymas reikalingas tik avietėms. Tačiau tam reikia autorizacijos, kurią patogiau atlikti asmeniniame kompiuteryje. Norėdami tai padaryti naudodami avietę, turite prijungti monitorių/klaviatūrą arba nustatyti nuotolinio darbalaukio vartotojo sąsają. Aš ką tik įdiegiau tą pačią aplinką tiek avietėse, tiek asmeniniuose kompiuteriuose. Taigi 2.2.1..2.2.3 veiksmai buvo atlikti asmeniniame kompiuteryje, 2.2.1, 2.2.2, 2.2.5, 2.2.6 - Rpi
2.2.1 įdiegti „Python 3“
2.2.2 Įdiekite „Google“API paketus pagal vadovą*(žr. 5.1)
Kompiuteryje
pip3 install-upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Ant aviečių
pi@raspberrypi: ~ $ sudo pip3 install-upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 Patikrinkite scenarijaus įkėlimą į „Google“nuotraukas. Jis yra mano „github“. Įdėkite jį į tą patį katalogą su credentials.json.
2.2.4 Nufotografuokite ir išbandykite įkėlimą
python3 photos.py image.jpg
Įdiekite trūkstamas priklausomybes ir bandykite dar kartą. Dėl to turėtumėte gauti token.pickle scenarijaus kataloge ir naują bendrinamą albumą, sukurtą „Google“nuotraukų žiniatinklio sąsajoje su image.jpg. Kai gausite token.pickle, jums nebereikia credentials.json photos.py tame pačiame kataloge.
2.2.5 Bendrinkite albumą su paskyra, kur norite gauti pranešimus apie naują mediją. Pridėkite šią paskyrą prie savo telefono.
2.2.6 Įdėkite photos.py ir token.pickle į/var/lib/motion ant aviečių. „Pi“vartotojas negali rašyti „judesio režimui“, todėl pirmiausia įkelkite į /home /pi
scp photos.py token.pickle pi@IP:/home/pi
Tada prisijunkite prie aviečių ir perkelkite failus į „sudo“
ssh pi@IP
pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion
2.2.7 Patikrinkite, kaip įkėlimas veikia avietes. Padarykite nuotrauką naudodami „fswebcam“ir pabandykite ją įkelti
pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
Albume „helloworld“gali būti image.jpg, o telefono juostoje - pranešimas.
3 žingsnis: išbandykite
3.1 Paleiskite „Motion“paslaugą
pi@raspberrypi: ~ $ sudo paslaugos judesio pradžia
Komandą galite pakeisti į „stop“arba „restart“
3.2 Įgalinti judesio žurnalus
pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log
3.2 Peržiūrėkite fotoaparato išvestį kitame prie to paties vietinio tinklo prijungtame įrenginyje. Įveskite į naršyklę:
IP: 8081
3.3 Žiūrėdami į žurnalus, palaukite, kol bus aptiktas judesys ir failas NAME.mp4 įrašomas į/var/lib/motion. Tada paleiskite scenarijų įkėlimą rankiniu būdu
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Patikrinkite pitono pėdsakus. Palaukite, kol event_end bus rodomas „motion.log“. Tada eikite į „helloworld“albumą savo „Google“nuotraukose ir patikrinkite, ar yra įkeltas vaizdo įrašas.
3.4 Jei įkėlimas sėkmingas, pašalinkite komentarą /etc/motion.conf eilutėje:
pi@raspberrypi: ~ $ sudo nano /etc/motion.conf
# Komanda, kurią reikia vykdyti, kai filmo failas yra paruoštas
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi: ~ $ sync
pi@raspberrypi: ~ $ sudo paslaugos judesio paleidimas iš naujo
3.5 Žiūrėdami į judesio žurnalus ir albumą patikrinkite, ar vaizdo įrašas įkeltas automatiškai.
3.6 Pasirinktinai bendrinkite albumą su savo pagrindine paskyra, kad gautumėte pranešimą, kai bus pridėtas naujas vaizdo įrašas ar nuotrauka.
4 veiksmas: neprivaloma: sukonfigūruokite prieigą prie žiniatinklio prie realaus laiko transliacijos kameros
Šis žingsnis pagrįstas Michelio Parreno pamoka. Aš tiesiog pasirinkau „FreeDNS“, o ne „NoIP“, kaip čia rekomenduojama.
4.1 Įgaliotos prieigos prie vaizdo transliacijos judesio serverio konfigūravimas:
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Nustatykite autentifikavimo metodą (numatytasis: 0)
# 0 = išjungta
# 1 = Pagrindinis autentifikavimas
# 2 = MD5 santrauka (saugesnis autentifikavimas)
srautas_auto_metodas 2
# Srauto autentifikavimas. Sintaksės vartotojo vardas: slaptažodis
# Numatytasis: neapibrėžtas (išjungtas)
webcontrol_authentication vartotojo vardas: slaptažodis
# Maksimalus srautų srautų kadrų dažnis (numatytasis: 1)
30
# Apriboti srauto ryšius tik su „localhost“(numatytasis: įjungtas)
„stream_localhost“išjungtas
Jei nesinaudosite žiniatinklio valdymo sąsaja iš išorinio tinklo, palikite ją išjungtą (kaip numatyta)
# Apriboti valdymo ryšius tik su „localhost“(numatytasis: įjungtas)
„webcontrol_localhost“įjungtas
Be to, kadangi avietės prisijungia prie interneto, rekomenduoju pakeisti numatytąjį aviečių slaptažodį
pi@raspberrypi: ~ $ passwd
Nors ssh 22 prievadas nėra nukreiptas į avietę, vis tiek.
4.2 Eikite į „FreeDNS“svetainę
4.3 Užsiregistruokite
4.4 Pridėti padomenį (nariams -> Padomeniai)
4.5 Pasirinkite DNS klientą, kurį norite įdiegti „Raspberry“(nariams -> Dinaminis DNS -> Dinaminiai DNS ištekliai -> Dinaminiai DNS klientai)
Aš pasirinkau wget_script update.sh iš Adomo Deano (puslapio apačioje)
Yra vietos rezervavimo ženklų _YOURAPIKEYHERE_ ir _YOURDOMAINHERE_. Norėdami juos gauti, eikite į (Nariams -> Dinaminis DNS)
Žemiau esančiame puslapyje rasite scenarijų pavyzdžių su savo APIKEY ir DOMAIN (pridėta 4.4). Aš paėmiau šias vertes iš „Wget Script“ir pakeičiau _YOURAPIKEYHERE_ ir _YOURDOMAINHERE_ atnaujinime.sh
4.6 Tada paleiskite update.sh avietėje. „Nslookup“gali prireikti dnsutils. Įdiekite tada:
pi@raspberrypi: ~ $ sudo apt-get dnsutils
4.7 Tada sukonfigūruokite maršrutizatorių, kad jis nukreiptų išorinio pasaulio užklausas į 8081 prievadą į aviečių IP
4.8 Rezervuokite IP savo aviečių MAC DHCP nustatyme, kad Rpi visada turėtų tą patį IP
4.9 Tada įveskite įrenginio, neprijungto prie vietinio tinklo, naršyklę:
jūsų domenas: 8081
Įveskite savo kredencialus, kuriuos apibrėžėte programoje motion.conf.
Išbandykite, kaip veikia vaizdo įrašas.
4.10, norint atnaujinti DDNS automatiškai sąrankos cron užduotį. Žr. „Quick_cron_example on“(nariams -> Dinaminis DNS)
5 žingsnis: patarimai
5.1 Būkite atidūs diegdami python paketus ant aviečių. Aš praleidau dieną derindamas tai - problema buvo ta, kad scenarijus iš konsolės veikė gerai, bet skambinant iš judesio įvykio atšaukimo - ne. Dar blogiau buvo tai, kad pastaruoju atveju scenarijaus pėdsakų nebuvo.
Priežastis buvo ta, kad vadovaudamasis vadovu, įdiegiau paketus „pi“vartotojui (kuris pagal numatytuosius nustatymus yra kataloge /home /pi ir apribotas kitiems vartotojams), tačiau norint paleisti scenarijų kaip „motion“paslaugos antrąjį paketą, paketai turi būti prieinamas ir „judesio“vartotojui. Taigi galiausiai tai ištaisiau įdiegdamas paketus kaip
sudo pip3 …
Tai nėra tinkamas būdas, kuris vis dar veikia. Diegimas be „sudo“kaip „pip3“-sistema dėl kokių nors priežasčių man davė klaidų.
Atitinkamai scenarijus taip pat vadinamas sudo (žr. Motion.conf).
Šio trikčių šalinimo metu aš padariau daug nereikalingų pakeitimų ir nesu tikras, kas yra būtina, o dabar tingiu juos pamažu atkurti ir pamatyti, kada jis nustos veikti. Visų pirma suteiktos judesio administratoriaus teisės:
pi@raspberrypi: ~ $ grupės judesys
motion: motion adm sudo audio video users netdev pi
pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi VISI = (VISI) NEPASSWD: VISI
judesys ALL = (ALL) NOPASSWD: ALL
Taip pat buvo keičiami failų savininkai ir leidimai, panašūs į įkėlimą į „Google“diską. Tikriausiai tai gali jums padėti, jei turite panašią problemą.
5.2 „Google“nuotraukų API leidžia pridėti failus tik prie bendrinamų albumų, kad visi, turintys nuorodą, galėtų ją pasiekti. Nebendrinkite jo naudodami nuorodą ir ištrinkite senus filmus arba perkelkite juos į šiukšliadėžę arba iš albumo. Pastaruoju atveju jie lieka sąskaitoje.
5.3 „Google“nuotraukų asistentas aptinka veidus, o tai yra labai naudinga, jei fotoaparato kokybė yra gera. Kaip premiją jis sukuria išgalvotas žiniasklaidos kompiliacijas ir-g.webp
5.4 Bandžiau naudoti 4G LTE USB modemą prieigai prie interneto ir štai mano rezultatai. 5.4.1 „Huawei E3372h-153“veikia su avietėmis be jokių problemų ir papildomos programinės įrangos. Yra https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ tikrai lengvas vadovas, kaip tai padaryti naudojant „RaspAP“. 5.4.3 Dinaminis DNS neveikė mano mobiliojo ryšio 4G tinkle. Yra paaiškinimas, kodėl
5.5 Panaudojus šią sistemą porą savaičių paaiškėjo, kad nors vaizdo įrašus patogiau peržiūrėti ir įkelti, „Google“nuotraukos geriau veikia su vaizdais. Pvz., Tai leidžia daiktus/veidus grupuoti tik analizuojant vaizdus ir tik tada ieškoti veidų/daiktų iš vaizdo įrašuose esančių vaizdų, bet ne priešingai. Taigi aš išbandysiu vaizdus, įkeliančius gana vaizdo įrašus.
Rekomenduojamas:
„Google“nuotraukų laikrodis: 7 žingsniai (su nuotraukomis)
„Google“foto laikrodis: ši instrukcija parodo, kaip naudojant ESP32 ir LCD sukurti skaitmeninį laikrodį su atsitiktine tvarka rodomu nuotraukų vaizdu fone kiekvieną minutę. Nuotraukos paimtos iš jūsų bendrinamo „Google“nuotraukų albumo, tiesiog įveskite bendrinimo nuorodą ESP32 atliks darbą; >
Namų asistento Geigerio skaitiklio integravimas: 8 žingsniai
Namų asistento „Geiger“skaitiklio integravimas: Šioje pamokoje aš parodysiu, kaip pridėti individualius jutiklius prie HASS (namų asistentas), tiksliau, geigerio skaitiklio, tačiau procesas panašus ir su kitais jutikliais. Mes naudosime „NodeMCU“plokštę, „arduino“pagrįstą geigerio skaitiklį
„Raspberry Pi“skaitmeninis nuotraukų rėmelis: 5 žingsniai
„Raspberry Pi“skaitmeninis paveikslų rėmas: po 10 metų mano parduotuvėje pirktas skaitmeninis nuotraukų rėmelis nepavyko. Aš internete ieškojau pakaitalo ir sužinojau, kad panašus pakeitimas iš tikrųjų kainavo daugiau nei mano 10 metų senumo rėmas. Maniau, kad jie jau bus praktiškai laisvi. Akivaizdu, kad galėčiau
Išmanioji muzika miegamajame ir vonioje su „Raspberry Pi“- daugiabučio, signalizacijos, mygtukų valdymo ir namų automatikos integravimas: 7 žingsniai
Išmanioji muzika miegamajame ir vonioje su „Raspberry Pi“- integruotas daugiafunkcis kambarys, signalizacija, mygtukų valdymas ir namų automatizavimas: Šiandien norime pateikti du pavyzdžius, kaip galite naudoti „Raspberry Pi“su mūsų „Max2Play“programine įranga, skirta namų automatizavimui: vonios kambaryje ir miegamajame . Abu projektai yra panašūs tuo, kad aukštos kokybės muziką iš įvairių šaltinių galima transliuoti per
Šviesos diodų integravimas naudojant „Fischertechnik“: 4 žingsniai
Šviesos diodų integravimas naudojant „Fischertechnik“: šioje instrukcijoje aprašoma, kaip integruoti šviesos diodus su „fischertechnik“elementais! Mano pirminė vizija buvo sukurti mechaninį vaizdo žaidimą, kuris apšviestų šviesos diodus. Tada aš pradėjau tvarkytis su „Fischertechnik“„Eco Power“rinkiniu (#57485) ir supratau, kad