RaspberryPi als NVR-Lösung
Vor kurzem wollte ein naher Verwandter von mir in seinem Haus eine CCTV-Lösung (Closed Circuit Television, auch Videoüberwachung genannt) installieren. Wir haben einige Angebote eingeholt, die eindeutig außerhalb unseres Budgets lagen (der niedrigste Preis lag bei 1300 €, einschließlich 4 Kameras, einer NVR-Box und der Einrichtung).
Meine Aufgabe war es, den Preis mindestens um den Faktor 2 zu senken, einschließlich der Hardware, der Software und der Einrichtung. Der zugrundeliegende Nutzen ist auch, zu erforschen und zu lernen.
Ich beginne gerne mit den „Take Aways“, damit Sie bei Interesse die Details weiter lesen können.
- Verwenden Sie keinen Remote-Server als NVR-Hardwarelösung. Verwenden Sie stattdessen eine lokale Hardware, wie z.B. den RaspberryPI.
- Daher wird ein RaspberryPI mit einem leichten Betriebssystem (Raspbian Stretch Lite) als NVR-Hardwarelösung (Network Video Recording) verwendet, da der Raspberry über eine H264-Hardware-Codierungs-/Decodierungsfunktion verfügt.
- Shinobi ist eine Open-Source-CCTV-Lösung, die auf dem Raspberry PI-Gerät installiert und als NVR-Softwarelösung verwendet wird.
- Kaufen Sie Ihre Kameras mit 2 obligatorischen Anforderungen: Sie sollten IP-kompatibel und ONVIF-kompatibel sein. Die Konfiguration Ihrer Kameras innerhalb der CCTV-Lösung wird in einem anderen Blogbeitrag behandelt.
Software : Open Source Shinobi
Open Source bedeutet nicht zwangsläufig kostenlos, aber es hat den Vorteil, dass der Quellcode offengelegt wird. Und als Softwareentwickler bezahle ich lieber für eine Software, in die ich eingreifen und die ich verändern kann, als für eine geschlossene.
Nach der Recherche gibt es eine Open Source CCTV-Lösung namens Shinobi, die wir verwenden werden. Sie wird mit nodeJs (javascript auf der Serverseite) entwickelt. Das Projekt ist recht aktiv, und es gibt 2 Versionen: Die Community Edition, die kostenlos ist und unter der GPLv3 steht, und eine Pro-Version, die ein monatliches Abonnement hat und unter einer speziellen EULA (Endbenutzer-Lizenzvereinbarung) steht. Allerdings kann man die Pro-Version auch für den privaten Gebrauch nutzen, was bei mir der Fall ist.
Hardware : Kameras
Es gibt eine ganze Reihe von Kameras mit unterschiedlichen Fähigkeiten und zu unterschiedlichen Preisen! Welche soll man kaufen und installieren?
In diesem Artikel werde ich Ihnen keine bestimmte Kamera empfehlen, denn das hängt nicht nur von Ihrem Budget ab, sondern auch von Ihren Bedürfnissen (Nachtsicht, Erkennung, Audio, Objektivqualität…). Aber es gibt definitiv einen Punkt, den Sie beim Kauf Ihrer Kamera berücksichtigen sollten: Ihre Kamera sollte ein IP-Gerät sein, und sie sollte ONVIF-kompatibel sein.
ONVIF ist ein offenes Industrieforum, das standardisierte Schnittstellen für die effektive Interoperabilität von IP-basierten physischen Sicherheitsprodukten bereitstellt und fördert.
Das bedeutet, dass Ihre Kamera, unabhängig vom Hersteller, die offenen Industriestandards implementiert, wenn sie ONVIF-kompatibel ist. Dies gibt Ihnen die Möglichkeit, viele Geräte miteinander zu verbinden und, was für uns am wichtigsten ist, unseren Open Source Shinobi NVR zu verwenden, um unsere Kameras zu erkennen und mit ihnen zu kommunizieren.
Ich werde in einem weiteren Beitrag zeigen, wie Sie Ihre Kameras konfigurieren und an Shinobi anschließen. Aber lassen Sie uns zuerst Shinobi zum Laufen bringen, was der Zweck dieses Artikels ist.
Remote-Server als NVR-Hardware: schlechte Lösung
Während meines Experiments habe ich zuerst versucht, Shinobi auf einem Remote-Server mit einem Atom N2800 1,86GHz, 4GB RAM zu installieren, den ich als NVR-Hardware verwenden würde. Aber um meine Kameras mit diesem Remote-Server zu verbinden, musste ich meinen lokalen Router so konfigurieren, dass er den Echtzeit-Stream von der Kamera, aber auch deren ONVIF-Protokoll-Port weiterleitet. Außerdem gab es eine enorme Latenz beim Streaming der Kamera zu diesem entfernten NVR-Server (begrenzt durch meine Internet-Upload-Bandbreite).
So beschloss ich, eine NVR-Hardware zu installieren, die sich im selben lokalen Netzwerk wie die Kameras befindet. Die Vorteile sind vielfältig:
- keine Öffnung des Streams nach außen (was eine Sicherheitslücke darstellen könnte).
- eine enge Verbindung zwischen den Kameras und der NVR-Hardware im lokalen Netzwerk
Lokaler Server als NVR-Hardware: bessere Lösung
Ferner NVR-Server: sehr schlechte Lösung. Also fiel meine Wahl auf einen RaspberryPI. Der Preis ist für unseren Anwendungsfall wirklich erschwinglich (ca. 35€) und die Fähigkeiten der Hardware mehr als ausreichend. Das wichtigste Merkmal ist die H264-Hardware-Codierung/Decodierung.
Ich hatte einen RaspberryPI zu Hause, das Modell 1B+ von 2014. Es erfüllt die Aufgabe, aber wenn Sie nicht ausgestattet sind, empfehle ich, das neueste Modell zu kaufen (Modell 3 B+).
Installation von Shinobi auf Raspberry
Bevor wir irgendeine Software auf unserem Raspberry installieren, müssen wir das Betriebssystem installieren. In unserem Fall werden wir eine sehr schlanke Raspbian-Version ohne GUI verwenden
Raspbian auf dem PI installieren
- Das Raspbian Stretch Lite (ohne Pakete für die GUI) auf den Computer herunterladen von https://www.raspberrypi.org/downloads/raspbian/
- Prüfen Sie, ob die frisch heruntergeladene Zip-Datei nicht beschädigt ist
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Installieren Sie das Raspbian-Image auf Ihrer SDCard. Der Einfachheit halber können Sie ein grafisches Tool namens Etcher verwenden: https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Setzen Sie die SD-Karte in Ihren Raspberry PI ein, schließen Sie eine Tastatur und einen HDMI-Anschluss an &Schalten Sie Ihren Raspberry ein
Loggen Sie sich in Ihren PI ein
- Loggen Sie sich in Ihren Raspberry ein. Der Standard-Login ist pi, das Passwort ist raspberry.
- Zuallererst muss das Passwort des Benutzers ‚pi‘ aus Sicherheitsgründen geändert werden. Um dies zu tun:
$ passwd
- Aktualisiere die Pakete auf deinem PI, falls nötig, um die neuesten Versionen von ihnen zu haben
$ sudo apt-get update && sudo apt-get upgrade
Aktiviere SSH auf deinem Raspberry
Überprüfe zunächst auf deinem Raspberry, ob der SSH-Dienst läuft
$ sudo service ssh status
(Tipp: Du kannst alle Dienste auf deinem Gerät überprüfen, indem du den folgenden Befehl ausführst:
$ sudo service --status-all
Wenn ssh aktiv ist, überspringen Sie diesen Schritt; andernfalls führen Sie den Dienst aus
$ sudo service ssh start
# Für zukünftige Bootvorgänge müssen Sie ssh beim Booten aktivieren
* Lösung 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- Lösung 2
oder, Sie können Ihren Raspberry auch mit dem entsprechenden Tool konfigurieren :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Zugang zu Ihrem Raspberry per ssh
Um von Ihrem lokalen Netzwerk auf Ihr Gerät zuzugreifen, müssen Sie seine lokale IP-Adresse kennen. Diese Adresse wird jedoch von Ihrem Router zugewiesen und kann sich im Laufe der Zeit ändern.
- Setzen Sie also entweder eine statische IP für Ihren RaspberryPI, indem Sie Ihren Router konfigurieren (indem Sie der MAC-Adresse Ihres RaspberryPI eine statische lokale IP zuordnen).
- Oder, die bevorzugte Lösung hier: überprüfen Sie den Hostnamen Ihres Raspberrys, indem Sie den Befehl ausführen
$ hostname
In meinem Fall ist der Hostname des Geräts raspberrypi. Ich kann dann einfach per ssh auf den Pi zugreifen, ohne seine IP-Adresse zu kennen, indem ich den folgenden Befehl ausführe:
$ ssh [email protected]
Shinobi installieren
Nun, da unser Betriebssystem richtig konfiguriert ist und wir über ssh auf unser Gerät zugreifen können, wollen wir Shinobi installieren. Der einfachste Weg ist, den folgenden Befehl auf dem PI auszuführen (wie in der Dokumentation beschrieben) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
Die Installation wird interaktiv sein, wie folgt :
# 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
#Installationsgröße
Das gesamte Raspbian + Shinobi (einschließlich aller Abhängigkeiten) benötigt nur weniger als 2GB Platz.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Jetzt ist die Installation abgeschlossen!!!
Shinobi Backoffice
Bei der Installation wird man aufgefordert, den Browser mit dem folgenden Link zu öffnen:
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
Es ist jedoch besser, den Hostnamen zu verwenden, um die Ungewissheit der IP-Adresse Ihres Geräts zu beseitigen (die sich bei einem Neustart ändern kann)
http://raspberrypi.local:8080/super
# change super user login/pwd
Sobald Sie in http://raspberrypi.local:8080/super eingeloggt sind, ändern Sie aus Sicherheitsgründen Ihren login/pwd im Reiter ‚Preferences‘.
# füge einen neuen Benutzer hinzu
Abgesehen vom Superuser, musst du einen Benutzer zu Shinobi hinzufügen (dieser Benutzer kann die gleiche E-Mail haben).
Dieser Benutzer kann sich direkt über diesen Link im lokalen Netzwerk am Dashboard anmelden
http://raspberrypi.local:8080/
Sie sind bereit, Ihren RaspberryPi mit Shinobi als lokale NVR-Lösung zu verwenden.