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.

Werking PIR

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.

AM312 SR501 PIR aansluitingen

Met behulp van drie female-to-female draadverbindingen verbind je de PIR sensor (SR501) met de Raspberry Pi:

GPIO pinout PIR aansluiten

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.

PIR potentiometers 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
  1. Schakel de Raspberry Pi uit en verbindt de Pi Camera met de Raspberry Pi.
  2. Start de Raspberry Pi en zorg dat de Pi Camera werkt. M.a.w. start een rpicam-hello opdracht.
  3. 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 while lus 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

  4. 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 formaat YEAR-MONTH-DAY_HOUR.MINUTE.SECOND.h264 dat 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
    # 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 het programma en laat een paar opnames maken.
  5. 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  

  6. 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:~ $ sudo nano /boot/firmware/config.txt
    en voeg de volgende regel toe:
    disable_camera_led=1
    Sla de aanpassing op en herstart de Pi om de nieuwe instelling te activeren. Test of alles nog werkt.
  7. 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.
  8. Start de Raspberry Pi opnieuw op.
  9. 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.
  10. 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_motion wordt 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

  11. Test of het script werkt.
  12. 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.
    1. 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).
    2. 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:  

    3. 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
      ========

    4. Voor de installatie op een Raspberry Pi moet je OS Ubuntu - Fast and Touchless selecteren (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

    5. 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
      =====================================
      =====================================

    6. 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

    7. 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
      || Default Password : admin

      Zorg ervoor dat /super aan 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.

      Shinobi

    8. 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.

      Shinobi

      Scroll naar beneden en klik op de knop om het account aan te maken. Vergeet niet om de Superuser-gegevens (Email en Password) op het tabblad Preferences te wijzigen.
    9. 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.

    10. 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.

      Shinobi

      Klik op de knop om de verbinding te testen.

      Shinobi

      Bij een succesvolle test, klik je op de knop om de Raspberry Pi IP camera aan de monitor toe te voegen.
    11. Je kunt nu in de linker zijbalk het onderdeel Live Grid en Monitor openen om de camerabeelden bekijken en te gebruiken.

      Shinobi

    12. 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.
  13. Wie niet tevreden is van Shinobi kan voor het alternatief LightNVR kiezen.

Openbare reacties op deze pagina (kunnen door alle bezoekers gelezen worden)

, vrijdag 2 juni 2023 19:28