Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Hikam Kameras Snapshot erstellen und verschicken

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hikam Kameras Snapshot erstellen und verschicken

    This topic has been deleted. Only users with topic management privileges can see it.
    • lost in translation
      lost in translation @dslraser last edited by

      @dslraser said in Hikam Kameras Snapshot erstellen und verschicken:

      @lost-in-translation
      geh mal ganz oben in der Ordnerstruktur der Kamera auf den Bleistift und trage unter nativ Deine Zugangsdaten ein, dann kommen mehr Daten.

      Bildschirmfoto 2019-11-18 um 23.34.43.png

      Schon mehr:
      8d4bed82-d4b1-40f6-a4b4-57e64ef0abca-image.png

      Jetzt könnte ich zumindest mal die Namen zuordnen anhand der Daten. Das mache ich dann mal morgen.
      Immerhin ein paar Schritte weiter. Vielen Dank.

      ciao

      frank

      lost in translation 1 Reply Last reply Reply Quote 0
      • lost in translation
        lost in translation @lost in translation last edited by

        @lost-in-translation

        Sieht besser aus. Es gibt sogar URLs:
        1ed4039a-ebdb-414d-aef2-dbffff2b3bf1-image.png

        Allerdings im Browser klappt bei der URL mal gar nix. Wie komme ich denn jetzt mit diesem Status weiter Richtung ich mache ein Bild, dass ich dann verschicken kann?
        Bei der Chinacam konnte ich so ein Bild ins Dateisystem holen:
        4af1a195-cde6-4caa-a525-f5a6e85cad4f-image.png

        Genau das klappt aber so mit der Hicam nicht. Wie kann ich das machen?

        ciao

        frank

        Jey Cee 1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer @lost in translation last edited by

          @lost-in-translation es kann sein das die Cam den Snapshot an einen vorher definierten Ort ablegt und die URL nur zur Auslösung dient. Schau dir mal die Einstellungen deiner Cam genau an.

          lost in translation 1 Reply Last reply Reply Quote 0
          • lost in translation
            lost in translation @Jey Cee last edited by

            @Jey-Cee said in Hikam Kameras Snapshot erstellen und verschicken:

            @lost-in-translation es kann sein das die Cam den Snapshot an einen vorher definierten Ort ablegt und die URL nur zur Auslösung dient. Schau dir mal die Einstellungen deiner Cam genau an.

            Hmm, ich habe bisher nirgends auch nur einen Hinweis gefunden, dass die Hikams das könnten. Ich dachte bisher, ich müsste mit einem Programm einen Snapshot aus dem rtsp Stream rausknipsen.

            So eine Lösung suche ich.
            @dslraser
            Wie hast Du das mit der Syno gemacht? Dein Login klappt, aber der dritte Link haut einen 401 zurück:

            {"error":{"code":401},"success":false}
            

            Irgendwie nicht mein Tag. Am liebsten hätte ich es auch ohne Mitwirkung der syno ...

            ciao

            frank

            dslraser 2 Replies Last reply Reply Quote 0
            • dslraser
              dslraser Forum Testing Most Active @lost in translation last edited by dslraser

              @lost-in-translation sagte in Hikam Kameras Snapshot erstellen und verschicken:

              Wie hast Du das mit der Syno gemacht? Dein Login klappt, aber der dritte Link haut einen 401 zurück:

              Dann hast Du nicht die richtige camera id im dritten Link. (da steht eine Zahl)

              cameraID=9

              Screenshot_20191119-134236_Chrome.jpg

              Da kannst Du einfach mal andere Zahlen durchprobieren, bis die richtige Cam kommt.

              lost in translation 1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @lost in translation last edited by dslraser

                @lost-in-translation sagte in Hikam Kameras Snapshot erstellen und verschicken:

                Wie hast Du das mit der Syno gemacht? Dein Login klappt, aber der dritte Link haut einen 401 zurück:

                oder Du schaust auf der Syno nach. Rechtsklick auf die Kamera in der Surveillance Station und Streampfad freigebenn, da steht auch die ID

                Bildschirmfoto 2019-11-19 um 13.50.08.png

                1 Reply Last reply Reply Quote 0
                • lost in translation
                  lost in translation @dslraser last edited by

                  @dslraser
                  So einfach 🙂 Bei 1 und 2 kommt tatsächlich was.
                  Jetzt muss ich mich mal mit Deinem javascript auseinandersetzen, um das in Blockly reinzutüten.

                  ciao

                  frank

                  1 Reply Last reply Reply Quote 0
                  • lost in translation
                    lost in translation @dslraser last edited by lost in translation

                    @dslraser said in Hikam Kameras Snapshot erstellen und verschicken:

                    @ilovegym
                    ich nutze dieses Script
                    Benutzer/Passwort und Kamera ID mußt Du anpassen.
                    IP ind Port natürlich auch.
                    Wenn Du den ersten Link mit Deinen Daten in den Browser einfügst, dann siehst Du schon mal ob das Login geklappt hat. Wenn ja, dann den dritten Link in das gleiche Browser Fenster einfügen und die Kamera ID ändern. Bei mir ist es die 9 (immer wenn man in der Syno eine Kamera neu anlegt oder verändert, dann wurde wohl fortlaufend nummeriert, deshalb wohl die 9 bei mir.) Die ID kannst Du durchprobieren und einfach wieder den Browser damit aktualisieren, bis Du die passende Cam hast.

                    //Bild Eingang senden
                    //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.1.249:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=Benutzer&passwd=Passwort&session=SurveillanceStation&format=sid';
                    var url_logout = 'http://192.168.1.249:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation';
                    var url_snapshot = 'http://192.168.1.249:5000/webapi/entry.cgi?camStm=1&version=8&cameraId=9&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 = {};
                     }
                     });
                    }
                    

                    Verzeih die "blutiger Anfänger" Fragen. Ich habe Dein Skript mal in den Skripteditor kopiert.
                    Bekomme aber merkwürdige Fehlermeldungen.
                    Ich habe mal von Hand einen Datenpunkt gehäkelt:
                    756c6fee-76a6-485c-82c1-764716378341-image.png
                    und im Skript habe ich telegram durch email ersetzt, weil ich telegram noch nicht eingerichtet habe.
                    Dann bekomme ich das im Log zu sehen:
                    7c49121a-fe76-4d5d-9614-858389cea2e6-image.png

                    Meine Änderung:
                    ac06bc5c-5e5c-4ca9-ae5f-6a6ef0573c43-image.png
                    Grummel.

                    ciao

                    frank

                    dslraser 1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @lost in translation last edited by dslraser

                      @lost-in-translation
                      ich hatte bisher keinen E-Mail Adapter installiert. Das habe ich jetzt mal gemacht und ein wenig "rumprobiert".
                      Mir dauert es aber zu lange bis die Mail kommt... Ein Telegram ist quasi ohne Zeitverzug da.

                      So hat es bei mir per E-Mail funktioniert. So wird an alle Instanzen gesendet

                      console.log('Snapshot sent');
                       sendTo("email", "send", {
                         to: 'xxx@googlemail.com',
                         subject: '👀Eingangskamera 👀',
                         html: '👀Es hat geklingelt 👀',
                         attachments: {path: '/tmp/snap.jpg'}
                         });
                       //sendTo('telegram', {user: 'Heiko', text: '/tmp/snap.jpg', caption: '👀Eingangskamera 👀'});
                       request.get({url: url_logout, encoding: 'binary'});
                       }
                       }); 
                       });
                      

                      und so an eine bestimmte Instanz (z.B. Instanz 0)

                      console.log('Snapshot sent');
                       sendTo("email.0", "send", {
                         to: 'xxx@googlemail.com',
                         subject: '👀Eingangskamera 👀',
                         html: '👀Es hat geklingelt 👀',
                         attachments: {path: '/tmp/snap.jpg'}
                         });
                       //sendTo('telegram', {user: 'Heiko', text: '/tmp/snap.jpg', caption: '👀Eingangskamera 👀'});
                       request.get({url: url_logout, encoding: 'binary'});
                       }
                       }); 
                       });
                      

                      PS: also nur diesen Teil austauschen

                      lost in translation 1 Reply Last reply Reply Quote 0
                      • Jey Cee
                        Jey Cee Developer last edited by

                        Hat eigentlich mal jemand die PTZ funktion des Adapters ausprobiert?

                        dslraser ? 3 Replies Last reply Reply Quote 0
                        • dslraser
                          dslraser Forum Testing Most Active @Jey Cee last edited by

                          @Jey-Cee sagte in Hikam Kameras Snapshot erstellen und verschicken:

                          Hat eigentlich mal jemand die PTZ funktion des Adapters ausprobiert?

                          Ich habe leider keine Kamera die das unterstützt.

                          1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User @Jey Cee last edited by

                            @Jey-Cee sagte in Hikam Kameras Snapshot erstellen und verschicken:

                            Hat eigentlich mal jemand die PTZ funktion des Adapters ausprobiert?

                            Ich habe 2 mit ptz, die gespeicherten Positionen werden ausgelesen, teste morgen Nachmittag damit Mal.. 🙂

                            1 Reply Last reply Reply Quote 0
                            • lost in translation
                              lost in translation @dslraser last edited by

                              @dslraser said in Hikam Kameras Snapshot erstellen und verschicken:

                              sendTo("email.0", "send", { to: 'xxx@googlemail.com', subject: '👀Eingangskamera 👀', html: '👀Es hat geklingelt 👀', attachments: {path: '/tmp/snap.jpg'} }); //sendTo('telegram', {user: 'Heiko', text: '/tmp/snap.jpg', caption: '👀Eingangskamera 👀'}); request.get({url: url_logout, encoding: 'binary'});

                              ich habe den Austausch vorgenommen. Bekomme aber woanders im Vorfeld eine Fehlermeldung:
                              9c95e271-c70b-49f5-b950-57a48a8e178b-image.png

                              An den Zeilen habe ich aber soweit nix geändert:
                              a7d2cf39-1e99-437d-a482-9accc7cbae3a-image.png

                              Telegram hört sich interessant an, dazu müsste ich es aber zunächst mal auf iphones und ipads einrichten.
                              Bei email weiss ich wenigstens, dass es generell funktioniert.

                              ciao

                              frank

                              dslraser 1 Reply Last reply Reply Quote 0
                              • H
                                homecineplexx last edited by

                                ich hab das mit phantomjs gelöst

                                1 Reply Last reply Reply Quote 0
                                • dslraser
                                  dslraser Forum Testing Most Active @lost in translation last edited by

                                  @lost-in-translation
                                  Poste mal Dein komplettes verändertes Script. Den Benutzer und das Kennwort und Deine E-Mail kannst Du ja mit xxx überschreiben.

                                  lost in translation 1 Reply Last reply Reply Quote 0
                                  • ?
                                    A Former User @Jey Cee last edited by

                                    @Jey-Cee sagte in Hikam Kameras Snapshot erstellen und verschicken:

                                    Hat eigentlich mal jemand die PTZ funktion des Adapters ausprobiert?

                                    Jetzt, ja, funktioniert leider nicht...
                                    hier mal die Datenpunkte, die angelegt werden:
                                    4ec10a2b-0988-474c-86e7-a34a2892b8a1-grafik.png

                                    Das Logfile schicke ich dir per Email, wenn du magst, zu Umfangreich und sensibel, um es hier zu posten.

                                    1 Reply Last reply Reply Quote 0
                                    • lost in translation
                                      lost in translation @dslraser last edited by

                                      @dslraser said in Hikam Kameras Snapshot erstellen und verschicken:

                                      @lost-in-translation
                                      Poste mal Dein komplettes verändertes Script. Den Benutzer und das Kennwort und Deine E-Mail kannst Du ja mit xxx überschreiben.

                                      Das hat es gemacht. Tippfehler beim Benutzername 😞 Aua. War mir vorher gar nicht aufgefallen. Die Fehlermeldung hatte ich dahingehend nicht deuten können.
                                      Jetzt kann ich morgen mal schauen, wie ich in Blockly das Objekt umschießen kann, um das Skript von meinem Türklingel Blockly aus zu triggern.
                                      Vielen Dank für Deine Hilfe.
                                      frank

                                      dslraser 1 Reply Last reply Reply Quote 0
                                      • dslraser
                                        dslraser Forum Testing Most Active @lost in translation last edited by

                                        @lost-in-translation
                                        Dann poste hier mal Dein Ergebnis wenn Du fertig bist.

                                        1 Reply Last reply Reply Quote 0
                                        • N
                                          nousefor82 last edited by

                                          Servus,

                                          wenn ich den Trigger auslöse (zum Test ein Lichtschalter) kommt es zur folgenden Fehlermeldung:

                                          javascript.0	2019-11-22 21:13:09.006	warn	script.js.Sicherheit.Kamerbild.Kamerbild: Fehler beim Auslesen des JSON. Keine Daten erhalten.
                                          javascript.0	2019-11-22 21:13:09.006	warn	script.js.Sicherheit.Kamerbild.Kamerbild: (Error: unable to verify the first certificate) ERROR bei Abfrage von: https://192.168.188.90:5001/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&ac
                                          

                                          Hier das Skript:

                                          //Bild Eingang senden
                                          
                                          //Trigger
                                          
                                          on({id:"shelly.0.SHSW-1#32C858#1.Relay0.Switch"/*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 ='https://192.168.188.xx:5001/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=admin&passwd=xxx&session=SurveillanceStation&format=sid';
                                          
                                          var url_logout = 'https://192.168.188.xx:5001/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation';
                                          
                                          var url_snapshot = 'https://192.168.188.xx:5001/webapi/entry.cgi?camStm=1&version=8&cameraId=1&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 = {};
                                          
                                           }
                                          
                                           });
                                          
                                          }
                                          

                                          Muss ich am URL -PFad was ändern?

                                          Habe ioBroker auf einem WIN10 Rechner laufen.

                                          VG + Danke

                                          dslraser 1 Reply Last reply Reply Quote 0
                                          • dslraser
                                            dslraser Forum Testing Most Active @nousefor82 last edited by

                                            @nousefor82
                                            ich habe das bei mir am Port 5000 über http laufen . Kann sein das man bei https und 5001 ein Certificat braucht...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            411
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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