Verbindung mit Synology Surveillance Station?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

toa
Beiträge: 3
Registriert: 19.05.2021, 09:40
System: CCU
Hat sich bedankt: 1 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von toa » 19.05.2021, 10:04

alchy hat geschrieben:
27.05.2016, 14:04
Das sollte es gewesen sein. Rückmeldungen sind erwünscht.

Alchy
der jetzt endlich ins Bett geht
Ich habe eine kurze Verständnisfrage zu deinem Skript.

Ich möchte via Riegelschaltkontakt angeschlossen an der CCU eine (vorhandene) ActionRule in der Surveillance Station aktivieren.
Die ActionRule ist getriggert auf Bewegungserkennung der Kameras in diesem Bereich und wird nach dem hinterlegten Zeitplan in der Surveillance Station aktiviert..
Ich möchte quasi den Zeitplan durch den Riegelschaltkontakt "ersetzen":
Verschlossen: ActionRule aktiviert, Offen: ActionRule deaktiviert.

Ist das möglich mit deinem Script, oder würde damit die ActionRule nach dem "verschließen" einmalig gestartet und bei weiteren Bewegungserkennungen der Kameras nicht mehr ausgeführt?

Viele Grüße und besten Dank schonmal.

toa
Beiträge: 3
Registriert: 19.05.2021, 09:40
System: CCU
Hat sich bedankt: 1 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von toa » 16.07.2021, 07:43

@Alchy

Wie oben geschrieben funktioniert das schon, es gibt dafür in der WebAPI auchfolgende möglichkeit:
URL: /webapi/entry.cgi?api=SYNO.SurveillanceStation.Notification.Schedule&method=SetCameraSchedule&version=2&_sid="xxx"
Body: eventType=5&cameraId=74&schedule=[[{"schedule":"0"},{"schedule":"0"}....]]

der Schedule besteht dann aus 7*48 (7 Tage alle 15 Minuten an/aus) Zeichensätzen.
Eventtype 5 ist für Bewegungserkennung

Das Problem ist, dass nicht weiterkomme die URL und den Body in den String Behehl zu packen.
Die URI selbst kann nicht vollständig angegeben werden da Sie länger als 2048 zeichen wird und NGINX diese lange URI ablehnt.

Kann mir da jmd weiterhelfen? Der Synology Support konnte es leider nicht.
Muss man das ganze evtl. in eine HTML packen? Aber wie rufe ich die dann mit der CCU auf, bzw kann ich die auf der CCU überhaupt ablegen?

Stefan59
Beiträge: 39
Registriert: 30.04.2020, 17:59
System: CCU
Wohnort: Hamburg
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von Stefan59 » 13.08.2021, 17:46

Hallo Zusammen,
ich nutze seit etwa einem Jahr dieses feine Skript von Alchy.

Code: Alles auswählen

