RaspberryPi som NVR-lösning
En av mina nära släktingar ville nyligen installera en säkerhetsplan i sitt hus med hjälp av en CCTV-lösning (closed circuit television eller videoövervakning). Vi fick några offerter som helt klart låg utanför vår budget (det lägsta priset var 1300€, inklusive 4 kameror, en NVR-box och installationen).
Min utmaning var att sänka priset med minst 2, inklusive hårdvara, mjukvara och installation. Den underliggande fördelen är också att utforska och lära sig.
Jag gillar att börja med take aways först så att du kan läsa vidare detaljerna om du är intresserad.
- Använd inte en fjärrserver som en NVR hårdvarulösning. Använd istället en lokal maskinvara, t.ex. en raspberryPI.
- Därmed kommer en raspberryPI med ett lätt operativsystem (Raspbian Stretch Lite) att användas som en NVR-hårdvarulösning (Network Video Recording), eftersom Raspberry har H264-hårdvarukodning/avkodning.
- Shinobi är en CCTV-lösning med öppen källkod som kommer att installeras på den där Raspberry PI-enheten och användas som en NVR-programvarulösning.
- Köp dina kameror med två obligatoriska krav: de ska vara IP-kompatibla och uppfylla ONVIF-standarderna. Konfigurering av dina kameror inom CCTV-lösningen kommer att tas upp i ett annat blogginlägg.
Mjukvara : Öppen källkod Shinobi
Öppen källkod betyder inte nödvändigtvis gratis, men den har fördelen att öppna källkoden. Och som programvaruingenjör betalar jag hellre för en programvara som jag kan gräva i och ändra än för en stängd programvara.
Efter undersökning finns det en CCTV-lösning med öppen källkod som heter Shinobi som vi kommer att använda. Den är utvecklad med nodeJs (javascript på serversidan). Projektet är ganska aktivt och det finns 2 versioner : Community Edition, som är gratis och lyder under GPLv3, och en Pro-version, som har en månatlig prenumeration och lyder under ett särskilt EULA (end user licensing agreement). Du kan dock även använda Pro-versionen för personligt bruk, vilket är mitt fall.
Hårdvara : Kameror
Det finns en massa kameror där ute, med olika kapacitet och olika priser ! Vilken ska man köpa och installera?
I den här artikeln kommer jag inte att rekommendera någon särskild kamera eftersom det inte bara beror på budgeten utan också på behoven (mörkerseende, detektioner, ljud, linsernas kvalitet…). Men det finns definitivt en punkt att ta hänsyn till när du köper din: kameran bör vara en IP-enhet och den bör vara ONVIF-kompatibel.
ONVIF är ett öppet branschforum som tillhandahåller och främjar standardiserade gränssnitt för effektiv driftskompatibilitet mellan IP-baserade fysiska säkerhetsprodukter.
Det innebär att oavsett tillverkare, om kameran är ONVIF-kompatibel, så implementerar den de öppna branschstandarderna. Detta ger dig möjlighet att koppla ihop många enheter med varandra, och viktigast för oss, att använda vår Open Source Shinobi NVR för att upptäcka och kommunicera med våra kameror.
Jag kommer att göra ett annat inlägg som visar hur du konfigurerar dina kameror och ansluter dem till Shinobi. Men låt oss först ha Shinobi igång, vilket är syftet med denna artiche.
Fjärrserver som NVR-hårdvara : dålig lösning
Under mitt experiment försökte jag först installera Shinobi på en fjärrserver med en Atom N2800 1,86GHz, 4GB RAM som jag skulle använda som NVR-hårdvara. Men för att ansluta mina kameror på den fjärrservern var jag tvungen att konfigurera min lokala router så att den inte bara portar realtidsströmmen från kameran, utan även dess ONVIF-protokollport. Dessutom fanns det en enorm latens från streaming av kameran till den fjärr-NVR-servern (begränsad av min bandbredd för uppladdning av internet).
Så jag bestämde mig för att installera en NVR-maskinvara som skulle finnas i samma lokala nätverk som kamerorna. Fördelarna är flera:
- Inte öppna strömningen till omvärlden (vilket skulle kunna vara ett säkerhetsbrott).
- Har en nära slinga mellan kamerorna och NVR-hårdvaran i det lokala nätverket
Lokal server som NVR-hårdvara: bättre lösning
Fjärr-NVR-server: mycket dålig lösning. Så mitt val föll på att använda en raspberryPI. Priset är verkligen överkomligt för vårt användningsområde (ungefär 35 €) och hårdvarukapaciteten mer än tillräckligt. Den viktigaste funktionen är dess H264-hårdvarukodning/avkodning.
Jag hade en raspberryPI hemma, som är modell 1B+ från 2014. Den gör jobbet, men om du inte är utrustad rekommenderar jag att du köper den senaste modellen hittills (modell 3 B+).
Installation av Shinobi på hallon
För att installera någon mjukvara på vår hallon måste vi installera operativsystemet. I vårt fall kommer vi att använda en mycket lätt Raspbian-version utan GUI
Installera Raspbian på din PI
- Nedladdning av Raspbian Stretch Lite (utan paket för GUI) på din dator från https://www.raspberrypi.org/downloads/raspbian/
- Kontrollera att det inte finns någon korruptionsbildning i den nyss nedladdade zip-filen
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Installera Raspbian Image på ditt SD-kort. För enkelhetens skull kan du använda ett grafiskt drag&drop-verktyg som heter Etcher: https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Insätt SD-kortet i din raspberry PI, anslut ett tangentbord, din HDMI & sätt igång din raspberry.
Logga in på din PI
- Logga in på din raspberry. Standardinloggningen är pi, lösenordet är raspberry.
- Först av allt, ändra lösenordet för användaren ”pi” av säkerhetsskäl. För att göra detta :
$ passwd
- uppdatera paket på din PI om det behövs för att ha de senaste versionerna av något av dem
$ sudo apt-get update && sudo apt-get upgrade
Aktivera SSH på din hallon
Först av allt, kontrollera på din hallon om SSH-tjänsten körs
$ sudo service ssh status
(tips : du kan kontrollera alla tjänster på din enhet genom att köra följande kommando :
$ sudo service --status-all
Om ssh är aktivt, hoppa över det här steget; annars kör tjänsten
$ sudo service ssh start
# För framtida uppstarter måste du aktivera ssh vid uppstart
* lösning 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- lösning 2
eller, Du kan också konfigurera din raspberry med hjälp av det särskilda verktyget :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Access your raspberry by ssh
För att komma åt din enhet från ditt lokala nätverk måste du känna till dess lokala IP-adress. Denna adress tilldelas dock av din router och kan ändras med tiden.
- Så antingen ställer du in en statisk IP till din raspberryPI genom att konfigurera din routeur (associera en statisk lokal IP till MAC-adressen på din raspberryPI).
- Och, den föredragna lösningen här: Kontrollera värddatorn för din raspberry genom att köra kommandot
$ hostname
I mitt fall är värddatorn för enheten raspberrypi. Jag kan sedan enkelt ssha pi utan att känna till dess ip-adress, genom följande kommando :
$ ssh [email protected]
Installera Shinobi
Nu när vårt operativsystem är korrekt konfigurerat och att vi kan komma åt vår enhet via ssh, låt oss installera Shinobi. Det enklaste sättet är att köra följande kommando på din PI (enligt definitionen i dokumentationen) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
Installationen kommer att vara interaktiv, enligt följande :
# 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
# installationsstorlek
Hela raspbian + shinobi (inklusive alla beroenden) tog bara mindre än 2GB utrymme.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Nu är installationen klar !!!
Shinobi backoffice
Installationen säger att du ska öppna din webbläsare med följande länk :
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
Det är dock bättre att använda värdnamnet för att slippa osäkerheten om din enhets IP-adress (som kan ändras under omstarten)
http://raspberrypi.local:8080/super
# change super user login/pwd
Så snart du är inloggad på http://raspberrypi.local:8080/super ändrar du av säkerhetsskäl din inloggning/pwd i fliken ”Preferences”.
# lägg till en ny användare
Avse superanvändaren måste du lägga till en användare till Shinobi (denna användare kan ha samma e-postadress).
Denna användare skulle kunna logga in på instrumentbrädan genom att använda den här länken direkt i det lokala nätverket
http://raspberrypi.local:8080/
Du är redo att använda din raspberryPi med Shinobi som en lokal NVR-lösning.