Heimvideoüberwachung. Implementierung mit Zoneminder und Debian 8

Einführung


Guten Tag.

Mit einem Heim-NAS, auf dem Debian 8 ausgeführt wird (ich habe früher Ubuntu Server 12.04 und 14.04 verwendet), kam die Idee, ihm unter anderem die Rolle eines Überwachungsservers zuzuweisen. Als Serverteil wurde Zoneminder ausgewählt . Der Algorithmus für die Videoüberwachung sollte wie folgt lauten: Eine Aufzeichnung rund um die Uhr ist nicht erforderlich. Falls erforderlich, muss jedoch die Aufzeichnung des Auftretens eines Ereignisses aktiviert werden können. Dabei wird eine Bewegung ausgelöst und anschließend eine Benachrichtigung per E-Mail mit Screenshots des Ereignisses gesendet. Dies ist notwendig, um die Kontrolle über die Wohnung zu gewährleisten, wenn jemand abwesend ist. Natürlich müssen Sie die Möglichkeit haben, eine Remoteverbindung herzustellen und zu überprüfen, ob alles in Ordnung ist.

Auf der Entwicklerseite fand ich die detailliertestenEin Wiki speziell für die Installation auf Debian 8 64-Bit. Dementsprechend werde ich von dort Installationsanweisungen nehmen und einige Punkte mit meinen Kommentaren erläutern.

Installieren Sie Zoneminder


Wir haben also einen Server mit Debian 8 64-Bit in der Mindestkonfiguration installiert (ich habe netinstall verwendet). Zuerst müssen Sie die Datei "sources.list" bearbeiten und Jessie-Backports hinzufügen:

sudo nano /etc/apt/sources.list

Fügen Sie am Ende der Datei Folgendes hinzu:

deb http://http.debian.net/debian jessie-backports main

Oder kommentieren Sie diese Zeile aus, wenn sie bereits vorhanden ist, dh löschen Sie # am Anfang der Zeile. Aktualisieren des Paketindex:

sudo apt-get update

Jetzt ist alles bereit, um Zoneminder zu installieren, was wir tun werden:

sudo apt-get install zoneminder

Während der Installation werden auch Apache, MySQL, PHP automatisch installiert.
Erstellen Sie nach Abschluss der Installation die MySQL-Datenbank:

sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

Beim Erstellen der Datenbank werden Sie aufgefordert, das Root-Passwort auszuwählen. Führen Sie als Nächstes die folgenden Befehle nacheinander (über sudo) aus und geben Sie im Falle einer Anforderung das Kennwort ein:

mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"

mysqladmin -uroot -p reload

chmod 740 /etc/zm/zm.conf

chown root:www-data /etc/zm/zm.conf

Schalten Sie den Zoneminder-Autorun ein:
systemctl enable zoneminder.service

Wir fügen den Benutzer www-data zur sudo-Gruppe hinzu. Dies ist erforderlich, um auf lokale Kameras zugreifen zu können:

adduser www-data sudo

Starten Sie Zoneminder:
systemctl start zoneminder.service

Überprüfen Sie, ob Zoneminder ausgeführt wird:
systemctl status zoneminder.service

Wenn alles in Ordnung ist, sollte die Ausgabe des Befehls ungefähr so ​​aussehen:

● zoneminder.service - ZoneMinder CCTV recording and surveillance system
   Loaded: loaded (/lib/systemd/system/zoneminder.service; enabled)
   Active: active (running) since  2016-07-10 18:48:30 IRKT; 5h 31min ago
  Process: 6413 ExecStop=/usr/bin/zmpkg.pl stop (code=exited, status=0/SUCCESS)
  Process: 6455 ExecStart=/usr/bin/zmpkg.pl start (code=exited, status=0/SUCCESS)
 Main PID: 6474 (zmdc.pl)
   CGroup: /system.slice/zoneminder.service
           ├─6474 /usr/bin/perl -wT /usr/bin/zmdc.pl startup
           ├─6507 /usr/bin/perl -wT /usr/bin/zmfilter.pl
           ├─6514 /usr/bin/perl -wT /usr/bin/zmaudit.pl -c
           └─6521 /usr/bin/perl -wT /usr/bin/zmwatch.pl

Apache konfigurieren:
a2enmod cgi

a2enmod rewrite

a2enconf zoneminder

Fügen Sie Ihre Zeitzone in PHP hinzu:
sudo nano /etc/php5/apache2/php.ini

Wir suchen den Abschnitt [Datum] und ändern die Datums- / Zeitzone in die gewünschte:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Irkutsk

