Surveillance Station Kamera über API aktivieren

Status
Für weitere Antworten geschlossen.

fireb

Benutzer
Mitglied seit
06. Dez 2015
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich möchte gerne meine Kamera über die Web API aktivieren.

Leider funktioniert das ganze, wie in der Synology API beschrieben, nicht.

Versucht habe ich es mit folgendem Befehl
Rich (BBCode):
http://10.1.1.10:9001/webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&cameraId=1

Ich besitze nur eine Kamera, kann es vielleicht sein, dass dieser Befehl nur bei mehreren Kameras funktioniert?
Verwendet wird die SS 7.1

Liebe Grüße
fireb
 

tasovi

Benutzer
Mitglied seit
16. Jan 2016
Beiträge
5
Punkte für Reaktionen
1
Punkte
1
Bei mir klappt es leider auch nicht.
ich gehe wie folgt vor (per PHP)
//Anmelden
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=".$loginname."&passwd=".$passwd."&session=SurveillanceStation&format=sid'");
$sid = $obj["data"]["sid"];
echo "sid:".$sid."<br>";
// Kamera Deaktivieren
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=".$cam_id."&_sid=".$sid);

Kann wer helfen? ich habe auch die SS 7.1
 

fireb

Benutzer
Mitglied seit
06. Dez 2015
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Hallo Tasovi,

ich habe es nun geschafft. Nach langer Suche im Netz und ein bisschen herumprobieren mit der API Dokumentation habe ich es folgendermaßen hinbekommen.

Auf des DiskStation habe ich den Webserver aktiviert und habe nun im Webserver- Verzeichnis eine PHP Datei mit dem Namen "Cam.php" erstellt.
Die Datei enthält folgenden Code:
PHP:
<?php
//Authentication
$json = file_get_contents('https://10.1.1.10:4444/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=BENUTZERNAME&passwd=PASSWORT&session=SurveillanceStation&format=sid');
$obj = json_decode($json, true);
$sid = $obj["data"]["sid"];
 
//GetList
$json = file_get_contents('https://10.1.1.10:4444/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=3&_sid='.$sid);
$obj = json_decode($json, true);
$cam_activated = $obj["data"]["cameras"][0]["enabled"];
 
if($cam_activated == false){
	//Activate cam
	$json = file_get_contents('https://10.1.1.10:4444/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=1&_sid='.$sid);
	echo "<div class=\"centered\"><img src=\"https://10.1.1.10/on_icon.png\" style=\"width:auto;height:auto;\" /></div>";
} 
else
{
	//Deactivate cam
	$json = file_get_contents('https://10.1.1.10:4444/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=1&_sid='.$sid);
	echo "<div class=\"centered\"><img src=\"https://10.1.1.10/off_icon.png\" /></div>";
}
?>
 
<style type="text/css">
.centered {
  position: fixed;
  top: 40%;
  left: 40%;
}
</style>
Die Anleitung dazu habe ich auf dieser Seite gefunden.

Bei mir schaltet des nun beim Aufrufen der Datei im Browser die Kamera ein oder aus.

Liebe Grüße
fireb
 

tasovi

Benutzer
Mitglied seit
16. Jan 2016
Beiträge
5
Punkte für Reaktionen
1
Punkte
1
Guten Abend fireb,

vielen Dank für Deine schnelle Antwort.
Das Script von Dir hat mich schon mal weiter gebracht als bisher.
Nun bekomme ich die Kamera mit getList erfasst.
Auch die Variable $cam_activated hat den korrekten Wert. Aktiviere ich die Kamera manuell (z.B. über DC Cam) ist die Variable true (1) bzw. false , wenn ich die Kamera deaktiviere.

Aber leider geht es ab da nicht mehr weiter. Die Kamera wir nicht automatisch deaktiviert oder aktiviert.
Der einzige unterschied zwischen Deinem und meinem Script ist, dass ich per HTTP aufrufe.

PHP:
<?php 
//Authentication 
$json = file_get_contents('http://192.168.178.44:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=USERNAME&passwd=PASSWORD&session=SurveillanceStation&format=sid'); 
$obj = json_decode($json, true); 
$sid = $obj["data"]["sid"]; 
  
//GetList 
$json = file_get_contents('http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=3&_sid='.$sid); 
$obj = json_decode($json, true); 

$cam_activated = $obj["data"]["cameras"][0]["enabled"]; 
$json = file_get_contents('http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=1&_sid='.$sid); 
echo "<div class=\"centered\"><img src=\"http://192.168.178.44/on_icon.png\" style=\"width:auto;height:auto;\" /></div>";   
  
if($cam_activated == false){ 
    //Activate cam 
    $json = file_get_contents('http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=1&_sid='.$sid); 
    echo "<div class=\"centered\"><img src=\"http://192.168.178.44/on_icon.png\" style=\"width:auto;height:auto;\" /></div>"; 
}  
else 
{ 
    //Deactivate cam 
    $json = file_get_contents('http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=1&_sid='.$sid); 
    echo "<div class=\"centered\"><img src=\"http://192.168.178.44/off_icon.png\" /></div>"; 
} 
?>

Was mache ich falsch?

Besten Gruß
tasovi
 

tasovi

Benutzer
Mitglied seit
16. Jan 2016
Beiträge
5
Punkte für Reaktionen
1
Punkte
1
Ich hab den Fehler gefunden. Meine CameraID war falsch. Aus irgendeinem Grund ist die ID nicht die 1, sondern die 5. Aber jetzt klappt es. :)
 

fireb

Benutzer
Mitglied seit
06. Dez 2015
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Diesen Fehler hatte ich anfangs auch gemacht. Soweit ich weiß wird die Kamera ID immer nur einmal vergeben. D.h. legt man das erste Mal die Kamera an bekommt sie die ID 1, löscht man die Kamera wieder und legt sie neu an bekommt sie die ID 2 usw.
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat