NEWS
Synology Surveillance Station API
-
Habe meinen Fehler selbst entdeckt!
Der "exec" Baustein war hier nicht der richtige.
Ich habe jetzt den "request" Baustein genommen.
Damit bekomme ich beim Ausführen des SKriptes dei Fehlermeldung:
script.js.Synology.HomeModeSchalten: Error: unable to verify the first certificate
Der request ist ja ein https request, das SSL Zertifikat auf der Syno ist aber nicht signiert.
Dann muss ich mich woh doch nochmal mit dem Thema Let's encrypt auf der Syno beschäftigen!? Oder geht es um was anderes?
EDIT:
Auch diesen Fehler habe ich gelöst :mrgreen:
Habe nun endlich ein Lets Encrypt Zertifikat in meine Syno einbinden können. Das hat nie funktioniert. Jetzt ging es plötzlich.
Jetzt sende ich zwar den Befehl aus dem Broker einmal raus ins www und über meine DynDNS wieder rein in meine Syno, aber egal.
Funktioniert!
Für interne LAN Adressen kann man ja scheinbar kein Zertifikat erstellen…
-
Also irgendwie stimmt was mit dem Script nicht.
Ich habe einen extra benutzter für die Kamera bei mir der admini angelegt und ein temporäres Passwort(wird natürlich danach geändert) vergeben wie ihr im Script sehen könnt.
Hier ist das Script und danach der Fehler:
__var request = require('request');
// Konfiguration
var user = "admini"; // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
var pass = "Winter2018"; // Passwort zu eben eingegebenem Benutzer
var ip = "192.168.6.200"; // IP-Adresse eures Synology-NAS
var port = 9900; // default Port der Surveillance Station
var cameraID = 2; // ID der Kamera, welche angezeigt werden soll
createState('javascript.' + instance + '.Anzeigen.Kamera.Eingangstuer-Stream', {'type': 'string', 'read': true, 'write': true, 'role': 'value', 'def': ""});
// Authentifizierung an Synology Surveillance Station WebAPI und auslesen der SID
function updateStreamUrl() {
request('http://' + ip + ':' + port + '/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=' + user + '&passwd=' + pass + '&session=SurveillanceStation&format=sid', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
try {
var bodyObj = JSON.parse(body);
}
catch (e) {
console.log("Error update SurveillanceStation Stream URL: " + e);
return;
}
if (bodyObj && bodyObj.data && bodyObj.data.sid) {
var sid = bodyObj.data.sid;
setState('javascript.' + instance + '.Anzeigen.Kamera.Eingangstuer-Stream', 'http://' + ip + ':' + port + '/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&version=1&method=Stream&cameraId=' + cameraID + '&format=mjpeg&_sid=' + sid, true);
}
else {
console.log("Invalid return on SurveillanceStation Stream URL: " + JSON.stringify(bodyObj));
return;
}
});
}
schedule("0 * * * *", function() {
updateStreamUrl();
});
updateStreamUrl();__
script.js.common.CamEingang: Invalid return on SurveillanceStation Stream URL: {"error":{"code":400},"success":false}
Baue ich den String selber zusammen funktioniert es:
http://192.168.6.200:9900//webapi/auth. … format=sid
{"data":{"sid":"2wUTJTseubyHg1710NNN034612"},"success":true}
Also lieber Schwarm, irgendwo muss ein Fehler sein. `
Hab das gleiche Problem.
Hast Du zufällig eine Lösung gefunden?
Gruß
-
Gibt es schon eine Lösung? Ich bekomme cam 1 angezeigt, allerdings bekomme ich bei der Camera 2 keine Ausgabe, bei jpp die Meldung das die Bilder fehler enthalten….
-
Nein leider nicht. Hab es aufgegeben mit dem Script. Scheint mit neueren Surveillance Station Version nicht mehr kompatibel zu sein.
-
Nein leider nicht. Hab es aufgegeben mit dem Script. Scheint mit neueren Surveillance Station Version nicht mehr kompatibel zu sein. ` Also ich hab die Station v8.2 drauf. Bei mir im Heimnetz läuft alles wunderbar…
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
PS: gerade WLAN vom Handy ausgeschaltet. Kamera tut es immer noch (nutze Cloud Pro, keine Ahnung ob das damit zusammenhängt)
-
Ziemlich unbefriedigend
-
NACHTRAG: Update auf Version 6.2 führte auch bei mir dazu, dass das Skript nicht mehr funktioniert
2. NACHTRAG: Habe alles noch mal überprüft (inkl. SSS geöffnet und geschaut, ob Kamera noch da). Problem war, die hatte sich abgemeldet
…Strom raus, wieder rein, Skript läuft wieder und das Icon in VIS auch :mrgreen:
-
Das Problem hatte ich auch, ich habe dann im Netz in einem Französischen Forum einen interessanten Artikel gefunden suche mal nach Yakus Master, ich habe auch gedacht das die Kamera falsche Daten liefert, allerdings war einfach die ID falsch. Ich hätte 2 Kameras und und die 2 hatte dann id 9….
Probiere das mal aus.
Gesendet von meinem SM-G965F mit Tapatalk
-
Hi,
bei mir kommt auch diese Meldung:
` > javascript.0 Stop script script.js.common.Kamera
23:41:12.096 [info] javascript.0 Start javascript script.js.common.Kamera
23:41:12.098 [debug] javascript.0 script.js.common.Kamera: createState(name=javascript.0.Anzeigen.Kamera.Eingangstuer-Stream, initValue=, forceCreation=undefined, common={"type":"string","read":true,"write":true,"role":"value","def":"","name":"javascript.0.Anzeigen.Kamera.Eingangstuer-Stream"}, native={})
23:41:12.098 [info] javascript.0 script.js.common.Kamera: schedule(cron=0 * * * *)
23:41:12.098 [info] javascript.0 script.js.common.Kamera: registered 0 subscriptions and 1 schedule
23:41:12.360 [info] javascript.0 script.js.common.Kamera: Invalid return on SurveillanceStation Stream URL: {"error":{"code":400},"success":false} `
Zusätzlich bekomme ich diese Meldung wenn ich den Link aus Objekte im Browser eingebe:
` > Failed to load camera.
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-type: text/plain; charset="UTF-8"
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
{"success":true} `
Was bedeutet das nun wieder ?
Auf der Syn läuft 6.2 ! Gibt es dafür eine Lösung. Über den Browser eingegeben und da war es okay .
-
@Trident sagte in Synology Surveillance Station API:
[...]
Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram
[...]
Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?Absolut das, was ich auch will!
Ich kann mir nicht vorstellen, dass wir da allein sind auf weiter Flur
Vielleicht findet sich ja mal ein hilfsbereiter Programmer...LG
-
@hollywoot sagte in Synology Surveillance Station API:
@Trident sagte in Synology Surveillance Station API:
[...]
Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram
[...]
Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?Absolut das, was ich auch will!
Ich kann mir nicht vorstellen, dass wir da allein sind auf weiter Flur
Vielleicht findet sich ja mal ein hilfsbereiter Programmer...LG
ich kann mal morgen ein Script hier reinstellen was bei mir genau das macht...(muss nur ein Trigger für den BWM rein, da ich aktuell ein Bild bekomme wenn es an der Haustür klingelt...BWM hatte ich mal als Trigger, ging auch.)
Ich habe drei Cams, bei allen dreien geht das über meine Syno.PS: ich bin noch unterwegs, schaffe ich heute nicht mehr.
-
So, hier mal ein Script was bei mir läuft. Hier bekomme ich ein Bild von der Kamera wenn es an der Tür klingelt. Den Trigger kann man ja tauschen. Um die richtige Kamera zu finden mußte ich auch mehrfach "probieren", da die ID nicht fortlaufend ist. Der erste Link loggt sich ein (einfach in den Browser zum testen eingeben und dann den letzten Link in das Browserfenster eintragen und schauen ob ein Bild kommt (natürlich mit der eigenen IP und eventuell Port). Wenn nicht einfach mal eine andere ID probieren)
Die ID der Cam, bei mir die 3 (alle zu ändernden Daten sind rot) -
@dslraser
Danke für das Script. Beide URLs im Browser funktionieren, den Snapshot meiner einen Kamera kann ich im Browser sehen.
Wenn ich das Script unter Skripte ablegen und starte (mein Trigger ist jetzt irgendein KNX Event) dann erscheint im Log die Meldung:
Info: cript.js.Scripte.Kamerabild_Tuer: Snapshot sentWelches Widget bzw. was muss ich in der VIS auswählen, um den Snapshot angezeigt zu bekommen?
Ich wollte hier zum einen ein Kamerasymbol ablegen, auf das ich "drücken" kann, um das Türbild zu sehen und zum anderen beim Betätigen der Klingel eine Art Popup zu erhalten.
Hier mal zur Info die Objekte, die angelegt wurden.
Warum hat die "Eingangskamera" die Rolle "Button"? Sorry für die vielen Fragen...
-
@mpenno sagte in Synology Surveillance Station API:
@dslraser
Danke für das Script. Beide URLs im Browser funktionieren, den Snapshot meiner einen Kamera kann ich im Browser sehen.
Wenn ich das Script unter Skripte ablegen und starte (mein Trigger ist jetzt irgendein KNX Event) dann erscheint im Log die Meldung:
Info: cript.js.Scripte.Kamerabild_Tuer: Snapshot sentWelches Widget bzw. was muss ich in der VIS auswählen, um den Snapshot angezeigt zu bekommen?
Ich wollte hier zum einen ein Kamerasymbol ablegen, auf das ich "drücken" kann, um das Türbild zu sehen und zum anderen beim Betätigen der Klingel eine Art Popup zu erhalten.
Hier mal zur Info die Objekte, die angelegt wurden.
Warum hat die "Eingangskamera" die Rolle "Button"? Sorry für die vielen Fragen...
Zu VIS kann ich Dir nichts sagen, nutze ich nicht.
Ich lasse mir ein Bild per Telegram schicken. (Snapshot send)Den Datenpunkt habe ich mir für andere Zwecke erstellt. Z.B. kann ich dann über TextoCommand /Telegram ein Bild anfordern, dafür wird nur der Button gedrückt. Ebenso kann ich den Button in einer Alexa Abfrage über eine Routine benutzen. Z.B. Alexa, schicke mir ein Bild vom Eingang.
-
@dslraser
Vielen Dank für Dein Skript!
Im Browser funktionieren die Links alle wunderbar. Den Snapshot bekomme ich angezeigt.
Somit bin ich schon mal einen Schritt weiterMein Log sieht allerdings nicht so toll aus.
Das steht im Log sobald ich in den Objects den Button klicke:
Es ist echt mühsam wenn man von JS nicht so den Plan hat...
Ich hab jetzt über zwei Stunden hin und her probiert aber ich kriegs nicht hin.
Abgesehen davon, dass der Javascript Adapter scheinbar komplett abschmiert und hier in der Bude sämtliche Lichter an- und aus gehen wie sie wollenVielleicht hast Du ja noch einen Tipp für mich?
Vielen Dank!Gruß
-
@hollywoot
stelle mal Dein fertiges Script hier rein.PS: ich nutze den JS Adapter in der stable Version (3.6.4), welche ist bei Dir in Gebrauch ?
-
@dslraser
Ich nutze die gleiche Version.Hier das Skript - hab nochmal ein bisschen am Namen usw. was verändert.
Bei folgender Zeile
on({id:"javascript.1.Eigene_Datenpunkte.05Telegram.Eingangskamera", val: true, change: 'any'}, main);
habe ich, anders als von Dir gepostet, den Trigger auf den Datenpunkt gesetzt, den ich anfangs des Skriptes erzeuge (richtig?!)
Außerdem musste ich das '/Eingangskamera/' löschen, da er da immer meckert (expected } to match { ... usw)Folgende Fehler bekomme ich in der Ausgabe des Skriptes direkt:
23:39:01.761 [error] Caught by controller[0]: at script.js.Telegram.Snapshot_Telegram_orig:53:19
23:39:01.761 [error] Caught by controller[0]: at Request._callback (script.js.Telegram.Snapshot_Telegram_orig:37:1)Zeile 53 ist:
url_snapshot += '&_sid='+sid;Zeile 37 ist:
} else {Gruß
Edit:
das doppelte http:// ist mir soeben ins Auge geflogen - leider nicht die LösungEdit2:
Den JS.1 Adapter habe ich extra installiert, damit mir hier nicht immer das Licht ausgeht. -
schaue ich mir morgen mal an.
-
@dslraser
Vielen Dank!
Gute Nacht.Ich probiere noch etwas herum
Wäre weltklasse, wenn Du da was findest.Gruß
-
@hollywoot
Den Datenpunkt der im Script erstellt wird ist nicht der Trigger. Diesen Datenpunkt nutze ich für was anderes.
Als Trigger kannst Du Deine Klingel, oder Bewegungsmelder oder soetwas nehmen.
Ich habe einen Datenpunkt als Trigger der auf true wechselt wenn es klingelt.(der wird dann wieder nach einer gewissen Zeit zurück gesetzt---in einem anderen Script)