[Modul] ONVIF Profil-S für IP-Kameras und Encoder

Version Version Version
License Check Style Run Tests
Spenden

ONVIF Profil S Library

Inhaltsverzeichnis

Vorbemerkungen zur Library

Diese Library wurde nicht dazu entwickelt komplett den Profil S Spezifikationen zu entsprechen oder deren gesamten Funktionsumfang abzubilden.
Vielmehr liegt der Schwerpunkt auf eine einfache und unkomplizierte Integration bestimmter Bestandteile (LiveStream, Steuerung) und Funktionen (Events, Digital Ein-/Ausgänge) in Symcon.
Dadurch ist es auch möglich Geräte in Symcon einzubinden welche ihrerseits die Spezifikationen nicht vollständig oder nicht korrekt umsetzen.

Vorbemerkungen zur Integration von Geräten

Es werden Instanzen zum auffinden (Discovery) und einrichten (Konfigurator) von Geräten in Symcon bereitgestellt.
Diese Instanzen werden nur korrekt funktionieren, wenn die betreffenden Geräte entsprechend Konfiguriert wurden.
So gibt es Geräte bei welchen am Werk z.B. das ONVIF Protokoll deaktiviert ist.
Oder eine entsprechende Zugangsberechtigung erstellt oder erweitert werden muss.
Eine Konfiguration der Geräte über Symcon ist in dieser Library nicht vorgesehen.
Unerlässlich ist eine korrekte Uhrzeit auf den Geräten, da eine Authentifizierung sonst fehlschlägt.
Es wird dringend empfohlen vor der Integration in IPS folgende Parameter in den Geräten fertig zu konfigurieren und ggfls. zu testen:

  • Netzwerk-Schnittstelle (IP-Adresse)
  • Auffindbarkeit / Discovery über ONVIF aktivieren
  • Zugangsdaten (u.U. eigene für ONVIF)
    • Die Zugangsdaten sollten bei allen Geräten identisch sein.
  • Zeitsynchronisation
    • Nach Möglichkeit sollten die Geräte und der Symcon Host die Uhrzeit aus der gleichen Quelle beziehen (NTP-Server).
  • PTZ-Vorpositionen / Szenen (sofern vorhanden)
  • h26x-Profile bzw. Media-Profile für ONVIF

Hinweise zum Symcon-System / Host

Die Maximale Anzahl der gleichzeitig verwendbaren RTSP-Streams hängt von der Symcon Lizenz ab. Bitte hierzu die Funktionsübersicht der Editionen beachten.

Um Ereignisse der Geräte in Symcon zu verarbeiten wird ein Webhook pro IO-Modul erzeugt.
Hier wird aktuell nur der interne WebServer von Symcon auf Port 3777 unterstützt.
Die IP-Adresse auf welchem Symcon die Daten empfängt wird automatisch ermittelt.

Bei System mit aktiven NAT-Support funktioniert die automatische Erkennung der eigenen IP-Adresse nicht. Hier wird die PublicIP aus den Symcon-Spezialschaltern benutzt.
Auch bei Systemen mit aktiven NAT-Support wird extern nur der Port 3777 unterstützt, und muss somit korrekt weitergeleitet werden.
Damit Geräte über das Discovery-Modul gefunden werden können, müssen bei NAT Systemen Multicast-Pakete korrekt weitergeleitet werden.
Für das Discovery werden Pakete über die Multicast-Adresse 239.255.255.250 auf Port 3702 gesendet und empfangen.

Folgende Module beinhaltet die ONVIF Library

  • ONVIF Discovery (Dokumentation) Erkennt ONVIF kompatible Geräte innerhalb des lokalen LAN.
  • ONVIF Configurator (Dokumentation) Unterstützt beim Einrichten der verschiedenen Instanzen für ein ONVIF-Gerät.
  • ONVIF IO (Dokumentation) Stellt die Verbindung zu einem ONVIF-Gerät her.
  • ONVIF Media Stream (Dokumentation) Konfiguriert ein IPS Medien-Objekt (RTSP-Stream) anhand der Geräte-Fähigkeiten.
  • ONVIF Image Grabber (Dokumentation) Lädt Snapshots (Standbilder) von dem Gerät und legt es in einem Media-Objekt ab.
  • ONVIF Digital Input (Dokumentation) Bildet die Digitalen Eingänge in Symcon ab.
  • ONVIF Digital Output (Dokumentation) Bildet Digitale Ausgänge (Relays) in Symcon ab.
  • ONVIF Events (Dokumentation) Bildet empfangbare ONVIF-Ereignisse in Symcon ab.

Changelog

Version 1.07:

  • Die Ansteuerung der PTZ-Kommandos kann invertiert werden.
  • Eventuelle Fehlermeldung wenn die Option Variablenprofil benutzt Namen der Szenen aktiviert war.

Version 1.06:

  • Eventuell wurden die Topics eines Events falsch ermittelt.
  • Statusvariablen für Topics mit Sonderzeichen wurden nicht korrekt angelegt.

Version 1.05:

  • Fehlermeldung wenn Geräte keinen Namen für PTZ-Szenen geliefert haben.
  • Fehlermeldung im IO wenn Geräte keine Auflösung, kein Encoding oder keine Bitrate gemeldet haben.

Version 1.02:

  • ONVIF_StopPTZ und das Anhalten beim loslassen der PTZ-Overlay Steuerung hat bei einigen Geräten nicht funktioniert
  • Profile ONVIF.Time und ONVIF.Speed waren bei der Beschreibung vertauscht
  • Fehlende Übersetzungen ergänzt

Version 1.01:

  • Release für Symcon 5.5
  • Fehlende Übersetzungen ergänzt

Version 1.00:

  • Beta Release für Symcon 5.5

Spenden

Die Library ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Autor werden hier akzeptiert:

Lizenz

CC BY-NC-SA 4.0

1 „Gefällt mir“

Halo Michael,

habe nochmal versucht ONVIF Kameras über die Instanzenkonfiguration einzubeinden
es kommt jedoch nachfolgende Fehlermeldung.

Nachtrag:
Ist in der Discovery beim anlagen der Instanz ID


Abort Processing during Fatal-Error: strpos(): Non-string needles will be interpreted as strings in the future.
Use an explicit chr() call to preserve the current behavior
Error in Script C:\ProgramData\Symcon\modules\.store\de.nall.chan.onvif\ONVIF IO\module.php on Line 287 (Code: -32603)

Sorry, Bahnhof.
Es gibt keine ONVIF Kamera Instanz.

Ah, also wenn du in der Discovery Instanz ein ONVIF Konfigurator für ein Gerät erzeugst, kommt der Fehler?
Sende mir bitte einmal den Debug der Discovery Instanz.
Und bitte den IO manuell für dieses Gerät anlegen und mir den Debug vom übernehmen der Einstellung ebenfalls zusenden.
Michael

Hallo Michael,

super Idee Dein ONVIF-Modul, habe mich mal zu Beta-Tester gemacht. :wink:
Das Modul habe ich zum Laufen bekommen, allerdings komme ich mit den Events nicht zurecht, da fehlt mir ein kleines Beispiel wie ich an die Bewegungmeldung der Kamera komme.

Die Meldung an sich scheint zu funktionieren, sowohl die Hersteller-Anwendung als auch der ONVIF-Manager bekommen diese angezeigt.

Gruß Mirco

Beispiele sind schwer, da jeder Hersteller die Events anders benennt.
Du kannst aus der Drop-Down Liste in der Instanz auswählen was du haben willst, bzw. ab welcher Ebene.
Sofern es dann eintritt, wird eine Variable automatisch erzeugt.
Michael

Danke guter Hinweis, wieder einen Schritt weiter.
Im ONVIF Event, der Knopf Gateway ändern, dann konnte ich auch den Ereignis-Pfad auswählen.

Ich bekomme ca. 1 mal je Minute die Meldung:

23.03.2020, 16:45:53 | ONVIF IO | Connection lost
23.03.2020, 16:45:53 | TimerPool | ONVIF IO (RenewSubscription): <br />
<b>Warning</b>: <br />
<b>Warning</b>: Error Fetching http headers in <b>/var/lib/symcon/modules/.store/de.nall.chan.onvif/ONVIF IO/module.php</b> on line <b>322</b><br />
in <b>/-</b> on line <b>1</b><br />

Vielleicht hast Du ja ne Idee.

Zeig mal bitte die IO Instanz, wenn die Verbindung neu aufgebaut wurde.
Da stehen dann z.b. ein Hook und die Subscribtion.
Der Debug der Instanz vom Verbindungsaufbau und dann 1 Minuten beim Verbindung verloren hätte ich auch gerne.
Vermutlich wird dort etwas nicht korrekt erkannt im Modul.
Michael

So schaut die IO Instanz aus :


und das Log
(deleted)

Vielen Dank für Deine Mühe

