Bewegingsdetector
Start dit hoofdstuk met een nieuwe reservekopie van de Basisimage.
Infraroodsensoren zijn sensoren die gebruik maken van infrarood licht. Ze worden voor verschillende doeleinden gebruikt, zoals het detecteren van beweging, ontvangers voor IrDA-systemen, contactloze temperatuursensoren en het maken van afstandschattingen. Beeldvormende infraroodsensoren worden bovendien ingezet als nachtzichtapparatuur.
Veelgebruikt wordt de passieve infraroodsensor (PIR) voor bewegingsdetectie. Je hebt ze wellicht al gezien, ze worden gebruikt in alarmsystemen (de sensoren in de hoeken van kamers zijn meestal PIR sensors). Alle voorwerpen die een temperatuur heeft van meer dan het absolute nulpunt zendt infrarood licht uit. Infrarood licht is niet zichtbaar voor het menselijk oog, maar kan wel door elektronica gedetecteerd worden.
Een sensor is passief als deze geen licht uitstraalt om beweging te detecteren. Het past zich aan de infrarood straling van een kamer aan en reageert op veranderingen daarin. Elk bewegend voorwerp zal deze infrarood straling beïnvloeden en dus door de PIR opgemerkt worden.
We houden ons niet bezig met de interne werking van een PIR sensor, wel zijn we geïnteresseerd in hoe we een PIR sensor op de Raspberry Pi kunnen aansluiten.
PIR sensor aansluiten
Voor je de Raspberry Pi opstart, verbind je de PIR sensor met de Pi. Let daarbij goed op de aansluitingen, niet op elke PIR staan de aansluitingen op dezelfde plaats en/of volgorde.
Met behulp van drie female-to-female draadverbindingen verbind je de PIR sensor (SR501) met de Raspberry Pi:
- Verbindt de VCC pen van de PIR sensor met de 5V pen van de Raspberry Pi.
- Verbindt de GND pen van de PIR sensor met de massa van de Raspberry Pi. De PIR sensor kan nu via de Raspberry Pi van stroom worden voorzien.
- Verbindt de OUT pen (gele kabel op de afbeelding) van de PIR sensor met GPIO 23 van de Raspberry Pi. De spanning op deze pen verandert wanneer de PIR sensor beweging detecteert en geeft dit zo door aan de Raspberry Pi.
De PIR bewegingssensor testen
Zorg dat Raspberry Pi OS bijgewerkt is.
We gaan een script gebruiken om wat code te schrijven waarbij we tekst laten verschijnen bij het detecteren van beweging.
Start Geany (Menu > Programmeren > Geany), maak een nieuw Bash script (Bestand > Opslaan als met de bestandsnaam beweging.sh)
Of start een terminal en gebruik de nano teksteditor:
pi@raspberrypi:~ $ nano beweging.sh
En typ de volgende code:
#!/bin/bash
# Eerst definiëren we enkele functies
# Functie waarmee je wacht op beweging:
wait_for_motion () {
while :
do
pir=$(pinctrl get 23)
if [[ $pir == *"hi"* ]]; then
break
fi
sleep 1
done
}
# Functie waarmee je wacht tot er geen beweging meer is
wait_for_no_motion () {
while :
do
pir=$(pinctrl get 23)
if [[ $pir == *"lo"* ]]; then
break
fi
sleep 1
done
}
# Hier begint ons programma
# Initialiseer GPIO 23 als input met standaard laag (pull down)
pinctrl set 23 ip pd
# Oneindig lang worden bewegingen gemeld
# Breek het programma af met Ctrl+c
while :
do
wait_for_motion
echo "Beweging waargenomen"
wait_for_no_motion
echo "Geen beweging"
done
Hoe is het script opgebouwd? Eerst schrijven we functies om het script te laten wachten op beweging of juist geen beweging. De PIR sensor meldt beweging op GPIO 23. Dus zorgen we dat GPIO 23 de status van de PIR sensor kan inlezen (invoer of input) en zetten deze standaard op laag (low of massa, geen beweging).
pi@raspberrypi:~ $ pinctrl set 23 ip pd
De status van GPIO 23 kan je met de volgende opdracht opvragen:
pi@raspberrypi:~ $ pinctrl get 23
23: ip pd | lo // GPIO23 = input
Dit was zonder dat de PIR beweging detecteerde, met beweging krijgen we:
pi@raspberrypi:~ $ pinctrl get 23
23: ip pd | hi // GPIO23 = input
M.a.w. de PIR-uitgang krijgt bij beweging de waarde hi, zonder beweging de waarde lo.
Dit moet constant gebeuren en gebruiken daarvoor een while lus.
In de lus controleren we GPIO pen 23 op beweging ( hi ).
Als dit zo is ([ $pir == *"hi"* ]) wordt de lus verlaten (break).
Als dit niet zo is, wordt 1 seconde gewacht (sleep 1) en wordt de lus opnieuw uitgevoerd.
M.a.w. de functie is pas klaar als er beweging (eerste functie) of juist geen beweging (tweede functie) werd waargenomen.
De sleep opdracht zorgt dat ons script 1 seconden niets doet, waardoor andere programma's en het besturingssysteem andere taken kunnen uitvoeren.
Zonder de sleep opdracht zou alle processorkracht naar ons script gaan en de Raspberry Pi vastlopen.
Ook ons programma bestaat uit een eindeloze lus.
Daarin wachten we met behulp van onze functies respectievelijk op beweging en geen beweging waarbij we dit telkens melden (echo).
De programmalus onderbreken we manueel met Ctrl+c en het script wordt beëindigd.
Sla het bestand op en voer in een terminal de volgende opdracht uit om het script te kunnen uitvoeren:
pi@raspberrypi:~ $ chmod +x beweging.sh
Start het script:
pi@raspberrypi:~ $ bash beweging.sh
Beweging waargenomen
Geen beweging
Beweging waargenomen
Geen beweging
^C
Telkens wanneer de PIR sensor beweging detecteert verschijnt de tekst Beweging waargenomen in het terminal venster. Indien er geen beweging meer wordt opgemerkt, verschijnt de tekst Geen beweging. Druk Ctrl+c om het programma af te sluiten.
Op de SR501 PIR sensor staan twee oranje componenten die je met een Philips schroevendraaier kunt aanpassen.
Dit zijn potentiometers en ze laten toe de gevoeligheid en de detectievertraging van de sensor in te stellen.
Je begint meestal met een maximale gevoeligheid en de kortste detectievertraging.
De gevoeligheid regelt de afstand waarop de sensor nog reageert (van 3 tot 7 meter, in wijzerzin draaien om te vergroten).
De detectie vertraging regel je tussen de 0,3 en 600 seconden (in wijzerzin draaien om te vergroten)
Praktijk opdracht
- Schakel de Raspberry Pi uit en verbindt de Pi Camera met de Raspberry Pi.
- Start de Raspberry Pi en zorg dat de Pi Camera werkt. M.a.w. start een rpicam-hello opdracht.
- Nu kunnen we de Pi Camera inzetten om bij het detecteren van beweging een opname te maken.
We beginnen met het weergeven van een voorvertoning bij een bewegingsdetectie.
De functies blijven onveranderd aanwezig.
Binnen de
whilelus starten we een voorvertoning bij elke bewegingsdetectie, m.a.w. pas het volgende programma-onderdeel aan:# Oneindig lang worden bewegingen gemeld
# Breek het programma af met Ctrl+c
timeout=4
preview="0,50,640,360"
while :
do
wait_for_motion
rpicam-hello -t $((timeout*1000)) -p $preview
wait_for_no_motion
echo "Geen beweging"
done - Met wat meer code kunnen we een opname maken om later te bekijken.
Zo wil je bij meerdere indringers in de kamer, ze allemaal vastleggen en niet alleen de laatste.
Om dit te realiseren, moeten we voor elke opname een andere bestandsnaam hebben.
De eenvoudigste en veiligste is een naam te maken die bestaat uit de datum en tijd van de opname.
Een voorbeeld: de bestandsnaam 2026-07-29_18.40.53.h264 wordt gebruikt voor een opname gemaakt op 29 juli 2026 om 18u40m53s. Dit gebruikt het formaatYEAR-MONTH-DAY_HOUR.MINUTE.SECOND.h264dat ook door YouTube wordt gebruikt.
Daarvoor gebruiken we de dateopdracht en schrijven we code om een bestandsnaam met een datum en tijd te genereren. Daarna kan je de opname starten met de aangemaakte bestandsnaam. Juist zoals dat ging met het starten van de voorvertoning:# Oneindig lang worden bewegingen gemeld
Test het programma en laat een paar opnames maken.
# Breek het programma af met Ctrl+c
timeout=4
preview="0,50,640,360"
while :
do
wait_for_motion
bestandsnaam=$(date +"%Y-%m-%d_%H.%M.%S.h264")
rpicam-vid -t $((timeout*1000)) -p $preview -o $bestandsnaam
wait_for_no_motion
echo "Geen beweging"
done - Test de opnames in de terminal met de opdracht
ffplay <bestandsnaam>, een voorbeeld:pi@raspberrypi:~ $
ffplay -autoexit 2026-07-29_15.22.20.h264
ffplay version 7.1.5-0+deb13u1+rpt1 Copyright (c) 2003-2026 the FFmpeg developers
built with gcc 14 (Debian 14.2.0-19)
configuration: --prefix=/usr --extra-version=0+deb13u1+rpt1 --toolchain=hardened --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --disable-libmfx --disable-mmal --disable-omx --enable-gnutls --enable
-libaom --enable-libass --enable-libbs2b --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libg
sm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-l
ibtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable
-sndio --disable-libvpl --libdir=/usr/lib/aarch64-linux-gnu --arch=arm64 --enable-neon --enable-v4l2-request --enable-libudev --enable-epoxy --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-vout-drm --enable-ch
romaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --en
able-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sand --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.103 / 61. 7.103
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 5.100 / 10. 5.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
Input #0, h264, from '2026-07-29_15.22.20.h264':B sq= 0B
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 640x480, 25 fps, 1200k tbr, 1200k tbn
nan M-V: nan fd= 0 aq= 0KB vq= 0KB sq= 0B - Soms verloopt de opname niet zo onopvallend.
Soms wordt bij elke opname een rode led op de Pi Camera actief, dit valt enorm op.
Deze led kan je uitschakelen in het configuratiebestand /boot/firmware/config.txt van de Raspberry Pi.
Open als systeembeheerder dit configuratiebestand
pi@raspberrypi:~ $
en voeg de volgende regel toe:sudo nano /boot/firmware/config.txtdisable_camera_led=1
Sla de aanpassing op en herstart de Pi om de nieuwe instelling te activeren. Test of alles nog werkt. - Voor een bepaalde toepassing bestaan soms meerdere oplossingen. Je moet dus voor je aan iets begint, nadenken over hoe je het gaat aanpakken. Hou rekening met jouw eigen vaardigheden, zo zal een handige Harry eerder voor een hardware oplossing kiezen, een programmeur (sterk in logisch denken) kiest eerder voor een software oplossing. Ga ook op zoek naar reeds bestaande oplossingen, de meeste bestaande oplossingen, zeker als die open source zijn, kan je verder uitbouwen om te voldoen aan jouw eigen noden. We gaan het project om beweging te detecteren helemaal omgooien. We gebruiken minder hardware en vervangen die door software. Schakel de Raspberry Pi daarvoor eerst uit en koppel de PIR sensor los.
- Start de Raspberry Pi opnieuw op.
- We gaan de Pi Camera inzetten als bewegingsdetector.
Het gebruik van de Pi Camera heeft zowel voordelen als nadelen:
Nadelen:
- Je moet de videobeelden afkomstig van de Pi Camera analyseren om beweging te detecteren. De bewegingsdetectie wordt dus verzorgt door software en belast de processor. Een PIR belast de processor niet.
- De Pi Camera werkt niet in het donker. Een PIR werkt met infrarood en dus ook in het donker. Met een NoIR Pi Camera en infraroodverlichting werkt het wel.
Voordelen:
- Je kunt de bewegingsdetectie eenvoudiger instellen. Zo kan je het te controleren gebied als video of foto bekijken. De gevoeligheid en andere parameters kan je via de software instellen en niet op de PIR zelf. Belangrijk als de bewegingsdetector op een moeilijk te bereiken plaats staat.
- Je kunt de Pi Camera ook gebruiken om opnames te maken. M.a.w. je hebt dan maar één hardware-uitbreiding nodig, nml. de Pi Camera.
- Om dit te realiseren, gebruiken we postProcessing (zie Pi Camera).
We gaan ook elke beweging opnemen en dus niet langer wachten tot er geen beweging meer is.
M.a.w. de functie
wait_for_no_motionwordt overbodig. Het nieuwe script wordt dan:#!/bin/bash
# Eerst definiëren we enkele instellingen (constanten)
timeout=4
preview="0,50,640,360"
motion=$(cat << EOF
{
"motion_detect" :
{
"roi_x" : 0.1,
"roi_y" : 0.1,
"roi_width" : 0.8,
"roi_height" : 0.8,
"difference_m" : 0.1,
"difference_c" : 10,
"region_threshold" : 0.005,
"frame_period" : 5,
"hskip" : 2,
"vskip" : 2,
"verbose" : 1
}
}
EOF
)
echo $motion > postProcess.json
# Daarna definiëren we enkele functies
# Functie waarmee je wacht op beweging:
wait_for_motion () {
while read -r line ; do
if [[ "$line" == *"Motion detected"* ]]; then
# Stop de bewegingsdetectie om de camera te gebruiken om een video te maken
pkill rpicam-hello
echo "Er is beweging."
break
fi
# We gebruiken --nopreview om zo onopvallend mogelijk beweging te detecteren.
# Gebruik een preview om het detectiegebied te bekijken/af te regelen.
done < <(rpicam-hello -t 0 --nopreview --lores-width 128 --lores-height 96 --post-process-file postProcess.json 2>&1)
}
# Hier begint ons programma
# Oneindig lang worden bewegingen gemeld
# Breek het programma af met Ctrl+c
while :
do
wait_for_motion
bestandsnaam=$(date +"%Y-%m-%d_%H.%M.%S.h264")
rpicam-vid -t $((timeout*1000)) -p $preview -o $bestandsnaam
done - Test of het script werkt.
-
Shinobi videobewaking
Shinobi videobewaking (CCTV en Network Video Recorder) is ontworpen voor gebruikers die een flexibele manier zoeken om camera’s te bekijken, op te nemen en te beheren, zonder afhankelijk te zijn van een gesloten hardware-ecosysteem. Als camerasoftware biedt Shinobi gestructureerde bewakingsmogelijkheden voor woningen, kleine kantoren, werkplaatsen, opslagruimtes en grotere omgevingen met meerdere camera’s. Teams kunnen gebruikmaken van de open-source-implementatieopties van Shinobi om het systeem aan te passen aan hun eigen voorkeuren op het gebied van servers, netwerken en opslag.- Shinobi kan je gebruiken met allerlei IP Camera's. Je moet echter wel weten hoe deze camera's hun video streamen. Daarbij wordt je geholpen met een online Shinobi handleiding en/of de iSpy Camera Connection Database. Wij gaan echter onze Raspberry Pi camera gebruiken. M.a.w. zorg dat deze werkt als IP Camera (zie IP Camera).
- De Shinobi software installeren kan enkel als je als systeembeheerder (root) werkt.
Met de volgende opdracht werk je verder als systeembeheerder:
pi@raspberrypi:~ $
sudo su
[sudo] wachtwoord voor pi: - Als je werkt als root gebruiker (let op de prompt:
root@raspberrypi:/home/pi#) kan je het installatiescript downloaden en uitvoeren:root@raspberrypi:/home/pi#
sh <(curl -s https://cdn.shinobi.video/installers/shinobi-install.sh)
Opening Install Location : "/home"
Install the Development branch?
(y)es or (N)o? Default : No
Getting the Master Branch
Cloning into 'Shinobi'...
remote: Enumerating objects: 29606, done.
remote: Counting objects: 100% (2272/2272), done.
remote: Compressing objects: 100% (814/814), done.
remote: Total 29606 (delta 1472), reused 2218 (delta 1443), pack-reused 27334 (from 1)
Receiving objects: 100% (29606/29606), 74.00 MiB | 27.00 MiB/s, done.
Resolving deltas: 100% (19830/19830), done.
-------------------------------------
---------- Shinobi Systems ----------
Repository : https://gitlab.com/Shinobi-Systems/Shinobi
Product : Shinobi Professional (Pro)
Branch : master
Version : 9ddc2c3c71203a22f89fc72580270217a47c1347
Date : wo 05 aug 2026 16:37:49 CEST
-------------------------------------
-------------------------------------
*-----------------------------------*
Shinobi Installer
========
Select your OS
If your OS is not on the list please refer to the docs.
========
1. Ubuntu - Fast and Touchless
2. Ubuntu - Advanced
3. Alma Linux 9.2 / Rocky 9 / CentOS 8 - Fast and Touchless (Red Hat)
4. CentOS
5. MacOS
6. FreeBSD
7. OpenSUSE
======== - Voor de installatie op een Raspberry Pi moet je OS
Ubuntu - Fast and Touchlessselecteren (zie handleiding). M.a.w. druk 1 en bevestig met Enter.1
=========================================================
==!! Shinobi : The Open Source CCTV and NVR Solution !!==
=========================================================
To answer yes type the letter (y) in lowercase and press ENTER.
Default is no (N). Skip any components you already have or don't need.
=============
=============
Detecting Ubuntu Version
=============
=============
Ubuntu Version: 13
=============
Shinobi - Do you want to temporarily disable IPv6?
Sometimes IPv6 causes Ubuntu package updates to fail. Only do this if your machine doesn't rely on IPv6.
(y)es or (N)o - Tijdens de installatie kan het zijn dat je wordt gevraagd om IPv6 uit te schakelen.
Als je niet zeker weet wat dit betekent, kun je ervoor kiezen om het uit te schakelen om de verbinding via IPv4 te garanderen.
Na het opnieuw opstarten van de Pi wordt dit terug op de oorspronkelijke instelling gezet.
Dit gebeurt dus alleen tijdens de installatie.
We antwoorden dus met y Enter.
y
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
gcc is reeds de nieuwste versie (4:14.2.0-1).
gcc staat ingesteld op handmatig geïnstalleerd.
g++ is reeds de nieuwste versie (4:14.2.0-1).
g++ staat ingesteld op handmatig geïnstalleerd.
Installeren:
cmake
Installeren van vereisten:
cmake-data libjsoncpp26 librhash1
Voorgestelde pakketten:
cmake-doc cmake-format elpa-cmake-mode
Samenvatting:
Opwaarderen: 0, Installeren: 4, Verwijderen: 0, Niet opwaarderen: 21
Downloadgrootte: 12,4 MB
Benodigde ruimte: 48,8 MB / 6.287 MB beschikbaar
Ophalen:1 http://deb.debian.org/debian trixie/main arm64 cmake-data all 3.31.6-2 [2.268 kB]
Ophalen:2 http://deb.debian.org/debian trixie/main arm64 libjsoncpp26 arm64 1.9.6-3 [72,9 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main arm64 librhash1 arm64 1.4.5-1 [129 kB]
Ophalen:4 http://deb.debian.org/debian trixie/main arm64 cmake arm64 3.31.6-2 [9.906 kB]
12,4 MB opgehaald in 1s (15,8 MB/s)
Voorheen niet geselecteerd pakket cmake-data wordt geselecteerd.
(Database wordt ingelezen ... 142087 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../cmake-data_3.31.6-2_all.deb wordt voorbereid...
Bezig met uitpakken van cmake-data (3.31.6-2) ...
...
Voorheen niet geselecteerd pakket cmake wordt geselecteerd.
Uitpakken van .../cmake_3.31.6-2_arm64.deb wordt voorbereid...
Bezig met uitpakken van cmake (3.31.6-2) ...
Instellen van libjsoncpp26:arm64 (1.9.6-3) ...
Instellen van cmake-data (3.31.6-2) ...
Instellen van librhash1:arm64 (1.4.5-1) ...
Instellen van cmake (3.31.6-2) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor libc-bin (2.41-12+rpt1+deb13u3) ...
update-alternatives: fout: het alternatievenpad /usr/bin/gcc-8 bestaat niet
=============
Default Superuser : admin@shinobi.video
Default Password : admin
* You can edit these settings in "super.json" located in the Shinobi directory.
=============
Shinobi - Installing Node.js
Installing Node version: 22
Geraakt:1 http://deb.debian.org/debian trixie InRelease
Geraakt:2 http://deb.debian.org/debian trixie-updates InRelease
Geraakt:3 http://deb.debian.org/debian-security trixie-security InRelease
Geraakt:4 http://archive.raspberrypi.com/debian trixie InRelease
Pakketlijsten worden ingelezen... Klaar
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
ca-certificates is reeds de nieuwste versie (20250419).
curl is reeds de nieuwste versie (8.14.1-2+deb13u4).
gnupg is reeds de nieuwste versie (2.4.7-21+deb13u1).
gnupg staat ingesteld op handmatig geïnstalleerd.
0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 21 niet opgewaardeerd.
deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main
Geraakt:1 http://deb.debian.org/debian trixie InRelease
Geraakt:2 http://deb.debian.org/debian trixie-updates InRelease
Geraakt:3 http://deb.debian.org/debian-security trixie-security InRelease
Geraakt:4 http://archive.raspberrypi.com/debian trixie InRelease
Ophalen:5 https://deb.nodesource.com/node_22.x nodistro InRelease [12,1 kB]
Ophalen:6 https://deb.nodesource.com/node_22.x nodistro/main armhf Packages [9.192 B]
Ophalen:7 https://deb.nodesource.com/node_22.x nodistro/main arm64 Packages [11,4 kB]
32,7 kB opgehaald in 0s (87,3 kB/s)
Pakketlijsten worden ingelezen... Klaar
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
nodejs
0 opgewaardeerd, 1 nieuw geïnstalleerd, 0 te verwijderen en 21 niet opgewaardeerd.
Er moeten 37,0 MB aan archieven opgehaald worden.
Na deze bewerking zal er 234 MB extra schijfruimte gebruikt worden.
Ophalen:1 https://deb.nodesource.com/node_22.x nodistro/main arm64 nodejs arm64 22.23.1-1nodesource1 [37,0 MB]
37,0 MB opgehaald in 2s (15,4 MB/s)
Voorheen niet geselecteerd pakket nodejs wordt geselecteerd.
(Database wordt ingelezen ... 145961 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../nodejs_22.23.1-1nodesource1_arm64.deb wordt voorbereid...
Bezig met uitpakken van nodejs (22.23.1-1nodesource1) ...
Instellen van nodejs (22.23.1-1nodesource1) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
make is reeds de nieuwste versie (4.4.1-2).
make staat ingesteld op handmatig geïnstalleerd.
zip is reeds de nieuwste versie (3.0-15).
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 0, Niet opwaarderen: 21
FFmpeg Found...
Version : ffmpeg version 7.1.5-0+deb13u1+rpt1 Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 14 (Debian 14.2.0-19)
configuration: --prefix=/usr --extra-version=0+deb13u1+rpt1 --toolchain=hardened --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --disable-libmfx --disable-mmal --disable-omx --enable-gnutls --enabl
e-libaom --enable-libass --enable-libbs2b --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-
libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --e
nable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl
--disable-sndio --disable-libvpl --libdir=/usr/lib/aarch64-linux-gnu --arch=arm64 --enable-neon --enable-v4l2-request --enable-libudev --enable-epoxy --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-vout-dr
m --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --en
able-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sand --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable
-shared
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.103 / 61. 7.103
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 5.100 / 10. 5.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
=============
Shinobi - Installing MariaDB
MariaDB will be installed with no password.
Installeren:
mariadb-server
Installeren van vereisten:
galera-4 libconfig-inifiles-perl libfcgi-perl libhttp-date-perl libmariadb3 liburi-perl mariadb-plugin-provider-bzip2 mariadb-server-core
gawk libdbd-mariadb-perl libfcgi0t64 libhttp-message-perl libpcre2-posix3 liburing2 mariadb-plugin-provider-lz4 mysql-common
libcgi-fast-perl libdbi-perl libhtml-parser-perl libio-compress-brotli-perl libsigsegv2 mariadb-client mariadb-plugin-provider-lzma pv
libcgi-pm-perl libencode-locale-perl libhtml-tagset-perl libio-html-perl libterm-readkey-perl mariadb-client-core mariadb-plugin-provider-lzo socat
libclone-perl libfcgi-bin libhtml-template-perl liblwp-mediatypes-perl libtimedate-perl mariadb-common mariadb-plugin-provider-snappy
Voorgestelde pakketten:
gawk-doc libnet-daemon-perl libdata-dump-perl libbusiness-isbn-perl libregexp-ipv6-perl mailx doc-base
libmldbm-perl libsql-statement-perl libipc-sharedcache-perl libmime-base32-perl libwww-perl mariadb-test
Samenvatting:
Opwaarderen: 0, Installeren: 40, Verwijderen: 0, Niet opwaarderen: 21
Downloadgrootte: 19,2 MB
Benodigde ruimte: 203 MB / 5.943 MB beschikbaar
Ophalen:1 http://deb.debian.org/debian trixie/main arm64 galera-4 arm64 26.4.23-0+deb13u1 [774 kB]
Ophalen:2 http://deb.debian.org/debian trixie/main arm64 libsigsegv2 arm64 2.14-1+b2 [34,3 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main arm64 gawk arm64 1:5.2.1-2+b2 [644 kB]
...
Ophalen:38 http://deb.debian.org/debian trixie/main arm64 mariadb-plugin-provider-lzo arm64 1:11.8.6-0+deb13u1 [30,2 kB]
Ophalen:39 http://deb.debian.org/debian trixie/main arm64 mariadb-plugin-provider-snappy arm64 1:11.8.6-0+deb13u1 [30,2 kB]
Ophalen:40 http://deb.debian.org/debian trixie/main arm64 pv arm64 1.9.31-1 [111 kB]
19,2 MB opgehaald in 1s (19,9 MB/s)
Extraheren van sjablonen uit pakketten: 100%
Voorconfigureren van pakketten ...
Voorheen niet geselecteerd pakket galera-4 wordt geselecteerd.
(Database wordt ingelezen ... 151822 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../galera-4_26.4.23-0+deb13u1_arm64.deb wordt voorbereid...
Bezig met uitpakken van galera-4 (26.4.23-0+deb13u1) ...
...
Voorheen niet geselecteerd pakket pv wordt geselecteerd.
Uitpakken van .../25-pv_1.9.31-1_arm64.deb wordt voorbereid...
Bezig met uitpakken van pv (1.9.31-1) ...
Instellen van libconfig-inifiles-perl (3.000003-3+deb13u1) ...
Instellen van galera-4 (26.4.23-0+deb13u1) ...
...
Instellen van mariadb-plugin-provider-lzma (1:11.8.6-0+deb13u1) ...
Instellen van mariadb-plugin-provider-lzo (1:11.8.6-0+deb13u1) ...
Instellen van libcgi-fast-perl (1:2.17-1) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor libc-bin (2.41-12+rpt1+deb13u3) ...
Bezig met afhandelen van triggers voor mariadb-server (1:11.8.6-0+deb13u1) ...
=============
Shinobi - Installing Database...
=============
Shinobi - Install NPM Libraries
npm warn deprecated rimraf@2.7.1: Rimraf versions prior to v4 are no longer supported
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehe
nsive and powerful.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated google-p12-pem@3.1.4: Package is no longer maintained
npm warn deprecated fstream@1.0.12: This package is no longer supported.
npm warn deprecated @discordjs/collection@0.1.6: no longer supported
npm warn deprecated @discordjs/form-data@3.0.1: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm warn deprecated uuid@8.3.2: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
npm warn deprecated ldapjs@2.3.3: This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md
npm warn deprecated discord.js@12.5.3: no longer supported
added 515 packages, and audited 516 packages in 20s
41 packages are looking for funding
run `npm fund` for details
14 vulnerabilities (1 low, 5 moderate, 8 high)
To address issues that do not require attention, run:
npm audit fix
To address all issues (including breaking changes), run:
npm audit fix --force
Run `npm audit` for details.
npm notice
npm notice New major version of npm available! 10.9.8 -> 12.0.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.1
npm notice To update run: npm install -g npm@12.0.1
npm notice
=============
Shinobi - Install PM2
added 77 packages in 4s
8 packages are looking for funding
run `npm fund` for details
Shinobi - Finished
dos2unix: converteren van bestand INSTALL/shinobi naar Unix-opmaak...
Shinobi - Randomizing cron key
addToConfig: [object Object]
Changes Complete. Here is what it is now.
{
"port": 8080,
"isFailover": false,
"failoverAllowCloudUploaders": false,
"monitorStartQueueSize": 1,
"monitorStartQueueDelay": 0.5,
"debugLog": false,
"enableFaceManager": false,
"videosDir": "__DIR__/videos",
"passwordType": "sha256",
"detectorMergePamRegionTriggers": true,
"wallClockTimestampAsDefault": true,
"useBetterP2P": true,
"logCpuAndRamDangerZone": false,
"logFailoverActivity": false,
"logCentralManagementActivity": false,
"smtpServerOptions": {
"allowInsecureAuth": true
},
"addStorage": [
{
"name": "second",
"path": "__DIR__/videos2"
}
],
"db": {
"host": "127.0.0.1",
"user": "majesticflame",
"password": "",
"database": "ccio",
"port": 3306
},
"mail": {
"service": "gmail",
"auth": {
"user": "your_email@gmail.com",
"pass": "your_password_or_app_specific_password"
}
},
"cron": {
"key": "59f50ae4219b4ef8fb246c09bca1dfeb7677ef5e9f5e99934e3e6dc52ee5"
},
"pluginKeys": {}
}
Shinobi - Starting Shinobi and setting to start on boot
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__
Runtime Edition
PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.
Start and Daemonize any application:
$ pm2 start app.js
Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4
Monitor in production:
$ pm2 monitor
Make pm2 auto-boot at server restart:
$ pm2 startup
To go further checkout:
http://pm2.io/
-------------
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/Shinobi/camera.js in fork_mode (1 instance)
[PM2] Done.
┌────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ camera │ default │ 2.0.0 │ fork │ 4822 │ 0s │ 0 │ online │ 0% │ 34.9mb │ root │ disabled │
└────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
Created symlink '/etc/systemd/system/multi-user.target.wants/pm2-root.service' → '/etc/systemd/system/pm2-root.service'.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2
┌────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ camera │ default │ 2.0.0 │ fork │ 4822 │ 1s │ 0 │ online │ 0% │ 119.7mb │ root │ disabled │
└────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
host metrics | cpu: 0% | ram usage: 22.1% | disk: ⇓ 0mb/s ⇑ 0mb/s / 62.53% |
=====================================
||===== Install Completed =====||
=====================================
|| Login with the Superuser and create a new user!!
||===================================
|| Open http://192.168.129.101:8080/super in your web browser.
||===================================
|| Default Superuser : admin@shinobi.video
|| Default Password : admin
=====================================
===================================== - Na het voltooien van de installatie kan je terug werken als gewone gebruiken.
Je verlaat het werken als systeembeheerder met de opdracht:
root@raspberrypi:/home/pi#
exit
exit - Nadat de installatie is voltooid, surf je naar http://raspberrypi:8080/super.
Log in met het Superuser-account om de eerste beheerderaccount aan te maken.
De daarvoor benodigde gegevens werden op het einde van de installatie weergegeven:
|| Default Superuser : admin@shinobi.video
Zorg ervoor dat
|| Default Password : admin/superaan het einde van het webadres staat om het Superuser-paneel te openen. Het inlogscherm heeft een groene tint om aan te geven dat je je op het Superuser inlogscherm bevindt.
- Klik op het tabblad Accounts op de knop .
Om een beheerders account aan te maken, is het voldoende om een Email en Password in te geven.
Het wachtwoord moet je als verificatie wel tweemaal ingeven.
Scroll naar beneden en klik op de knop om het account aan te maken. Vergeet niet om de Superuser-gegevens (
EmailenPassword) op het tabblad Preferences te wijzigen. - Na het aanmaken van het beheerders account, mag je de Superuser pagina verlaten met de knop.
Er verschijnt opnieuw een login pagina (nu met blauw versluierde foto). Met deze pagina kan je inloggen met het pas aangemaakte beheerders account.
- Activeer in het linker zijpaneel het onderdeel Monitor Settings.
Geef de camera een naam (Name), bijvoorbeeld:
Raspberry Pi Camera. Geef het volledige netwerkadres (Full URL Path) in, bijvoorbeeld:rtsp://raspberrypi:8554/cam.
Klik op de knop om de verbinding te testen.
Bij een succesvolle test, klik je op de knop om de Raspberry Pi IP camera aan de monitor toe te voegen.
- Je kunt nu in de linker zijbalk het onderdeel Live Grid en Monitor openen om de camerabeelden bekijken en te gebruiken.

- Er is natuurlijk nog veel meer mogelijk, maar dit is afhankelijk van jouw wensen, de mogelijkheden van jouw IP camera('s), enz. De volledige handleiding kan je raadplegen bij ShinobiDocs. Wat denk je van het toevoegen van bewegingsdetectie en bij detectie de beelden ervan opslaan: Shinobi Motion Detection.
- Wie niet tevreden is van Shinobi kan voor het alternatief LightNVR kiezen.