Surveillance Station Surveillance Station API und Returncode "105" Insufficient Privilleges

Status
Für weitere Antworten geschlossen.

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Hallo miteinander,

zur Zeit arbeite ich an einer Perl-Routine für FHEM Hausautomatisierung um unter Verwendung der SS API Aufnahmen der Kameras zu triggern.
Ich habe es aufgegeben die Bewegungserkennung der Kameras oder SS für einen sichere Erkennung einer Bewegung zu verwenden. Statt dessen soll in Abhängigkeit anderer Ereignisse, z.B. Tür / Fenster wurde geöffnet, Infrarotbewegungsmelder spricht an usw... ein Aufnahmestart erfolgen.

Das ganze funktioniert mit dem nachfolgenden Code (Auszug) schon sehr gut.

Rich (BBCode):
###############################################################################
####     Starten einer Kameraaufnahme

sub camstart {
  # Übernahmewerte sind Session-id $sid, Kameraname: $camname, Kamera-ID: $camid
  my $sid = shift(@_);
  my $camname = shift(@_);
  my $camid = shift(@_);

  my $camurl = "http://$servername:$serverport/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId=$camid&action=start&_sid=$sid";
  my $myjson = get $camurl;

  # Response erfolgt im JSON Format der Art: {"success":true} 
  my $data = decode_json($myjson);
  my $success = $data->{'success'};

  if ($success eq "true") {
       print "Kamera $camname Aufnahme gestartet. Rückgabewert: $success \n";
       }
       else {
       # Errorcode aus JSON ermitteln
       my $errorcode = $data->{'error'}->{'code'};

       # Fehlertext zum Errorcode ermitteln
       my $error = &experror($errorcode);

       # Logausgabe auf Reading
       print "ERROR - Aufnahmestart Kamera $camname konnte nicht ausgeführt werden. Errorcode: $errorcode - $error \n";
       return ($success, $errorcode);
       }
return ($success,"");
}


Problem ist, das immer mal wieder der Returncode "105" erscheint und die Aufnahme nicht startet. Dieser Code bedeutet "Insufficient user privilege / No permission".
Es ist für mich unverständlich weil der Aufruf etliche mal tadellos funktioniert und dann plötzlich mal nicht. Der verwendete User ist als Mitglied der Admin-Gruppe im DSM angelegt.

Hat jemand auch bereits Erfahrungen damit gesammelt ?
 

MadMarvin

Benutzer
Mitglied seit
09. Mrz 2015
Beiträge
112
Punkte für Reaktionen
0
Punkte
16
Ich könnte Dir anbieten das ganze in meiner FHEM-Installation und mit meiner Surveillance Station zu testen, ob ich den Fehler nachvollziehen kann.

Was ich aber nicht verstehe...
Du schreibst was vom verwendeten User, ich kann aber in dem Skript keinen Usernamen erkennen und mir fehlt die Verknüpfung von dem API-Aufruf zum Benutzer.
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Danke für das Angebot. Das können wir machen. In FHEM habe ich es noch nicht eingebunden. Bin noch dabei das Perl Script fertig zu schreiben und zu testen bis es rund ist - dann kommt FHEM dran.
Aber trotzdem, das Perl Script kannst du ja auch testen.

Ja, das ist nur ein Auszug. Der Nutzer wird vorher bei einer Login-Funktion verwendet welche die Session-Id zurückgibt. Diese Session-Id wird in allen folgenden Aufrufen, so auch in dem obigen Snippet, verwendet.

Wenn alles funktioniert, sieht der output so aus:

Rich (BBCode):
Login erfolgreich mit _sid = MmtXxfBqxDr2Q14A0MIN235902
Hauseingang :  1  
Kamera Hauseingang Aufnahme gestartet. Rückgabewert: true 
Kamera Hauseingang Aufnahme gestoppt. Rückgabewert: true 
Die Session _sid = MmtXxfBqxDr2Q14A0MIN235902 wurde beendet. Rückgabewert: true 
Login erfolgreich mit _sid = Yl.I20CD1xBIo14A0MIN235902
Terrasse :  2  
Kamera Terrasse Aufnahme gestartet. Rückgabewert: true 
Kamera Terrasse Aufnahme gestoppt. Rückgabewert: true 
Die Session _sid = Yl.I20CD1xBIo14A0MIN235902 wurde beendet. Rückgabewert: true 
Login erfolgreich mit _sid = kx89aDPAj8kJU14A0MIN235902
Flur Vorderhaus :  4  
Kamera Flur Vorderhaus Aufnahme gestartet. Rückgabewert: true 
Kamera Flur Vorderhaus Aufnahme gestoppt. Rückgabewert: true 
Die Session _sid = kx89aDPAj8kJU14A0MIN235902 wurde beendet. Rückgabewert: true 
Login erfolgreich mit _sid = wrQ1Kaaahn83E14A0MIN235902
Carport :  5  
Kamera Carport Aufnahme gestartet. Rückgabewert: true 
Kamera Carport Aufnahme gestoppt. Rückgabewert: true 
Die Session _sid = wrQ1Kaaahn83E14A0MIN235902 wurde beendet. Rückgabewert: true


