Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Kamerabilder an Telegram senden

    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

    Kamerabilder an Telegram senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Fliegerlenker last edited by

      Hallo,
      ich habe nach dieser [https://smarthome.buanet.de/2018/11/bilder-von-ueberwachungskamera-per-telegram-versenden] Anleitung und Script erfolgreich Bilder von der Kamera an Telegram schicken können. (Trigger_auto benutze ich nicht)
      Ohne ersichtlichen Grund bekomme ich jetzt nur noch den Bestätigungstext der Kommandos.
      (ich hatte einmal die KameraIP gewechselt um eine andere Kamera zu testen, mehr nicht)
      Javascript Version: 7.1.6
      Telegram Version: 3.0.0
      Text zu Kommandos Version: 3.0.2

      Folgendes habe ich getestet: ```
      'http://192.168.20.93:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxx&pwd=xxxx';
      funktioniert im Browser.

      Hier : var img_path = '/opt/iobroker/temp/cam/ wurden immer die drei Bilder abgelegt. Da kommt jetzt nichts mehr an.

      Vielen Dank für die Hilfe

      
      // Variablen
      var cam_img = 'http://192.168.20.93:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxx&pwd=xxxx';   // Pfad zum Kamerabild (Im Beispiel eine Foscam)
      var trigger_auto = 'hm-rpc.0.JEQXXXXXXX.1.MOTION';  // Datenpunkt zur autmatischen Auslösung (Status des Bewegungsmelders, Fenster-/ Türkontakt oder der Türklingel)
      var trigger_manu = 'javascript.0.notify.telegram.cam.trigger_manu'; // Datenpunkt zur manuellen Auslösung (wird bei Bedarf automatisch angelegt)
      var trigger_more_img = 'javascript.0.notify.telegram.cam.trigger_more_img'; // Datenpunkt zur Abfrage weiterer Bilder (wird bei Bedarf automatisch angelegt)
      var disable = 'javascript.0.notify.telegram.cam.disable';   // Aktivierung/Deaktivierung des Versands per telegram (wird bei Bedarf automatisch angelegt)
      var interval = '3000';  // Verzögerung der weiteren Aufnahmen in Millisekunden
      var img_path = '/opt/iobroker/temp/cam/';   // Pfad zum lokalen Speicherort der aufgenommenen Bilder. Bilder werden bei jeder Auslösung überschrieben. Pfad muss schon vorhanden sein!
       
       
      // -------------------------------------------
      // Ab hier braucht in der Regel nichts mehr geändert zu werden. Also Finger weg wenn du nicht weißt was du tust. :) 
      // -------------------------------------------
       
      // Datenpunkte anlegen (Kann unter Umständen auskommentiert werden, wenn die Datenpunkte manuell angelegt wurden.)
      createState( trigger_auto, false, {name: 'Datenpunkt zur autmatischen Auslösung'});
      createState( trigger_manu, false, {name: 'Datenpunkt zur manuellen Auslösung'});
      createState( trigger_more_img, false, {name: 'Datenpunkt zur Abfrage weiterer Bilder'});
      createState( disable, false, {name: 'Aktivierung/Deaktivierung des Versands per telegram'});
       
      // Variablendeklaration und Initialisierung bei Scriptstart
      var stateTrigger_auto = getState(trigger_auto).val;
      var stateTrigger_manu = getState(trigger_manu).val;
      var stateTrigger_more_img = getState(trigger_more_img).val;
      var stateDisable = getState(disable).val;
      var request = require('request');
      var fs      = require('fs');
      var timer;
       
       
      // Funktionen
      // -------------------------------------------
       
      // Funktion Bilder versenden
      function sendImage (pfad) {
          setTimeout(function() {
              sendTo('telegram.0', {
          text:   pfad,
          reply_markup: {
              keyboard: [
                  ['Mehr Bilder', 'Danke']
              ],
              resize_keyboard:   true,
              one_time_keyboard: true
          }
      });
              log('Webcam Bild per telegram verschickt.');
          }, 2000);
      }
       
      // Funktion Bilder speichern
      function saveImage() {
          request.get({url: cam_img, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(img_path + 'cam1_1.jpg', body, 'binary', function(err) {
              if (err) {
                  log('Fehler beim Speichern von Bild 1: ' + err, 'warn');
              } else {
                  log('Bild 1 gespeichert.');
                  sendImage(img_path + 'cam1_1.jpg');
              }
            }); 
          });
           
          if (timer) {
              clearTimeout(timer);
              timer = null;
          } 
          timer = setTimeout(function () {
              request.get({url: cam_img, encoding: 'binary'}, function (err, response, body) {
                  fs.writeFile(img_path + 'cam1_2.jpg', body, 'binary', function(err) {
                  if (err) {
                      log('Fehler beim Speichern von Bild 2: ' + err, 'warn');
                  } else {
                      log('Bild 2 gespeichert.');
              }
            }); 
          });
              }, interval);
          timer = setTimeout(function () {
              request.get({url: cam_img, encoding: 'binary'}, function (err, response, body) {
                  fs.writeFile(img_path + 'cam1_3.jpg', body, 'binary', function(err) {
                  if (err) {
                      log('Fehler beim Speichern von Bild 3: ' + err, 'warn');
                  } else {
                      log('Bild 3 gespeichert.');        }
            }); 
          });
              }, 2 * interval);
      }
       
       
      // Trigger für die verschiedenen Aktionen
      // -------------------------------------------
       
      // trigger_auto
      on(trigger_auto, function(dp) {
          stateTrigger_auto = dp.newState.val;
          stateDisable = getState(disable).val;
          if (stateTrigger_auto === true && stateDisable === false) {
              saveImage();
              // setState(trigger_auto, false);     // Option zum Zurücksetzen des Triggers. Standardmäßig auskommentiert, da sich der Bewegungsmelder automatisch zurück setzt. Bei Bedarf "//" am Zeilenafang entfernen.
          }
      });
       
      // trigger_more_img
      on(trigger_more_img, function(dp) {
          stateTrigger_more_img = dp.newState.val;
          if (stateTrigger_more_img === true) {
              sendImage(img_path + 'cam1_2.jpg');
              sendImage(img_path + 'cam1_3.jpg');
              setState(trigger_more_img, false);
          }
      });
       
      // trigger_manu
      on(trigger_manu, function(dp) {
          stateTrigger_manu = dp.newState.val;
          if (stateTrigger_manu === true) {
              saveImage();
              setState(trigger_manu, false);
          }
      });
      
      ```)
      bahnuhr 1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @Fliegerlenker last edited by

        @fliegerlenker

        Dein Befehl sieht richtig aus.
        Und dein Pfad auch.

        Musste halt mal dein Script auseinander nehmen und ein paar logs einbauen um zu sehen wo es hakt !

        F 1 Reply Last reply Reply Quote 0
        • F
          Fliegerlenker @bahnuhr last edited by

          @bahnuhr said in Kamerabilder an Telegram senden:

          @fliegerlenker
          Musste halt mal dein Script auseinander nehmen und ein paar logs einbauen um zu sehen wo es hakt !

          Ich bin nicht so der 'Scripter'. Rudimentär verstehe ich das script. Da scheinen ja ein paar Einträge bei 'err' in das log generiert zu werden.

          Hier ein Auszug aus dem Protokoll wenn ich per Telegram 'Kamera' an den Bot schicke:


          2023-12-13 08:34:01.744 - info: text2command.0 (3388) processText: "Kamera"
          2023-12-13 08:34:01.745 - info: text2command.0 (3388) Control ID "javascript.0.notify.telegram.cam.trigger_manu" with: true
          2023-12-13 08:34:01.756 - info: text2command.0 (3388) Response: Moment


          Weder im Script log selbst noch im Protokoll taucht auch nur eine Zeile vom Script auf.
          Als wäre es gar nicht existent.

          Kann es etwas mit den updates zu tun haben? (Telegram und JS)

          bahnuhr 1 Reply Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active @Fliegerlenker last edited by

            @fliegerlenker
            Na, dann probier es doch mal einfach.

            Schicke dir ein bestehendes jpg an telegram.

            klappt dies ?

            1 Reply Last reply Reply Quote 0
            • F
              Fliegerlenker last edited by

              Habe eben etwas heruasgefunden:

              Dieser Wert

              javascript.0.notify.telegram.cam.trigger_manu

              steht im JS Objekt dauerhaft auf :true
              Setze ich den Wert manuell auf 'false' und schicke dann 'Kamera' an den Bot kommt das Bild.

              ???

              bahnuhr Christian Wöhrle 2 Replies Last reply Reply Quote 0
              • bahnuhr
                bahnuhr Forum Testing Most Active @Fliegerlenker last edited by

                @fliegerlenker
                Na dann probier weiter.

                Ich werde dieses lange, fremde Script auf keinen Fall auseinander nehmen.

                Ich schreibe lieber meine eigenen; dann weiß ich auch was wo steht.

                1 Reply Last reply Reply Quote 0
                • F
                  Fliegerlenker last edited by

                  Hier der entsprechende Protokoll auszug mit einer 'warn' die ich nicht verstehe:


                  2023-12-13 08:59:26.622 - info: text2command.0 (3388) processText: "Kamera"
                  2023-12-13 08:59:26.622 - info: text2command.0 (3388) Control ID "javascript.0.notify.telegram.cam.trigger_manu" with: true
                  2023-12-13 08:59:26.630 - info: text2command.0 (3388) Response: Geht los, Moment
                  2023-12-13 08:59:26.633 - warn: javascript.0 (5236) script.js.common.Pics.Skript_1: setForeignState(id=javascript.0.notify.telegram.cam.trigger_manu, state={"val":false,"ack":false,"ts":1702454366633,"q":0,"from":"system.adapter.javascript.0","lc":1702454366633,"c":"script.js.common.Pics.Skript_1"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist
                  2023-12-13 08:59:27.271 - info: javascript.0 (5236) script.js.common.Pics.Skript_1: Bild 1 gespeichert.
                  2023-12-13 08:59:29.273 - info: javascript.0 (5236) script.js.common.Pics.Skript_1: Webcam Bild per telegram verschickt.
                  2023-12-13 08:59:30.289 - info: javascript.0 (5236) script.js.common.Pics.Skript_1: Bild 2 gespeichert.
                  2023-12-13 08:59:33.359 - info: javascript.0 (5236) script.js.common.Pics.Skript_1: Bild 3 gespeichert.

                  DJMarc75 1 Reply Last reply Reply Quote 0
                  • Christian Wöhrle
                    Christian Wöhrle @Fliegerlenker last edited by

                    @fliegerlenker Warum setzt du es dann nicht auf false im Skript? Quasi als sauberen Abschluss.

                    1 Reply Last reply Reply Quote 0
                    • F
                      Fliegerlenker last edited by

                      Ich denke einmal, das steht doch hier schon im Script drin:
                      Was mir im Script im ioBroker auffällt: Das Wort: "newState" (s.u.) wird dort durchgestrichen dargestellt. Warum?


                      // trigger_manu
                      on(trigger_manu, function(dp) {
                      stateTrigger_manu = dp.newState.val;
                      if (stateTrigger_manu === true) {
                      saveImage();
                      setState(trigger_manu, false);
                      }


                      1 Reply Last reply Reply Quote 0
                      • DJMarc75
                        DJMarc75 @Fliegerlenker last edited by

                        @fliegerlenker sagte in Kamerabilder an Telegram senden:

                        wurde nicht ausgeführt, während der Debug-Modus aktiv ist

                        Du hast nicht zufällig den Haken gesetzt ?

                        Screenshot 2023-12-13 090649.png

                        1 Reply Last reply Reply Quote 0
                        • F
                          Fliegerlenker last edited by

                          Ja, genau den

                          1 Reply Last reply Reply Quote 0
                          • U
                            UEP-IoBroker last edited by

                            Guten Morgen Zusammen,

                            wir haben ab un an das gleiche Problem, die Ursache ist zumindest bei uns, dass zum Zeitpunkt der Übergabe des Bildes an Telegram, das Bild noch nicht vollständig auf die Platte geladen wurde.

                            Wir haben dann Verzögerungen in das Script eingebaut, seit dem klappt es ohne Probleme und weitere Ausfälle.

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              Fliegerlenker last edited by

                              Ich habe nun folgendes gemacht (Workaround)

                              Hab ein Blockly geschieben, das den Wert von :

                              javascript.0.notify.telegram.cam.trigger_manu

                              nach 10 sec wieder auf false setzt.
                              Jetzt funktioniert alles!

                              1 Reply Last reply Reply Quote 0
                              • F
                                Fliegerlenker @UEP-IoBroker last edited by Fliegerlenker

                                @uep-iobroker said in Kamerabilder an Telegram senden:

                                Guten Morgen Zusammen,

                                Wir haben dann Verzögerungen in das Script eingebaut, seit dem klappt es ohne Probleme und weitere Ausfälle.

                                Das habe ich eben versucht, ohne Erfolg. Bei mir liegt es ausschliesslich daran, dass der Trigger nicht wieder auf false gesetzt wird.

                                Mit diesem Blockly (jetzt ohne 10 sec Verzögerung) funktioniert es nun zuverlässig:

                                on({ id: 'javascript.0.notify.telegram.cam.trigger_manu' /* Datenpunkt zur manuellen Auslösung */, change: 'ne' }, async (obj) => {
                                  let value = obj.state.val;
                                  let oldValue = obj.oldState.val;
                                  setState('javascript.0.notify.telegram.cam.trigger_manu' /* Datenpunkt zur manuellen Auslösung */, false);
                                });
                                on({ id: 'javascript.0.notify.telegram.cam.trigger_more_img' /* Datenpunkt zur Abfrage weiterer Bilder */, change: 'ne' }, async (obj) => {
                                  let value = obj.state.val;
                                  let oldValue = obj.oldState.val;
                                  setState('javascript.0.notify.telegram.cam.trigger_more_img' /* Datenpunkt zur Abfrage weiterer Bilder */, false);
                                });
                                
                                U 1 Reply Last reply Reply Quote 0
                                • U
                                  UEP-IoBroker @Fliegerlenker last edited by

                                  @fliegerlenker - machen wir hier ähnlich, da wir mittels Homematic PIR Bewegungsmeldern die Aufnahmen triggern, allerdings lösen die bei Bewegung erkannt die Skripte mehrfach aus, das umgehen wir, in dem wir eine Variable mit einem Timer versehen, ebenso filtern wir damit "die Katzen" welche hier über den Campus laufen heraus, da wir erst bei wiederholtem Auslösen die Variable auf True setzen, auf welche dann die Kamerasteuerung auslöst.

                                  Nach 60 Sekunden wird die Variable, wie bei Dir wieder auf False gesetzt. Wir machen nicht nur Alarmbilder, wir triggern dann auch einen virtuellen Video Rekorder, welcher ein 60 Sekunden Video aufnimmt, dadurch erhalten wir nur Bilder und Videos welche sich genau auf das Ereigniss beziehen ohne lange im Archiv suchen zu müssen.

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tombox last edited by

                                    @fliegerlenker
                                    Vielleicht mal den onvif adapter anschauen da geht das mit dem snapshot versenden sehr einfach genauso wie live stream ohne große CPU Last
                                    https://forum.iobroker.net/topic/63145/test-adapter-onvif-camera-v1-0-0

                                    F 1 Reply Last reply Reply Quote 0
                                    • F
                                      Fliegerlenker @tombox last edited by

                                      @tombox
                                      Hi, was ich realisieren will ist, von unterwegs mir einen snapshot von zuhause (Pferde) schicken lassen.

                                      1 Reply Last reply Reply Quote 0
                                      • F
                                        Fliegerlenker last edited by

                                        Das Elend geht doch weiter:
                                        Mittags ging alles noch, heute Abend bekomme ich diese Fehlermeldung:


                                        2023-12-13 18:34:40.076 - info: text2command.0 (3388) processText: "Kamera"
                                        2023-12-13 18:34:40.077 - info: text2command.0 (3388) Control ID "javascript.0.notify.telegram.cam.trigger_manu" with: true
                                        2023-12-13 18:34:40.094 - info: text2command.0 (3388) Response: Geht los, Moment
                                        2023-12-13 18:34:43.187 - error: javascript.0 (5991) Error in request callback: TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined
                                        2023-12-13 18:34:43.188 - error: javascript.0 (5991) Request error: Error: connect EHOSTUNREACH 192.168.20.93:88
                                        2023-12-13 18:34:43.196 - error: javascript.0 (5991) Error in request callback: TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined
                                        2023-12-13 18:34:43.196 - error: javascript.0 (5991) Request error: Error: connect EHOSTUNREACH 192.168.20.93:88
                                        2023-12-13 18:34:46.257 - error: javascript.0 (5991) Error in request callback: TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined
                                        2023-12-13 18:34:46.258 - error: javascript.0 (5991) Request error: Error: connect EHOSTUNREACH 192.168.20.93:88


                                        Also: 'Kamera' geht nicht,
                                        'mehr Bilder' geht, bekomme aber zwei alte Bilder geschickt

                                        1 Reply Last reply Reply Quote 0
                                        • F
                                          Fliegerlenker last edited by

                                          🙏 Asche auf mein Haupt:
                                          Kamera war versehentlich nicht am Netz

                                          1 Reply Last reply Reply Quote 0
                                          • F
                                            Fliegerlenker last edited by

                                            hallo,
                                            es soll nun eine unif camera dazustossen bzw im Script soll erst einmal die 'Kamera' geändert werden.

                                            Wenn ich das in den Browser eingebe kommt ein Bild von der Foscam und das Script funktioniert:
                                            http://192.168.20.93:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxx

                                            Bei der unifi Kamera gebe ich folgendes in den Browser ein und bekomme ein Bild:
                                            http://192.168.20.91/snap.jpeg
                                            Baue ist die Zeile in das Script einfunktioniert das aber nicht.

                                            Hat jemand eine Idee?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            782
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            kamera bild script ignored telegram bot
                                            6
                                            20
                                            1316
                                            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