Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Synology Surveillance Station API

Scheduled Pinned Locked Moved ioBroker Allgemein
181 Posts 51 Posters 65.0k Views 35 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    HoffmannOs
    wrote on last edited by
    #81

    Gibt es schon eine Lösung? Ich bekomme cam 1 angezeigt, allerdings bekomme ich bei der Camera 2 keine Ausgabe, bei jpp die Meldung das die Bilder fehler enthalten….

    1 Reply Last reply
    0
    • A Offline
      A Offline
      Alveran
      wrote on last edited by
      #82

      Nein leider nicht. Hab es aufgegeben mit dem Script. Scheint mit neueren Surveillance Station Version nicht mehr kompatibel zu sein.

      1 Reply Last reply
      0
      • K Offline
        K Offline
        Kueppert
        wrote on last edited by
        #83

        @Alveran:

        Nein leider nicht. Hab es aufgegeben mit dem Script. Scheint mit neueren Surveillance Station Version nicht mehr kompatibel zu sein. ` Also ich hab die Station v8.2 drauf. Bei mir im Heimnetz läuft alles wunderbar…

        Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

        PS: gerade WLAN vom Handy ausgeschaltet. Kamera tut es immer noch :) (nutze Cloud Pro, keine Ahnung ob das damit zusammenhängt)

        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

        1 Reply Last reply
        0
        • hollywootH Offline
          hollywootH Offline
          hollywoot
          wrote on last edited by
          #84

          Ziemlich unbefriedigend :D

          1 Reply Last reply
          0
          • K Offline
            K Offline
            Kueppert
            wrote on last edited by
            #85

            NACHTRAG: Update auf Version 6.2 führte auch bei mir dazu, dass das Skript nicht mehr funktioniert :(

            2. NACHTRAG: Habe alles noch mal überprüft (inkl. SSS geöffnet und geschaut, ob Kamera noch da). Problem war, die hatte sich abgemeldet :o

            …Strom raus, wieder rein, Skript läuft wieder und das Icon in VIS auch :mrgreen:

            UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

            1 Reply Last reply
            0
            • H Offline
              H Offline
              HoffmannOs
              wrote on last edited by
              #86

              Das Problem hatte ich auch, ich habe dann im Netz in einem Französischen Forum einen interessanten Artikel gefunden suche mal nach Yakus Master, ich habe auch gedacht das die Kamera falsche Daten liefert, allerdings war einfach die ID falsch. Ich hätte 2 Kameras und und die 2 hatte dann id 9….

              Probiere das mal aus.

              Gesendet von meinem SM-G965F mit Tapatalk

              1 Reply Last reply
              0
              • M Offline
                M Offline
                MyMeyer
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Replies Last reply
                  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
                    wrote on last edited by 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 Reply Last reply
                    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
                      wrote on last edited by 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 Replies Last reply
                      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
                        wrote on last edited by
                        #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 Reply Last reply
                        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
                          wrote on last edited by 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 Reply Last reply
                          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
                            wrote on last edited by
                            #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 Reply Last reply
                            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
                              wrote on last edited by 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 Reply Last reply
                              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
                                wrote on last edited by 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 Reply Last reply
                                0
                                • dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  wrote on last edited by
                                  #96

                                  schaue ich mir morgen mal an.

                                  hollywootH 1 Reply Last reply
                                  0
                                  • dslraserD dslraser

                                    schaue ich mir morgen mal an.

                                    hollywootH Offline
                                    hollywootH Offline
                                    hollywoot
                                    wrote on last edited by 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 Replies Last reply
                                    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
                                      wrote on last edited by
                                      #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 Reply Last reply
                                      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
                                        wrote on last edited by 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 Reply Last reply
                                        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
                                          wrote on last edited by
                                          #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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          392

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe