Ga naar de inhoud
Home » Zoneminder op een Raspberry Pi

Zoneminder op een Raspberry Pi

Raspberry Pi Blog Header

orgineel: https://wiki.zoneminder.com/Raspberry_Pi_4_-_Raspbian

Ik doe het op een 3 🙂 Eerst systeem up to date brengen:

sudo apt update
sudo apt upgrade

Installeer mijn eigen tooltje om te zorgen dat een vol filesysteem wordt opgemerkt: Vol filesysteem detecteren op een Pi

Installatie van LAMP met alles wat daaraan gerelateerd is:

sudo apt-get install apache2 mariadb-server
sudo mysql_secure_installation # hier ga je het wachtwoord voor de root gebruiker van mysql zetten!!
sudo apt install php libapache2-mod-php php-mysql

Installeer zoneminder en maak de tabellen in mysql/mariadb:

sudo apt install zoneminder vlc-plugin-base libnumber-bytes-human-perl
sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

Controleer of alle userpasswordt instellingen in /etc/zm/zm.conf correct zijn. Pas zonodig aan!

Permissies zetten en gebruikers aanmaken:

sudo mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';" 
sudo mysqladmin -uroot -p reload 
sudo adduser www-data video
sudo chmod 740 /etc/zm/zm.conf 
sudo chown root:www-data /etc/zm/zm.conf 
sudo chown -R www-data:www-data /var/cache/zoneminder/ 
sudo systemctl enable zoneminder

Starten:

sudo systemctl start zoneminder
sudo systemctl status zoneminder # deze moet aangeven dat zoneminder active is
sudo a2enmod cgi
sudo a2enmod rewrite
sudo a2enconf zoneminder
sudo systemctl restart apache2 zoneminder
sudo systemctl status apache2 zoneminder a # deze moeten beide aangeven dat ze active zijn

Nog wat handmatig werk met vi

sudo vi /etc/php/7.3/apache2/php.ini

Search for [Date] (Ctrl + w then type Date and press Enter) and make changes as follows for your time zone

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone 
date.timezone = Europe/Amsterdam

Nu nog ff restarten zodat de time zone actief wordt (anders krijg je een foutmelding 🙂 ):

sudo systemctl restart apache2 zoneminder 
sudo systemctl status apache2 zoneminder a # deze moeten beide aangeven dat ze active zijn

Tataaaaa Klaar!! Op naar http://zoneminder.thuis.net die geeft je de default apache pagina, daarna doooooooooorrrrr naar http://zoneminder.thuis.net/zm

Hang er nu een externe schijf aan van voldoende grote (lees groot 🙂 ) en configureer Zoneminder. Zorg dat alle events en images opgeslagen worden op de externe harde schijf. Maak daar een zoneminder map met daarin submappen events en images

sudo mkdir /[jou-path]/zoneminder /[jou-path]/zoneminder/events /[jou-path]/zoneminder/images
sudo chown www-data.www-data /[jou-path]/zoneminder /[jou-path]/zoneminder/events /[jou-path]/zoneminder/images

Nu kom je voor de memory ellende van de Pi. Mogelijk dat je maar 1 of twee camera’s tegelijk kunt capturen. De melding die je krijgt is vrij cryptisch: Unable to open codec for video stream from rtsp://…bla..bla…bla..

Maar dIt heeft te maken met de verdeling van het geheugen. Mocht je hier terecht komen dan moet je de memory setting (voor de GPU) aanpassen. Dit doe je via

sudo raspi-config

Ga naar 4 Performance Options -> P2 GPU Memory en zet deze op een hogere waarde. Enig experimenteren is hier noodzakelijk. Bij 64 had ik 1 camera, bij 128 had ik er twee en bij 256 had ik er 6.

Meer info: https://forums.zoneminder.com/viewtopic.php?f=40&t=29086&p=113918&hilit=unable+to+open+codec#p113918

Starten en stoppen

Maak in Zoneminder via de UI twee nieuwe statussen aan: Record en Monitor. Bij Record wordt alles opgenomen, bij Monitor staat alles in Monitor. Alles in Monitor heb je normaal gesproken niet niet nodig, maar tijdens testen en debuggen is ie wel handig.

Nu nog op de juiste momenten starten en stoppen, in de cron van de user pi zet je (bijvoorbeeld) het volgende:

########################################################
# Zoneminder
########################################################
# Sun
13 23 * * 0   sudo /usr/bin/zmpkg.pl Record
47 6 * * 0    sudo /usr/bin/zmpkg.pl Monitor
# Workday
13 23 * * 1-5 sudo /usr/bin/zmpkg.pl Record
47 6 * * 1-5  sudo /usr/bin/zmpkg.pl Monitor
# Sat
13 23 * * 6   sudo /usr/bin/zmpkg.pl Record
47 6 * * 6    sudo /usr/bin/zmpkg.pl Monitor
# Uitzonderingen
# Bij reboot Zoneminder starten in Monitor mode
@reboot sudo /usr/bin/zmpkg.pl Monitor
# Elke morgen rebooten. Als Swap is opgegeten, wordt het weer vrij gemaakt
52 7 * * *    sudo systemctl reboot

Deze instelling maken onderscheid tussen zaterdag/zondag en door de weeks. Kun je natuurlijk aanpassen naar eigen inzichten 🙂

De Vuilniswagen

De externe schijf is niet oneindig groot, dus ruim oude beelden op. DIt doe je door een Filter te maken. Hier een voorbeeld om alles wat ouder is dan 5 dagen weg te gooien. Heb je meer ruimte verhoog 5 dan naar 7 …. 9 … 141 🙂

Naam: DeleteOldEvents

Start date  Kleiner dan  -5 day

   *EN*

Archief Status gelijk aan Alleen ongearchiveerd

Check de volgende opties:

  • Update Used Diskspace
  • Verwijder alle overeenkomsten
  • Voer filter uit op achtergrond

Nu Opslaan.

Hier worden alle niet gearchiveerde beelden ouder dan 5 dagen verwijderd. Er moet een sterretje achter de filternaam staan. DIt geeft aan dit het in de achtergrond loopt.

Dummy van de Vuilniswagen/Filter

Wil je het met de hand uitproberen:

sudo zmfilter.pl

Alle meldingen komen op stdout, als dit werkt, werkt het ook in de batch