! HomeMode einschalten oder ausschalten auf der Synology Surveillance Station starten durch ein HM Script
! v 0.1 (c) by Alchy 
!++++++ SETUP FÜR DAS SCRIPT ++++++
var IP_SYNO = "192.168.178.200:5000";   ! IP:PORT der Synology
var USERNAME = "admin"; ! Adminuser auf der Syno
var PASSWORD = "passwort"; ! Passwort des obigen Account
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 HOMEMODE = "on"; ! on oder off für ein oder aus des HomeMode
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.HomeMode&version=1&method=Switch&"#HOMEMODE#"=true";
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("HomeMode "#HOMEMODE#" erfolgreich gestartet \n "#brueck);} else {WriteLine("Fehler beim Starten der Aktion HomeMode "#HOMEMODE #"\nFehlermeldung: "#brueck)}; }
Bis zum Update des seit langen von Synology angekündigten, neuen DSM 7.0 hat das Skript perfekt und stets zuverlässig funktioniert.
Seither schaltet die SSS nicht mehr in den HomeMode und bei Ausführung des Skriptes kommen folgende Fehler-Meldungen:

Code: Alles auswählen

Fehler beim Holen des Cookie - 
Fehlermeldung: {"error":{"code":103},"success":false}
Fehler beim Starten der Aktion HomeMode off
Fehlermeldung: {"error":{"code":119},"success":false}
Die installierte SS-Version ist 8.2.9-7301.
Der Login für den, eigens für diesen Zweck eingerichteten User, auf des Syno funktioniert.

Hat jemand eine Idee, was die Fehlercodes bedeuten?

Über Hilfe würde ich mich freuen.
VG
Stefan

chka
Beiträge: 2483
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 302 Mal
Danksagung erhalten: 116 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von chka » 13.08.2021, 18:56

warum es nicht geht kann ich dir nicht sagen, in der dem 7 ist vieles anders.
leg dir einfach wie in diesem post beschrieben zwei Ereignisse an die url zeigt er im ersten step
https://forum.iobroker.net/topic/12913/ ... 97&lang=de
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

Stefan59
Beiträge: 39
Registriert: 30.04.2020, 17:59
System: CCU
Wohnort: Hamburg
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von Stefan59 » 14.08.2021, 19:13

Hallo chka,

danke schon mal für den Tipp.
Das Einrichten der Ereignisse in der SSS war kein Problem, der http-Link über Browser funktioniert ebenfalls.
Nun muss ich das nur noch in ein HM-Skript einbauen. Das Skript von Alchy (viewtopic.php?f=19&t=23747&start=10#p286963) führt weiterhin zu den selben Fehlern wie aus meinem vorangegangenen Post.
Wenn alles nicht geht, setze ich das mit Blockly im ioB um.
Morgen mal ein bisschen probieren.

VG

chka
Beiträge: 2483
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 302 Mal
Danksagung erhalten: 116 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von chka » 14.08.2021, 19:24

Du musst nur noch die url übertragen aus der sysnology,
Mehr nicht
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

Stefan59
Beiträge: 39
Registriert: 30.04.2020, 17:59
System: CCU
Wohnort: Hamburg
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von Stefan59 » 15.08.2021, 14:06

Ich habe jetzt das Skript von Alchy (viewtopic.php?f=19&t=23747&start=10#p286963) etwas umgebaut und den ersten Teil 'Cookies holen' weggelassen und im zweiten Teil den Http-Befehl aus der SSS-Aktionsregel eingebaut.

Code: Alles auswählen

!++++++ SETUP FÜR DAS SCRIPT ++++++
var IP_SYNO = "192.168.178.55:9900";   ! IP:PORT der Synology
var USERNAME = "username mit Admin-Rechten und Zugriff auf SSS";
var PASSWORD = "password";
var CUXD_ID1 = "CUX2801001:16";   ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Absenden des Befehls
var EVENTID = "1"; ! Welche Aktionsregel soll ausgeführt werden (HomeMode_Aus) 
var DEBUG = "ja"; ! wenn ja dann Bildschirmausgabe  
!++++++ SETUP ENDE ++++++
string befehl = "http://"#IP_SYNO#"/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=%22Trigger%22&version=1&eventId="#EVENTID#"&eventName=%22This%20is%20external%20event"#EVENTID#"%22&account="#USERNAME#"&password="#PASSWORD#"";
dom.GetObject("CUxD."#CUXD_ID1#".CMD_SETS").State("wget -q --load-cookies cookies.txt -O- '"#befehl#"'");
dom.GetObject("CUxD."#CUXD_ID1#".CMD_QUERY_RET").State(1);
string brueck = dom.GetObject("CUxD."#CUXD_ID1#".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)}; }
Wenn Debug eingeschaltet ist:

Code: Alles auswählen

Aktion 1 erfolgreich gestartet 
 {"success":true}
So funktioniert es mit der neuen DSM-FW 7.0

Besten Dank nochmal für die 'Wegbereitung'.

VG

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Verbindung mit Synology Surveillance Station?

Beitrag von dtp » 22.11.2021, 10:21

Hi,

hier mal mein Skript zum Holen eines von einer Surveillance-Station-Kamera erzeugten Captures unter DSM 7:

Code: Alles auswählen

! Bild von der Garage holen
! Version 1.1, Autor: dtp

! +++++ Pfad und Name eines auf der CCU zu speichernden Bildes +++++
string pictPathCCU = "/tmp/Bildname.jpg";

! +++++ Zugriffsdaten Synology DiskStation +++++
string ipDiskStation = "192.168.xxx.xxx:xxxx"; ! IP:PORT der DiskStation
string account = "admin"; ! Admin-Name auf der DiskStation
string password = "xxxxxx"; ! Admin-Passwort
string cameraId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

! +++++ Namen der verwendeten Systemvariablen +++++
string svPushImage = "CCU SV Push Bild"; ! gem. zPNS-xx

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

! +++++ Deklaration weiterer Variablen +++++
string cookieUrl; string pictUrl;

! +++++ Snaphshot holen +++++
cookieUrl = "http://"#ipDiskStation#"/webapi/entry.cgi?api=SYNO.API.Auth&version=3&method=login&account="#account#"&passwd="#password;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q --keep-session-cookies --save-cookies cookies.txt -O- '"#cookieUrl#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

pictUrl = "http://"#ipDiskStation#"/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId="#cameraId;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q --load-cookies cookies.txt -O '"#pictPathCCU#"' '"#pictUrl#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

! +++++ Bildpfad in Systemvariable zur Übertraung per zPNS-xx speichern +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushImage)).State(pictPathCCU);
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „HomeMatic allgemein“