Kamera-Stream aus "Synology Surveillance Station" in WebFront einbinden

Puh,

ich knabber da auch schon seit 2 Tagen rum.
Aber leider bekomme ich kein Bild.

Script (in user/webfront/name wie anleitung) sieht folgendermaßen aus:

<?
// Konfiguration
$user = "XXXX";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
$pass = "keineSonderzeichen";  // Passwort zu eben eingegebenem Benutzer
$ip = "192.168.178.121";  // IP-Adresse eures Synology-NAS
$port = "5000";  // default Port der Surveillance Station
$cameraID = "1";  // ID der Kamera, welche angezeigt werden soll

// *** Eventuell müsst ihr die URLs von HTTP auf HTTPS anpassen, sofern ihr HTTPS aktiviert habt!

// Authentifizierung an Synology Surveillance Station WebAPI und auslesen der SID
$json = Sys_GetURLContent('http://'.$ip.':'.$port.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account='.$user.'&passwd='.$pass.'&session=SurveillanceStation&format=sid');
$obj = json_decode($json, true);
@$sid = $obj["data"]["sid"];

//$Cam_Stream_URL = 'http://'.$ip.':'.$port.'/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&version=1&method=Stream&cameraId='.$cameraID.'&format=mjpeg&_sid='.$sid;
$Cam_Stream_URL = 'http://'.$ip.':'.$port.'/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&method=Stream&version=1&cameraId='.$cameraID.'&format=mjpeg&_sid='.$sid;

echo '<div class=\"centered\"><img src=$Cam_Stream_URL style=\"width:auto;height:auto;\" /></div>';
?>

Die Kamera ID habe ich herausgefunden, es ist die 1.

Der Inhalt meiner String Variablen mit HTML Profil:

<iframe width="400pixel" height="300pixel" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://192.168.178.102:3777/user/synology_cam1.php"></iframe>

Die Kamera kann kein MJPEG, sondern nur H.264.

Ich wollte nicht gleich am ersten Tag schreiben, aber jetzt gehen mir langsam die Ideen aus.

Eventuell habt ihr ja noch eine Idee ?

Ganz liebe Grüße
Sascha

Hallo Zusammen!

Hab nun ne weile gelesen, komme aber nicht zum Erfolg.
Mein Ziel ist das Bild meiner IPcam (FOSCAM FI9901EP - H.264) auf meinem iPhone im IPS App zu sehen.
Ich habe ein Qnap TVS-882 mit Surveillance Station 5.1.3.4.1.
Besteht die Möglichkeit des Erfolges, oder ist meine Hardware dafür nicht geeignet?

Bis jetzt bekomme ich jedenfalls kein Bild in das Webfront.
(Per RTSP-Stream hab ich es geschafft direkt von der Cam das Bild in Chrome im Webfront darzustellen - ich hatte es aber gerne auf meinem iPhone :rolleyes:)

Freue mich auf eure Rückmeldung.

Dieses Skript ist für NAS von Synology, mit QNAP wird es nicht funktionieren.

Ok. Schade. Da hab was wesentliches nicht bemerkt.
Danke für die Info.

Hast du oder jemand anderes eine Idee wie ich das Bild auf die App im IPhone bringen kann?

Gesendet von iPhone mit Tapatalk

Hi,
ein Bild bekomme ich. Ich versuche jetzt entweder meine 4 Cams oder die gesamte Überwachung aus- bzw. einzuschalten. Folgendes habe ich versucht:

//$json = Sys_GetURLContent('http://'.$ip.':'.$port.'/webapi/entry.cgi?api="SYNO.SurveillanceStation.ActionRule"&idList="1,2"&version="1"&method="Disable"&_sid='.$sid);
$json = Sys_GetURLContent('http://'.$ip.':'.$port.'/webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=1,2,3,4&_sid='.$sid);

bei mir tut sich dann aber in der Surveilance-Station nichts. Wo ist der Fehler?

Ralf

Hi,
ich antworte mir mal selbst. Ich habe es geschafft den HomeMode ein- und auszuschalten. Folgendes Script macht es bei mir:

<?php
// Konfiguration
$user = "Benutzer";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
$pass = "Passwort";  // Passwort zu eben eingegebenem Benutzer
$ip = "192.168.178.2";  // IP-Adresse eures Synology-NAS
$port = "5000";  // default Port der Surveillance Station

//authentification
 $response = get_web_page("http://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=".$user."&passwd=".$pass."&session=SurveillanceStation&format=sid");
//echo $response; 
  $resArr = array();
   $resArr = ($response);

   $resArr = json_decode($response,true);

//sid in the array

$sid=array();
$sid=$resArr["data"]["sid"];
echo $sid."
";

//send Start record
$response = get_web_page("http://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=Switch&on=false&_sid=".$sid);
echo $response."
"; 

function get_web_page($url) {
      $options = array (CURLOPT_RETURNTRANSFER => true, // return web page
    CURLOPT_HEADER => false, // don't return headers
    CURLOPT_FOLLOWLOCATION => true, // follow redirects
    CURLOPT_ENCODING => "", // handle compressed
    CURLOPT_USERAGENT => "test", // who am i
    CURLOPT_AUTOREFERER => true, // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
    CURLOPT_TIMEOUT => 120, // timeout on response
    CURLOPT_MAXREDIRS => 10 ); // stop after 10 redirects


      $ch = curl_init ( $url );
      curl_setopt_array ( $ch, $options );
      $content = curl_exec ( $ch );
      $err = curl_errno ( $ch );
      $errmsg = curl_error ( $ch );
      $header = curl_getinfo ( $ch );
      $httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );

      curl_close ( $ch );

      $header ['errno'] = $err;
      $header ['errmsg'] = $errmsg;
      $header ['content'] = $content;
      return $header ['content'];
     }