Tritt der 105-Fehler auf, sieht es so aus:

Rich (BBCode):
Login erfolgreich mit _sid = qHV2cQ04wEtls14A0MIN235902
Hauseingang :  1  
Kamera Hauseingang Aufnahme gestartet. Rückgabewert: true 
Kamera Hauseingang Aufnahme gestoppt. Rückgabewert: true 
Die Session _sid = qHV2cQ04wEtls14A0MIN235902 wurde beendet. Rückgabewert: true 
Login erfolgreich mit _sid = 1YO9Ad1hPjgqQ14A0MIN235902
ERROR - Die ID von Kamera Terrasse konnten nicht ermittelt  werden. Errorcode: 105 - Insufficient user privilege / No permission 
Use of uninitialized value $camid in concatenation (.) or string at cam.pl line 51.
Terrasse :    
Use of uninitialized value $camid in concatenation (.) or string at cam.pl line 201.
ERROR - Aufnahmestart Kamera Terrasse konnte nicht ausgeführt werden. Errorcode: 105 - Insufficient user privilege / No permission 
Die Session _sid = 1YO9Ad1hPjgqQ14A0MIN235902 wurde beendet. Rückgabewert: true 
Ein weiterer Aufnahmestartversuch für Kamera Terrasse 
Login erfolgreich mit _sid = 2ZQNJQyJx7ICI14A0MIN235902
Use of uninitialized value $camid in concatenation (.) or string at cam.pl line 201.
ERROR - Aufnahmestart Kamera Terrasse konnte nicht ausgeführt werden. Errorcode: 105 - Insufficient user privilege / No permission 
Die Session _sid = 2ZQNJQyJx7ICI14A0MIN235902 wurde beendet. Rückgabewert: true
 
Zuletzt bearbeitet:

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Ich glaube inszwischen einen Schritt weiter zu sein.
Wichtig ist es wohl die neueste API Version für die jeweiligen Abfragen zu verwenden.
Welche das für die verfügbaren (nicht nur SS) API's sind, kann mit folgendem Aufruf ermittelt werden:

Rich (BBCode):
http://<Server>:<Port>/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=ALL

Für die API = SYNO.API.Auth ist das zur Zeit dir "4". Ich hatte bis jetzt die Version "2" in meinen Aufrufen verwendet.

