Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Synology Surveillance Station API

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Synology Surveillance Station API

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bku last edited by

      Super, funktioniert auch bei mir!

      Gruß und Danke

      Bernd

      1 Reply Last reply Reply Quote 0
      • lobomau
        lobomau last edited by

        Ich versuche gerade meine zweite cam mit einzubinden fuer snapshots.

        Meine zweite cam hat die ID 4 und mit der Aenderung funktioniert die zweite cam <u>alleine</u>:

        var url_snapshot = 'http://192.168.178.24:5000/webapi/entry.cgi?camStm=1&version=8&cameraId=4&api=SYNO.SurveillanceStation.Camera&preview=true&method=GetSnapshot';
        

        Was ich bisher versucht habe:

        • einfach die URL-Zeile zweimal schreiben, nur mit unterschiedlicher cameraID -> kommt nur ein Foto

        • zwei Scripte geschrieben fuer jede cam ein eigenes: geht manchmal aber nicht immer (mal 1 Foto, mal 2). Ich denke der gleichzeitige Befehl an beide cams ist suboptimal. Ich stelle mir vor beide in ein Script zu schreiben und einfach ein kleines delay zwischen beiden snapshots, 250ms, einzubauen.

        Aber wie macht man das?

        1 Reply Last reply Reply Quote 0
        • Alex1808
          Alex1808 last edited by

          eigentlich mit dem zwei scripts soll gehen, was hast als Trieger?

          1 Reply Last reply Reply Quote 0
          • lobomau
            lobomau last edited by

            @Alex1808:

            eigentlich mit dem zwei scripts soll gehen, was hast als Trieger? `
            Zum Testen benutze ich einen homematic Lichtschalter. Sonst den Bewegungsmelder,innen von HM.

            1 Reply Last reply Reply Quote 0
            • Alex1808
              Alex1808 last edited by

              @lobomau:

              @Alex1808:

              eigentlich mit dem zwei scripts soll gehen, was hast als Trieger? Zum Testen benutze ich einen homematic Lichtschalter. Sonst den Bewegungsmelder,innen von HM.

              Mache vielleicht etwas anderes, lege zwei variablen bei javascript.0, z.b. snapshot1 und snapshot2, die trägst du in beiden scripts und baue einen script mit Trieger so das er nur bei bestimmten regeln diese variablen ansteuert.

              1 Reply Last reply Reply Quote 0
              • S
                Semenchkare last edited by

                Hallo,

                ich habe seit Monaten dieses Script am laufen:

                Seit gestern Abend gibt es kein Bild mehr auf meinem VIS. Folgender Fehler wird angezeigt, wenn ich die API der Surveillance direkt im Browser aufrufe_

                > Warning: fopen([http://192.168.xxx.xxx:5000/webapi/Surv … 0NEN300004](http://192.168.xxx.xxx:5000/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&amp;version=1&amp;method=Stream&amp;cameraId=1&amp;format=mjpeg&amp;_sid=3SqyukBt6kkio15A0NEN300004)): failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway in /volume1/web/cam/stream.php on line 24 Warning: fgets() expects parameter 1 to be resource, boolean given in /volume1/web/cam/stream.php on line 28 .

                Ich selbst habe weder eine Firmware geändert. Höchstens auf der Synology könnte ein Auto-Update erfolgt sein.

                Im Einsatz ist dort die Surveillance 7.2, neueste Firmware.

                Hat sich etwa die API bei Surveillance geändert? Dann müsste jemand anders doch das gleiche Problem haben.

                Und:

                Ja, ich habe die Cam, die Synology etc. alles schon neu gestartet. Die Cam funktioniert per direkt-Link auch noch…

                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 last edited by

                  Hey All,

                  geht das noch? Ich will auch mit dem Thema anfangen 🙂

                  Bei der npm Library steht:

                  This project is deprecated, because the api used is not existing anymore in the current DSM.

                  … geändert vor 6 Monaten ...

                  Ist die API noch da oder nicht? 🙂

                  1 Reply Last reply Reply Quote 0
                  • lobomau
                    lobomau last edited by

                    @apollon77:

                    Hey All,

                    geht das noch? Ich will auch mit dem Thema anfangen 🙂

                    Bei der npm Library steht:

                    This project is deprecated, because the api used is not existing anymore in the current DSM.

                    … geändert vor 6 Monaten ...

                    Ist die API noch da oder nicht? 🙂 `
                    Ja, also mein Script mit der API läuft noch. Fotos kommen per telegram an.

                    1 Reply Last reply Reply Quote 0
                    • A
                      andyb last edited by

                      Es tut sich was im Hause Synology.

                      Die Beta der SSS hat jetzt einen "Home-Modus" der per Geofence in der App funktioniert.

                      Mal ausprobieren…

                      1 Reply Last reply Reply Quote 0
                      • lobomau
                        lobomau last edited by

                        @andyb:

                        Es tut sich was im Hause Synology.

                        Die Beta der SSS hat jetzt einen "Home-Modus" der per Geofence in der App funktioniert.

                        Mal ausprobieren… `
                        Ja, und jetzt kann man mit der beta mit chrome browser die aufgenommenen videos anschauen.

                        1 Reply Last reply Reply Quote 0
                        • A
                          andyb last edited by

                          Ich find nur keine api Beschreibung zur beta….

                          1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 last edited by

                            Hey,

                            weil bisher primär PHP Code gepostet wurde, hier mal meine Lösung die ich aktuell verwende.

                            In der Synology Surveillancestation bei der "Stream Gültigkeit" habe ich "Dauerhaft" gewählt, trotzdem wird die URL nach 1-2 Wochen ungültig, also hole ich Sie jetzt täglich neu.

                            var request = require('request');
                            
                            // Konfiguration
                            var user = "surveillanceUser";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
                            var pass = "...";  // Passwort zu eben eingegebenem Benutzer
                            var ip = "...";  // IP-Adresse eures Synology-NAS
                            var port = 5000;  // default Port der Surveillance Station
                            var cameraID = 1;  // 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();
                            

                            Es gibt dann einen Datenpunkt wo ich einmal pro Stunde ne neue URL hole und reinschreibe.

                            In Vis zeige ich es dann mit dem Cam-Widget an und {javascript.0.Anzeigen.Kamera.Eingangstuer-Stream} als "Source"/Quelle. Das klappt recht gut

                            Ingo

                            1 Reply Last reply Reply Quote 3
                            • lobomau
                              lobomau last edited by

                              EDIT: habe das Problem gefunden. Ich musste es natürlich für mich anpassen mit 2x https 🙂
                              @apollon77:

                              Hey,

                              weil bisher primär PHP Code gepostet wurde, hier mal meine Lösung die ich aktuell verwende.

                              In der Synology Surveillancestation bei der "Stream Gültigkeit" habe ich "Dauerhaft" gewählt, trotzdem wird die URL nach 1-2 Wochen ungültig, also hole ich Sie jetzt täglich neu.

                              ! ````
                              var request = require('request');
                              ! // Konfiguration
                              var user = "surveillanceUser"; // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
                              var pass = "..."; // Passwort zu eben eingegebenem Benutzer
                              var ip = "..."; // IP-Adresse eures Synology-NAS
                              var port = 5000; // default Port der Surveillance Station
                              var cameraID = 1; // 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();

                              
                              Es gibt dann einen Datenpunkt wo ich einmal pro Stunde ne neue URL hole und reinschreibe.
                              
                              In Vis zeige ich es dann mit dem Cam-Widget an und {javascript.0.Anzeigen.Kamera.Eingangstuer-Stream} als "Source"/Quelle. Das klappt recht gut
                              
                              Ingo `  
                              

                              Das klingt gut. Leider ist da bei mir noch irgendwo ein Fehler.

                              Anpassen muss ich oben nur die 5 Variablen, richtig?

                              Ich habe ja nur https mit 5001… vielleicht macht das schon Probleme?

                              Ansonsten user, pass und ip ohne die "Anführungszeichen", richtig?

                              Wie bekommt man systematisch die cameraID raus? Bei mir ist es durch Ausprobieren 2 und 4, obwohl ich nur 2 cams habe.

                              Fehler:

                              javascript.0	2017-08-09 15:56:46.989	error	script.js.common.cam.cam_innen compile failed: SyntaxError: Unexpected token !
                              
                              1 Reply Last reply Reply Quote 0
                              • apollon77
                                apollon77 last edited by

                                Hm … schau mal ob da wirklich nichts reingerutzt ist. Such mal in deinem Skript nach einem "!" 😉

                                1 Reply Last reply Reply Quote 0
                                • lobomau
                                  lobomau last edited by

                                  @apollon77:

                                  Hm … schau mal ob da wirklich nichts reingerutzt ist. Such mal in deinem Skript nach einem "!" 😉 `
                                  Im Passwort ist eins. Bitte nicht weitersagen 😉

                                  1 Reply Last reply Reply Quote 0
                                  • lobomau
                                    lobomau last edited by

                                    Hmm… will immer noch nicht. Habe neuen User. Nun meckert er bei der IP:

                                    javascript.0	2017-08-09 19:04:46.571	error	script.js.common.cam.cam_aussen compile failed: SyntaxError: Unexpected number
                                    

                                    Die Zeile mit IP wird auch innerhalb des Adapters rot markiert. "a leading decimal can be confused…"

                                    1 Reply Last reply Reply Quote 0
                                    • apollon77
                                      apollon77 last edited by

                                      Hast Du die ID etwa als Zahl geschrieben? Das muss ein String sein, also

                                      "192.168.111.111"

                                      mit Anführungszeichen drumrum

                                      1 Reply Last reply Reply Quote 0
                                      • lobomau
                                        lobomau last edited by

                                        Edit: nee, leider weiterhin unexpected token 😞
                                        @apollon77:

                                        Hast Du die ID etwa als Zahl geschrieben? Das muss ein String sein, also

                                        "192.168.111.111"

                                        mit Anführungszeichen drumrum `
                                        OK. Wir kommen der Sache schon näher mit "…":

                                        // Konfiguration
                                        var user = "user";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
                                        var pass = "pass";  // Passwort zu eben eingegebenem Benutzer
                                        var ip = "192.168.178.24";  // IP-Adresse eures Synology-NAS
                                        var port = 5001;  // default Port der Surveillance Station
                                        var cameraID = 4;  // ID der Kamera
                                        

                                        Habe jetzt keinen Fehler mehr. Aber immer noch einen Hinweis. Vielleicht füllt er die value korrekt zur vollen Stunden!?

                                        javascript.0	2017-08-09 21:15:43.482	info	script.js.common.cam.cam_innen: Error update SurveillanceStation Stream URL: SyntaxError: Unexpected token u in JSON at position 0
                                        javascript.0	2017-08-09 21:15:43.383	info	script.js.common.cam.cam_innen: registered 0 subscriptions and 1 schedule
                                        javascript.0	2017-08-09 21:15:43.248	info	Start javascript script.js.common.cam.cam_innen
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • lobomau
                                          lobomau last edited by

                                          Nun klappt es mit dem Script. Habe umgestellt auf port 5000 und http.

                                          Welches cam widget soll ich nun nehmen wo die source eingestellt wird?

                                          Bei denen kann ich es nicht eintragen:

                                          jqui-mfd Cam/Video (Object)

                                          jqui-mfd Cam/Video (img)

                                          basic image

                                          jqui-mfd Cam/ Snapshot dialog

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            andyb last edited by

                                            @lobomau:

                                            Welches cam widget soll ich nun nehmen wo die source eingestellt wird? `
                                            basic - string img src

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            798
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            51
                                            181
                                            50417
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo