ZoneMinder

Aus FHEMWiki
Wechseln zu: Navigation, Suche
Info blue.png
Achtung: Das Modul ist noch sehr neu und bisher nur im Forum / auf dem Github des Autors verfügbar. Sobald alles stabil ist, wird es im SVN eingestellt.


ZoneMinder
Zweck / Funktion
Integration mit Events und Kamerasteuerung der ZoneMinder API
Allgemein
Typ Inoffiziell
Details
Dokumentation Thema
Modulname 70_ZoneMinder.pm
Ersteller DelMar
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


ZoneMinder ist eine OpenSource Video-Überwachungssoftware. Das modulare Konzept ermöglicht die Integration von Kameras aller Art (IP, Analog, ...) und bietet Bewegungserkennung, verschiedene Aufnahmemodi und Alarmierung. Mehr Informationen zu Features findet man auf zoneminder.com, Informationen zur hier angebundenen API gibt es auf zoneminder.readthedocs.io.

Hinweise zum Betrieb mit FHEM

ZoneMinder bietet mehrere Arten der Integration, die einzeln in den Optionen aktiviert werden müssen. In der original Doku werden Kameras als Monitor bezeichnet.

Alerting

Wenn ZoneMinder Bewegungen erkennt, wird die jeweilige Kamera für bestimmte Zeit in den Alarm-Modus versetzt. Damit auch andere Anwendungen diesen Alarmzustand auswerten können, muss in den Optionen im Tab System die Option OPT_TRIGGERS aktiviert werden. Rein technisch öffnet ZoneMinder mit dieser Option den TCP-Port 6802, zu welchem sich FHEM verbindet und unmittelbar über neue Ereignisse informiert wird. Das ZoneMinder-Wiki enthält detailierte Informationen dazu.

Aufzeichnung und Bewegungserkennung

Kameras in ZoneMinder kennen unterschiedliche Betriebsarten (Quelle):

  • None – Die Kamera ist deaktiviert. Streaming, Bewegungserkennung, Aufzeichnung und Alerting sind nicht möglich.
  • Monitor – Die Kamera wird nur für Live-Streaming verwendet. Bewegungserkennung, Aufzeichnung und Alerting sind nicht möglich.
  • Modect – steht für MOtion DEteCTtion. Sobald eine Bewegung erkannt wird, wird ein Event generiert und die Aufzeichnung gestartet.
  • Record – Das Kamerabild wird kontinuierlich aufgezeichnet. Dieser Modus kennt keine Bewegungserkennung.
  • Mocord – Das Kamerabild wird kontinuierlich aufgezeichnet. Bewegungen werden innerhalb der Aufnahme als Events markiert.
  • Nodect – steht für No DEteCTtion. Dieser Modus wurde für externe Trigger eingeführt. Es erfolgt keine Bewegungserkennung, die Aufzeichnung kann aber durch externe Trigger gestartet werden. Dies könnten eigene Bewegungsmelder sein, oder aber auch FHEM (Trigger an ZoneMinder zb über set ZM_Monitor_xyz Alarm on|off|on-for-timer <sekunden>).

Daneben kann pro Kamera die Bewegungserkennung auch noch explizit aktiviert und deaktiviert werden. Der Begriff Enabled/disabled kann hier irreführend sein, da nicht die Kamera als solche, sondern nur die Bewegungserkennung betroffen ist. Um eine Kamera zu deaktivieren, muss der Betriebsmodus auf None gestellt werden.


Einbindung in FHEM

Das FHEM Modul kann in drei Ausbaustufen verwendet werden.

Events und Alerting

Mit folgender definition wird nur das weitergeben von Events nach ZM aktiviert:

define zm ZoneMinder <ZM-Host>

Beispiel

define zm ZoneMinder 192.168.1.1

Diese IP wird - wie oben beschrieben - verwendet, um den Event-Port von ZoneMinder zu öffnen. In den ZoneMinder Optionen muss hierfür ZM_TRIGGERS aktiv sein.

