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.2k

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.
  • M Offline
    M Offline
    MyMeyer
    schrieb am zuletzt editiert von
    #87

    Hi,

    bei mir kommt auch diese Meldung:

    ` > javascript.0 Stop script script.js.common.Kamera

    23:41:12.096 [info] javascript.0 Start javascript script.js.common.Kamera

    23:41:12.098 [debug] javascript.0 script.js.common.Kamera: createState(name=javascript.0.Anzeigen.Kamera.Eingangstuer-Stream, initValue=, forceCreation=undefined, common={"type":"string","read":true,"write":true,"role":"value","def":"","name":"javascript.0.Anzeigen.Kamera.Eingangstuer-Stream"}, native={})

    23:41:12.098 [info] javascript.0 script.js.common.Kamera: schedule(cron=0 * * * *)

    23:41:12.098 [info] javascript.0 script.js.common.Kamera: registered 0 subscriptions and 1 schedule

    23:41:12.360 [info] javascript.0 script.js.common.Kamera: Invalid return on SurveillanceStation Stream URL: {"error":{"code":400},"success":false} `

    Zusätzlich bekomme ich diese Meldung wenn ich den Link aus Objekte im Browser eingebe:

    ` > Failed to load camera.

    X-Content-Type-Options: nosniff

    X-XSS-Protection: 1; mode=block

    Content-type: text/plain; charset="UTF-8"

    P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

    {"success":true} `

    Was bedeutet das nun wieder ?

    Auf der Syn läuft 6.2 ! Gibt es dafür eine Lösung. Über den Browser eingegeben und da war es okay .

    MyMeyer

    >>> Hardware: Intel I5 mit ****Debian ProxMox OS: Debian **** <<< >>> Network with UniFi <<<
    >>> HomeMatic CCU-2 (Wired und Funk) / Philips HUE / Echo.DOT / Echo.SHOW / Xiaomi Smart-Home / Xiaomi Robot Vacuum Cleaner / Synology DS 918+ / Shelly 1&2 <<<

    1 Antwort Letzte Antwort
    0
    • T Trident

      Hallo zusammen,

      gibt es schon fertige Skripte oder Adapter zur Nutzung der Web API der Surveillance Station?

      Hier kann man per GET request Snapshots erstellen oder Aufnahmen starten.

      Eine Integration in ioBroker wäre wahnsinnig praktisch. Leider verstehe ich zu wenig von JS und http :)

      Hier der Link zur Doku der API

      https://global.download.synology.com/do … I_v2.0.pdf

      Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram

      Ist laut API über die Methoden "take_snapshot" und "get_snapshot" wohl prinzipiell ohne weiteres möglich.

      Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?

      Viele Grüße

      Trident

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

      @Trident sagte in Synology Surveillance Station API:

      [...]
      Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram
      [...]
      Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?

      Absolut das, was ich auch will!
      Ich kann mir nicht vorstellen, dass wir da allein sind auf weiter Flur :P
      Vielleicht findet sich ja mal ein hilfsbereiter Programmer...

      LG

      dslraserD 2 Antworten Letzte Antwort
      1
      • hollywootH hollywoot

        @Trident sagte in Synology Surveillance Station API:

        [...]
        Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram
        [...]
        Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?

        Absolut das, was ich auch will!
        Ich kann mir nicht vorstellen, dass wir da allein sind auf weiter Flur :P
        Vielleicht findet sich ja mal ein hilfsbereiter Programmer...

        LG

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

        @hollywoot sagte in Synology Surveillance Station API:

        @Trident sagte in Synology Surveillance Station API:

        [...]
        Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram
        [...]
        Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?

        Absolut das, was ich auch will!
        Ich kann mir nicht vorstellen, dass wir da allein sind auf weiter Flur :P
        Vielleicht findet sich ja mal ein hilfsbereiter Programmer...

        LG

        ich kann mal morgen ein Script hier reinstellen was bei mir genau das macht...(muss nur ein Trigger für den BWM rein, da ich aktuell ein Bild bekomme wenn es an der Haustür klingelt...BWM hatte ich mal als Trigger, ging auch.)
        Ich habe drei Cams, bei allen dreien geht das über meine Syno.

        PS: ich bin noch unterwegs, schaffe ich heute nicht mehr.

        1 Antwort Letzte Antwort
        1
        • hollywootH hollywoot

          @Trident sagte in Synology Surveillance Station API:

          [...]
          Mein konkrete Anwendungsfall wäre die automatische Erstellung von Snapshot auf Grund der Auslösung eines Bewegungsmelder bei Abwesenheit und der anschließende Versand dieser Snapshots per Telegram
          [...]
          Würde mich über Tipps und Vorschläge freuen - vielleicht hatte ja schon jemand ein ähnliches Problem?

          Absolut das, was ich auch will!
          Ich kann mir nicht vorstellen, dass wir da allein sind auf weiter Flur :P
          Vielleicht findet sich ja mal ein hilfsbereiter Programmer...

          LG

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

          So, hier mal ein Script was bei mir läuft. Hier bekomme ich ein Bild von der Kamera wenn es an der Tür klingelt. Den Trigger kann man ja tauschen. Um die richtige Kamera zu finden mußte ich auch mehrfach "probieren", da die ID nicht fortlaufend ist. Der erste Link loggt sich ein (einfach in den Browser zum testen eingeben und dann den letzten Link in das Browserfenster eintragen und schauen ob ein Bild kommt (natürlich mit der eigenen IP und eventuell Port). Wenn nicht einfach mal eine andere ID probieren)
          Die ID der Cam, bei mir die 3 (alle zu ändernden Daten sind rot)

          ```
          //Datenpunkt erstellen / Bild Eingang senden
          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.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://192.168.180.2:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=SYNOBENUTZER&passwd=BENUTZERKENNWORT&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: 'Eingangskamera !'});
          request.get({url: url_logout, encoding: 'binary'});
          }
          });
          });
          } else {
          log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
          myJson = {};
          }
          });
          }

          M hollywootH 2 Antworten Letzte Antwort
          1
          • dslraserD dslraser

            So, hier mal ein Script was bei mir läuft. Hier bekomme ich ein Bild von der Kamera wenn es an der Tür klingelt. Den Trigger kann man ja tauschen. Um die richtige Kamera zu finden mußte ich auch mehrfach "probieren", da die ID nicht fortlaufend ist. Der erste Link loggt sich ein (einfach in den Browser zum testen eingeben und dann den letzten Link in das Browserfenster eintragen und schauen ob ein Bild kommt (natürlich mit der eigenen IP und eventuell Port). Wenn nicht einfach mal eine andere ID probieren)
            Die ID der Cam, bei mir die 3 (alle zu ändernden Daten sind rot)

            ```
            //Datenpunkt erstellen / Bild Eingang senden
            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.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://192.168.180.2:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=SYNOBENUTZER&passwd=BENUTZERKENNWORT&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: 'Eingangskamera !'});
            request.get({url: url_logout, encoding: 'binary'});
            }
            });
            });
            } else {
            log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
            myJson = {};
            }
            });
            }

            M Offline
            M Offline
            mpenno
            schrieb am zuletzt editiert von
            #91

            @dslraser
            Danke für das Script. Beide URLs im Browser funktionieren, den Snapshot meiner einen Kamera kann ich im Browser sehen.
            Wenn ich das Script unter Skripte ablegen und starte (mein Trigger ist jetzt irgendein KNX Event) dann erscheint im Log die Meldung:
            Info: cript.js.Scripte.Kamerabild_Tuer: Snapshot sent

            Welches Widget bzw. was muss ich in der VIS auswählen, um den Snapshot angezeigt zu bekommen?
            Ich wollte hier zum einen ein Kamerasymbol ablegen, auf das ich "drücken" kann, um das Türbild zu sehen und zum anderen beim Betätigen der Klingel eine Art Popup zu erhalten.
            Hier mal zur Info die Objekte, die angelegt wurden.
            6c0628e2-87f7-451d-ac47-e52f79696943-grafik.png

            Warum hat die "Eingangskamera" die Rolle "Button"? Sorry für die vielen Fragen...

            dslraserD 1 Antwort Letzte Antwort
            0
            • M mpenno

              @dslraser
              Danke für das Script. Beide URLs im Browser funktionieren, den Snapshot meiner einen Kamera kann ich im Browser sehen.
              Wenn ich das Script unter Skripte ablegen und starte (mein Trigger ist jetzt irgendein KNX Event) dann erscheint im Log die Meldung:
              Info: cript.js.Scripte.Kamerabild_Tuer: Snapshot sent

              Welches Widget bzw. was muss ich in der VIS auswählen, um den Snapshot angezeigt zu bekommen?
              Ich wollte hier zum einen ein Kamerasymbol ablegen, auf das ich "drücken" kann, um das Türbild zu sehen und zum anderen beim Betätigen der Klingel eine Art Popup zu erhalten.
              Hier mal zur Info die Objekte, die angelegt wurden.
              6c0628e2-87f7-451d-ac47-e52f79696943-grafik.png

              Warum hat die "Eingangskamera" die Rolle "Button"? Sorry für die vielen Fragen...

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

              @mpenno sagte in Synology Surveillance Station API:

              @dslraser
              Danke für das Script. Beide URLs im Browser funktionieren, den Snapshot meiner einen Kamera kann ich im Browser sehen.
              Wenn ich das Script unter Skripte ablegen und starte (mein Trigger ist jetzt irgendein KNX Event) dann erscheint im Log die Meldung:
              Info: cript.js.Scripte.Kamerabild_Tuer: Snapshot sent

              Welches Widget bzw. was muss ich in der VIS auswählen, um den Snapshot angezeigt zu bekommen?
              Ich wollte hier zum einen ein Kamerasymbol ablegen, auf das ich "drücken" kann, um das Türbild zu sehen und zum anderen beim Betätigen der Klingel eine Art Popup zu erhalten.
              Hier mal zur Info die Objekte, die angelegt wurden.
              6c0628e2-87f7-451d-ac47-e52f79696943-grafik.png

              Warum hat die "Eingangskamera" die Rolle "Button"? Sorry für die vielen Fragen...

              Zu VIS kann ich Dir nichts sagen, nutze ich nicht.
              Ich lasse mir ein Bild per Telegram schicken. (Snapshot send)

              Den Datenpunkt habe ich mir für andere Zwecke erstellt. Z.B. kann ich dann über TextoCommand /Telegram ein Bild anfordern, dafür wird nur der Button gedrückt. Ebenso kann ich den Button in einer Alexa Abfrage über eine Routine benutzen. Z.B. Alexa, schicke mir ein Bild vom Eingang.

              1 Antwort Letzte Antwort
              0
              • dslraserD dslraser

                So, hier mal ein Script was bei mir läuft. Hier bekomme ich ein Bild von der Kamera wenn es an der Tür klingelt. Den Trigger kann man ja tauschen. Um die richtige Kamera zu finden mußte ich auch mehrfach "probieren", da die ID nicht fortlaufend ist. Der erste Link loggt sich ein (einfach in den Browser zum testen eingeben und dann den letzten Link in das Browserfenster eintragen und schauen ob ein Bild kommt (natürlich mit der eigenen IP und eventuell Port). Wenn nicht einfach mal eine andere ID probieren)
                Die ID der Cam, bei mir die 3 (alle zu ändernden Daten sind rot)

                ```
                //Datenpunkt erstellen / Bild Eingang senden
                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.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://192.168.180.2:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=SYNOBENUTZER&passwd=BENUTZERKENNWORT&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: 'Eingangskamera !'});
                request.get({url: url_logout, encoding: 'binary'});
                }
                });
                });
                } else {
                log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
                myJson = {};
                }
                });
                }

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

                @dslraser
                Vielen Dank für Dein Skript!
                Im Browser funktionieren die Links alle wunderbar. Den Snapshot bekomme ich angezeigt.
                Somit bin ich schon mal einen Schritt weiter :)

                Mein Log sieht allerdings nicht so toll aus.
                Das steht im Log sobald ich in den Objects den Button klicke:

                Caught 2019-02-20 22:34:20.550 error by controller[0]: at endReadableNT (_stream_readable.js:1103:12)
                Caught 2019-02-20 22:34:20.550 error by controller[0]: at IncomingMessage.emit (events.js:194:15)
                Caught 2019-02-20 22:34:20.550 error by controller[0]: at Object.onceWrapper (events.js:277:13)
                Caught 2019-02-20 22:34:20.550 error by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1079:12)
                Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.emit (events.js:189:13)
                Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1157:10)
                Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.emit (events.js:189:13)
                Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request._callback (script.js.common.Skript1:38:1)
                Caught 2019-02-20 22:34:20.549 error by controller[0]: at script.js.common.Skript1:54:19
                Caught 2019-02-20 22:34:20.549 error by controller[0]: TypeError: Cannot read property 'sid' of undefined

                Es ist echt mühsam wenn man von JS nicht so den Plan hat...
                Ich hab jetzt über zwei Stunden hin und her probiert aber ich kriegs nicht hin.
                Abgesehen davon, dass der Javascript Adapter scheinbar komplett abschmiert und hier in der Bude sämtliche Lichter an- und aus gehen wie sie wollen :joy:

                Vielleicht hast Du ja noch einen Tipp für mich?
                Vielen Dank!

                Gruß

                dslraserD 1 Antwort Letzte Antwort
                0
                • hollywootH hollywoot

                  @dslraser
                  Vielen Dank für Dein Skript!
                  Im Browser funktionieren die Links alle wunderbar. Den Snapshot bekomme ich angezeigt.
                  Somit bin ich schon mal einen Schritt weiter :)

                  Mein Log sieht allerdings nicht so toll aus.
                  Das steht im Log sobald ich in den Objects den Button klicke:

                  Caught 2019-02-20 22:34:20.550 error by controller[0]: at endReadableNT (_stream_readable.js:1103:12)
                  Caught 2019-02-20 22:34:20.550 error by controller[0]: at IncomingMessage.emit (events.js:194:15)
                  Caught 2019-02-20 22:34:20.550 error by controller[0]: at Object.onceWrapper (events.js:277:13)
                  Caught 2019-02-20 22:34:20.550 error by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1079:12)
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.emit (events.js:189:13)
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1157:10)
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.emit (events.js:189:13)
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: at Request._callback (script.js.common.Skript1:38:1)
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: at script.js.common.Skript1:54:19
                  Caught 2019-02-20 22:34:20.549 error by controller[0]: TypeError: Cannot read property 'sid' of undefined

                  Es ist echt mühsam wenn man von JS nicht so den Plan hat...
                  Ich hab jetzt über zwei Stunden hin und her probiert aber ich kriegs nicht hin.
                  Abgesehen davon, dass der Javascript Adapter scheinbar komplett abschmiert und hier in der Bude sämtliche Lichter an- und aus gehen wie sie wollen :joy:

                  Vielleicht hast Du ja noch einen Tipp für mich?
                  Vielen Dank!

                  Gruß

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

                  @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 1 Antwort Letzte Antwort
                  0
                  • 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
                                          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

                                          787

                                          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