Dziś krótki wpis na temat następnego zastosowania serwerka z zniszczonego netbooka (z uszkodzoną matryca). Duża dostępność tanich kamer sieciowych jak i USB zachęca do stworzenia domowego systemu monitoringu – czy to w celu obserwowania z pracy niani opiekującej się dziećmi (często słyszy się o znęcaniu itp patologiach), czy monitorowania domu/garażu w podczas wyjazdu wakacyjnego. Stałe łącze internetowe pozwala śledzić obraz na żywo z każdego miejsca na ziemi (trzeba znać swój adres IP – w większości przypadków można skonfigurować usługę dyndyns, wtedy jest jeszcze łatwiej – ale nie o tym miałem tu pisać).
O zaletach małych serwerów z netbooków bez matryc nie muszę przekonywać (już raz to robiłem), kilka z nich wypada wyjątkowo dobrze patrząc pod kątem zastosowania w monitoringu:
- Długie podtrzymanie bateryjne – dwie, a nawet trzy godziny pełnej funkcjonalności to chyba aż nadmiar – nawet w systemach monitoringu. Jeśli to zbyt mało, zwasze można kupić akumulator o zwiększonej pojemności…
- Niewielkie rozmiary – atomowy serwerek nadzorujący kamery można ukryć w jakimś trudno dostępnym miejscu na poddaszu, bądź w piwnicy.
- Duże możliwości konfiguracyjne – jeśli na atomowym serwerku mamy system operacyjny linux, mamy praktycznie nieograniczone możliwosci co do konfiguracji i zaprogramowania zachowania systemu.
Wspomniane możliwości konfiguracyjne są naprawdę duże, dla przykładu – w trakcie wykrycia ruchu na którejś z kamer monitoringu możemy zaprogramować komputer aby zaczął zapisywać obraz (z ustawioną szybkością kl/s i konkretną rozdzielczością), wysłał e-maila, sms’a, przechwycone klatki na zdalnym ftp albo uruchomił światła w domu bądź syrenę alarmową… Jakby tego było mało, możemy tak skonfigurować oprogramowanie aby nie reagowało na niewielkie zmiany jasności (zachmurzenie), lub niewielkie poruszające się obiekty (np. rozmiarów kota). Fajnie nieprawdaż? Pewnie zastanawiasz się ile trzeba zapłacić za oprogramowanie… istnieją bardzo dobre programy dostępne za darmo – jeden z uroków linuksa
Programy do monitoringu dla linuksa
Jakie oprogramowanie wybrać? Osoby mające niewielkie doświadczenie w pracy z konsolą pewnie wybiorą ZoneMinder’a, który to posiada bardzo czytelny interfejs www, pozwalający ustawiać wszystkie opcje. Ja wybrałem trochę trudniejszą drogę (tylko pozornie) i zainstalowałem sobie program motion, który nie posiada interfejsu graficznego do konfiguracji – program dostraja się do własnych potrzeb edytując parametry w motion.conf:
vi /usr/local/etc/motion.conf
Każdy z parametrów programu jest tam dokładnie opisany w pliku konfiguracyjnym, a w przypadku kłopotów ze zrozumieniem działania konkretnych opcji warto przejrzeć dokumentację programu. Jeśli nie masz czasu na wgłębianie się w konfigurację i chcesz sprawdzić jak najszybciej czy program działa z Twoją kamerką wystarczy wyedytować linię wskazującą z jakiego urządzenia korzystać, w przypadku kamerek internetowych USB najczęściej będą to:
videodevice /dev/video0
przy czym video0 jest nazwą kamerki internetowej rozpoznanej przez system. Jeśli podłączysz kilka kamer USB, to urządzenia otrzymają kolejno nazwy video1, video2 itd. W celu sprawdzenia urządzeń przechwytywania video zainstalowanych w systemie możesz wpisać w konsoli:
ls /dev/video*
W przypadku kamer sieciowych powinno wystarczyć odkomentowanie, oraz podanie adresu IP uruchomionej kamery (nie posiadam kamery sieciowej, więc Cięzko mi to sprawdzić):
netcam_url 192.168.1.15
Jeśli kamera wymaga autoryzacji trzeba odkomentować i uaktualnić parametr:
netcam_userpass uzytkownik:haslo
Jeśli po uruchomieniu programu motion wszystko działa tak jak powinno, to warto zabrać się za edycję innych waznych parametrów programu:
#szerokość zapisywanej klatki width 800 #wysokosć zapisywanej klatki height 600 #ilość klatek przechwytywanych [kl/s] (wyższa wartość bardziej obciąża procesor #- ma to znaczenie w przypadku słabszych maszyn lub nadzorowania dużej liczby kamer) framerate 2 #akceptacja zmiany jasności obrazu - funkcja przydatna dla kamer w jasnych pokojach #oraz monitoringu podwórka/parkingu wartość z zakresu 0(f. wyłączona) - 100 lightswitch 50 #czas trwania zdarzenia (w sekundach) event_gap 60 #zezwalamy na dostęp do podglądu z przeglądarek innych komputerów stream_localhost off #wybieramy metodę prostej autentykacji stream_auth_method 1 #podajemy uzytkownika i haslo stream_authentication admin:haslo
Prócz wspomnianych opcji mamy jeszcze wiele innych, jednak nie będę się tutaj rozpisywał na temat wszystkich szczegółów. Rozszerzę trochę opis parametru ‘event_gap’ – jest to jeden z fajniejszych parametrów sterujących programu. W momencie wykrycia ruchu na kamerce internetowej, zaczyna się zdarzenie, i po zakończeniu ruchu jest obliczany wspomniany przedział czasowy, jeśli program nie wykryje ruchu w ustalonym czasie to zdarzenie zostanie uznane za zakończone.
Sterowanie zewnętrznymi urządzeniami z linuksa
Co tak na prawdę daje nam rozpoczęcie i zakończenie zdarzenia? Duże możliwości w zakresie wykonywania dowolnych komend, jak wysyłanie maili czy sterowanie zewnętrznymi urządzeniami. Trochę się zagalopowałem, bo nie napisałem jeszcze jak uruchamiam i wyłączam zewnętrzne urządzenia. Tutaj pojawia się moment w którym trzeba wydać trochę pieniędzy – rozwiązań na rynku jest kilka, ja kupiłem prosty sterownik zewnętrzych urządzeń AVTMOD04 – koszt ok 90zł, a frajda jaką daje ogromna
To zgrabne, solidne urządzenie bez najmniejszych problemów działa z linuksem (mimo, że dołączono oprogramowanie pod windowsa) – nie trzeba niczego instalować (przynajmniej ja nie musiałem) 100 procentowe plug-n-play. Nie wymaga zewnętrznego zasilania, prąd czerpie z portu USB laptopa. Wspomniany sterownik posiada dwa przekaźniki załączające/rozłączające obwody – maksymalne obciążenie 8A/230V z pełną separacją pomiędzy komputerem a uruchomianymi urządzeniami.
Co można uruchomić wykorzystując AVTMOD04? W przypadku aplikacji do monitoringu – gdy np. kamera wykryje złodzieja w garażu to pierwszy przekaźnik urządzenia może uruchomić alarm, a drugi pozwoli załączyć światła w domu i na podwórku – myślę, że mogłoby to spłoszyć intruza. Oczywiście pewnie znajdą się czytelnicy, którzy postanowią wykorzystać drugi obwód do srogiego pokarania złodzieja (np porażenie prądem), ale decydując się na coś takiego trzeba pamiętać, iż sąd pewnie stanie po stronie bardziej poszkodowanego ;P
Po podłączeniu moduł AVTMOD04 pojawił się w moim systemie jako urządzenie /dev/ttyUSB0. Komendy, które uznałem za najbardziej przydatne do sterowania wspomnianym modułem to:
#wyłączenie przekaźnika 1 0 #włączenie przekaźnika 1 1 #wyłaczenie przekaźnika 2 3 #wyłaczenie przekaźnika 2 4
Powyższe wartości dotyczą urządzenia AVTMOD04, i są niezależne od programów jakie wykorzystujemy do wyzwalania urządzeń (można np sterować czymś z cron’a). W przypadku programu motion w pliku konfiguracyjnym musimy odnaleźć parametry:
#komenda na początek zdarzenia #wysyłamy parametr 0 do AVTMOD04 uruchamiając przekaźnik 1 on_event_start echo 0 > /dev/ttyUSB0 #komenda na koniec zdarzenia #wysyłamy parametr 1 do AVTMOD04 wyłączając przekaźnik 1 on_event_end echo 1 > /dev/ttyUSB0
Drugi z przekaźników może zostać wykorzystany do włączania i wyłączania zasilania syreny alarmowej (jeśli kamera w tym czasie wykryje ruch to i tak załączając pierwszym przekaźnikiem syrenę nie będzie hałasować) – można ustawić w crontab’ie godziny wyłączonego alarmu:
crontab -e
Przykładowy wpis w cron-ie służący do wyłączania drugiego przekaźnika w konkretnym przedziale czasu (7:00-22:00):
0 7 * * * echo 3 > /dev/ttyUSB0 0 22 * * * echo 4 > /dev/ttyUSB0
Zastosowań tego niepozornego urządzenia jest wiele – można np zaprogramować domowe urządzenia na czas naszej nieobecności (np. oświetlenie/tv będąc na wakacjach) – dla zmyłki złodziei szukających mieszkań opuszczanych na dłuższy okres czasu przez domowników. Zastosowań jest wiele – jak to mówią za oceanem Sky is the limit!
cdn.