İçindekiler:
- Adım 1: Linux Motion'ı Raspberry'ye yükleyin
- 2. Adım: Python için Google Fotoğraflar API'sini kurun
- 3. Adım: Test edin
- 4. Adım: İsteğe bağlı: Gerçek Zamanlı Akış Kamerasına Web Erişimini Yapılandırın
- Adım 5: İpuçları
Video: Raspberry Pi Linux Motion Google Fotoğraflar Entegrasyonu: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Buradaki fikir, dosyaları bir buluta yüklemek için Raspberry Pi'ye bağlı hareketle etkinleştirilen kamera ile yapılan fotoğrafları ve videoları yüklemek. "Hareket" yazılımı, PyDrive aracılığıyla Google Drive'a yüklemeyi destekler. Bu makalede, Google Fotoğraflar'a yüklemek için 'Hareket' kullanılmıştır.
Donanım:
Ahududu Pi 3B+
USB Web Kamerası Logitech C920
Donanım seçimi belirlenmedi, sadece elimde olanı aldım.
Önkoşullar:
Kolaylık sağlamak için Raspberry pi yerel ağınızda olmalıdır – monitör/klavye olmadan kontrol etmek ve dosya yüklemek/indirmek için. Bunun için PC'nizde ssh aracısı olmalıdır (örn. macun).
Harika bir eğitim için ssandbac'a çok teşekkürler. Ortamın nasıl kurulacağı hakkında daha fazla bilgiye ihtiyacınız varsa bu makaleye göz atın. Hareket kurulumunu ve adımlarını ondan ödünç aldım ve bazı değişiklikler ekledim. Özellikle, bu örnek, dosya ve uyarıları e-postayla göndermek yerine, google photos paylaşılan albümüne yüklemeyi ve bildirim çubuğunda “eklenen fotoğraflar” türünden bildirimler almayı kullanır.
İşte adımlar:
Adım 1: Linux Motion'ı Raspberry'ye yükleyin
Bu örnekte özellikle hareket v4.0 kullanılmıştır.
1.1 pi'yi güncelle
pi@raspberrypi:~ $ sudo apt-get güncellemesi
pi@raspberrypi:~ $ sudo apt-get yükseltmesi
1.2 İndirme hareketi
pi@raspberrypi:~ $ sudo apt-get yükleme hareketi
1.3 Şimdi bu dosyayı aşağıdaki değişikliklerle düzenleyin
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
# Daemon (arka plan) modunda başlayın ve terminali bırakın (varsayılan: kapalı)
arka plan programı
# Tanımlanmamış stderr ve syslog kullanılıyorsa, günlük mesajlarını kaydetmek için bir dosya kullanın. (varsayılan: tanımlanmadı)
günlük dosyası /var/log/motion/motion.log
# Görüntü genişliği (piksel). Geçerli aralık: Kameraya bağlı, varsayılan: 352
genişlik 1920
# Görüntü yüksekliği (piksel). Geçerli aralık: Kameraya bağlı, varsayılan: 288
yükseklik 1080
# Saniyede yakalanacak maksimum kare sayısı.
çerçeve hızı 30
# Hareketten önce yakalanmış (arabelleğe alınmış) resimlerin sayısını belirtir
ön_yakalama 5
# Hareket algılanmadığında çekilecek kare sayısı
post_capture 5
# Hareket algılandığında 'normal' resimlerin çıktısını alın (varsayılan: açık)
output_pictures kapalı
# jpeg sıkıştırması tarafından kullanılacak kalite (yüzde olarak)
kalite 100
# Filmleri gerçek zamanlı olarak kodlamak için ffmpeg kullanın
ffmpeg_output_movies kapalı
# veya 1 - 100 aralığı, burada 1 en kötü kalite ve 100 en iyi kalite anlamına gelir.
ffmpeg_variable_bitrate 100
# Video oluştururken kareler sırayla çoğaltılmalı mı
ffmpeg_duplicate_frames yanlış
# Expipe'ı etkinleştirmek veya devre dışı bırakmak için Bool (varsayılan: kapalı)
use_extpipe açık
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/hareket
# Bir film dosyası olduğunda yürütülecek komut
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
Video kaydı ve yüklemenin çalıştığından emin olduktan sonra sonuncuyu noktalı virgülle (yorum yapıldı) şimdilik bırakın.
1.4 Sonra değiştir
pi@raspberrypi:~ $ sudo nano /etc/default/motion
pi@raspberrypi:~ $ start_motion_daemon=evet
2. Adım: Python için Google Fotoğraflar API'sini kurun
2.1 Yeni dosyalar eklendiğinde bildirim almak ve daha fazla depolama alanı almak için bir albümü ana hesabınızla paylaşmak için bu amaçla yeni bir hesap oluşturmanız önerilir. Yükleme için kullanacağınız hesap için Google Fotoğraflar API'sini etkinleştirin.
Bundan sonra kimlik bilgileri.json dosyanız olmalıdır.
2.2 Python ortamı kurulumu
Temel olarak ortam kurulumu yalnızca ahudududa gereklidir. Ancak, PC'de gerçekleştirmek için daha uygun olan oauth yetkilendirmesi gerektirir. Bunu ahududu üzerinde yapmak için, monitör/klavyeyi ona bağlamanız veya bazı uzak masaüstü kullanıcı arayüzü kurmanız gerekir. Aynı ortamı hem ahududu hem de PC'ye kurdum. Böylece 2.2.1..2.2.3 adımları PC'de, 2.2.1, 2.2.2, 2.2.5, 2.2.6 Rpi'de yapıldı.
2.2.1 Python 3'ü kurun
2.2.2 Google API paketlerini kılavuza göre kurun*(bkz. 5.1)
PC'de
pip3 kurulumu --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
ahududu üzerinde
pi@raspberrypi:~ $ sudo pip3 kurulumu --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 google fotoğraflara script yüklemeye bakın.. github'uma yerleştirildi. Bunu kimlik bilgileri.json ile aynı dizine koyun.
2.2.4 Biraz resim çekin ve yüklemeyi test edin
python3 fotoğrafları.py resim.jpg
Varsa eksik bağımlılıkları kurun ve tekrar deneyin. Sonuç olarak, betiğin dizininde token.pickle'ı ve ayrıca Google Fotoğraflar web arayüzünde image-j.webp
2.2.5 Albümü, eklenen yeni medya bildirimlerini almak istediğiniz şeyle ilgili hesapla paylaşın. Bu hesabı telefonunuza ekleyin.
2.2.6 ahududu üzerinde photos.py ve token.pickle'ı /var/lib/motion içine koyun. 'pi' kullanıcısı 'hareket dizinine yazamaz, bu nedenle önce /home/pi'ye yükleyin
scp photos.py token.pickle pi@IP:/home/pi
Ardından ahududuya giriş yapın ve dosyaları sudo altına taşıyın
ssh pi@IP
pi@raspberrypi:~ $ sudo mv photos.py token.pickle /var/lib/motion
2.2.7 Raspberry'de yüklemenin nasıl çalıştığını kontrol edin. fswebcam ile bir resim çekin ve yüklemeyi deneyin
pi@raspberrypi:~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi:~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
“Helloworld” albümünde image-j.webp
3. Adım: Test edin
3.1 Hareket hizmetini başlatma
pi@raspberrypi:~ $ sudo servis hareketi başlangıcı
Komutu "dur" veya "yeniden başlat" olarak değiştirebilirsiniz.
3.2 Hareket günlüklerini etkinleştir
pi@raspberrypi:~ $ tail -f /var/log/motion/motion.log
3.2 Aynı yerel ağa bağlı başka bir cihazda kamera çıkışını görüntüleyin. Tarayıcıya girin:
IP:8081
3.3 Günlüklere bakıldığında, hareket algılanana ve NAME.mp4 dosyası /var/lib/motion'a yazılana kadar bekleyin. Ardından komut dosyasını manuel olarak yüklemeyi başlatın
pi@raspberrypi:~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
Python izlerini kontrol edin. motion.log'da event_end görünene kadar bekleyin. Ardından google fotoğraflarınızdaki “helloworld” albümüne gidin ve yüklenen bir video olup olmadığını kontrol edin.
3.4 Yükleme başarılıysa, /etc/motion.conf satırındaki açıklamayı kaldırın:
pi@raspberrypi:~ $ sudo nano /etc/motion.conf
# Bir film dosyası hazır olduğunda yürütülecek komut
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi:~ $ senkronizasyon
pi@raspberrypi:~ $ sudo hizmet hareketi yeniden başlatma
3.5 Hareket kayıtlarına ve albüme bakarak videonun otomatik olarak yüklenip yüklenmediğini kontrol edin.
3.6 Yeni video veya fotoğraf eklendiğinde bildirim almak için isteğe bağlı olarak albümü ana hesabınızla paylaşın.
4. Adım: İsteğe bağlı: Gerçek Zamanlı Akış Kamerasına Web Erişimini Yapılandırın
Bu adım, Michel'in Parreno eğitimine dayanmaktadır. Burada önerildiği gibi NoIP yerine FreeDNS'i seçtim.
4.1 Video akışı hareket sunucusuna yetkili erişimi yapılandırın:
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
# Kimlik doğrulama yöntemini ayarlayın (varsayılan: 0)
# 0 = devre dışı
# 1 = Temel kimlik doğrulama
# 2 = MD5 özeti (daha güvenli kimlik doğrulama)
stream_auth_method 2
# Akış için kimlik doğrulama. Sözdizimi kullanıcı adı:şifre
# Varsayılan: tanımlanmadı (Devre Dışı)
webcontrol_authentication kullanıcı adı:şifre
# Akış akışları için maksimum kare hızı (varsayılan: 1)
stream_maxrate 30
# Akış bağlantılarını yalnızca localhost ile kısıtla (varsayılan: açık)
stream_localhost kapalı
Harici ağdan web kontrol arayüzünü kullanmayacaksanız, devre dışı bırakın (varsayılan olarak)
# Kontrol bağlantılarını yalnızca localhost ile kısıtla (varsayılan: açık)
webcontrol_localhost açık
Ayrıca ahududu çevrimiçi olduğu için varsayılan ahududu şifresini değiştirmenizi tavsiye ederim
pi@raspberrypi:~ $ şifre
Her ne kadar ssh bağlantı noktası 22 ahududuya yönlendirilmemiş olsa da, yine de.
4.2 FreeDNS sitesine gidin
4.3 Kaydol
4.4 Alt alan adı ekle (Üyeler İçin -> Alt Alan Adları)
4.5 Raspberry'ye kurmak için DNS istemcisini seçin (Üyeler İçin -> Dinamik DNS -> Synamic DNS Kaynakları -> Dinamik DNS İstemcileri)
Adam Dean'den wget_script update.sh'yi seçtim (sayfanın altında)
_YOURAPIKEYHERE_ ve _YOURDOMAINHERE_ yer tutucuları var. Onları almak için (Üyeler İçin -> Dinamik DNS) bölümüne gidin.
Aşağıdaki sayfada, APIKEY ve DOMAIN (4.4'te eklenen) ile komut dosyası örnekleri bulacaksınız. Bu değerleri Wget Komut Dosyasından aldım ve update.sh içinde _YOURAPIKEYHERE_ ve _YOURDOMAINHERE_ ile değiştirdim
4.6 Ardından ahududu üzerinde update.sh çalıştırın. nslookup için dnsutils gerektirebilir. Daha sonra kurun:
pi@raspberrypi:~ $ sudo apt-get dnsutils
4.7 Ardından yönlendiricinizi, dış dünya isteklerini ahududu ipine 8081 bağlantı noktasına yeniden yönlendirecek şekilde yapılandırın
4.8 Ahududunuzun MAC'i için ipi DHCP ayarında ayırın, böylece Rpi her zaman aynı ip'ye sahip olur
4.9 Ardından yerel ağa bağlı olmayan bir cihazdaki tarayıcıya girin:
etki alanınız:8081
Motion.conf'ta tanımladığınız kimlik bilgilerinizi girin.
Videonun nasıl çalıştığını test edin.
4.10 DDNS'yi güncellemek için cron görevini otomatik olarak ayarlayın. Quick_cron_example'a bakın (Üyeler için -> Dinamik DNS)
Adım 5: İpuçları
5.1 Raspberry'ye python paketleri kurarken dikkatli olun. Bunu hata ayıklamak için bir gün harcadım - sorun şuydu ki konsoldan komut dosyası iyi çalıştı, ancak hareket olayı geri çağrısından çağrılmadı. Durumu daha da kötüleştiren şey, ikinci durumda senaryodaki izlerin mevcut olmamasıydı.
Bunun nedeni, kılavuzu izleyerek 'pi' kullanıcısı için paketleri kurmamdı (bu, varsayılan olarak /home/pi dizinindedir ve diğer kullanıcılar için sınırlıdır), ancak komut dosyasını 'hareket' hizmetinin bir çocuğu olarak çalıştırmak için paketler olmalıdır. 'hareket' kullanıcısı için de mevcuttur. Sonunda paketleri kurmayı düzelttim
sudo pip3…
Bu hala işe yarayan uygun bir yol değil. Sudo as pip3 --system olmadan kurulum nedense bana hata veriyordu.
Buna uygun olarak komut dosyası sudo altında da çağrılır (bkz. motion.conf).
Bu sorun giderme sırasında birçok gereksiz değişiklik yaptım ve neyin gerekli olduğundan emin değilim ve şimdi bunları aşamalı olarak geri almak ve ne zaman çalışmayı bıraktığını görmek için çok tembelim. Özellikle, verilen hareket yöneticisi hakları:
pi@raspberrypi:~ $ grup hareketi
hareket: hareket adm sudo ses video kullanıcıları netdev pi
pi@raspberrypi:~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi TÜMÜ=(TÜMÜ) NOPASSWD: TÜMÜ
hareket TÜMÜ=(TÜMÜ) NOPASSWD: TÜMÜ
Ayrıca Google Drive'a yüklemeye benzer şekilde dosya sahiplerini ve izinleri değiştiriyordu. Muhtemelen benzer bir sorununuz olduğunda size yardımcı olabilir.
5.2 Google Fotoğraflar API'si, yalnızca bağlantıya sahip olan herkesin erişebilmesi için paylaşılan albümlere dosya eklemeye izin verir. Link vererek paylaşıp eski filmleri silmeyin, çöp kutusuna veya albümden taşımayın. İkinci durumda, hesapta kalırlar.
5.3 Google fotoğraf asistanı, kamera kalitesi iyiyse oldukça kullanışlı olan yüzleri algılar. Bir bonus olarak, süslü medya türlerini derlemeler ve gifler vb. yapar.
5.4 İnternet erişimi için 4G LTE USB modemi kullanmayı denedim ve işte sonuçlarım.5.4.1 Huawei E3372h-153, ahududu ile sorunsuz ve ekstra yazılımla çalışıyor 5.4.2 Ayrıca etkin nokta etkinleştirildi, böylece Rasperry wifi üzerinden internet bağlantısını paylaştı. https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ RaspAP kullanarak nasıl yapılacağına dair gerçekten kolay bir kılavuz var. 5.4.3 Dinamik DNS, carrie'min 4G ağında çalışmadı. neden açıklaması var
5.5 Bu sistemi birkaç hafta kullandıktan sonra, videoları görüntülemek ve yüklemek için daha uygun olmasına rağmen, Google Fotoğraflar resimlerle daha iyi çalışıyor. Örneğin, yalnızca görüntüleri analiz eden nesneleri/yüzleri gruplandırmayı ve ancak o zaman videolardaki görüntülerden yüzleri/nesneleri aramayı sağlar, ancak tam tersini yapmaz. Bu yüzden videolar yerine resimleri yükleyerek test edeceğim.
Önerilen:
Bir iPhone ile Harika Fotoğraflar Çekin: 9 Adım (Resimlerle)
Bir iPhone ile Harika Fotoğraflar Çekin: Bugünlerde çoğumuz her yerde bir akıllı telefon taşıyoruz, bu nedenle harika fotoğraflar çekmek için akıllı telefon kameranızı nasıl kullanacağınızı bilmek önemlidir! Sadece birkaç yıldır akıllı telefonum var ve yaşadığım şeyleri belgelemek için iyi bir kameraya sahip olmayı sevdim
ESP8266, Google Home ve Openhab Entegrasyonu ve Webcontrol ile Panjur Kontrolü: 5 Adım (Resimlerle)
ESP8266, Google Home ve Openhab Entegrasyonu ve Webcontrol ile Panjur Kontrolü: Bu Eğitilebilir Tabloda size panjurlarıma nasıl otomasyon eklediğimi gösteriyorum. Otomasyonu ekleyip çıkartabilmek istedim, bu yüzden tüm kurulum klipsli. Ana parçalar: Step motor Step sürücü kontrollü bij ESP-01 Dişli ve montaj
Photoshop'ta Pasaport Boyutunda Fotoğraflar Nasıl Yapılır: 4 Adım
Photoshop'ta Pasaport Boyutunda Fotoğraf Nasıl Yapılır: Merhaba arkadaşlar bugün vesikalık fotoğraf nasıl yapılır onu gösteriyorum,Burada Photoshop'un 7.0,cs,cs1,2,3,4,5,6 gibi herhangi bir sürümünü kullanabiliriz. Herkesin bu öğreticiyi kolayca anlaması gerektiğine eminim. Photoshop ve imajınızla hazırlanın.Gerekli
Video ve Fotoğraflar için 2$'lık LED Kamera Işığı: 11 Adım
Video ve Fotoğraflar için 2$'lık LED Kamera Işığı: GÜNCELLEME: 180 lümenli yeni ve geliştirilmiş bir sürümüm var Dijital kameralar iyi video çektiğinden beri DV video kameramı taşımayı bıraktım ve bunun yerine birkaç dakika sürecek dijital kameramı kullan ve çek MOV veya MPG videosu burada ve t
Kendi Uşak Robotunu Yap!!! - Eğitim, Fotoğraflar ve Video: 58 Adım (Resimlerle)
Kendi Uşak Robotunu Yap!!! - Eğitim, Fotoğraflar ve Video: EDIT: Projelerim hakkında daha fazla bilgi yeni web siteme göz atın: narobo.comAyrıca robotik, mekatronik ve özel efekt projeleri/ürünleri için danışmanlık yapıyorum. Daha fazla ayrıntı için web siteme göz atın - narobo.com. Hiç sizinle konuşan bir uşak robotu istedim