Speichern - Strg + O, Beenden - Strg + X.
Starten Sie Apache neu:
service apache2 restart

Um Zoneminder über den Internet Explorer steuern zu können, müssen Sie Cambozola installieren:

cd /usr/src && wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz

tar -xzvf cambozola-latest.tar.gz

replace 936 with cambozola version downloaded

cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder

Damit ist die Installation von Zoneminder abgeschlossen. Jetzt müssen Sie den Mail-Transport so konfigurieren, dass Zoneminder Sie per E-Mail über Ereignisse informieren kann.

Posttransport einrichten


Um Benachrichtigungen zu senden, kann Zoneminder ssmtp verwenden und installieren:

sudo apt-get update

sudo apt-get install ssmtp

Installieren Sie mailutils gleichzeitig, wenn dieses Paket noch nicht installiert ist:
sudo apt-get install mailutils

Konfigurieren Sie nun die E-Mail-Einstellungen, für die Benachrichtigungen gesendet werden. Angenommen, das Postfach befindet sich unter gmail.com. Öffnen Sie ssmtp.conf:
sudo nano /etc/ssmtp/ssmtp.conf

und bringen Sie auf diesem Formular Ihre Daten entsprechend an:
root=mymail@gmail.com
mailhub=smtp.gmail.com:587
hostname=localhost
RewriteDomain=gmail.com
UseSTARTTLS=YES
UseTLS=YES
AuthUser=mymail@gmail.com
AuthPass=myverystrongpassword

Richtige Revaliasen:
sudo nano /etc/ssmtp/revaliases

wir bringen zu dieser Form:
root:pp@gmail.com:smtp.gmail.com:587
www-data:pp@gmail.com:smtp.gmail.com:587

Und wir überprüfen die Richtigkeit der Einstellungen, indem wir einen Testbrief senden:
echo "Hello, World" | mail -s "My email check" mne@napochtu.ru

Wenn der Test erfolgreich ist, fahren Sie mit dem nächsten Schritt fort - der Installation von MIME :: Lite und Net :: SMTP. Überprüfen Sie, ob diese Komponenten installiert sind:
perl -MMIME::Lite -e "print \"Module installed.\\n\";"

perl -MNet::SMTP -e "print \"Module installed.\\n\";"

Installieren Sie, indem Sie in die Perl-Shell gehen:
sudo perl -MCPAN -e shell

install MIME::Lite
install Net::SMTP


Jetzt müssen wir einige sehr wichtige Änderungen vornehmen, ohne die der Posttransport von Zoneminder nicht funktioniert. Bitte beachten Sie, dass diese Änderungen nur vorgenommen werden sollten, wenn die Version des installierten Zoneminder 1.29 oder niedriger ist. Ab Version 1.30 sind diese Aktionen nicht erforderlich.

Öffnen Sie die Datei zmfilter.pl im Editor:

sudo nano /usr/bin/zmfilter.pl

