W dzisiejszym wpisie będę chciał opisać w jaki sposób można do raspberry podłączyć kamerę USB i we w miarę prosty sposób zacząć monitoring swojego mieszkania.
W swoim projekcie używam kamery USB firmy Ubisoft Hercules, która jest niesamowicie tania a w zupełności wystarczy do tego projektu (za 5 sztuk zapłaciłem 60 zł na znanym portalu aukcyjnym).
Kamera ta ma prawdopodobnie rozdzielczość 640×480. Gdy jest aktywna świeci na niebiesko światłem z małego Leda i co najważniejsze posiada 2,8 m kabel i do jej zasilenia wystarczy port USB w raspberry!
Po podłączeniu Naszej kamery do portu USB w raspberry powinna z automatu zostać wykryta.
Możemy to sprawdzić poprzez zalogowanie się przez SSH do rasperry i wpisaniu komendy:
lsusb
Wykrywana jest przez raspberry pod nazwą Nintendo Co., Ltd 🙂
Kolejnym krokiem jest wpisanie komendy:
sudo apt-get update
sudo apt-get install uvccapture
W tym momencie kamera powinna być już gotowa do pracy. Aby to sprawdzić można wywołać komendę:
sudo uvccapture -x640 -y480 -m -v
Po tej komendzie w katalogy /home/pi/ powinien utworzyć się plik snap.jpg ze zdjęciem z Waszej kamery.
Parametry zdjęcia można modyfikować (brightness, saturation, gain)
uvccapture -h
Po wpisaniu tej komendy wyświetlą się wszelkie opcje jakie możecie zmieniać poprzez modyfikowanie komendy powyżej.
Aby dodać Naszą kamerę do systemu Domoticz należy z menu głównego wybrać Konfiguracja –> Więcej opcji –> Kamery
a następnie wcisnąć przycisk Dodaj kamerę prawym górnym rogu ekranu po czym otworzy się okno gdzie należy wpisać:
- Dowolną nazwę kamery
- Adres Ip Waszego raspberry gdzie podłączona jest kamera
- Port Waszego Domoticza
- Image URL: uvccapture.cgi
Jeżeli używacie więcej niż jednego raspberry w swoim projekcie a chcecie mieć dostęp do wszystkich kamer podłączonych do różnych raspberry w mieszkaniu (ja mam 5 takich) to w głównym systemie dodajecie wszystkie kamery tylko zamiast ImageURL: uvccapture.cgi wpisujecie uvccapture.cgi?
Wciskacie przycisk Add.
Następnie naciskamy ikonę przypominającą kamerę i cieszymy się Naszym streamem:)
W tym momencie muszę zaznaczyć, że kamery w raspberry działają różnie (czasami wcale) a wyświetlanie przez nie obrazu jest raz lepsze raz gorsze. Czasami obraz jest całkiem ok a czasami bardzo ciemny. Wiele zależy od oświetlania pomieszczenia w danym momencie ale także od samej kamery, która dobiera sobie ustawienia (a bywa z tym różnie:(
Wszystko fajnie tylko, że co gdybyśmy chcieli dostać się do Naszej kamery z innej sieci niż Nasza własna?
Do tego posłuży Nam paczka do raspberry o nazwie Motion.
Aby ją zainstalować logujemy się do SSH i wpisujemy kolejno:
sudo apt-get update
sudo apt-get install motion
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
Teraz powinno być już wszystko ładnie zainstalowane.
Aby edytować ustawienia Motion należy wpisać:
sudo nano /etc/motion/motion.conf
gdzie należy edytować sporo różnych parametrów (żeby Wam tego zaoszczędzić wstawiam LINK do gotowego pliku, który należy wrzucić na Wasze raspberry najlepiej przez program FileZilla).
W pliku tym przed wrzuceniem na raspberry należy jedynie zmienić nazwę użytkownika hasło i ewentualnie port.
Szukamy w pliku ścieżki:
stream_authentication admin:haslo
i zamiast (admin – wpisujemy dowolną nazwę a zamiast haslo – Wasze hasło)
Przykład:
stream_authentication marek:haslo12345
Następnie szukamy linijki:
stream_port 8085
i zmieniamy port na dowolny jaki chcemy albo zostawiamy taki jaki jest
Resztę zostawiamy bez zmian.
W konsoli wpisujemy komendę, która usunie Nam oryginalny plik motion.conf
sudo rm /etc/motion/motion.conf
Wrzucamy Wasz edytowany plik do katalogu /home/pi a następnie za pomocą odpowiedniej komendy kopiujemy Nasz plik do odpowiedniego katalogu:
cd /home/pi
sudo cp motion.conf /etc/motion
Kolejnym krokiem jest wpisanie komendy:
sudo nano /etc/default/motion
W pliku tym zmieniamy wpisujemy yes zamiast no:
start_motion_daemon=yes
Zapisujemy przez CTRL+X
Ostatnim już krokiem jest wpisanie:
sudo service motion restart
Do zatrzymania służy:
sudo service motion stop
A do startu:
sudo service motion start
Po odpaleniu kamera powinna świecić się na niebiesko co oznacza, że działa jak należy.
Aby sprawdzić czy stream jest wyświetlany a hasło działa wpisujemy do przeglądarki (najlepiej chrome) adres IP Waszego domoticz i port, który ustawiliście w pliku motion.conf.
Przykład:
192.168.0.33:8085
Po wciśnięciu ENTER powinno pojawić się pole do wpisaniu logina i hasła (które definiowaliście wcześniej w pliku motion.conf). Jeżeli wszystko zrobiliście poprawnie powinien wyświetlić się Wasz stream.
Jednak robiliśmy to wszystko by można dostać się do kamery z innej sieci niż Wasza domowa.
Aby to zrobić należy najpierw Przekierować Wasz port (w moim przypadku 8085) na „zewnątrz” przez odpowiednią konfigurację Waszego domowego routera.
Nie będę pisał jak to zrobić bo każdy router jest inny a w Internecie jest wiele poradników jak to zrobić.
Gdy już macie przekierowany odpowiedni port musicie sprawdzić jakie macie zewnętrzny adres IP. Można to zrobić wchodząc na stronę:
- http://whatismyipaddress.com/pl/moj-ip
Gdzie wyświetli się Wasze zewnętrzne IP.
Aby sprawdzić czy wszystko działa jak należy wpiszcie to IP i Wasz port oddzielony dwukropkiem w adres przeglądarki i sprawdźcie czy wszystko działa.
Można też na smartfonie uruchomić Transfer Danych i w przeglądarce wpisać te same dane.
Dzięki temu będziecie mogli sprawdzić co się dzieje w domu za pomocą smartfona.
W kolejnym wpisie postaram się opisać program Imperihome, którego używam do obsługi wszystkich urządzeń w systemie Domoticz a jest on bezapelacyjnie najlepszy (i relatywnie tani – kilkanaście złotych) za pomocą którego można min. wyświetlać obraz z kamer (mi oficjalna aplikacja Domoticz ze sklepu Play nie wyświetla obrazu z kamer:(
Ja dodatkowo co zrobiłem w swoim systemie to wirtualny przycisk, który uruchamia i wyłącza serwer Motion w moim raspberry.
Zrobiłem to dlatego, gdyż zużywa on dosyć dużo zasobów i włączam go zdalnie tylko wtedy gdy potrzebuje zobaczyć co dzieje się w domu i zaraz potem wyłączam. Jest to też dobre zabezpieczenie przed tym jakby ktoś chciał się włamać do Waszych kamer (bo są wystawione na „zewnątrz” przez przekierwanie portów). Będą działały tylko przez chwilkę kiedy chcecie zobaczyć co się dzieje.
Aby to zrobić należy w systemie Domoticz utworzyć Wirtualny Przycisk o czym pisałem w poprzednich wpisach (w tym przykładzie proszę nazwać go Motion)
Zalogować się do raspberry przez SSH i utworzyć dwa proste pliki poprzez komendę:
nano motionon.sh
W treści otwartego pliku wpisujemy:
sudo service motion start
Zapisujemy plik i nadajemy mu uprawnienia poprzez:
sudo chmod +x motionon.sh
Tworzymy też drugi plik:
nano motionoff.sh
W treści otwartego pliku wpisujemy:
sudo service motion stop
Zapisujemy i nadajemy mu uprawnienia poprzez:
sudo chmod +x motionoff.sh
Gdy już mamy to zrobione a w Domoticz utworzony wirtualny przycisk o nazwie Motion zabieramy się za utworzenie Zdarzenia poprzez wejście do Konfiguracja –> Więcej opcji –> Zdarzenia gdzie dodajemy nowe zdarzenie o dowolnej nazwie, typie LUA oraz Device i wklejamy poniższy kod.
1 2 3 4 5 6 7 8 9 |
local sensor = 'Motion' commandArray = {} if (devicechanged[sensor] == 'On') then os.execute ("/home/pi/motionon.sh") end return commandArray |
Musimy utworzyć dwa takie zdarzenia. Jedno do włączania a drugie do wyłączania. (nie musicie pisać tego co jest na zielono na screenach)
1 2 3 4 5 6 7 8 9 |
local sensor = 'Motion' commandArray = {} if (devicechanged[sensor] == 'Off') then os.execute ("/home/pi/motionoff.sh") end return commandArray |
Jeżeli wszystko zrobiliśmy poprawnie po naciśnięciu przycisku Motion Nasza kamera będzie uruchomiała lub wyłączała serwis Motion tak by nie obciążać przez cały czas Naszego raspberry.
Powodzenia 🙂
9 Odpowiedzi
Piotr
Cześć! Mistrzostwo świata, to za słabe określenie na to co tutaj opisujesz! Wszystko co publikujesz to dokładnie to co chciałbym zrobić na swojej malinie. Jest to najlepszy poradnik, jaki znalazłem i na pewno każdemu go polecę. Mam też pytanie dotyczące monitoringu. Czy można podłączyć kilka kamer pod jedną malinę i rozróżniać je w Domoticzu? Czy za bardzo obciąży to system? Chciałbym też wiedzieć, czy można tak zaprogramować kamerę w Domoticzu, by w jakichś konkretnych zadaniach kamera po wykryciu ruchu przesyłała powiadomienie sms. O samym powiadomieniu pisałeś, ale chodzi mi o takie działanie, gdy wyjeżdżam na weekend, zapuszczam jakiś scenariusz „monitoringu” i kamera czuwa do momentu wyłączenia scenariusza. Pytam o kamerę, bo wykorzystanie czujnika ruchu nie za bardzo wchodzi w grę ze względu na psa w mieszkaniu. Oczywiście na weekend go nie zostawię, ale równie dobrze taki monitoring mógłby działać w godzinach, gdy jestem w pracy, a kamera reagowałaby tylko na jakiś wycinek pola widzenia i tam rejestrowała zmiany. Kontaktrony też odpadają, bo nie mam jak ich dobrze i estetycznie umieścić… musiałbym kuć w ścianach…
Łukasz Kostrzewa
Witam,
Bardzo dziękuję za miłe słowa, które motywują do pisania kolejnych postów:)
Jeżeli chodzi o podłączenie dwóch kamer USB to prawdopodobnie jest taka możliwość (więcej na https://www.raspberrypi.org/forums/viewtopic.php?t=28331&p=276992 oraz https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=50142). Uważam jednak, że malina będzie zbyt obciążona i po pewnym czasie może się restartować lub bardzo „zamulać”.
W poście opisałem oprogramowanie do kamer USB o nazwie „Motion”, które posiada taką funkcjonalność (w moim przypadku jednak przy włączonym wykrywaniu ruchu malina się zawieszała po pewnym czasie – nie wiem dlaczego, nie zbadałem tego dokładnie bo nie potrzebowałem wykrywania ruchu gdyż mam oddzielne czujniki).
Ja tak jak opisałem w poradniku przez większość czasu mam wyłączone „Motion” i włączam je zdalnie tylko wtedy gdy chce użyć kamer. Robię tak z dwóch powodów: nawet jedna kamera obciąża mocno system, lampki w moich kamerach USB przy włączonym „Motion” cały czas świecą na niebiesko co mnie denerwuje i mimo, że mam wszystko zabezpieczone hasłem to boję się, że ktoś może się „włamać” i mieć mnie na widoku:) Dlatego też włączam je zdalnie tylko na chwilkę na czas kiedy chce zobaczyć co się dzieje w domu i raczej tylko do takich zastosowań polecałbym kamerę USB w przypadku maliny.
Na rynku jest mnóstwo kamer IP za około 200 zł, (np. http://www.foscam.com/C1Lite.html) które przesyłają obraz bezpośrednio do komórki (dodatkowo przesyłają dźwięk w dwie strony co może się fajnie sprawdzić w przypadku psa – jak za bardzo szaleje jak Nas nie ma to można na niego krzyknąć:)
Można zastosować kontaktrony bezprzewodowe z-wave Fibaro (https://www.fibaro.com/pl/products/door-window-sensor/)
Pozdrawiam
Piotr
Dzięki za odpowiedź! Powiedz mi jeszcze jedną rzecz jak możesz:) Wczoraj zacząłem od nowa wszystko stawiać i od razu po ponownym wgraniu raspbiana zauważyłem różnice w wyglądzie ekranu ustawień raspberry po komunikacie sudo raspi-config. Mój ekran wygląda inaczej. Mam mniej opcji w pierwszym widoku. Możliwość rozszerzenia miejsca na karcie mam np dopiero w ekranie advenced options. Patrząc na Twoje artykuły są dość świeże, czy myślisz że od czasu ich publikacji poszła jakaś aktualizacja? Nie mogłem także od razu połączyć się przez putty, musiałem najpierw podłączyć malinę do ekranu i ręcznie w opcjach ustawić możliwość komunikacji przez SSH
Łukasz Kostrzewa
Hej
Bardzo prawdopodobne, że coś się pozmieniało w nowej wersji (posty o konfiguracji raspberry pisałem już stosunkowo dawno).
Z SSH też miałem problem jak konfigurowałem ostatnio Raspberry Pi Zero W. Już nie pamiętam co dokładnie zmieniłem ale musiałem chyba utworzyć pusty katalog SSH (mkdir ~/.ssh; chmod 700 ~/.ssh ) i wtedy działało ale nie jestem na 100% pewny.
Pozdrawiam
Michał
Wystarczy na partycji BOOT utworzyć pusty plik o nazwie ssh (bez rozszerzenia).
SSH jest domyślnie wyłączony w Jessie i Stretch.
Agnieszka Kostrzewa
Hej. Dzieki za info. Pozdrawiam
Artur
Witam !
Podłączyłem kamerę jak opisałeś. Po uruchomieniu komendy: sudo uvccapture -x640 -y480 -m -v
dostaję zielony obraz. Poza tym wpisuje dane do domoticza i nie widzę tego obrazu mimo, że generuje się w katalogu /home/pi. Nie rozumiem tez dlaczego jak generuje plik snap.jpg to mam wkleić uvccapture.cgi
Moja kamera:
Bus 001 Device 004: ID 041e:4052 Creative Technology, Ltd Live! Cam Vista IM
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Agnieszka Kostrzewa
Witam Serdecznie… Szczerze nie wiem jak pomoc. Ja nie mialem z tymi kamerami żadnych problemow a zrobiłem wszysyko dokladnie tak jak opisalem. Trudno mi pomoc bo kazdy przypadek moze byc inny i mam za malo danych 🙁
Karol
Witam
Bardzo dziękuję za obszerną instrukcję instalacji kamerki .
Mam problem z zapisanymi plikami zapisuje je jako
” -rw-r—– 1 0 0 42586 lis 21 22:52 01-20191121225151-03.jpg ” .
Chciałbym automatycznie zapisywać pliki jako np.
” -rwxrwxrwx 1 0 0 42586 lis 21 22:52 01-20191121225151-03.jpg ”
Gdzie to mogę ustawić?