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

Leider scheint das Ende zu fehlen.
Der Anfang schaut gut aus, und dann fehlt schon das zweite h264 Profil.
Hast du das Zeilenlimit vorher ausgeschaltet?
Michael

Hier nochmals ohne Limit…
dump.txt (280,6 KB)

Die Frage bezieht sich auf den Image Grabber, habe aber unterdessen einen Event darauf erstellt. So wird regelmässig ein Bild erstellt. Ohne diesen Event wird aber zufälligerweise ein Bild erstellt, ohne irgendwelche Regelmässigkeit.

Da gibt es ein Interval Feld in den Einstellungen um alle x Sekunden ein Bild zu machen.

Michael

Das habe ich unterdessen gefunden.
Aber, ob ich nun einen Event mache oder das Intervall-Feld benutze, es funktioniert nicht…
Das Bild wird von der Kamera nicht erneuert, sondern es wird das alte Bild geladen.

Hier der Dump wenn ich auf ‚jetzt aktualisieren‘ drücke in der Instanzenkonfiguration:
dump1.txt (1,3 KB)

Nur wenn ich etwas in der Instanzenkonfiguration ändere und neu speichere, dann wird das Bild der Kamera erneuert.
Hier der Dump dazu:
dump2.txt (77,7 KB)

So, habe etwas gesucht und auch noch mal in den Specs nachgelesen.
Leider muss ich sagen… die Kamera (DCS-8302LH laut dem Dump) macht Müll.
Das Bild muss aktualisiert werden, auch ohne vorher eine neue URL bei der Kamera mit GetSnapshotUri anzufragen.
Die Kamera kodiert aber hier einen Timestamp in die URL und das ist falsch.

ONVIF saget:

Das bereitgestellte
image wird automatisch und unabhängig von Aufrufen von GetSnapshotUri aktualisiert.

Ähnlich auch bei den Ereignissen. Die Kamera meldet ein Relay und die Bewegungserkennung.
Liefert aber anstatt den geforderten Datentypen irgendein Müll mit Unterstrichen.

    ["DataName"]=>
    string(12) "LogicalState"
    ["DataType"]=>
    string(13) "xsd__boolean_"
    ["SourceName"]=>
    string(16) "RelayOutputToken"
    ["SourceType"]=>
    string(21) "tt:tt__ReferenceToken"

Korrekt wäre xs:boolean oder xsd:boolean sowie tt:ReferenceToken.
Somit leider wieder eine Firmware/Kamera welche sich nicht an den Standard hält. Sorry.

Michael

1 „Gefällt mir“

Danke für Anschauen.
Habe mal ein Ticket bei D-Link eröffnet.
Ob das wohl was bringt :roll_eyes:

Habe jetzt jedenfalls eine Script zusammenkopiert, welcher die URL mit GetSnapshotUri anfragt.
Das funktioniert soweit, dann kann dein Modul das Bild abholen.
Interessant ist, dass das Modul aber das neue Bild (mit einem anderen Namen/Timestamp) trotzdem mit der alten URL abholt.


GetSnapshotUri gibt aber diese URL aus: http://192.168.178.99:80/tmp/mydlink/snapshot/20221228_224709_810_180p.jpg
Na ja, funktioniert jedenfalls :joy:

Denkst Du, dass ich trotzdem irgendwie an die Benachrichtigung bei Bewegungserkennung gelangen könnte, auch wenn die Kamera nicht den Standards entspricht.

Zumindest nicht über das Modul, solange D-Link das nicht fixt.
Aber vielleicht hat die Kamera ja noch andere Möglichkeiten, wie einen Webhook aufrufen. Dann Kast du das darüber in IPS bekommen.
Michael

Habe eine andere Kamara getestet, welche ebenfalls ONVIF fähig sein soll.
Mit dem ONVIF Device Manager komme ich drauf.
Aber mit SYMCON wird schon das Passwort nicht akzeptiert.
Kamera ist eine Marmitek View Mo.
Es ist diese IP (192.168.178.29:8000)

Hier der Debug vom Dicovery
dump.txt (121,0 KB)

Hier der Debug bei ‚Fähigkeiten neu laden‘, aber Gerät ist nicht erreichbar.
dump (1).txt (87,6 KB)

China Cam mit Tuya Firmware… Hersteller ‚PPS IPC based on ONVIF‘ :smiley:
GetProfiles liefert gleich Optional Action Not Implemented. Was natürlich falsch ist.
GetProfiles ist eine Pflichtfunktion und nicht optional.
Du kannst natürlich versuchen über einschlägige Webseiten eine neuere / bessere Firmware zu bekommen.
Alternativ, versuche die RTSP URL zu ermitteln und lege einfach manuell eine Medien-Objekt mit der URL an.
Über das ONVIF-Modul wird diese Kamera so nicht laufen.
Michael

PS: Falls du im Web nach der Firmware suchen willst
Model: Bullet 2S
FirmwareVersion: ppstrong-a5-tuya2_general-5.3.2.20220705
HardwareId: Ver 2.1

Danke für die Prüfung
Die Kamera geht retour, ich finde dazu nichts beim suchen im Web.

