Kamera-Stream der Surveillance Station in WisuWin einblenden

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
NoRisk
Beiträge: 66
Registriert: 19.03.2015, 17:11

Kamera-Stream der Surveillance Station in WisuWin einblenden

Beitrag von NoRisk » 22.02.2021, 12:14

Hallo,

suche seit geraumer Zeit eine Lösung für die Anzeige des Kamerastreams einer IP-Kamera in homeputerCL.
Die Kamea ist an die Synology Surveillance Station angeschlossen und kann dort beispielsweise über einen RTSP-String angesprochen werden.

Das Format des Strings lautet:
rtsp://syno:[Session-ID]@[IP-Adresse]:[Port-Nummer]/Sms=[Kamera-ID].unicast

Soweit ich es bisher in Erfahrung bringen konnte ist die Anzeige eines Kamerastreams im MiniBrowser leider nicht möglich.
Daher habe ich überlegt, dafür den VLC Media Player zu verwenden und hier im Forum dazu auch sehr brauchbare Anwendungshilfen gefunden.
Das Beispiel aus dem Beitrag viewtopic.php?t=6591 funktioniert bsispielsweise hervorragend.
Dort wird in homeputer mit "STARTWIN()" eine VBS-Datei aufgerufen, welche ihrerseits den VLC-Player startet und die erforderlichen Parameter übergibt.
Der Inhalt der VBS-Datei lautet beispielsweise:

set wshell = CreateObject("Wscript.shell")
Dim result
result = wshell.appactivate("eingang")
if result = 0 then
wshell.exec ("C:\Program Files (x86)\VideoLAN\VLC\vlc.exe rtsp://syno:[Session-ID]@[IP-Adresse]:[Port-Nummer]/Sms=[Kamera-ID].unicast [weitere Startparameter für den Player]")
end if
set wshell = nothing
wscript.quit()

Damit wird der Videostream wie gewünscht im VLC-Player dargestellt.

Das Problem ist jedoch, dass sich die Session-ID bei jedem Aufruf der Session ändert, sodass jedes Mal der Code angepasst werden müsste.

Dazu habe ich im Beitrag unter viewtopic.php?f=19&t=23747&start=10 einen Lösungsansatz gefunden, bei dem in einem anderen Zusammenhang diese Session-ID offensichtlich mit dem folgenden Code als Cookie abgeholt wird:
Der Code aus dem Beitrag lautet wie folgt:

! Aktionsregel auf der Synology Surveillance Station starten durch ein HM Script
! v 0.2 (c) by Alchy
!++++++ SETUP FÜR DAS SCRIPT ++++++
var IP_SYNO = "x.x.x.x:y"; ! IP:PORT der Synology
var USERNAME = "xxx";
var PASSWORD = "xxx";
var CUXD_ID1 = "CUX2801001:1"; ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Holen der SessionID
var CUXD_ID2 = "CUX2801001:2"; ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Absenden des Befehls
var EVENTID = "1"; ! Welche Aktionsregel soll ausgeführt werden
var DEBUG = "ja"; ! wenn ja dann Bildschirmausgabe
!++++++ SETUP ENDE ++++++
! Cookie abholen
var url = "http://"#IP_SYNO#"/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account="#USERNAME#"&passwd="#PASSWORD#"";
dom.GetObject("CUxD."#CUXD_ID1#".CMD_SETS").State("wget -q --keep-session-cookies --save-cookies cookies.txt -O- '"#url#"'");
dom.GetObject("CUxD."#CUXD_ID1#".CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD."#CUXD_ID1#".CMD_RETS").State();
if (DEBUG == "ja") { integer result1 = srueck.Find("true"); if (result1 > -1) { WriteLine("Cookie erfolgreich geholt \n "#srueck);} else {WriteLine("Fehler beim Holen des Cookie - \nFehlermeldung: "#srueck)};}
string befehl ="http://"#IP_SYNO#"/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=Trigger&version=1&eventId="#EVENTID#"";
dom.GetObject("CUxD."#CUXD_ID2#".CMD_SETS").State("wget -q --load-cookies cookies.txt -O- '"#befehl#"'");
dom.GetObject("CUxD."#CUXD_ID2#".CMD_QUERY_RET").State(1);
string brueck = dom.GetObject("CUxD."#CUXD_ID2#".CMD_RETS").State();
if (DEBUG == "ja") { integer result2 = brueck.Find("true"); if (result2 > -1) { WriteLine("Aktion "#EVENTID#" erfolgreich gestartet \n "#brueck);} else {WriteLine("Fehler beim Starten der Aktion "#EVENTID #"\nFehlermeldung: "#brueck)}; }

Auch dieser Code läuft für die vorgesehene Aufgabe einwandfrei und ich möchte mich an dieser Stelle für die beiden Beiträge bei den Autoren ganz besonders bedanken.

Es war mir bisher jedoch trotz umfangreicher Versuche nicht möglich, die beiden Lösungsansätze zu kombinieren, um die Session-ID für den RTSP-String mittels Cookie zu holen und dem String zu übergeben.

Meine Frage an die Experten hier im Forum daher:

Ist es möglich diese Idee zu verwirklichen und wenn ja, auf welche Weise kann das erreicht werden?
Vielleicht gibt es aber auch viel einfachere Lösungen oder andere Herangehensweisen zur Anzeige von Kamerastreams aus der Surveillance Staten in HomePuter bzw. WisuWin.

Bedanke mich schon jetzt und freue mich auf Vorschläge
Vielen Dank
Gert

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“