Nach der Anpassung ist der 105 - Error nicht mehr aufgetreten. Aber man soll sich ja nicht zu früh freuen.... mal weiter testen.
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Zu früh gefreut .... der Fehler tritt wieder ab und an auf :(
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Perl-Script zum Triggern von Kameraufnahmen in Surveillance Station (mit API)

Hallo zusammen,

anbei stelle ich mal das gesamte Perl-Script zur Triggerung der Aufnahmen von Kameras in der Surveillance Station unter Verwendung der SS-API (Doc Version 2.0) zur Verfügung.
Ich hoffe damit Anregungen für eigene Versuche zu geben und hoffe natürlich auch dass es Ideen zur Verbesserung insbesondere des "Errors 105 - Insufficient privileges" gibt.
Zur Zeit arbeite ich weiter an der Integration für FHEM was auch schon recht gut läuft. Der Error 105 wirkt sich natürlich auch dort negativ aus und muß eleminiert werden.

Am Anfang des Scriptes einfach alle Variablen zu Syno-URL, Nutzernamen / Passwort usw. ausfüllen.
Der Kameraname muß exakt dem in der SS verwendeten Namen entsprechen und darf keine Leerzeichen enthalten. Die Aufnahmedauer kannst du zum Test variieren. Dann mit "perl cam.pl" ausführen.

Hier das Script: Anhang anzeigen cam.pl.txt

(Muß nach cam.pl umbenannt werden)
 
Zuletzt bearbeitet:

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Habe festgestellt dass im Fall des Auftretens des Fehlers 105- Insufficient privileges der folgende Fehler in /var/log/messages zu finden ist:

Rich (BBCode):
entry.cgi_SYNO.SurveillanceStation.Camera[3].List[17698]: group_is_admin_group_member_by_uid.c:28 SYNOUserGetByUID(4294967295) failed [0x1D00 user_get_by_uid.c:163]

Ticket bei Synology ist aufgemacht. Mal schauen ...
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Antwort vom deutschen Synology Support erhalten. Ist wie immer ... entfernen sie alle Third-Party-Pakete (hab phpVirtualbox drauf) und probieren sie erneut .... blabla. Das hatte ich schon so oft mit dem deutschen Support erlebt. Einzig die taiwanesichen Kollegen kümmern sich wirklich einmal .... so zumindest meine Erfahrung.
Habe die Supportkollegen gebeten mein Ticket an den taiwanesischen Support weiterzuleiten.
Kann man den deutschen Support nicht irgendwie gleich umgehen ? Lege echt keinen Wert darauf.
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Nach meiner massiven Beschwerde beim Synology Support hat sich ein Supportkollege der Sache richtig angenommen und gemeinsam mit der Syno-Entwicklung die Lösung gefunden.
Die Angabe der $sid muß abweichend der Angaben im SS API-Guide 2.0 in " " eingeschlossen sein. Das API-Guide wird entsprechend angepasst.
Hier die Nachricht im Original:

Please add double quotation marks at sid when user want to send command to SVS server.

For example:

2015.11.22 10:24:39 5: CamTER - URL call: http://<Server>:<Port>/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&version=7&method=List&session=SurveillanceStation&_sid="1JagteewjMayY14A0 MIN235902"


After test on our side, it can help to avoid user's problem, otherwise, system might get wrong value on sid.

About this, we add notification on SVS API next version.
 

ckl67

Benutzer
Mitglied seit
16. Apr 2014
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo,

Vielen Dank für diese Information, nach langem langem Suchen bin Ich auf diesem Post gekommen. ?
Das mir geholfen hat, mein Problem zu finden.
Auf meiner Seite, funktionierte alles perfekt, Außer dem, dass Ich ein Error 105 hatte mit SYNO.SurveillanceStation.VideoStream

Hier die Info die Ich Synology Schrieb

Hello,

Heads up to a bug
In Surveillance_Station_Web_API_v2.4.pdf document you are highlighting that
<SESSION_ID> : “Jn5dZ9aS95wh2”, should be quoted by “”

This is working well with
API
* SYNO.API.Auth
* SYNO.SurveillanceStation.Notification.Filter
* SYNO.SurveillanceStation.Camera
Example:
http://192.168.1.20:5000/webapi/ent...AN004492"&api=SYNO.SurveillanceStation.Camera

Nevertheless this is not working with
* SYNO.SurveillanceStation.VideoStream'

http://192.168.1.20:5000/webapi/Sur...eoStream&method=Stream&version=1&format=mjpeg

I get:
{"error":{"code":105},"success":false}

By removing the quote, all is working well.

Thanks to consider, and to fix the issue

Christian
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Guten Morgen,

ich verwende in meiner FHEM-Applikation die API SYNO.SurveillanceStation.VideoStreaming statt SYNO.SurveillanceStation.VideoStream.
Damit funktioniert es, auch mit den Quotes. Beachte, es ändert sich auch der Path von "SurveillanceStation/videoStreaming.cgi" zu " entry.cgi".

Also z.B.

Rich (BBCode):
http://<Server>:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.VideoStreaming&version=1&method=Stream&cameraId=2&format=mjpeg&_sid="XuIIpQIsLNKk214A0MIN235902"

Wenn ich mich nicht irre, hatte ich diese Info von dem Syno-Entwicklungssupport, der mich während der Entwicklungszeit in der Folge sehr gut unterstützt hat. In der Doku findet man nur "SYNO.SurveillanceStation.VideoStream". Über die API-Abfrage "http://<Server>:5000//webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.SurveillanceStation" gibt die Syno auch die API "SYNO.SurveillanceStation.VideoStreaming" preis.

Versuch es mal damit, vielleicht hilft es.

Ich nutze noch die SVS 7.1. Bist du schon höher ?
Wie sind deine Erfahrungen mit der neuen SVS falls du schon diese benutzt ?

schönes WE.
 

ckl67

Benutzer
Mitglied seit
16. Apr 2014
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo

Klar, hätte Ich auch gleich mitteilen können.
Ich benutze:
* DSM 6.0-7321 Update 6
* Surveillance Station 7.2

Ja, mit SVS 7.2 habe Ich eine Verbesserung bemerk, nämlich bei dem streaming.
Es geht ein wenig schneller :)

Nun zu meinem Problem Zurück

Das API Dokument das Ich benützte ist : "Surveillance_Station_Web_API_v2.4.pdf"
Dort wird nur von: API: SYNO.SurveillanceStation.VideoStream gesprochen relative zu path : /SurveillanceStation/videoStreaming.cgi?

Wen Ich jetzt die Liste von all der API anschaue durch ein Query von SYNO.API.Info : finde Ich
'SYNO.SurveillanceStation.VideoStreaming': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}
'SYNO.SurveillanceStation.VideoStream': {'maxVersion': 1, 'minVersion': 1, 'path': 'SurveillanceStation/videoStreaming.cgi'}

Schließlich, wenn Ich jetzt deine Hinweis verfolge, funktioniert es perfekt mit der API SYNO.SurveillanceStation.VideoStreaming :)

Vielen Dank

Synology muss, jedoch das Problem mit SYNO.SurveillanceStation.VideoStream korrigieren :rolleyes:

Christian
 
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