?>

So wird HomeMode ausgeschaltet. Mit Switch&on=true wird es eingeschaltet. Getestet mit 8.2.3-5828.

Vielleicht nützt es ja außer mir noch jemanden.

Ralf

So wird HomeMode ausgeschaltet. Mit Switch&on=true wird es eingeschaltet. Getestet mit 8.2.3-5828.

Vielleicht nützt es ja außer mir noch jemanden.

Ralf

Genau das habe ich gerade gesucht.

Vielen Dank für Deine Arbeit!

Nico

Hallo,

@HarmonyFan
eine Frage, funktioniert das Schalten des Home Modus noch mit dem Skript aus Beitrag 158?

Als Version läuft bei mir die 8.2.10 - 7310

Ich habe da so meine Probleme, welchen Benutzer muss ich hier angeben?
Habe in der Synology Station einen (Manager aller Objekte) angelegt.

Wenn ich dann aber alles entsprechend im Skript eingebe und dieses ausführe, bekomme ich die folgende Meldung.

Notice: Undefined index: data in /var/lib/symcon/scripts/31156.ips.php on line 19

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/31156.ips.php on line 19

{"error":{"code":119},"success":false}

Was mach ich da falsch?

Danke und Grüße
Stephan

Hiu,
ich benutze den HomeMode zwar nicht mehr aber mein Script liefert bei mir:

StRl2sCJnX8ohjSpzf8lPUQQvN_3v60z4tpdGbjlL6w1xzp1JRrHL1ELKDnp9qaGBMvjaTMxs7kKg1PwaSHGYw
{"success":true}

was mir aufgefallen ist war das beim Passwort z.B. „$abcd“ zu einem Fehler führte ‚$abcd‘ aber nicht.

Da die Bewegungserkennung meiner Kameras und auch von der Surveilance Station nicht so besonders funktionierte habe ich jetzt bei jeder Kamera ein Bewegungsmelder und ich steuere die Aufnahme jeder Kamera mit IPS separat. So bin ich auch flexibler und kann gezielt Aufnahmen starten auch wenn ich zu Hause bin.

Ralf

Ist es mit der 8.2.10 noch möglich, den Stream zu bekommen? Oder ist das seit der 8.2.3 nicht mehr möglich geworden? Ich habe mein NAS neu und hab das bisher nicht verfolgt. So ganz klug wurde ich aus den Beiträgen nicht :slight_smile:

Hallo Ralf,

@HarmonyFan danke für deine Antwort und sorry für die späte Rückmeldung.

Du nutzt also die Surveillance Station nicht mehr? Wie genau kannst du deine Kamera dann direkt steuern was Aufnahme etc. angeht? Welche Kamera hast du?

Danke und Grüße
Stephan

Hi,
doch ich nutze die Surveilance Station noch aber nicht mehr die automatische Aufnahme nach Zeit oder der internen Bewegungserkennung, Wenn ein BWM bei IPS eine Bewegung meldet starte ich per IPS gezielt die Aufnahme auf der Kamera die zu dem BWM gehört in Surveilance Station.

Ralf

Servus
zzt. läuft am NAS diese Kombination:
image

Streams gehen astrein im Webfront, mußte da noch nie etwas anpassen.

gruß
bb

Wie machst du das? Bei mir kommt nix :frowning: Das vom ersten Beitrag?

Uuups, sorry. Da war ich jetzt zu voreilig.
Aktuell gehe ich auf den RTSP Stream direkt von der Kamera.
Irgendwann hatte ich auch den von der Surveillance Station.