In Zeile 1179 sehen wir Folgendes:
### Send the Message
MIME::Lite->send( "smtp", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
$mail->send();

Kommentieren Sie die Zeilen aus
MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
und
$mail->send();

und fügen Sie eine Zeile darunter hinzu
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Ausgehend von Zeile 1179 (in meinem Fall, aber nicht genau dieser Zeilennummer) sollte der Code daher folgendermaßen aussehen:
### Send the Message
#MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
#$mail->send();
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Speichern, beenden. Damit ist die Arbeit mit dem Terminal abgeschlossen.

Zoneminder-Weboberfläche


Die Verwaltung ist unter ip.adress.servera / zm verfügbar . Gehen Sie zunächst zu Optionen -> Benutzer und legen Sie das Kennwort für admin fest:



Gehen Sie dann zu Optionen -> System und aktivieren Sie das Kontrollkästchen OPT_USE_AUTH:



Wenn dies nicht erfolgt, können Sie mit Zoneminder zur Weboberfläche gehen oder eine Verbindung herstellen eine Client-Anwendung ohne Aufforderung zur Eingabe eines Logins / Passworts, was natürlich unsicher ist. Es ist seltsam, dass dieses sehr notwendige Häkchen nicht standardmäßig aktiviert ist.

Konfigurieren Sie nun das Senden von E-Mails. Gehen Sie zu Optons -> Email und konfigurieren Sie analog:



Im Feld EMAIL_BODY können Sie das Format der Benachrichtigungen nach Bedarf konfigurieren. Wenn Sie beispielsweise% EI1% zum Feld hinzufügen, wird der erste Screenshot ab dem Moment, an dem der Bewegungssensor ausgelöst wird, an die Nachricht angehängt. Eine vollständige Liste der Optionen für Benachrichtigungen finden Sie hier .

Kameras hinzufügen


Zoneminder kann sowohl mit USB- als auch mit IP-Kameras arbeiten. Momentan sind meine Kameras noch unterwegs. Als temporäre Testversion der Kamera verwende ich mein altes Alcatel Pop C2-Android-Smartphone, auf dem die IP-Webcam- Anwendung installiert ist , die das Smartphone in eine Wi-Fi-IP-Kamera verwandelt. Nach der Installation und Ausführung der Anwendung (zuerst empfehle ich, die Auflösung des Videostreams in den Anwendungseinstellungen festzulegen, ich stelle 800 x 480 ein) zeigt das Smartphone die IP und den Port an, über den Sie zur Weboberfläche gehen und sehen können, was hier interessant ist:



Im Allgemeinen gibt es viele Einstellungen, aber wir sind an der Adresse interessiert, an die der Videostream gesendet wird. Und wir sehen, dass es Informationen gibt, um Zoneminder zu konfigurieren, was eine gute Nachricht ist. Es wird nämlich der Remote-Host-Pfad angegeben, der in den Zoneminder-Einstellungen eingegeben werden muss - nach der IP-Kamera, die Sie hinzufügen müssen / video:



Gehen Sie zurück zur Zoneminder-Weboberfläche, um die Kamera hinzuzufügen, und wählen Sie Neuen Monitor hinzufügen: Geben Sie



im Feld Name den gewünschten Namen Quelle ein Typ -> Remote:



Füllen Sie auf der Registerkarte Quelle die Felder aus: Remote-Hostname -> IP des Smartphones, Remote-Host-Port -> Port, auf dem die IP-Webcam ausgeführt wird, Remote-Host-Pfad -> den Pfad, den wir in den IP-Webcam-Einstellungen gesehen haben, und geben Sie auch an Videostream-Auflösung, die mit der zuvor in den IP-Webcam-Einstellungen ausgewählten übereinstimmen sollte:



Wir speichern die Einstellungen -> Speichern und im Zoneminder-Hauptmenü sehen wir die Kamera, die wir hinzugefügt haben:



Durch Klicken auf den Namen, dessen Bild angezeigt wird :



Kameras können in verschiedenen Modi arbeiten, die durch den Funktionsparameter im Hauptmenü festgelegt werden:



Der Modus, in dem nur die Aufnahme durchgeführt wird Bewegung im Rahmen, genannt Modect, und wählen Sie es aus. Jetzt zeichnet das System den Videostream nicht mehr kontinuierlich auf, sondern nur, wenn gute Gründe vorliegen. Wir brauchen aber noch eine Benachrichtigung über die Bewegung im Rahmen. Dazu müssen Sie den Filter konfigurieren. Öffnen Sie Filter im Zoneminder-Hauptmenü, konfigurieren Sie sie gemäß dem Screenshot und speichern Sie sie unter einem beliebigen Namen:



Vergessen Sie nicht, das Kontrollkästchen neben Filter im Hintergrund ausführen zu aktivieren :



Wenn also eine Bewegung im Rahmen erkannt wird, zeichnet das System das Video auf und sendet eine Benachrichtigung an die Mail.

Client-Anwendungen


Wenn es eine permanente IP gibt, hindert Sie nichts daran, die Ports im Router weiterzuleiten und vom Smartphone aus eine Verbindung von außen über die Weboberfläche herzustellen, zumal Sie die mobile Version der Schnittstelle in den Zoneminder-Einstellungen auswählen können. Außerdem habe ich mich dazu entschlossen, eine mobile Anwendung dafür zu suchen Ziele. Nachdem ich bei Google Play nach dem Keyword "zoneminder" gesucht hatte, entschied ich mich für zmNinja , weil Die Bewertung ist ziemlich hoch und ich mochte die Screenshots. Der Antrag ist bezahlt, Testversion zur vorläufigen Beurteilung, leider Nr. Die Funktionalität ist mehr als ausreichend - Anzeigen des Videostreams in Echtzeit, Anzeigen des Archivs, aufgezeichnete Ereignisse, Umschalten des Kameramodus usw.











Es gibt auch Desktop-VersionenzmNinja für Linux, Windows, Mac OS X - sie werden kostenlos verteilt. So sieht die Linux-Version auf meinem Mint 18 aus:



Im Allgemeinen ist die Benutzeroberfläche für alle Systeme gleich.

Das ist alles, danke für Ihre Aufmerksamkeit.

Source: https://habr.com/ru/post/de396099/


All Articles