Diese Fehlermeldung fange ich jetzt ab, allerdings wird das wohl nicht die Lösung sein.
Bitte updaten und bitte Feedback geben ob jetzt eine sinnvolle (Fehler)-Meldung im IO und IPS-Logfile/Meldungsfenster kommt.

Auf dein folgenden Screenshot sieht man, dass der Ereignis-Hook defekt war.
Eventuell war das die Ursache für den Fehler oben.
Bitte einmal updaten und Feedback geben :slight_smile:

Michael

Die Meldung sieht jetzt so aus.
Muss ich nach dem Update aus dem Modulestore nochwas machen?


23.03.2020, 20:31:58 | TimerPool | ONVIF IO Kamera1 (RenewSubscription): <br />
<b>Warning</b>:  <br />
<b>Warning</b>:  Error Fetching http headers in <b>/var/lib/symcon/modules/.store/de.nall.chan.onvif/ONVIF IO/module.php</b> on line <b>438</b><br />
 in <b>/-</b> on line <b>1</b><br />

dump (4).txt (91.1 KB)

Irgendwie schafft er da nicht zu ermitteln wie der die ConsumerAddress für den Webhook ist. :banghead:

Bitte mal ganz stumpf eine falsche IP-Adresse im IO eintragen und übernehmen.
Wenn der IO dann in Fehler geht, das Debug öffnen, die IP wieder zurück ändern und übernehmen.

Eventuell wird dann die Adresse vom Webhook mal mit IP erstellt :rolleyes:
Das Debug dann bitte noch mal hochladen.

Danke,
Michael

Aus http://192.168.0.55:8000/onvif/device_service
habe ich http://192.168.0.5:8000/onvif/device_service gemacht, Änderungen übernommen und wieder zurück.

dump (6).txt (190 KB)

Oh Mann… Was bin ich blind.
Im Debug steht das du NAT aktiv hast.
Dann musst du die externe IP vom Host unter dem dein Container läuft unten im IO eintragen.
Das bessere ich aus, damit dort dann eine Meldung kommt, wenn das Feld leer ist.
Michael

Problem sitzt wie immer vor dem Bildschirm, ich hatte den Schalter NAT aktiviert (irgendwas testen :confused:) aber nicht zurück gedreht.
Jetzt habe ich mein Event:cool:

Vielen Dank für Deine Hilfe.

Das RenewSubscription bleibt allerdings.

23.03.2020, 21:39:45 | TimerPool | ONVIF IO Kamera1 (RenewSubscription): <br />
<b>Warning</b>: <br />
<b>Warning</b>: Error Fetching http headers in <b>/var/lib/symcon/modules/.store/de.nall.chan.onvif/ONVIF IO/module.php</b> on line <b>438</b><br />
in <b>/-</b> on line <b>1</b><br />

Okay, dann bitte noch mal ein Debug :slight_smile:
Wie zuvor, beim übernehmen der Einstellungen/Verbindungsaufbau und eine wenn der Fehler auftritt.
Michael

Hab ich schon gesagt wie cool das ist das Du Dich direkt darum kümmerst :smiley:

dump (Verbindung hergestellt).txt (171 KB)

dump (Connection lost).txt (91.1 KB)

Danke.

Allerdings komme ich da heute nicht mehr weiter.
Ich vermute irgendwas hält sich wieder nicht an den Standard.
Ich muss da morgen noch mal die Specs wälzen. Keine Ahnung ob ich wieder etwas falsch verstanden habe (allerdings funktionieren meine Geräte) oder deine Kamera ’ IPC ’ sich nicht an die Specs hält.

Michael

Hallo Michael,

evtl erleichtert Dir das die Suche.

Mit dem ONVIF Device Manager habe ich folgende Informationen zu den Kameras (die Haben sich wohl vermehrt) erhalten:
Gekauft hab ich von Rolink RLC-520 PoE und RLC-410W
ONVIF Version: ist bei Beiden 2.01

Moin, hat etwas gedauert.

Habe alles noch einmal überprüft.
Das Problem scheint aber an deinen Kameras zu liegen.
Es wird die Adresse ‚http://192.168.xxx.yyy:8000/onvif/Notification?Idx=00_1‘ als SubscriptionReference übermittelt.
Auf diese kann das Modul sich aber nicht verbinden (Error Fetching http headers).

In der Betaphase vom Modul hatte das auch schon @HarmonyFan mit den Kameras.
Da wurde sogar eine falsche IP gesendet.
Das hat Reolink aber inzwischen wohl behoben.
Eventuell haben die jetzt einen neuen Fehler eingebaut, oder ihn noch immer nicht behoben.

Michael