sry wegen Falschinformation
bernhard

Ok das klingt interessant, das Kamera Bild ist dann auch ins Webfront eingebunden?
Greifst du das dann von der Surveilance Station ab?

DSM ist bei mir Version: 7.0.1-42218
SS ist bei mir Version: 8.2.10-7310

Funktioniert es mit diesem Versionen noch per IP Symcon zu steuern bzw. das Bild abzugreifen?

Kannst du mir hier evtl. auf die Sprünge helfen?

Danke und Gruß
Stephan

Hi,
das Kamerabild hole ich mit dem Onvif Modul ins Web-Front. Das wird direkt von den Kameras geholt. Ich benutze noch eine DSM 6.x weil ich den Zappiti Server brauche und der läuft nicht mehr so einfach unter DSM7 und mit USB gibt es vielleicht auch noch ein Problem wegen Z-Wave und Zigbee.

Versuch mal Onvif damit kann man auch PTZ steuern falls es die Kameras hergeben.

Ralf

Hi,

das Onfiv Modul nutze ich jetzt auch, klappt einwandfrei :sweat_smile:.

Ah okay, klappt DSM7 dann nicht mehr? Habe das mit dem Home Modus mal getestet, hatte es nicht hinbekommen…

Grüße
Stephan

Mit dieser Zeile habe ich jetzt glatt den Login hinbekommen

$response = get_web_page("https://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=".$user."&passwd=".$pass."&session=SurveillanceStation");

Im nächsten Schritt wenn ich den HomeMode setzen möchte,

$response = get_web_page("https://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=Switch&on=false");

erhalte ich dann aber:
{"error":{"code":119},"success":false}

Woran kann denn das noch liegen?

Danke und Grüße
Stephan

Wenn ich diesen Befehl versuche

$response = get_web_page("https://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.PTZ&method=Move&version=1&cameraId=2&direction=left&speed=1&moveType=Start");

bekomme ich
{"error":{"code":105},"success":false}
Code 105 ist eine Berechtigungsproblem. Das verstehe ich nicht muss ich sagen.

EDIT:
Ich hab das Schalten des Home Modes jetzt hinbekommen.

<?php
// Konfiguration
$user = "xxx";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
$pass = 'xxx';  // Passwort zu eben eingegebenem Benutzer
$ip = "xxx";  // IP-Adresse eures Synology-NAS
$port = "5001";  // default Port der Surveillance Station

//authentification
 $response = get_web_page("https://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=".$user."&passwd=".$pass."&session=SurveillanceStation");


//echo $response; 
  $resArr = array();
   $resArr = ($response);

   $resArr = json_decode($response,true);

//sid in the array

$sid=array();
$sid=$resArr["data"]["sid"];
echo $sid."
";

//send Start record
$response = get_web_page("https://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=Switch&on=true&_sid=".$sid."");



                                            

echo $response."
"; 

function get_web_page($url) {
      $options = array (CURLOPT_RETURNTRANSFER => true, // return web page
    CURLOPT_HEADER => false, // don't return headers
    CURLOPT_FOLLOWLOCATION => true, // follow redirects
    CURLOPT_ENCODING => "", // handle compressed
    CURLOPT_USERAGENT => "test", // who am i
    CURLOPT_AUTOREFERER => true, // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
    CURLOPT_TIMEOUT => 120, // timeout on response
    CURLOPT_MAXREDIRS => 10 ); // stop after 10 redirects


      $ch = curl_init ( $url );
      curl_setopt_array ( $ch, $options );
      $content = curl_exec ( $ch );
      $err = curl_errno ( $ch );
      $errmsg = curl_error ( $ch );
      $header = curl_getinfo ( $ch );
      $httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );

      curl_close ( $ch );

      $header ['errno'] = $err;
      $header ['errmsg'] = $errmsg;
      $header ['content'] = $content;
      return $header ['content'];
     }
?>

@HarmonyFan
Könntest du mir vielleicht sagen wie man die Aufnahme manuell startet bzw. stoppt?

In der api habe ich das gefunden, es wird auch erfolgreich durchlaufen aber eine Aufnahme startet da nicht. Wie muss denn die Kamera in der Surveillance Station konfiguriert sein?
Den Aufnahmezeitplan habe ich bisher deaktiviert.

$response = get_web_page("https://".$ip.":".$port."/webapi/entry.cgi?version=6&cameraIds=2&api=SYNO.SurveillanceStation.Recording&toTime=0&offset=0&limit=80&fromTime=0&method=List&_sid=".$sid."");

Danke schon mal.

Grüße
Stephan