Kameramodi

Um Kamera-Modi in FHEM verändern und auslesen zu können, muss auf die ZoneMinder-API zugegriffen werden. Die Authentifizierung hierfür besteht (noch) aus username und password. Aus Sicherheitsgründen bietet es sich evtl an, einen eigenen User für FHEM einzurichten, der nur die nötigen Rechte hat.

define zm ZoneMinder <ZM-Host> <ZM-Username> <ZM-Password>

Bitte beachten: Der API-Login nach ZoneMinder 1.30.x ist unterschiedlich und wird derzeit noch nicht unterstützt.

Mit diesen Parametern kann außerdem direkt von ZoneMinder nach FHEM gestreamt werden und das Reading streamUrl wird verfügbar. Wichtig: diese Stream-URL enthält username und password als GET-Parameter. Diese sind also in der URL sichtbar, was tatsächlich ein Sicherheitsproblem darstellt.

Damit die API verwendet werden kann, muss in den ZoneMinder Optionen OPT_USE_API aktiviert sein.


Public Streaming-URLs

Hierfür muss als Attribut eine öffentlich erreichbare Adresse für ZoneMinder angegeben werden:

attr zm pubStreamUrl https://my.home.server.net:8043

Damit wird neben streamUrl auch noch ein Reading pubStreamUrl erzeugt. Für dieses Reading wird das eben angegebene Attribut mit dem Wert PATH_ZMS aus der ZoneMinder Konfiguration kombiniert.

Auth Hash

Um nicht username und Password öffentlich sichtbar machen zu müssen, bietet ZoneMinder auch das Sicherheitskonzept des Auth-Hash. Wenn ZoneMinder erkennt, dass in ZoneMinder AUTH_HASH_SECRET und AUTH_HASH_LOGINS konfiguriert sind, wird der Auth-Hash errechnet. Für public streaming URLs wird dann automatisch der Auth-Hash anstatt Username und Passwort verwendet. Somit kann die URL auch nach außen gegeben werden. Wie vorher erwähnt, wird diese nach maximal zwei Stunden ungültig. Für den Login wird der Auth-Hash übrigens nicht akzeptiert, dh man kann maximal für zwei Stunden den Stream sehen, aber er berechtigt nicht zum Verändern von Werten. Das FHEM-ZoneMinder Modul errechnet den Auth-Hash jede Stunde neu, somit sollten die Readings immer einen gültigen Hash liefern.

Bitte beachten, dass das Einbeziehen der IP für den Auth-Hash derzeit nicht unterstützt wird.

Link zur ZoneMinder Console

Das ZoneMinder Device zeigt ganz oben einen Link zur ZoneMinder Console (dem Web UI) an. Wenn dieser Link auch von Außen einen gültigen Link darstellen soll (also außerhalb des Heim-Netzwerks), kann als weiterer Parameter bei der Definition die öffentliche ZoneMinder Web-URL angegeben werden:

define zm ZoneMinder <ZM-Host> <ZM-Username> <ZM-Password> <ZM-Web-URL>

Beispiel:

define zm ZoneMinder 192.168.1.1 FHEM-API mySecurePassword https://my.secret.server.net:8431/zm

Diese URL wird einfach mit username und password als Parameter verlinkt und in einem neuen Fenster geöffnet. Wer will, kann so bequem von FHEM aus nach ZoneMinder wechseln.

Installation des Moduls

Das Modul ist auf GitHub zum Download verfügbar. Das grunsätzliche Setup sollte hier ausreichend beschrieben sein. Weitere Hintergrund-Infos finden sich außerdem noch im Forum.

Unterstützte ZoneMinder Version

Derzeit wird von diesem Modul nur ZoneMinder 1.30.x unterstützt. Spätere Versionen arbeiten mit einem neuen API-Login Mechanismus, der bisher nicht erfolgreich getestet werden konnte. Das Triggern von Events über den Trigger-Port sollte aber auch mit späteren Versionen von ZoneMinder funktionieren.