Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Existierende einzelne Kamera Bilder per Telegram verschicken

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Existierende einzelne Kamera Bilder per Telegram verschicken

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      per Script die neueste Datei in einem Verzeichnis ermitteln
      (ist nicht von mir)

      // letzte Datei (lt. Datum/Uhrzeit) in einem Verzeichnis ermitteln
      var path = require('path');
      var fs = require('fs');
      
      var getMostRecent = function (dir, cb) {
         var dir = path.resolve(dir);
         var files = fs.readdir(dir, function (err, files) {
         	var sorted = files.map(function(v) {
         		var filepath = path.resolve(dir, v);
         		return {
         			name:v,
         			time:fs.statSync(filepath).mtime.getTime()
         		}; 
         	})
         	.sort(function(a, b) { return b.time - a.time; })
         	.map(function(v) { return v.name; });
      
         	if (sorted.length > 0) {
         		cb(null, sorted[0]);
         	} else {
         		cb('Y U NO have files in this dir?');
         	}
         })
      }
      getMostRecent('c:/iobroker/cache', function (err, recent) {
         if (err) console.error(err);
         console.log(recent);
      });
      

      Und dann per telegram versenden.

      P.S.:
      bei blockly bin ich raus.

      1 Reply Last reply Reply Quote 0
      • M
        mrzee @digitalnaive last edited by

        @digitalnaive

        Auf was für einer Basis läuft denn dein iobroker? Ich habe es bei mir mittels wget und der Snapshot-Funktion des Kamerastreams gelöst. Ich schreibe immer nur eine Datei weg und schicke sie dann per Telegram

        D 1 Reply Last reply Reply Quote 0
        • D
          digitalnaive @mrzee last edited by

          @mrzee Du meinst mit Basis vermutlich das OS? Ist Linux Server.

          Ich muss ein Bild via Button erst explizit triggern um es dann verwenden zu können.

          75de9a95-fba3-404b-8ebe-05ced338f079-image.png

          bahnuhr M 2 Replies Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active last edited by

            @digitalnaive

            Hast du meine Lösung ausprobiert ?

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

              @digitalnaive sagte in Existierende einzelne Kamera Bilder per Telegram verschicken:

              Ich muss ein Bild via Button erst explizit triggern

              versteh ich nicht.
              oben steht doch, dass es gespeichert wird!

              D 1 Reply Last reply Reply Quote 0
              • M
                mrzee @digitalnaive last edited by

                @digitalnaive
                So ganz komm ich auch gerade nicht mit, aber ich ahne, dass du eine RING Kamera verwendest? Über den Adapter hast du doch den Trigger? Das ist doch alles da?
                Also musst du doch nur herausfinden, wie du die letzte Datei im verzeichnis findest und kannst die dann weiterverwenden.
                Dazu kannst du entweder das script oben nehmen oder du schaust mal hier: https://forum.iobroker.net/topic/25422/dateinamen-in-ordner-herausfinden-und-anzeigen/5

                Und dann mittels Linux Bordmittel innerhalb des Scripts wegschreiben und anschließend per telegram versenden.

                PS: Ich verstehe nicht, warum man einen iobroker verwendet, wenn man dann auf cloudbasierte lösungen wie RING zurückgreift. Mit lokal betriebenen Kameras und Klingel hättest du es erheblich einfacher.

                1 Reply Last reply Reply Quote 0
                • M
                  MCU @digitalnaive last edited by

                  @digitalnaive
                  Letzte Datei in einem Verzeichnis ermitteln mit exec-Befehl.

                  iobroker-telegram-letzte-Datei-ermitteln.PNG

                  Bild verschicken mit Telegram

                  iobroker-telegram-Bild verschicken.PNG

                  1 Reply Last reply Reply Quote 0
                  • D
                    digitalnaive @bahnuhr last edited by

                    @bahnuhr Ja aber um eine Speicherung zu erzwingen, muss ich mit dem State bzw diesem Button eine Speicherung auslösen. Erst dann wird es im Ordner abgelegt.

                    Ich bin jetzt zwischenzeitlich noch über eine andere Lösung gestolpert.

                    Ich verwende einfach im Blockly Wert vom Object ID (Snapshot_file). Das pusht ebenfalls die zuvor erzeugte Datei.

                    Und @mrzee, ich habe wie sicherlich die meisten hier, mit sehr wenig Grundwissen angefangen, hatte schon einige Produkte und bin dann erst auf ioBroker gestoßen. Da schmeißt man nicht mal eben jegliche vorherige Hardware weg.

                    1 Reply Last reply Reply Quote 0
                    • M
                      Mr.Oz last edited by

                      Habe vor langer Zeit ein Script gefunden. Läuft wie ein Uhrwerk 🙂
                      Das Script ist von @Uhula

                      Beim Klingeln wird ein Bild erstellt und per Telegram versendet.

                      
                      // -------------------------------------------------------------------------
                      // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
                      // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
                      // dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
                      // gesendet.
                      // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
                      // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
                      // Uhula 2017.11
                      // -------------------------------------------------------------------------
                      // -------------------------------------------------------------------------
                      // Konfiguration
                      // -------------------------------------------------------------------------
                      // Objekt-ID des Bewegungsmelders
                      const oidKlinkelShelly = "shelly.0.xxx.Relay0.Switch";
                      // URL zur Kamera umn ein Image (jpg) zu erhalten
                      const cam_url = "http://192.168.xx.xxx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=password";
                      // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
                      const dest_path = '/opt/iobroker/iobroker-data/files/temp/';
                      // Anzahl der Bilder, die vorgehalten werden sollen
                      const imageCountMax = 8;
                      // Prefix für die Bildnamen
                      const imageNamePre = "Eingang";
                      
                      // -------------------------------------------------------------------------
                      // Scriptteil
                      // -------------------------------------------------------------------------
                      var request = require('request');
                      var fs = require('fs');
                      
                      // Bild an telegram schicken
                      function sendImage (path) {
                         try {
                         var stats = fs.statSync(path);
                         //var msg = formatDate(stats.birthtime,"DD.MM hh:mm:ss") + " Es hat geklingelt" // + path.substring(path.lastIndexOf('/')+1);
                         var msg = formatDate(Date.now(),"DD.MM hh:mm:ss") + " Es hat geklingelt" // + path.substring(path.lastIndexOf('/')+1);
                         sendTo('telegram.0', {
                         text: path,
                         caption: msg,
                         disable_notification: true
                         });
                         }
                         catch(err) { if (err.code != "ENOENT") log(err); }
                      }
                      
                      // löscht eine Datei synchron (wartet auf das Ergebnis)
                      function fsUnlinkSync(path) {
                         try {
                         var stats = fs.statSync(path);
                         try { fs.unlinkSync(path); }
                         catch(err) { if (err.code != "ENOENT") log(err); }
                         }
                         catch(err) { if (err.code != "ENOENT") log(err); }
                      }
                      
                      // benennt eine Datei synchron um (wartet auf das Ergebnis)
                      function fsRenameSync(oldPath, newPath) {
                         try {
                         var stats = fs.statSync(oldPath);
                         try { fs.renameSync(oldPath, newPath); }
                         catch(err) { if (err.code != "ENOENT") log(err); }
                         }
                         catch(err) { if (err.code != "ENOENT") log(err); }
                      }
                      
                      // Bild speichern und senden
                      function saveImage() {
                         // Bild imageCountMax-1 löschen
                         fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
                         // Bilder 0..imageCountMax-2 umbenennen
                         //for (var i=imageCountMax-2; i >= 0; i-- ) {
                         //fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg");
                         //}
                         // Bild 0 löschen
                         var fname = imageNamePre + "0.jpg";
                         fsUnlinkSync( fname );
                         // Bild holen und speichern
                         request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
                         fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                         if (err) {
                         log('Fehler beim Bild speichern: ' + err, 'warn');
                         } else {
                         // dem Filesystem 2 Sek Zeit zum Speichern lassen
                         setTimeout(function() { sendImage(dest_path + fname); }, 2000);
                         }
                         });
                         });
                      }
                      // sofort ein Bild senden und nach 10 Sek erneut
                      function onEvent() {
                         saveImage();
                         //setTimeout(function() { saveImage(); }, 10 * 1000);
                      }
                      
                      // Ereignisroutine
                         //on({id: oidKlinkelShelly, val: true}, function (obj) {
                         on({id: "shelly.0.SHSW-1#25A7FE#1.Relay0.Switch"/*Switch*/, change: "ne"}, function (obj){
                         if (getState("shelly.0.SHSW-1#25A7FE#1.Relay0.Switch").val == true) {
                             onEvent( obj );
                         } else {
                             console.log('Schreibt nicht');
                         }
                      
                      });
                      // manuelle Ausführung (Test)
                      

                      1 Reply Last reply Reply Quote 0
                      • K
                        kukoratsch last edited by kukoratsch

                        Gelöscht

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @kukoratsch last edited by Homoran

                          @kukoratsch sagte in Existierende einzelne Kamera Bilder per Telegram verschicken:

                          Für Hilfe wäre ich dankbar.

                          zu dem Thema

                          @kukoratsch sagte in Existierende einzelne Kamera Bilder per Telegram verschicken:

                          please use httpGet

                          gibt es inzwischen gefühlt hundert Threads mit Beispielen.
                          häng dich da an einen ran, hat mit diesem Thread nichts zu tun

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.0k
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          blockly
                          7
                          12
                          1941
                          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