Gibt es eigentlich eine Liste, welche Kameras die Vorgaben von ONVIF erfüllen.
Leider ist nicht mal auf die Liste von ONVIF Verlass, denn die D-Link DCS-8302LH ist dort gelistet und funktioniert auch nicht richtig. Vom Support bei D-Link habe ich die Aufforderung erhalten, dass ich belegen soll, dass die Parameter ein ‚Must‘ sind.

Habe mal ein paar ONVIF Specs geschickt, mal sehen…

Ja leider, hatte ich auch schon häufiger. Häufig werden die Geräte mit FW x getestet und dann ist es später einfach kaputt.

Wenn es um die Datentypen geht. Das ist XML Standard:

Michael

Habe eine neue Kamera angeschafft (Reolink Duo 2), welche das ONVIF Protokoll unterstütz.
Ich erhalte zwar Bewegungsmeldungen (MotionAlarm), jedoch wäre noch mehr möglich (siehe Dump-File)
dump.txt (474,3 KB)
Diese weiteren Möglichkeiten werden aber nicht aufgelistet.

Die weiteren mögliche Ereignisse wären:
FaceDetect
PeopleDetect
VehicleDetect
DogCatDetect

Ich kann nicht ausschließen, dass hier noch etwas im Modul fehlt.
Allerdings liefert die Kamera bei der Abfrage der vorhandenen Events unter dem Topic-Pfad RuleEngine nur CellMotionDetector und keinen MyRuleDetector.
image
Auch wenn sie anschließend hier noch weitere Events unter RuleEngine/MyRuleDetector sendet

Event:1:Topic | tns1:RuleEngine/MyRuleDetector/FaceDetect
Event:2:Topic | tns1:RuleEngine/MyRuleDetector/PeopleDetect
Event:3:Topic | tns1:RuleEngine/MyRuleDetector/VehicleDetect
Event:4:Topic | tns1:RuleEngine/MyRuleDetector/DogCatDetect

Auch bei den Profilen wird nur CellMotionDetector gemeldet und kein weiterer :frowning:

Profiles:0:VideoAnalyticsConfiguration:RuleEngineConfiguration:Rule:Name | MotionDetectorRule
Profiles:0:VideoAnalyticsConfiguration:RuleEngineConfiguration:Rule:Type | CellMotionDetector

Somit habe ich leider aktuell keine einfache Lösung dafür.
Michael

Danke für die Prüfung
Ich habe eine Supportanfrage bei Reolink gemacht.
Die Doorbell von Reolink hatte das selbe Problem, dass die die ‚MyRuleDetector‘ Meldungen im ONVIF Client nicht zur Auswahl stehen.

Ich habe aber noch zwei andere Probleme, welche sich aber wahrscheinlich auch auf die Firmware beziehen:
Der MainSteam funktioniert nicht in Symcon, aber auch im ONVIF-Device Manager funktioniert er nicht. Es wird dem Client ein falscher Pfad mitgeteilt (rtsp://192.168.178.101:554/Preview_01_main ist richtig, mitgeteilt wird aber rtsp://192.168.178.101:554) Wäre an und für sich nicht ein Riesenproblem, da der Pfad manuell geändert werden kann.

Das andere Problem ist, dass kein Standbild ausgegeben wird. Die einzige Meldung im Dump nach Aktualisierung ist diese (auch ein falscher Pfad)

08.01.2023, 12:09:11 |        Request Image | http://admin:XXXXXX.@192.168.178.101:80/cgi-bin/api.cgi?cmd=onvifSnapPic&channel=0

Reolink gibt den Pfad folgendermassen an:

Snap URL:
http://​(ip address)​/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=​(any combination of
numbers and letters)​&user=​(user name)​&password=​(user password)
(Every time you refresh the website it will snap a new picture)

Jedoch kriege ich auch so kein Bild hin…

Edit: Problem mit dem Standbild behoben, Port 80 war auf der Kamera deaktiviert…

Eigentlich wird das Ereignis zur Verfügung gestellt, nur benutzt wird es nicht.

Hast du den eine entsprechende Events Instanz angelegt und passend konfiguriert?

Michael

Das stimmt, ich habe die Event Instanz nicht manuell angewählt. Ich hatte nur dienigen, welche mir bei der Videoquelle gelistet wurden, gewählt.
Ich habe diese Event Instanzen nun angelegt, aber es sind dieselben Bewegungserkennungen wie bisher.
Ich habe gehofft, dass allenfalls diejenigen Typen unten aufgeführt werden, aber leider nicht. Diese wären viel genauer als die allgemeinen Bewegungen, es werden viel zu viele Falschmeldungen generiert.

Kann ja nicht, weil sie im IO gar nicht aufgeführt werden :wink:

Habe auch andere Projekte gefunden, welche ähnliche Probleme haben. Einer hat es einfach hart für Relolink im Code. Da das Symcon Modul aber universell ist, geht das nicht. Allerdings habe ich noch ein paar Ideen, dauert aber noch etwas.
Michael

1 „Gefällt mir“

Habe jetzt den Pfad zu den Events meiner Reolink-Kamera gefunden:

http://ip-adresse-kamera/cgi-bin/api.cgi?cmd=GetAiState&rs=&user=admin&password=xxxxx

So kann ich diese mit einem JSON Decoder abholen…