Tartalomjegyzék:
- 1. lépés: A Linux Motion telepítése a Raspberry -re
- 2. lépés: A Google Fotók API beállítása a Python számára
- 3. lépés: Teszt
- 4. lépés: Választható: Állítsa be a webes hozzáférést a valós idejű streaming kamerához
- 5. lépés: Tippek
Videó: Raspberry Pi Linux Motion Google Photos integráció: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Az ötlet az, hogy a Raspberry Pi -hez csatlakoztatott mozgás aktivált kamerával készített fényképeket és videókat fel kell tölteni a fájlok feltöltéséhez a felhőbe. A „Motion” szoftver támogatja a PyDrive -on keresztüli feltöltést a Google Drive -ba. Ebben a cikkben a „Mozgás” kifejezést használják a Google Fotókba való feltöltésre.
Hardver:
Raspberry Pi 3B+
USB webkamera Logitech C920
A hardverválasztást nem határozták meg, csak elvettem, ami kéznél volt.
Feltételek:
A kényelem érdekében a Raspberry pi -nek a helyi hálózatban kell lennie - monitor/billentyűzet nélkül, és fájlok feltöltése/letöltése érdekében. Ehhez rendelkeznie kell ssh ügynökkel a számítógépén (pl. Gitt).
Nagyon köszönöm ssandbac -nak a nagyszerű bemutatót. Ha további információra van szüksége a környezet beállításáról, olvassa el ezt a cikket. Kölcsönkértem belőle a mozgástelepítést és a lépések konfigurálását, és néhány változtatást hozzáadtam. Különösen a fájlok és riasztások e -mailben való elküldése helyett ez a példa a Google fotók megosztott albumába való feltöltést használja, és az értesítési sávon értesítéseket kap a „hozzáadott fotókról”.
Íme a lépések:
1. lépés: A Linux Motion telepítése a Raspberry -re
Ebben a példában különösen a motion v4.0 volt használatos.
1.1 Frissítés pi
pi@raspberrypi: ~ $ sudo apt-get update
pi@raspberrypi: ~ $ sudo apt-get upgrade
1.2 Letöltési mozgás
pi@raspberrypi: ~ $ sudo apt-get install motion
1.3 Most szerkessze ezt a fájlt a következő módosításokkal
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Indítsa el démon (háttér) módban, és engedje el a terminált (alapértelmezett: ki)
démon be
# Használjon fájlt a naplóüzenetek mentéséhez, ha nincs definiálva stderr és syslog. (alapértelmezett: nincs megadva)
logfile /var/log/motion/motion.log
# Kép szélessége (képpont). Érvényes tartomány: kamerafüggő, alapértelmezett: 352
szélessége 1920
# A kép magassága (képpont). Érvényes tartomány: kamerafüggő, alapértelmezett: 288
magassága 1080
# A másodpercenként rögzíthető képkockák maximális száma.
képkockasebesség 30
# Megadja a mozgás előtti, előre rögzített (pufferelt) képek számát
előfogás 5
# A mozgás után rögzítendő képkockák száma már nem észlelhető
post_capture 5
# Mozgás észlelésekor „normál” képeket ad ki (alapértelmezett: be)
output_pictures ki
# A jpeg tömörítés által használt minőség (százalékban)
minőség 100
# Az ffmpeg segítségével valós időben kódolhatja a filmeket
ffmpeg_output_movies ki
# vagy az 1 - 100 tartomány, ahol az 1 a legrosszabb minőséget, a 100 pedig a legjobbat jelenti.
ffmpeg_variable_bitrate 100
# Videók készítésekor a képkockákat sokszorosítani kell sorrendben
ffmpeg_duplicate_frames hamis
# Bool az extpipe engedélyezéséhez vagy letiltásához (alapértelmezett: ki)
use_extpipe on
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx %h -framerate %fps -i pipe: 0 -vcodec libx264 -preset ultragyors -f mp4 %f.mp4
target_dir/var/lib/motion
# Parancs, amelyet filmfájl esetén kell végrehajtani
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Hagyja az utolsót pontosvesszővel (megjegyzés), hogy hagyja jóvá a megjegyzést, miután megbizonyosodott arról, hogy a videofelvétel és a feltöltés működik.
1.4 Ezután változtasson
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
pi@raspberrypi: ~ $ start_motion_daemon = igen
2. lépés: A Google Fotók API beállítása a Python számára
2.1 Javasoljuk, hogy hozzon létre egy új fiókot erre a célra, hogy megosszon egy albumot a fővel, hogy értesítést kapjon az új fájlok hozzáadásáról, valamint több tárhelyről. Engedélyezze a Google Fotók API -t a feltöltéshez használni kívánt fiókhoz.
Ezt követően rendelkeznie kell a credentials.json fájllal.
2.2 Python környezet beállítása
A környezet beállítása alapvetően csak málna esetén szükséges. Ehhez azonban engedélyre van szükség, amelyet kényelmesebb PC -n végrehajtani. Ehhez a málnán csatlakoztatnia kell a monitort/billentyűzetet, vagy be kell állítania egy távoli asztali felhasználói felületet. Most telepítettem ugyanazt a környezetet a málnára és a PC -re is. Tehát a 2.2.1..2.2.3 lépéseket PC -n, 2.2.1, 2.2.2, 2.2.5, 2.2.6 Rpi -n hajtottuk végre
2.2.1 a Python 3 telepítése
2.2.2 Telepítse a Google API csomagokat a kézikönyv szerint*(lásd 5.1)
PC -n
pip3 telepítés-frissítés google-api-python-client google-auth-httplib2 google-auth-oauthlib
A málnán
pi@raspberrypi: ~ $ sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 Nézze meg a szkript feltöltését a Google -fotókba. A github -ra van helyezve. Tegye ugyanabba a könyvtárba a credentials.json segítségével.
2.2.4 Készítsen néhány képet, és próbálja ki a feltöltést
python3 photos.py image.jpg
Telepítse a hiányzó függőségeket, ha vannak, és próbálja újra. Ennek eredményeként meg kell kapnia a token.pickle fájlt a szkript könyvtárában, valamint egy új megosztott albumot, amelyet a Google Fotók webes felületén hoztak létre az image-j.webp
2.2.5 Ossza meg az albumot a fiókkal, hogy mit szeretne értesíteni az új médiáról. Adja hozzá ezt a fiókot a telefonjához.
2.2.6 Tegye a photos.py és a token.pickle fájlokat a/var/lib/motion mappába. A „pi” felhasználó nem írhat a „motion” könyvtárába, ezért először töltse fel a /home /pi mappába
scp photos.py token.pickle pi@IP:/home/pi
Ezután jelentkezzen be a málnába, és helyezze át a fájlokat a sudo alatt
ssh pi@IP
pi@raspberrypi: ~ $ sudo mv photos.py token.pickle/var/lib/motion
2.2.7 Ellenőrizze, hogyan működik a feltöltés a málnán. Készítsen néhány képet az fswebcam segítségével, és próbálja meg feltölteni
pi@raspberrypi: ~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
Az image-j.webp
3. lépés: Teszt
3.1 Indítsa el a Motion szolgáltatást
pi@raspberrypi: ~ $ sudo service motion start
A parancsot leállíthatja vagy újraindíthatja
3.2 Mozgásnaplók engedélyezése
pi@raspberrypi: ~ $ tail -f /var/log/motion/motion.log
3.2 A kamera kimenetének megtekintése egy másik, ugyanahhoz a helyi hálózathoz csatlakoztatott eszközön. Írja be a böngészőbe:
IP: 8081
3.3 A naplók megtekintésével várjon, amíg a mozgást észleli, és a NAME.mp4 fájlt a/var/lib/motion fájlba írja. Ezután indítsa el a szkript manuális feltöltését
pi@raspberrypi: ~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Ellenőrizze a python nyomokat. Várja meg, amíg az event_end megjelenik a motion.log fájlban. Ezután menjen a „helloworld” albumhoz a Google -fotóiban, és ellenőrizze, hogy van -e feltöltött videó.
3.4 Ha a feltöltés sikeres, szüntesse meg a megjegyzést az /etc/motion.conf fájlban:
pi@raspberrypi: ~ $ sudo nano /etc/motion.conf
# Parancs, amelyet akkor kell végrehajtani, ha a filmfájl készen áll
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@málna: ~ $ szinkron
pi@raspberrypi: ~ $ sudo service motion restart
3.5 Nézze meg a mozgásnaplókat és az albumot, és ellenőrizze, hogy a videó automatikusan feltöltődött -e.
3.6 Opcionálisan ossza meg az albumot a fő fiókjával, hogy értesítést kapjon az új videó vagy fotó hozzáadásáról.
4. lépés: Választható: Állítsa be a webes hozzáférést a valós idejű streaming kamerához
Ez a lépés Michel Parreno oktatóanyagán alapul. Csak a FreeDNS -t választottam a NoIP helyett, ahogy itt ajánlott.
4.1 Engedélyezett hozzáférés konfigurálása a video streaming mozgókiszolgálóhoz:
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
# Állítsa be a hitelesítési módszert (alapértelmezett: 0)
# 0 = letiltva
# 1 = Alapszintű hitelesítés
# 2 = MD5 kivonat (a biztonságosabb hitelesítés)
stream_auth_method 2
# A folyam hitelesítése. Szintaxis felhasználónév: jelszó
# Alapértelmezett: nincs definiálva (Letiltva)
webcontrol_authentication felhasználónév: jelszó
# Maximális képkockasebesség adatfolyamokhoz (alapértelmezett: 1)
stream_maxrate 30
# A stream -kapcsolatok korlátozása csak a localhostra (alapértelmezett: be)
stream_localhost ki
Ha nem fogja használni a webes vezérlő felületet külső hálózatról, hagyja azt letiltva (alapértelmezés szerint)
# A vezérlőkapcsolatok korlátozása csak a localhostra (alapértelmezett: be)
webcontrol_localhost be
Továbbá, mivel a málna online elérhető, javaslom, hogy módosítsa az alapértelmezett málnajelszót
pi@raspberrypi: ~ $ passwd
Bár az ssh 22 -es port nincs átirányítva a málnára, mégis.
4.2 Lépjen a FreeDNS webhelyre
4.3 Regisztráljon
4.4 Aldomain hozzáadása (Tagoknak -> Aldomainek)
4.5 Válassza ki a Raspberry -re telepítendő DNS -ügyfelet (Tagoknak -> Dinamikus DNS -> Dinamikus DNS -erőforrások -> Dinamikus DNS -ügyfelek)
A wget_script update.sh -t választottam Adam Dean -től (az oldal alján)
Vannak helyőrzők _YOURAPIKEYHERE_ és _YOURDOMAINHERE_. Ezek eléréséhez lépjen a (Tagok -> Dinamikus DNS) oldalra
Az alábbi oldalon példákat talál az APIKEY és DOMAIN szkriptekre (a 4.4 -ben hozzáadott). Ezeket az értékeket a Wget Script -ből vettem, és lecseréltem _YOURAPIKEYHERE_ és _YOURDOMAINHERE_ fájlokat a update.sh -ban
4.6 Ezután futtassa az update.sh fájlt a málnán. Előfordulhat, hogy az nslookuphoz dnsutils szükséges. Telepítse akkor:
pi@raspberrypi: ~ $ sudo apt-get dnsutils
4.7 Ezután konfigurálja az útválasztót, hogy a külső világ kéréseit a 8081 -es portra irányítsa át a málna ip -jére
4.8 Foglalja le az ip -t a málna MAC -jára DHCP -beállításban, hogy az Rpi mindig ugyanazt az ip -t kapja
4.9 Ezután írja be a böngészőbe egy olyan eszközön, amely nem csatlakozik a helyi hálózathoz:
az Ön domainje: 8081
Adja meg a motion.conf fájlban megadott hitelesítő adatait.
Tesztelje a videó működését.
4.10 a DDNS frissítésének automatikus beállítása cron feladat. Lásd: quick_cron_example on (Tagok -> Dinamikus DNS)
5. lépés: Tippek
5.1 Legyen figyelmes a python csomagok málnára történő telepítésénél. Egy napot töltöttem a hibakereséssel - a probléma az volt, hogy a konzolról a szkript jól futott, de a mozgásesemények visszahívásából történő hívás nem. A helyzetet tovább rontotta, hogy az utóbbi esetben a forgatókönyv nyomai nem voltak elérhetők.
Ennek oka az volt, hogy az útmutatót követve telepítettem a csomagokat a „pi” felhasználó számára (amely alapértelmezés szerint a /home /pi könyvtárban van, és más felhasználók számára korlátozott), de a szkript „motion” szolgáltatásként való futtatásához a csomagokat „mozgás” felhasználó számára is elérhető. Így végül kijavítottam a csomagok telepítését
sudo pip3 …
Ez még mindig nem megfelelő módszer. Telepítés sudo nélkül, mint a pip3 -rendszer valamilyen okból hibákat adott nekem.
Ennek megfelelően a parancsfájlt is sudo alatt hívják (lásd motion.conf).
A hibaelhárítás során sok szükségtelen változtatást hajtottam végre, és nem tudom, mi szükséges, és most lusta vagyok, hogy fokozatosan visszagurítsam őket, és megnézzem, mikor fog működni. Különösen a mozgásadminisztrátori jogok biztosítottak:
pi@málna: ~ $ csoportok mozgása
motion: motion adm sudo audio video users netdev pi
pi@raspberrypi: ~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALL = (ALL) NOPASSWD: ALL
motion ALL = (ALL) NOPASSWD: ALL
A fájltulajdonosok és a Google Drive -ba való feltöltéshez hasonló engedélyek megváltoztatása is történt. Valószínűleg segíthet abban az esetben, ha hasonló problémája van.
5.2 A Google Fotók API csak fájlokat adhat hozzá a megosztott albumokhoz, hogy a link birtokában bárki hozzáférhessen. Ne ossza meg linkkel, és ne törölje a régi filmeket, és ne helyezze át a kukába vagy az albumból. Utóbbi esetben a számlán maradnak.
5.3 A Google Fotók Asszisztense arcokat észlel, ami nagyon hasznos, ha a kamera minősége megfelelő. Bónuszként fantasztikus média összeállításokat és gifeket készít stb.
5.4 Próbáltam 4G LTE USB modemet használni az internethez való hozzáféréshez, és itt vannak az eredményeim. Van egy https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ egy nagyon egyszerű útmutató a RaspAP használatával. 5.4.3 A dinamikus DNS nem működött a mobilom 4G hálózatában. Van magyarázat, hogy miért
5.5 Miután ezt a rendszert néhány hétig használta, kiderült, hogy bár a videók kényelmesebbek a megtekintéshez és a feltöltéshez, a Google Fotók jobban működik a képekkel. Például lehetővé teszi a dolgok/arcok csoportosítását, csak a képek elemzését, és csak ezután az arcok/dolgok keresését a videók képeiből, de nem az ellenkezőjét. Tehát tesztelni fogom a képeket, amelyek inkább videókat töltenek fel.
Ajánlott:
DIY intelligens garázskapu -nyitó + Home Assistant integráció: 5 lépés
DIY intelligens garázskapu -nyitó + otthoni asszisztens integráció: A DIY projekt segítségével okosabbá teheti normál garázskapuját. Megmutatom, hogyan kell felépíteni és irányítani a Home Assistant (MQTT) segítségével, és képes vagyok távolról kinyitni és bezárni a garázskaput. ESP8266 Wemos nevű táblát fogok használni
DIY Smart Doorbell: kód, beállítás és HA integráció: 7 lépés (képekkel)
DIY intelligens ajtócsengő: kód, beállítás és HA integráció: Ebben a projektben megmutatom, hogyan alakíthatja át normál ajtócsengőjét intelligenssé anélkül, hogy megváltoztatná a jelenlegi funkciókat vagy megszakítaná a vezetékeket. A Wemos D1 mini nevű ESP8266 lapot fogom használni. Új az ESP8266 -hoz? Nézze meg bemutatkozásomat
Vakvezérlés ESP8266, Google Home és Openhab integráció és webkontroll segítségével: 5 lépés (képekkel)
Vakszabályozás az ESP8266, a Google Home és az Openhab integráció és webkontroll segítségével: Ebben az utasításban megmutatom, hogyan adtam hozzá az automatikát a redőnyökhöz. Azt akartam, hogy hozzáadhassam és eltávolíthassam az automatizálást, így minden telepítés csipeszes állapotban van. A fő részek a következők: Léptetőmotor Léptetővezérlő által vezérelt ESP-01 Fogaskerék és szerelés
Arduino és Apple HomeKit integráció - Irányítsa otthonát a Siri -től! Az IoT itt van: 6 lépés
Arduino és Apple HomeKit integráció - Irányítsa otthonát a Siri -től! Az IoT itt van: Ez az Instructable gyors és egyszerű módot kínál arra, hogy arduino táblát adjon az Apple HomeKit készülékéhez iOS -eszközön. Mindenféle lehetőséget megnyit, beleértve a kiszolgálón futó szkripteket, az Apple HomeKit " Scene " -vel kombinálva
Egyszerű Arduino Uno és ESP8266 integráció: 6 lépés
Egyszerű Arduino Uno és ESP8266 integráció: Célunk egy Esp8266 AT parancskönyvtár létrehozása volt (az ITEAD könyvtár alapján), amely jól működik a szoftveres sorozatokon a legtöbb ESP8266 eszközön, feltéve, hogy rendelkeznek firmware -rel, amely válaszol az AT parancsokra (ez általában a gyártó alapértelmezett)