RaspberryPi jako rozwiązanie NVR
Ostatnio, jeden z moich bliskich krewnych chciał zainstalować plan bezpieczeństwa w swoim domu przy użyciu rozwiązania CCTV (telewizja przemysłowa aka monitoring wideo). Dostaliśmy kilka ofert, które były wyraźnie poza budżetem dla nas (najniższa cena była 1300 €, w tym 4 kamery, NVR box i konfiguracji).
Moim wyzwaniem było zmniejszenie ceny co najmniej o 2, w tym sprzętu, oprogramowania i konfiguracji. Podstawową korzyścią jest również odkrywanie i uczenie się.
Lubię zaczynać od wniosków jako pierwszy, więc możesz czytać dalej szczegóły, jeśli jesteś zainteresowany.
- Nie używaj zdalnego serwera jako rozwiązania sprzętowego NVR. Użyj zamiast tego lokalnego sprzętu, takiego jak raspberryPI one.
- Tym samym, raspberryPI z lekkim systemem operacyjnym (Raspbian Stretch Lite) będzie używany jako NVR (Network Video Recording) rozwiązanie sprzętowe, jak Raspberry ma H264 sprzętowe kodowanie / dekodowanie możliwości.
- Shinobi jest Open Source CCTV rozwiązanie, które będzie zainstalować na tym urządzeniu raspberry PI i używać go jako rozwiązanie NVR software.
- Zakup kamer o 2 obowiązkowe wymagania: powinny być zgodne z IP, i powinny być zgodne z normami ONVIF. Konfiguracja kamer w ramach rozwiązania CCTV zostanie omówiona w innym wpisie na blogu.
Oprogramowanie : Open Source Shinobi
Open Source nie musi koniecznie oznaczać za darmo, ale ma korzyści z otwarcia kodu źródłowego. I jako inżynier oprogramowania, wolałbym zapłacić za oprogramowanie, które mogę kopać i modyfikować, a nie zamknięte.
Po dochodzeniu, istnieje otwarte rozwiązanie CCTV o nazwie shinobi, że będziemy używać. Jest on opracowany z nodeJs (javascript po stronie serwera). Projekt jest dość aktywny, i istnieją 2 wersje : Community Edition, która jest darmowa i na licencji GPLv3, oraz wersja Pro, która ma miesięczny abonament i jest pod konkretną EULA (umowa licencyjna użytkownika końcowego). Jednakże, możesz również używać wersji Pro do użytku osobistego, co jest moim przypadkiem.
Hardware : Kamery
Jest wiele kamer, o różnych możliwościach i różnych cenach ! Którą z nich kupić i zainstalować ?!
W tym artykule nie polecę Ci żadnej konkretnej kamery, ponieważ zależy to nie tylko od budżetu, ale także od Twoich potrzeb (noktowizja, detekcja, dźwięk, jakość obiektywu…). Ale na pewno jest jeden punkt, który należy wziąć pod uwagę przy zakupie: kamera powinna być urządzeniem IP i powinna być zgodna z ONVIF.
ONVIF jest otwartym forum przemysłowym, które zapewnia i promuje znormalizowane interfejsy dla efektywnej interoperacyjności produktów bezpieczeństwa fizycznego opartych na IP.
To oznacza, że niezależnie od producenta, jeśli kamera jest zgodna z ONVIF, to implementuje otwarte standardy przemysłowe. To da Ci możliwość połączenia wielu urządzeń ze sobą, a co najważniejsze dla nas, aby użyć naszego Open Source Shinobi NVR do odkrywania i komunikowania się z naszymi kamerami.
Zrobię kolejny post pokazujący, jak skonfigurować kamery i podłączyć je do Shinobi. Ale niech najpierw mieć Shinobi uruchomiony, który jest celem tego artiche.
Zdalny serwer jako sprzęt NVR : złe rozwiązanie
Podczas mojego eksperymentu, najpierw próbowałem zainstalować Shinobi na zdalnym serwerze posiadającym Atom N2800 1,86GHz, 4GB pamięci RAM, że chciałbym użyć sprzętu NVR. Ale do podłączenia moich kamer na tym zdalnym serwerze, musiałem skonfigurować mój lokalny router do portu-forwad strumień czasu rzeczywistego z kamery, ale także jego portu protokołu ONVIF. Ponadto, nie było ogromne opóźnienia od strumienia kamery do tego zdalnego serwera NVR (ograniczone przez mojego pasma internetowego upload).
Więc zdecydowałem się zainstalować NVR sprzętu, który byłby w tej samej sieci lokalnej z kamer. Korzyści są wielorakie :
- nie otwieranie strumienia na zewnątrz (co mogłoby być naruszeniem bezpieczeństwa).
- posiadanie ścisłej pętli pomiędzy kamerami i sprzętem NVR w sieci lokalnej
Lokalny serwer jako sprzęt NVR : lepsze rozwiązanie
Zdalny serwer NVR: bardzo złe rozwiązanie. Więc mój wybór padł na użycie raspberryPI. Cena jest naprawdę przystępna dla naszego przypadku użycia (około 35€), a możliwości sprzętowe więcej niż wystarczające. Najważniejszą cechą jest jego H264 sprzętowego kodowania / dekodowania capability.
Miałem jeden raspberryPI w domu, który jest model 1B+ z 2014 roku. Spełnia swoje zadanie, ale jeśli nie jesteście wyposażeni, polecam zakup najnowszego modelu do tej pory (model 3 B+).
Instalacja Shinobi na Malinie
Przed instalacją jakiegokolwiek oprogramowania na naszej malinie, musimy zainstalować system operacyjny. W naszym przypadku użyjemy bardzo lekkiej wersji Raspbiana bez GUI
Instalacja Raspbiana na PI
- Pobierz Raspbiana Stretch Lite (bez pakietów dla GUI) na swój komputer z https://www.raspberrypi.org/downloads/raspbian/
- Sprawdź czy nie ma uszkodzeń na świeżo pobranym zipie
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Zainstaluj obraz Raspbiana na swojej karcie SDCard. Dla wygody, możesz użyć graficznego narzędzia drag&drop o nazwie Etcher : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Włóż kartę SD do swojego raspberry PI, podłącz klawiaturę, HDMI & włącz malinę.
Log into your PI
- Login into your raspberry. Domyślny login to pi, hasło to raspberry.
- Przede wszystkim zmień hasło użytkownika 'pi’ ze względów bezpieczeństwa. Aby to zrobić :
$ passwd
- zaktualizuj pakiety na swoim PI, jeśli to konieczne, aby mieć najnowsze wersje któregokolwiek z nich
$ sudo apt-get update && sudo apt-get upgrade
Włącz SSH na swojej malinie
Po pierwsze, sprawdź na swojej malinie, czy usługa SSH jest uruchomiona
$ sudo service ssh status
(wskazówka: możesz sprawdzić wszystkie usługi na swoim urządzeniu wykonując następujące polecenie :
$ sudo service --status-all
Jeśli ssh jest aktywne, pomiń ten krok; w przeciwnym razie, uruchom usługę
$ sudo service ssh start
# Dla przyszłych uruchomień, musisz aktywować ssh na starcie
* rozwiązanie 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- rozwiązanie 2
lub, Możesz również skonfigurować malinę używając dedykowanego narzędzia :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Access your raspberry by ssh
Aby uzyskać dostęp do urządzenia z sieci lokalnej, musisz znać jego lokalny adres IP. Jednak ten adres jest przypisany przez router i może się zmienić w czasie.
- Więc albo ustaw statyczne IP do Twojego raspberryPI konfigurując routeur (kojarząc statyczne lokalne IP z adresem MAC Twojego raspberryPI).
- Albo, preferowane rozwiązanie tutaj: sprawdź nazwę hosta swojej maliny wykonując komendę
$ hostname
W moim przypadku, nazwa hosta urządzenia to raspberrypi. Następnie mogę łatwo ssh pi bez znajomości jego adresu ip, przez następujące polecenie :
$ ssh [email protected]
Install Shinobi
Teraz, że nasz OS jest poprawnie skonfigurowany i że możemy uzyskać dostęp do naszego urządzenia przez ssh, zainstalujmy Shinobi. Najprostszym sposobem jest uruchomienie następującej komendy na swoim PI (jak zdefiniowano w dokumentacji) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
Instalacja będzie interaktywna, jak poniżej :
# install location
Install Location for Shinobi
*Note : Default install location is "/home"
Do you want to install a custom location for Shinobi?
(y)es or (N)o? Default : No# shinobi version
Install Shinobi CE or Shinobi Pro?
— — — — — — — — — — — — — — — — — — — — — — -
*Note : Shinobi Pro is free for personal use.
*Learn more at http://shinobi.video/pro
— — — — — — — — — — — — — — — — — — — — — — -
©E or (P)ro? Default : Pro# install branch (master in stable)
Install the Development branch?
(y)es or (N)o? Default : No
N# OS selection
The installer will say that the OS is not detected. Select ubuntu instead.
Shinobi Installer
========
Select your OS
If your OS is not on the list please refer to the docs.
========
1. Ubuntu
2. CentOS
3. MacOS
4. FreeBSD
5. OpenSUSE
========
1# DB : choose MariaDB as RDBMS and choose a root password
Shinobi — Do you want to Install MariaDB? Choose No if you already have it.
(y)es or (N)o
y# install shinobi database
Shinobi — Database Installation
(y)es or (N)o
y# configure Shinobi to start on boot
Shinobi — Start Shinobi and set to start on boot?
(y)es or (N)o
y
# installation size
Cały raspbian + shinobi (włączając wszystkie zależności) zajęły tylko mniej niż 2GB miejsca.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Teraz instalacja jest zakończona !!!
Shinobi backoffice
Instalacja powie Ci, aby otworzyć przeglądarkę z następującym linkiem :
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
Jednakże, lepiej jest użyć nazwy hosta, aby pozbyć się niepewności co do adresu IP urządzenia (który może się zmienić podczas restartu)
http://raspberrypi.local:8080/super
# change super user login/pwd
Jak tylko zalogujesz się do http://raspberrypi.local:8080/super, zmień swój login/pwd w zakładce 'Preferencje’ ze względów bezpieczeństwa.
# add a new user
Apart of the super user, you need to add a user to shinobi (this user can have the same email).
This user would be able to log to the dashboard using directly this link on local network
http://raspberrypi.local:8080/
You are ready to use your raspberryPi with Shinobi as a local NVR solution.