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

  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Synology Surveillance Station API

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Synology Surveillance Station API

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
181 Beiträge 51 Kommentatoren 61.5k Aufrufe 35 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.
  • dslraserD dslraser

    @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 ?

    hollywootH Offline
    hollywootH Offline
    hollywoot
    schrieb am zuletzt editiert von hollywoot
    #95

    @dslraser
    Ich nutze die gleiche Version.

    Hier das Skript - hab nochmal ein bisschen am Namen usw. was verändert.

    createState("Eigene_Datenpunkte.05Telegram.Eingangskamera", {
    name: 'Eingangskamera',
    role: 'button',
    type: 'boolean',
    read: true,
    write: true,
    def: false,
    "smartName": {
    "de": "Eingangskamera",
    "smartType": "SWITCH"
    }
    });
    on({id:"javascript.1.Eigene_Datenpunkte.05Telegram.Eingangskamera", val: true, change: 'any'}, main);
    //on({id:"javascript.0.Eigene_Datenpunkte.07Klingel.Klingel_aktiv"/Klingel aktiv/, val: true, change: 'ne'}, main);
    //on({id:"javascript.0.Eigene_Datenpunkte.05Telegram.Eingangskamera"/Eingangskamera/, val: true, change: 'any'}, main);

    var request = require("request");
    var fs = require('fs');
    var myJson = {};
    var sid = 0;

    function parseJson(text) {
    if (text === "") return {};
    try {
    json = JSON.parse(text);
    } catch (ex) {
    json = {};
    }
    if(!json) json = {};
    return json;
    }
    function readJson(url, callback) {
    request(url, function (err, state, body){
    if (body) {
    var json = parseJson(body);
    callback(null, json);
    } else {
    var error = "(" + err + ") ERROR bei Abfrage von: " + url;
    log(error, "warn");
    callback(error, null);
    }
    });
    }
    var url_login ='http://xxx.xxx.xxx.xxx:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=user&passwd=password&session=SurveillanceStation&format=sid';
    var url_logout = 'http://xxx.xxx.xxx.xxx:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation';
    var url_snapshot = 'http://http://xxx.xxx.xxx.xxx:5000/webapi/entry.cgi?camStm=1&version=8&cameraId=2&api=SYNO.SurveillanceStation.Camera&preview=true&method=GetSnapshot';

    function main() {
    readJson(url_login, function(err,json) {
    if(!err) {
    myJson = json;
    sid = myJson.data.sid;
    url_snapshot += '&_sid='+sid;
    url_logout += '&_sid='+sid;
    request.get({url: url_snapshot, encoding: 'binary'}, function (err, response, body) {
    fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) {
    if (err) {
    console.error(err);
    } else {
    console.log('Snapshot sent');
    sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Eingangskamera !'});
    request.get({url: url_logout, encoding: 'binary'});
    }
    });
    });
    } else {
    log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
    myJson = {};
    }
    });
    }

    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ösung :(

    Edit2:
    Den JS.1 Adapter habe ich extra installiert, damit mir hier nicht immer das Licht ausgeht.

    dslraserD 1 Antwort Letzte Antwort
    0
    • dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #96

      schaue ich mir morgen mal an.

      hollywootH 1 Antwort Letzte Antwort
      0
      • dslraserD dslraser

        schaue ich mir morgen mal an.

        hollywootH Offline
        hollywootH Offline
        hollywoot
        schrieb am zuletzt editiert von hollywoot
        #97

        @dslraser
        Vielen Dank!
        Gute Nacht.

        Ich probiere noch etwas herum :sleuth_or_spy:
        Wäre weltklasse, wenn Du da was findest.

        Gruß

        dslraserD 2 Antworten Letzte Antwort
        0
        • hollywootH hollywoot

          @dslraser
          Vielen Dank!
          Gute Nacht.

          Ich probiere noch etwas herum :sleuth_or_spy:
          Wäre weltklasse, wenn Du da was findest.

          Gruß

          dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #98

          @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)

          1 Antwort Letzte Antwort
          0
          • hollywootH hollywoot

            @dslraser
            Vielen Dank!
            Gute Nacht.

            Ich probiere noch etwas herum :sleuth_or_spy:
            Wäre weltklasse, wenn Du da was findest.

            Gruß

            dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            schrieb am zuletzt editiert von dslraser
            #99

            @hollywoot
            hier noch mal das eigentliche Script:

            //Trigger
            on({id:"javascript.0.Eigene_Datenpunkte.07Klingel.Klingel_aktiv"/*Klingel aktiv*/, val: true, change: 'ne'}, main);
            var request = require("request");
            var fs = require('fs');
            var myJson = {};
            var sid = 0;
            
            function parseJson(text) {
             if (text === "") return {};
             try {
             json = JSON.parse(text);
             } catch (ex) {
             json = {};
             }
             if(!json) json = {};
             return json;
            }
            function readJson(url, callback) {
             request(url, function (err, state, body){
             if (body) {
             var json = parseJson(body);
             callback(null, json);
             } else {
             var error = "(" + err + ") ERROR bei Abfrage von: " + url;
             log(error, "warn"); 
             callback(error, null);
             }
             });
            }
            var url_login ='http://192.168.180.2:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=SynologyBenutzer&passwd=Passwort&session=SurveillanceStation&format=sid';
            var url_logout = 'http://192.168.180.2:5000/webapi/auth.cgi? api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation';
            var url_snapshot = 'http://192.168.180.2:5000/webapi/entry.cgi?camStm=1&version=8&cameraId=3&api=SYNO.SurveillanceStation.Camera&preview=true&method=GetSnapshot';
            
            function main() {
             readJson(url_login, function(err,json) {
             if(!err) {
             myJson = json;
             sid = myJson.data.sid;
             url_snapshot += '&_sid='+sid;
             url_logout += '&_sid='+sid;
             request.get({url: url_snapshot, encoding: 'binary'}, function (err, response, body) {
             fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) {
             if (err) {
             console.error(err);
             } else {
             console.log('Snapshot sent');
             sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: '🔔Es hat an der Haustür geklingelt !🔔'});
             request.get({url: url_logout, encoding: 'binary'});
             }
             }); 
             });
             } else {
             log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
             myJson = {};
             }
             });
            }
            

            hier habe ich mal als Trigger eine Steckdose genommen (die ist noch von Weihnachten so genannt:relaxed: ), geht auch (wenn die Steckdose eingeschaltet wird kommt ein Telegram Bild

            on({id:"hm-rpc.0.xxx.3.STATE"/*Weihnachtsbaum klein.STATE*/, val: true, change: 'ne'}, main);
            
            hollywootH 1 Antwort Letzte Antwort
            1
            • hollywootH hollywoot

              @dslraser
              Ich nutze die gleiche Version.

              Hier das Skript - hab nochmal ein bisschen am Namen usw. was verändert.

              createState("Eigene_Datenpunkte.05Telegram.Eingangskamera", {
              name: 'Eingangskamera',
              role: 'button',
              type: 'boolean',
              read: true,
              write: true,
              def: false,
              "smartName": {
              "de": "Eingangskamera",
              "smartType": "SWITCH"
              }
              });
              on({id:"javascript.1.Eigene_Datenpunkte.05Telegram.Eingangskamera", val: true, change: 'any'}, main);
              //on({id:"javascript.0.Eigene_Datenpunkte.07Klingel.Klingel_aktiv"/Klingel aktiv/, val: true, change: 'ne'}, main);
              //on({id:"javascript.0.Eigene_Datenpunkte.05Telegram.Eingangskamera"/Eingangskamera/, val: true, change: 'any'}, main);

              var request = require("request");
              var fs = require('fs');
              var myJson = {};
              var sid = 0;

              function parseJson(text) {
              if (text === "") return {};
              try {
              json = JSON.parse(text);
              } catch (ex) {
              json = {};
              }
              if(!json) json = {};
              return json;
              }
              function readJson(url, callback) {
              request(url, function (err, state, body){
              if (body) {
              var json = parseJson(body);
              callback(null, json);
              } else {
              var error = "(" + err + ") ERROR bei Abfrage von: " + url;
              log(error, "warn");
              callback(error, null);
              }
              });
              }
              var url_login ='http://xxx.xxx.xxx.xxx:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=user&passwd=password&session=SurveillanceStation&format=sid';
              var url_logout = 'http://xxx.xxx.xxx.xxx:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation';
              var url_snapshot = 'http://http://xxx.xxx.xxx.xxx:5000/webapi/entry.cgi?camStm=1&version=8&cameraId=2&api=SYNO.SurveillanceStation.Camera&preview=true&method=GetSnapshot';

              function main() {
              readJson(url_login, function(err,json) {
              if(!err) {
              myJson = json;
              sid = myJson.data.sid;
              url_snapshot += '&_sid='+sid;
              url_logout += '&_sid='+sid;
              request.get({url: url_snapshot, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) {
              if (err) {
              console.error(err);
              } else {
              console.log('Snapshot sent');
              sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Eingangskamera !'});
              request.get({url: url_logout, encoding: 'binary'});
              }
              });
              });
              } else {
              log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
              myJson = {};
              }
              });
              }

              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ösung :(

              Edit2:
              Den JS.1 Adapter habe ich extra installiert, damit mir hier nicht immer das Licht ausgeht.

              dslraserD Offline
              dslraserD Offline
              dslraser
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #100

              @hollywoot

              PS: warum spielt Dein Licht verrückt wenn Dein JS aussteigt ? Startest Du mit dem Neustart irgendwelche Scripte die dann sofort Licht schalten ?
              Da ist noch irgendwas Grundsätzlich falsch bei Deinen Blocklys/Scripten.

              1 Antwort Letzte Antwort
              0
              • dslraserD dslraser

                @hollywoot
                hier noch mal das eigentliche Script:

                //Trigger
                on({id:"javascript.0.Eigene_Datenpunkte.07Klingel.Klingel_aktiv"/*Klingel aktiv*/, val: true, change: 'ne'}, main);
                var request = require("request");
                var fs = require('fs');
                var myJson = {};
                var sid = 0;
                
                function parseJson(text) {
                 if (text === "") return {};
                 try {
                 json = JSON.parse(text);
                 } catch (ex) {
                 json = {};
                 }
                 if(!json) json = {};
                 return json;
                }
                function readJson(url, callback) {
                 request(url, function (err, state, body){
                 if (body) {
                 var json = parseJson(body);
                 callback(null, json);
                 } else {
                 var error = "(" + err + ") ERROR bei Abfrage von: " + url;
                 log(error, "warn"); 
                 callback(error, null);
                 }
                 });
                }
                var url_login ='http://192.168.180.2:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=SynologyBenutzer&passwd=Passwort&session=SurveillanceStation&format=sid';
                var url_logout = 'http://192.168.180.2:5000/webapi/auth.cgi? api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation';
                var url_snapshot = 'http://192.168.180.2:5000/webapi/entry.cgi?camStm=1&version=8&cameraId=3&api=SYNO.SurveillanceStation.Camera&preview=true&method=GetSnapshot';
                
                function main() {
                 readJson(url_login, function(err,json) {
                 if(!err) {
                 myJson = json;
                 sid = myJson.data.sid;
                 url_snapshot += '&_sid='+sid;
                 url_logout += '&_sid='+sid;
                 request.get({url: url_snapshot, encoding: 'binary'}, function (err, response, body) {
                 fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) {
                 if (err) {
                 console.error(err);
                 } else {
                 console.log('Snapshot sent');
                 sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: '🔔Es hat an der Haustür geklingelt !🔔'});
                 request.get({url: url_logout, encoding: 'binary'});
                 }
                 }); 
                 });
                 } else {
                 log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
                 myJson = {};
                 }
                 });
                }
                

                hier habe ich mal als Trigger eine Steckdose genommen (die ist noch von Weihnachten so genannt:relaxed: ), geht auch (wenn die Steckdose eingeschaltet wird kommt ein Telegram Bild

                on({id:"hm-rpc.0.xxx.3.STATE"/*Weihnachtsbaum klein.STATE*/, val: true, change: 'ne'}, main);
                
                hollywootH Offline
                hollywootH Offline
                hollywoot
                schrieb am zuletzt editiert von hollywoot
                #101

                @dslraser
                Guten morgen!
                Ich habe Dein zuletzt gepostetes Skript bei mir erstellt. Auch habe ich eine Funksteckdose genommen. Der Trigger funktioniert auch - wie auch in den Skripten davor...
                Ich bekomme aber immer noch die gleichen Errors...
                Scheinbar stimmt da doch was mit dem Request nicht oder sehe ich das falsch :(

                Error in der JS Console

                09:01:27.870 [error] Caught by controller[0]: at script.js.Telegram.Test_123:39:20
                09:01:27.870 [error] Caught by controller[0]: at Request._callback (script.js.Telegram.Test_123:23:2)

                Error im Log

                host.server01 2019-02-21 09:07:39.151 error instance system.adapter.javascript.1 terminated with code 0 (OK)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at endReadableNT (_stream_readable.js:1103:12)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at IncomingMessage.emit (events.js:194:15)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Object.onceWrapper (events.js:277:13)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1079:12)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.emit (events.js:189:13)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1157:10)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.emit (events.js:189:13)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request._callback (script.js.Telegram.Test_123:23:2)
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at script.js.Telegram.Test_123:39:20
                host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: TypeError: Cannot read property 'sid' of undefined

                Danke für Deine Mühen

                Edit:
                Ja, ich steuere mit Javascript auch Geräte und Lichter.
                Beim Absturz des Adapters scheint er alle Skripte, welche enabled sind, kurz zu disablen und wieder zu enablen.

                dslraserD 1 Antwort Letzte Antwort
                0
                • hollywootH hollywoot

                  @dslraser
                  Guten morgen!
                  Ich habe Dein zuletzt gepostetes Skript bei mir erstellt. Auch habe ich eine Funksteckdose genommen. Der Trigger funktioniert auch - wie auch in den Skripten davor...
                  Ich bekomme aber immer noch die gleichen Errors...
                  Scheinbar stimmt da doch was mit dem Request nicht oder sehe ich das falsch :(

                  Error in der JS Console

                  09:01:27.870 [error] Caught by controller[0]: at script.js.Telegram.Test_123:39:20
                  09:01:27.870 [error] Caught by controller[0]: at Request._callback (script.js.Telegram.Test_123:23:2)

                  Error im Log

                  host.server01 2019-02-21 09:07:39.151 error instance system.adapter.javascript.1 terminated with code 0 (OK)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at endReadableNT (_stream_readable.js:1103:12)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at IncomingMessage.emit (events.js:194:15)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Object.onceWrapper (events.js:277:13)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1079:12)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.emit (events.js:189:13)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1157:10)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.emit (events.js:189:13)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at Request._callback (script.js.Telegram.Test_123:23:2)
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: at script.js.Telegram.Test_123:39:20
                  host.server01 2019-02-21 09:07:39.151 error Caught by controller[0]: TypeError: Cannot read property 'sid' of undefined

                  Danke für Deine Mühen

                  Edit:
                  Ja, ich steuere mit Javascript auch Geräte und Lichter.
                  Beim Absturz des Adapters scheint er alle Skripte, welche enabled sind, kurz zu disablen und wieder zu enablen.

                  dslraserD Offline
                  dslraserD Offline
                  dslraser
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #102

                  @hollywoot
                  Ich habe Dir über PN(Chat) geschrieben.

                  1 Antwort Letzte Antwort
                  1
                  • hollywootH Offline
                    hollywootH Offline
                    hollywoot
                    schrieb am zuletzt editiert von
                    #103

                    Update für alle:

                    mein System war scheinbar nicht ganz in Ordnung.
                    Zudem hatte ich node 10 installiert. Diese beiden Sachen zusammen haben scheinbar dazu geführt, dass ich die hier geposteten Skripte nicht nutzen konnte.

                    Nachdem ich jetzt ioBroker sauber neu aufgesetzt habe, funktioniert alles wie es soll!
                    Ein riesiges Dankeschön geht raus an @dslraser, der sich stundenlang mit mir im TeamViewer hingesetzt hat um das Problem zu lösen. Alleine hätte ich wohl spätestens nach 4-5 Stunden wieder aufgegeben.

                    Top!

                    M 1 Antwort Letzte Antwort
                    1
                    • H Offline
                      H Offline
                      hobbycamper
                      schrieb am zuletzt editiert von
                      #104

                      Hi zusammen,

                      hat noch jemand @apollon77 Skript am laufen?

                      var request = require('request');
                      
                      // Konfiguration
                      var user = "XXXXXX";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
                      var pass = "XXXXXXX";  // Passwort zu eben eingegebenem Benutzer
                      var ip = "192.168.178.XXX";  // IP-Adresse eures Synology-NAS
                      var port = XXX;  // 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();
                      

                      Lief monatelang ohne Probleme. Scheinbar nach irgend einem Update, entweder iobroker oder SurveillanceStation (aktuell 8.2.3-5828), kommt kein Bild mehr. Wenn ich die angelegte URL aus dem Datenpunkt in den Browser kopiere, kommt auch kein Bild.
                      Das wäre z.B. das Format des aktuellen Datenpunkt:

                      http://192.168.178.XXX:XXX/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&version=1&method=Stream&cameraId=1&format=mjpeg&_sid=ibdh4MDGQhITs1790QDN403203
                      

                      Es kommt auch nicht "Seite nicht erreichbar", sondern der Browser sucht und sucht...

                      Es hilft auch kein Neustart des iobroker oder der synology.

                      Im Log kommt auch nichts ungewöhnliches:

                      javascript.0	2019-03-02 08:29:30.867	info	script.js.common.Kamera: registered 0 subscriptions and 1 schedule
                      javascript.0	2019-03-02 08:29:30.842	info	Start javascript script.js.common.Kamera
                      javascript.0	2019-03-02 08:29:30.828	info	Stop script script.js.common.Kamera
                      

                      Ist da jemand schon was bekannt?

                      LG
                      Thomas

                      hollywootH Samson71S 2 Antworten Letzte Antwort
                      0
                      • H hobbycamper

                        Hi zusammen,

                        hat noch jemand @apollon77 Skript am laufen?

                        var request = require('request');
                        
                        // Konfiguration
                        var user = "XXXXXX";  // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
                        var pass = "XXXXXXX";  // Passwort zu eben eingegebenem Benutzer
                        var ip = "192.168.178.XXX";  // IP-Adresse eures Synology-NAS
                        var port = XXX;  // 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();
                        

                        Lief monatelang ohne Probleme. Scheinbar nach irgend einem Update, entweder iobroker oder SurveillanceStation (aktuell 8.2.3-5828), kommt kein Bild mehr. Wenn ich die angelegte URL aus dem Datenpunkt in den Browser kopiere, kommt auch kein Bild.
                        Das wäre z.B. das Format des aktuellen Datenpunkt:

                        http://192.168.178.XXX:XXX/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&version=1&method=Stream&cameraId=1&format=mjpeg&_sid=ibdh4MDGQhITs1790QDN403203
                        

                        Es kommt auch nicht "Seite nicht erreichbar", sondern der Browser sucht und sucht...

                        Es hilft auch kein Neustart des iobroker oder der synology.

                        Im Log kommt auch nichts ungewöhnliches:

                        javascript.0	2019-03-02 08:29:30.867	info	script.js.common.Kamera: registered 0 subscriptions and 1 schedule
                        javascript.0	2019-03-02 08:29:30.842	info	Start javascript script.js.common.Kamera
                        javascript.0	2019-03-02 08:29:30.828	info	Stop script script.js.common.Kamera
                        

                        Ist da jemand schon was bekannt?

                        LG
                        Thomas

                        hollywootH Offline
                        hollywootH Offline
                        hollywoot
                        schrieb am zuletzt editiert von
                        #105

                        @hobbycamper
                        Ja, hier läuft es auch. URL wird erzeugt und ich habe selbiges Problem im Browser. Ich dachte bislang es liegt am Browser oder an mir. Habe mich nicht weiter damit beschäftigt.
                        Jetzt interessiert es mich allerdings doch...

                        1 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          mehrwiedu
                          schrieb am zuletzt editiert von
                          #106

                          Funktioniert hier einwandfrei mit der 8.2.3-5828 mit einem jqui-mfd Cam/Snapshot Dialog Widget.

                          Wobei ich bei mir noch nicht das richtige Widget gefunden habe. Hätte gerne eines, was permanent die Cam anzeigt und nur bei Ereignis sichtbar wird.
                          Der Dialog-Button erfordert jetzt immer ein bewusstes antippen.

                          Vielleicht aber bei Euch einmal in der Surveillance Station die Kamera neu freigeben?

                          hollywootH 1 Antwort Letzte Antwort
                          0
                          • R Offline
                            R Offline
                            Ragnar
                            schrieb am zuletzt editiert von
                            #107

                            @dslraser
                            Ich bin auf diesen Beitrag gestoßen, weil ich es auf klassischem/einfachen Weg über Eingabe einer Snapshot-Url meiner Kamera zwar im Browser etwas sehe, aber unter Einsatz von wget auf iobroker/js er ums Verrecken keine jpg abspeichert, und somit auch nicht an telegram versendet.

                            Da ich auch eine Syno laufen habe, auf der meine Kamera ordnungsgemäß funktioniert, dachte ich ich probiere mal Dein Skript. Es läuft auch ohne Probleme durch, im Log erscheint 'snapshot sent'. Allerdings findet sich keine Datei /tmp/snap.jpg auf meinem Raspi.

                            Demzufolge schickt mir die 'sendTo'-Zeile in Deinem Script auch kein Bild, sondern den Text "/tmp/snap.jpg". Ich habe diese Frage schon einmal woanders gestellt, aber keine Antwort erhalten: kann es sein, dass bei mir aus welchem Grund auch immer die js-Instanz keine Schreibrechte auf den Ordner /tmp hat? (Vielleicht ist das totaler Quatsch was ich schreibe, aber ich bin an diesem Problem seit Wochen dran und werde langsam wahnsinnig:dizzy_face: ).

                            Danke für die HIlfe
                            Erol

                            I dslraserD 2 Antworten Letzte Antwort
                            0
                            • R Ragnar

                              @dslraser
                              Ich bin auf diesen Beitrag gestoßen, weil ich es auf klassischem/einfachen Weg über Eingabe einer Snapshot-Url meiner Kamera zwar im Browser etwas sehe, aber unter Einsatz von wget auf iobroker/js er ums Verrecken keine jpg abspeichert, und somit auch nicht an telegram versendet.

                              Da ich auch eine Syno laufen habe, auf der meine Kamera ordnungsgemäß funktioniert, dachte ich ich probiere mal Dein Skript. Es läuft auch ohne Probleme durch, im Log erscheint 'snapshot sent'. Allerdings findet sich keine Datei /tmp/snap.jpg auf meinem Raspi.

                              Demzufolge schickt mir die 'sendTo'-Zeile in Deinem Script auch kein Bild, sondern den Text "/tmp/snap.jpg". Ich habe diese Frage schon einmal woanders gestellt, aber keine Antwort erhalten: kann es sein, dass bei mir aus welchem Grund auch immer die js-Instanz keine Schreibrechte auf den Ordner /tmp hat? (Vielleicht ist das totaler Quatsch was ich schreibe, aber ich bin an diesem Problem seit Wochen dran und werde langsam wahnsinnig:dizzy_face: ).

                              Danke für die HIlfe
                              Erol

                              I Offline
                              I Offline
                              I-Punkt
                              schrieb am zuletzt editiert von
                              #108

                              @Ragnar
                              Bild von meiner Kamera hole ich mit

                              request.get({url: url, encoding: 'binary'}, function (err, response, body) {
                                          fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) {
                                              if (err) {console.error(err);}
                                              else {
                                                  sendTo('telegram.0', {
                                                      text:                   '/tmp/snap.jpg',
                                                      disable_notification:   noNotification
                                                  });
                                              }
                                          });
                                      });
                              

                              Ein anderer Ansatz wäre vielleicht auch, ein "Foto" mit dem Phantomjs-Adapter zu machen.

                              sendTo('phantomjs.0', 'send', {
                                          url:                    floturl,
                                          output:                 '123.png',  // default value
                                          width:                  1000,            // default value
                                          height:                 500,            // default value
                                          timeout:                2000,           // default value
                                          zoom:                   1,              // default value
                                          'clip-top':             0,              // default value
                                          'clip-left':            0,              // default value
                                          'clip-width':           1000,            // default value is equal to width
                                          'clip-height':          500,            // default value is equal to height
                                          'scroll-top':           0,              // default value
                                          'scroll-left':          0,              // default value
                                          online:                 false           // default value
                                          }, function (result) {
                                              if (result.error) {
                                                  console.error(JSON.stringify(result.error));
                                                  sendtelegram(JSON.stringify(result.error));
                                                  }
                                              if (result.stderr) {
                                                  console.error(result.stderr);
                                                  sendtelegram(result.stderr);
                                                  }
                                              if (result.stdout) {
                                                  console.log(result.stdout);
                                                  }
                                              sendtelegram(result.output);
                                          });
                              
                              1 Antwort Letzte Antwort
                              0
                              • R Ragnar

                                @dslraser
                                Ich bin auf diesen Beitrag gestoßen, weil ich es auf klassischem/einfachen Weg über Eingabe einer Snapshot-Url meiner Kamera zwar im Browser etwas sehe, aber unter Einsatz von wget auf iobroker/js er ums Verrecken keine jpg abspeichert, und somit auch nicht an telegram versendet.

                                Da ich auch eine Syno laufen habe, auf der meine Kamera ordnungsgemäß funktioniert, dachte ich ich probiere mal Dein Skript. Es läuft auch ohne Probleme durch, im Log erscheint 'snapshot sent'. Allerdings findet sich keine Datei /tmp/snap.jpg auf meinem Raspi.

                                Demzufolge schickt mir die 'sendTo'-Zeile in Deinem Script auch kein Bild, sondern den Text "/tmp/snap.jpg". Ich habe diese Frage schon einmal woanders gestellt, aber keine Antwort erhalten: kann es sein, dass bei mir aus welchem Grund auch immer die js-Instanz keine Schreibrechte auf den Ordner /tmp hat? (Vielleicht ist das totaler Quatsch was ich schreibe, aber ich bin an diesem Problem seit Wochen dran und werde langsam wahnsinnig:dizzy_face: ).

                                Danke für die HIlfe
                                Erol

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #109

                                @Ragnar
                                Das Skript ist nicht von mir, ich habe es auch hier aus dem Forum.
                                Bei mir läuft ioBroker auf den Syno im Docker Container.
                                Über die Skript url's geht es aber, oder ?
                                Schreibrechte könnten aber schon sein...
                                Hattest Du mal den Fixer hier aus dem Forum bei Deiner Installation laufen lassen ?

                                1 Antwort Letzte Antwort
                                0
                                • R Offline
                                  R Offline
                                  Ragnar
                                  schrieb am zuletzt editiert von Ragnar
                                  #110

                                  @I-Punkt Danke für Deinen Post. Für aber zum bereits beschriebenen Effekt (es kommt nur Text an, kein Bild). Keine Fehlermeldungen o.Ä. im Log.
                                  @dslraser : Ja, Fixer ausgeführt, aber Problem nach wie vor wie wieter oben beschrieben. Phantomjs habe ich auch schon dran gedacht, aber das wäre noch ein Adapter mehr (muss ein wenig mit dem RAM haushalten).

                                  Ich werden weiter probieren und suchen. Danke Euch für Eure Beiträge.

                                  Gruß
                                  Erol

                                  p.s.: Ja, die url's funktionieren im Browser

                                  hollywootH 1 Antwort Letzte Antwort
                                  0
                                  • R Ragnar

                                    @I-Punkt Danke für Deinen Post. Für aber zum bereits beschriebenen Effekt (es kommt nur Text an, kein Bild). Keine Fehlermeldungen o.Ä. im Log.
                                    @dslraser : Ja, Fixer ausgeführt, aber Problem nach wie vor wie wieter oben beschrieben. Phantomjs habe ich auch schon dran gedacht, aber das wäre noch ein Adapter mehr (muss ein wenig mit dem RAM haushalten).

                                    Ich werden weiter probieren und suchen. Danke Euch für Eure Beiträge.

                                    Gruß
                                    Erol

                                    p.s.: Ja, die url's funktionieren im Browser

                                    hollywootH Offline
                                    hollywootH Offline
                                    hollywoot
                                    schrieb am zuletzt editiert von
                                    #111

                                    @Ragnar
                                    Mit welchem Benutzer führst du ioBroker aus?
                                    Guck doch mal nach den Rechten. Oder ändere den Pfad in ein /home/ Verzeichnis wo dein User definitiv Schreibrechte besitzt... Wobei das bei /tmp/ auch der Fall sein sollte.

                                    Gruß

                                    R 1 Antwort Letzte Antwort
                                    0
                                    • M mehrwiedu

                                      Funktioniert hier einwandfrei mit der 8.2.3-5828 mit einem jqui-mfd Cam/Snapshot Dialog Widget.

                                      Wobei ich bei mir noch nicht das richtige Widget gefunden habe. Hätte gerne eines, was permanent die Cam anzeigt und nur bei Ereignis sichtbar wird.
                                      Der Dialog-Button erfordert jetzt immer ein bewusstes antippen.

                                      Vielleicht aber bei Euch einmal in der Surveillance Station die Kamera neu freigeben?

                                      hollywootH Offline
                                      hollywootH Offline
                                      hollywoot
                                      schrieb am zuletzt editiert von
                                      #112

                                      @mehrwiedu
                                      Womit öffnest du das VIS?
                                      Welcher Browser?
                                      Mit der App?
                                      iOS oder Android?

                                      M 1 Antwort Letzte Antwort
                                      0
                                      • hollywootH hollywoot

                                        @mehrwiedu
                                        Womit öffnest du das VIS?
                                        Welcher Browser?
                                        Mit der App?
                                        iOS oder Android?

                                        M Offline
                                        M Offline
                                        mehrwiedu
                                        schrieb am zuletzt editiert von
                                        #113

                                        @hollywoot sagte in Synology Surveillance Station API:

                                        @mehrwiedu
                                        Womit öffnest du das VIS?
                                        Welcher Browser?
                                        Mit der App?
                                        iOS oder Android?

                                        Ach so. Ja, das ist wahrscheinlich gar nicht mal so unwichtig.

                                        VIS läuft in einer macOS Umgebung in Safari. Version 12, welches Build, weiß ich aber grad nicht auswendig.
                                        Wobei ioBroker auch darauf läuft. Also alles eine Suppe. ;)

                                        hollywootH 1 Antwort Letzte Antwort
                                        0
                                        • M mehrwiedu

                                          @hollywoot sagte in Synology Surveillance Station API:

                                          @mehrwiedu
                                          Womit öffnest du das VIS?
                                          Welcher Browser?
                                          Mit der App?
                                          iOS oder Android?

                                          Ach so. Ja, das ist wahrscheinlich gar nicht mal so unwichtig.

                                          VIS läuft in einer macOS Umgebung in Safari. Version 12, welches Build, weiß ich aber grad nicht auswendig.
                                          Wobei ioBroker auch darauf läuft. Also alles eine Suppe. ;)

                                          hollywootH Offline
                                          hollywootH Offline
                                          hollywoot
                                          schrieb am zuletzt editiert von
                                          #114

                                          @mehrwiedu
                                          Danke.
                                          Da ich hier rein gar nichts mit Apple zu tun habe, könnte da schon der Unterschied sein.
                                          Ich kann mir weder in der App, noch im Browser (Chromium, Chrome, Vivaldi, Firefox) das Livebild anzeigen lassen.
                                          Also selbst außerhalb des VIS nicht - da eiert sich der Browser zu Tode...

                                          M 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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          644

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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