Kamera USB w systemie Domoticz

wpis w: Domoticz | 4

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).
Ubisoft Kamera

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

 

Kamera

 

 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

 

Kamera

 

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:)

 

Kamera

 

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:hasloi 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.

 

Zdarzenia

 

Musimy utworzyć dwa takie zdarzenia. Jedno do włączania a drugie do wyłączania. (nie musicie pisać tego co jest na zielono na screenach)

 

 

Zdarzenia

 

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 🙂

 

4 Odpowiedzi

  1. 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

  2. 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

Zostaw Komentarz

*