Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Synology Script link von MJPG in Datenpunkt DSM7

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    911

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Synology Script link von MJPG in Datenpunkt DSM7

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 2 Kommentatoren 576 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • XBiTX Online
    XBiTX Online
    XBiT
    schrieb am zuletzt editiert von
    #1

    Hallo,

    hat zufällig jemand das Script von @apollon77 welches den MJPG Link der Kamera aus der Synology Surveillance Station holt für das DSM7 angepasst und könnte es zur Verfügung stellen?

    hier das Script welches bis kleiner DSM7 geht:

    var request = require('request');
     
    // Konfiguration
    var user = "User";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
    var pass = "Pass";  // Passwort zu eben eingegebenem Benutzer
    var ip = "192.168.x.x";  // IP-Adresse eures Synology-NAS
    var port = 5000;  // default Port der Surveillance Station
    var cameraID = 2;  // ID der Kamera, welche angezeigt werden soll
     
    createState('javascript.' + instance + '.Anzeigen.Kamera.Terrasse', {'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.Terrasse', '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();
    

    Beste Dank

    P 1 Antwort Letzte Antwort
    0
    • XBiTX XBiT

      Hallo,

      hat zufällig jemand das Script von @apollon77 welches den MJPG Link der Kamera aus der Synology Surveillance Station holt für das DSM7 angepasst und könnte es zur Verfügung stellen?

      hier das Script welches bis kleiner DSM7 geht:

      var request = require('request');
       
      // Konfiguration
      var user = "User";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
      var pass = "Pass";  // Passwort zu eben eingegebenem Benutzer
      var ip = "192.168.x.x";  // IP-Adresse eures Synology-NAS
      var port = 5000;  // default Port der Surveillance Station
      var cameraID = 2;  // ID der Kamera, welche angezeigt werden soll
       
      createState('javascript.' + instance + '.Anzeigen.Kamera.Terrasse', {'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.Terrasse', '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();
      

      Beste Dank

      P Offline
      P Offline
      PeterPan
      schrieb am zuletzt editiert von
      #2

      @xbit
      Hi, bei mir hat das große "L" im "Login" Probleme bereitet, versuche es mal mit einem kleinen "l", also "...uth&method=login&ve...."

      XBiTX 1 Antwort Letzte Antwort
      0
      • P PeterPan

        @xbit
        Hi, bei mir hat das große "L" im "Login" Probleme bereitet, versuche es mal mit einem kleinen "l", also "...uth&method=login&ve...."

        XBiTX Online
        XBiTX Online
        XBiT
        schrieb am zuletzt editiert von XBiT
        #3

        @peterpan

        Super Besten Dank, so geht es wieder.

        PS. geht bei dir der Stream noch unter DSM7 ? ich bekomme jetzt die Meldung

        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"
        Set-Cookie: id=XXXXX=Fri, 24-Sep-2021 13:00:17 GMT;path=/;HttpOnly
        
        {"success":true}
        
        P 1 Antwort Letzte Antwort
        0
        • XBiTX XBiT

          @peterpan

          Super Besten Dank, so geht es wieder.

          PS. geht bei dir der Stream noch unter DSM7 ? ich bekomme jetzt die Meldung

          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"
          Set-Cookie: id=XXXXX=Fri, 24-Sep-2021 13:00:17 GMT;path=/;HttpOnly
          
          {"success":true}
          
          P Offline
          P Offline
          PeterPan
          schrieb am zuletzt editiert von PeterPan
          #4

          @xbit
          Das sagt mir leider nichts, wo bekommst du diese Meldung und mit welchem Aufruf?

          Ich kann den genierten Link sowohl im Browser als auch im Skript unten benutzen, wobei ich einmal eine NAS mit DSM 7.0-41890 und eine noch mit DSM 6.2.4-25556 Update 2 benutze mit jeweils 2 Kameras.
          Für die VIS nutze ich den Adapter und den DP "synology.0.SurveillanceStation.cameras.Reolink-Terrasse-Front.linkMjpegHttpPath".

          Was ich mache, ist, dass ich (1) ein Snapshot für das iobroker-Verzeichnis und anschließendem Versand via Pushover mache, dann (2) ein Snapshot für die NAS sowie (3) für 6 Sekunden noch ein Film aufnehme. Allerdings habe ich Fehlerabfragen rausgenommen.

          Das Dokument Synology Surveillance Station Web API ist mit der Version 3.10 vom 22.06.2021 recht aktuell, vielleicht findest du da einen Hinweis?

          // Konfiguration
          const user = "AAA"; // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
          const pass = "BBB";  // Passwort zu eben eingegebenem Benutzer
          const ip_1 = "192.168.xxx.xxx";  // IP-Adresse eures Synology-NAS
          const ip_2 = "192.168.xxx.xxx";  // IP-Adresse eures Synology-NAS
          const port = 5000;  // default Port der Surveillance Station
          var iplong_1 = 'http://' + ip_1 + ':' + port + '/webapi/';
          var iplong_2 = 'http://' + ip_2 + ':' + port + '/webapi/';
          const cameraID_Eingang = 1;
          const cameraID_Wohnzimmer = 2;
          const cameraID_Front = 3;  // ID der Kamera, welche den Garten zeigt
          const cameraID_Seite = 4;  // ID der Kamera, welche die Terrasse zeigt
          
          var request = require('request');
          var fs = require('fs');
          
          var url_login_1 = iplong_1 + 'auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=' + user + '&passwd=' + pass + '&session=SurveillanceStation&format=sid';
          var url_login_2 = iplong_2 + 'auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=' + user + '&passwd=' + pass + '&session=SurveillanceStation&format=sid';
          
          // BEWEGUNG AN DER TERRASSE
          // Einstellung für Verzögerung des BWM in der CCU noch ändern?
          on({id: path_link + 'Garten.Bewegung_Haus.Motion', val:true, change: 'ne'}, function (obj) {
              //licht();
              bewegung(iplong_1, url_login_1, cameraID_Seite);
              });
          // Gleiches für weitere Kameras ...
          /*
          =================================================================================================================
          FUNKTIONEN
          =================================================================================================================
          */
          function bewegung (iplong, url_login, cameraID){
              // EINLOGGEN IN DIE SYNOLOGY SURVEILLANCESTATION
              request(url_login, function(error, response, body){
                  var my_sid = JSON.parse(body).data.sid;
                 // ========================
                  // 2.3.4.5 GetSnapshot method
                  var url_GetSnapshot = iplong + 'entry.cgi?version=9&id='+cameraID+'&api="SYNO.SurveillanceStation.Camera"&method="GetSnapshot"&profileType=1&_sid=' + my_sid;
                  //console.log('url_GetSnapshot: ' + url_GetSnapshot);
                  // ========================
                  //2.3.34.8 TakeSnapshot method
                  var url_Snapshot = iplong + 'entry.cgi?camId='+cameraID+'&version="1"&blSave=true&api="SYNO.SurveillanceStation.SnapShot"&dsId=0&method="TakeSnapshot"&_sid=' + my_sid;
                  // ========================
                  // 2.3.10.1 (External) Record method => OK
                  var url_RecordStart = iplong + 'entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId='+cameraID+'&action=start&_sid=' + my_sid;
                  var url_RecordStop = iplong + 'entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId='+cameraID+'&action=stop&_sid=' + my_sid;
                  // ========================
                  var filename = '/home/iobroker/Snap_Reolink'+cameraID+'.jpg';
                  request.get({url: url_GetSnapshot, encoding: 'binary'}, function(error, response, body){
                      fs.writeFile(filename, body, 'binary', function(err){
                          function fake(){}
                          setTimeout(fake,1000);
                          g_pushover('Bewegung ',6,filename,'tugboat');
                          //Speichert Snapshot auch auf der Synology
                          request(url_Snapshot,function(error, response, body) {});
                          request(url_RecordStart,function(error, response, body) {});
                          setTimeout(function() {
                              // weitere Befehle
                              request(url_RecordStop,function(error, response, body) {});
                              //AUSLOGGEN
                              var url_logout = iplong + 'auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid=' + my_sid;
                              request.get({url: url_logout, encoding: 'binary'},function (error){});
                              }, 6000);
                          });
                      });
                  });
              };
          

          Update: Vielleicht liegt es am Cookie und die SID steht dort drin? Das Ablaufdatum des Cookies scheint (gefährliches Halbwissen) ggf. der 24.09.2021 zu sein. Ich rufe den Link nicht mehr ab, sondern benutze den Adapter und den DP. Dort hat es zunächst auch nicht funktioniert, aber nachdem ich die Abrufintervalle hoch gesetzt habe, bekomme ich regelmäßige Updates in den DP.

          XBiTX 1 Antwort Letzte Antwort
          0
          • P PeterPan

            @xbit
            Das sagt mir leider nichts, wo bekommst du diese Meldung und mit welchem Aufruf?

            Ich kann den genierten Link sowohl im Browser als auch im Skript unten benutzen, wobei ich einmal eine NAS mit DSM 7.0-41890 und eine noch mit DSM 6.2.4-25556 Update 2 benutze mit jeweils 2 Kameras.
            Für die VIS nutze ich den Adapter und den DP "synology.0.SurveillanceStation.cameras.Reolink-Terrasse-Front.linkMjpegHttpPath".

            Was ich mache, ist, dass ich (1) ein Snapshot für das iobroker-Verzeichnis und anschließendem Versand via Pushover mache, dann (2) ein Snapshot für die NAS sowie (3) für 6 Sekunden noch ein Film aufnehme. Allerdings habe ich Fehlerabfragen rausgenommen.

            Das Dokument Synology Surveillance Station Web API ist mit der Version 3.10 vom 22.06.2021 recht aktuell, vielleicht findest du da einen Hinweis?

            // Konfiguration
            const user = "AAA"; // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
            const pass = "BBB";  // Passwort zu eben eingegebenem Benutzer
            const ip_1 = "192.168.xxx.xxx";  // IP-Adresse eures Synology-NAS
            const ip_2 = "192.168.xxx.xxx";  // IP-Adresse eures Synology-NAS
            const port = 5000;  // default Port der Surveillance Station
            var iplong_1 = 'http://' + ip_1 + ':' + port + '/webapi/';
            var iplong_2 = 'http://' + ip_2 + ':' + port + '/webapi/';
            const cameraID_Eingang = 1;
            const cameraID_Wohnzimmer = 2;
            const cameraID_Front = 3;  // ID der Kamera, welche den Garten zeigt
            const cameraID_Seite = 4;  // ID der Kamera, welche die Terrasse zeigt
            
            var request = require('request');
            var fs = require('fs');
            
            var url_login_1 = iplong_1 + 'auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=' + user + '&passwd=' + pass + '&session=SurveillanceStation&format=sid';
            var url_login_2 = iplong_2 + 'auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=' + user + '&passwd=' + pass + '&session=SurveillanceStation&format=sid';
            
            // BEWEGUNG AN DER TERRASSE
            // Einstellung für Verzögerung des BWM in der CCU noch ändern?
            on({id: path_link + 'Garten.Bewegung_Haus.Motion', val:true, change: 'ne'}, function (obj) {
                //licht();
                bewegung(iplong_1, url_login_1, cameraID_Seite);
                });
            // Gleiches für weitere Kameras ...
            /*
            =================================================================================================================
            FUNKTIONEN
            =================================================================================================================
            */
            function bewegung (iplong, url_login, cameraID){
                // EINLOGGEN IN DIE SYNOLOGY SURVEILLANCESTATION
                request(url_login, function(error, response, body){
                    var my_sid = JSON.parse(body).data.sid;
                   // ========================
                    // 2.3.4.5 GetSnapshot method
                    var url_GetSnapshot = iplong + 'entry.cgi?version=9&id='+cameraID+'&api="SYNO.SurveillanceStation.Camera"&method="GetSnapshot"&profileType=1&_sid=' + my_sid;
                    //console.log('url_GetSnapshot: ' + url_GetSnapshot);
                    // ========================
                    //2.3.34.8 TakeSnapshot method
                    var url_Snapshot = iplong + 'entry.cgi?camId='+cameraID+'&version="1"&blSave=true&api="SYNO.SurveillanceStation.SnapShot"&dsId=0&method="TakeSnapshot"&_sid=' + my_sid;
                    // ========================
                    // 2.3.10.1 (External) Record method => OK
                    var url_RecordStart = iplong + 'entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId='+cameraID+'&action=start&_sid=' + my_sid;
                    var url_RecordStop = iplong + 'entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId='+cameraID+'&action=stop&_sid=' + my_sid;
                    // ========================
                    var filename = '/home/iobroker/Snap_Reolink'+cameraID+'.jpg';
                    request.get({url: url_GetSnapshot, encoding: 'binary'}, function(error, response, body){
                        fs.writeFile(filename, body, 'binary', function(err){
                            function fake(){}
                            setTimeout(fake,1000);
                            g_pushover('Bewegung ',6,filename,'tugboat');
                            //Speichert Snapshot auch auf der Synology
                            request(url_Snapshot,function(error, response, body) {});
                            request(url_RecordStart,function(error, response, body) {});
                            setTimeout(function() {
                                // weitere Befehle
                                request(url_RecordStop,function(error, response, body) {});
                                //AUSLOGGEN
                                var url_logout = iplong + 'auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid=' + my_sid;
                                request.get({url: url_logout, encoding: 'binary'},function (error){});
                                }, 6000);
                            });
                        });
                    });
                };
            

            Update: Vielleicht liegt es am Cookie und die SID steht dort drin? Das Ablaufdatum des Cookies scheint (gefährliches Halbwissen) ggf. der 24.09.2021 zu sein. Ich rufe den Link nicht mehr ab, sondern benutze den Adapter und den DP. Dort hat es zunächst auch nicht funktioniert, aber nachdem ich die Abrufintervalle hoch gesetzt habe, bekomme ich regelmäßige Updates in den DP.

            XBiTX Online
            XBiTX Online
            XBiT
            schrieb am zuletzt editiert von
            #5

            @peterpan

            Sorry hatte ganz vergessen mich zu melden.
            Ich hatte mal die Kameras in der Synology gelöscht (woran ich nicht mehr gedacht habe) und neu angelegt, da haben sich natürlich auch die ID´s der Kameras geändert.
            Mit der richtigen ID läuft auch alles wieder wie es soll.

            Danke noch mal für die Hilfe.

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            716

            Online

            32.6k

            Benutzer

            82.2k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe