Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] Bei Haustür Klingel Snapshot speichern

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Frage] Bei Haustür Klingel Snapshot speichern

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
24 Beiträge 9 Kommentatoren 5.6k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • UhulaU Offline
    UhulaU Offline
    Uhula
    schrieb am zuletzt editiert von
    #10

    Bei mir läuft ein ähnliches Script:

    Ein Bewegungsmelder überwacht den Bereich der Eingangstür. Detektiert er eine Bewegung, wird ein Bild von der Überwachungskamera (die natürlich auch den gleichen Bereich abdeckt) geholt, gespeichert und via Telegram versendet. Das ganze noch einmal 10 Sek später. Es werden die letzten 8 Bilder gespeichert, das jüngste hat den Index 0, das vorletzte 1 usw. Damit kann man diese letzten Bilder auch sehr gut im vis darstellen (Dateiname ist eben immer gleich).

    Wenn man keinen Bewegungsmelder hat, kann man natürlich auch das Klingelevent als Auslöser nehmen … (in der Hoffnung, das Einbrecher klingeln ;-) )

    Vielleicht könnt ihr Teile aus dem Script gebrauchen.

    ! // ------------------------------------------------------------------------- // 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 oidLichtBewmelderTuer = "hm-rpc.1.JEQ0000000.1.MOTION"; // URL zur Kamera umn ein Image (jpg) zu erhalten const cam_url = "http://username:password@000.000.000.000/cgi-bin/viewer/video.jpg?streamid=1"; // 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 = "eingangstuer_"; ! // ------------------------------------------------------------------------- // 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.YYYY hh:mm:ss") + " " + 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: oidLichtBewmelderTuer, val: true}, function (obj) { onEvent( obj ); }); ! // manuelle Ausführung (Test) onEvent(); !
    Frohes Fest !

    Uhula - Leise und Weise
    Ex: ioBroker on Gigabyte NUC Proxmox

    1 Antwort Letzte Antwort
    1
    • C Offline
      C Offline
      chrizzel
      schrieb am zuletzt editiert von
      #11

      Danke!! Ich versuche es heute Abend mal zu verstehen. Bin noch ganz frisch auf dem PI unterwegs.. ;-)

      EDIT: Sehr geil - im Prinzip scheint das zu funktionieren. Beim Scriptstart wurden 2 Bilder gepusht! :-D

      Verstehe ich richtig, dass das Script die Bilder autom. löscht, und somit der Pi nicht zugemüllt wird?

      Dann muss ich mir nur noch den eigenen Trigger erstellen. VIELEN DANK!

      Beste Grüße

      Chris

      1 Antwort Letzte Antwort
      0
      • C Offline
        C Offline
        chrizzel
        schrieb am zuletzt editiert von
        #12

        Was mir derzeit fehlt, ist der Trigger vom Motion Detection der Kamera. (Klingelknopf als Trigger kommt später da Kabelverlegung notwendig.)

        Die Foscam kann offensichtlich keinen Zustand übermitteln bei Bewegungserkennung. Zumindest finde ich nichts.

        Interessant ist der Ansatz hier:

        https://www.symcon.de/forum/threads/207 … m-Netzwerk

        Manche Kameras, darunter die Axis, können eine Aktion ausführen zu einem Notification Server. Im IO Broker habe ich dazu den socketio Adapter gefunden. Natürlich verstehe ich diesen nicht :-/

        In der Axis Kamera wird eine Nachricht abgesetzt.

        TCP, Port 8084 (wie der des Socket.io)

        Nachrichtentext: "33" (einfach als Testeingabe)

        Muss ich beim Socket.io Adapter irgendwas anlegen? Wie verwendet man diesen?

        Ich finde keinen direkten Zustand den ich abfragen könnte, und wo der Wert "33" oder ein "true" erscheint. Die englische Hilfe zum Socket IO übersteigt aktuell noch meine Kenntnisse :-/

        NACHTRAG: Es geht! Mit NODE RED kann man das TCP Paket einfangen und dann weiterverarbeiten. Bei Bewegung an der Axis Kamera wird nun ein Trigger gesetzt der eine Telegram-Nachricht auslöst. Dieses Socket.io ist unnötig.

        Beste Grüße

        Chris

        1 Antwort Letzte Antwort
        0
        • B Offline
          B Offline
          bishop
          schrieb am zuletzt editiert von
          #13

          @uhula

          ich würde gerne dein script verwenden.

          Bei einem türklingel soll ein Bild gespeichert und versendet werden.

          Mit Blockly habe ich das so hinbekommen.

          ! ````
          on({id: 'tr-064.0.callmonitor.inbound.callee', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          if (getState("tr-064.0.callmonitor.inbound.callee").val == '100') {
          sendTo("telegram", "send", {
          text: 'hat geklingelt'
          });
          }
          });
          ! //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyYSUyM3JaZFRyUyUyQnAlMkMlN0JwUVguLU0pJTJGJTIyJTIweCUzRCUyMi02MiUyMiUyMHklM0QlMjItMjEyJTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRW5lJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQwJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMmZpZWxkX29pZCUyMiUyMGlkJTNEJTIyLWY0a0IobjE2SiUyM1FBVlM5WXd1JTVCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFdHItMDY0LjAuY2FsbG1vbml0b3IuaW5ib3VuZC5jYWxsZWUlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjIlNjAlNDBnNH5FJTdCZWp3LiU3Qkt3JTJDQ0k0RG8lMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJaX3RLQXJoTjVfNEtpaiU3RGtNRnBqJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyfiU1RS0lNURpV2klN0RPJTJCJTNET0RDaCFtUFUlN0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0V0ci0wNjQuMC5jYWxsbW9uaXRvci5pbmJvdW5kLmNhbGxlZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJIQktjJTdDJTNEb2MlM0F4Ulp5NmwlMkJ5WiU3Q0slMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFMTAwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZWxlZ3JhbSUyMiUyMGlkJTNEJTIydjQxJTdDUFE1R1RVNWJTayUyM2MlMjUlMkJNcyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMklOU1RBTkNFJTIyJTNFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJMT0clMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk1FU1NBR0UlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyQyUzQjYhLlNUWmxXZndFLWklN0R6YyUyQ2QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFaGF0JTIwZ2VrbGluZ2VsdCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=

          
          wie kann ich das jetzt ohne Telegram natürlich in dein Bewegungsmelder ersetzen?
          
          Vielen dank
          1 Antwort Letzte Antwort
          -1
          • UhulaU Offline
            UhulaU Offline
            Uhula
            schrieb am zuletzt editiert von
            #14

            @bishop:

            wie kann ich das jetzt ohne Telegram natürlich in dein Bewegungsmelder ersetzen? `
            Du musst eigentlich nur den Auslöser, dass Event, ändern:

            Statt der Reaktion auf den Bewegungsmelder:

            // Ereignisroutine
            on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
                onEvent( obj );
            });
            
            

            Dein Event der Türklingel verwenden:

            // Ereignisroutine
            on({id: 'tr-064.0.callmonitor.inbound.callee', change: "any"}, function (obj) {
              if (getState("tr-064.0.callmonitor.inbound.callee").val == '100') {
                onEvent( obj );
                });
              }
            });
            
            

            Uhula - Leise und Weise
            Ex: ioBroker on Gigabyte NUC Proxmox

            1 Antwort Letzte Antwort
            0
            • B Offline
              B Offline
              bishop
              schrieb am zuletzt editiert von
              #15

              hab da ein kleinen Fehler drin wenn ich das so mache!

              4663_javascript.jpg

              4663_javascript2.jpg

              was muss ich ändern damit da kein Fehler mehr kommt?

              1 Antwort Letzte Antwort
              0
              • arteckA Offline
                arteckA Offline
                arteck
                Developer Most Active
                schrieb am zuletzt editiert von
                #16

                löschen
                1518_unbenannt.png

                zigbee hab ich, zwave auch, nuc's genauso und HA auch

                1 Antwort Letzte Antwort
                0
                • B Offline
                  B Offline
                  bishop
                  schrieb am zuletzt editiert von
                  #17

                  Oh man so einfach, vielen dank!

                  1 Antwort Letzte Antwort
                  0
                  • chucky666C Online
                    chucky666C Online
                    chucky666
                    schrieb am zuletzt editiert von
                    #18

                    Hallo

                    Ich bekomme immer nur 2 Bilder ? Und die heißen alle gleich . Die Zeit ist eine andere

                    Gesendet von iPad mit Tapatalk Pro

                    1 Antwort Letzte Antwort
                    0
                    • smartboartS Offline
                      smartboartS Offline
                      smartboart
                      schrieb am zuletzt editiert von
                      #19

                      ` > Bei mir läuft ein ähnliches Script:

                      Ein Bewegungsmelder überwacht den Bereich der Eingangstür. Detektiert er eine Bewegung, wird ein Bild von der Überwachungskamera (die natürlich auch den gleichen Bereich abdeckt) geholt, gespeichert und via Telegram versendet. Das ganze noch einmal 10 Sek später. Es werden die letzten 8 Bilder gespeichert, das jüngste hat den Index 0, das vorletzte 1 usw. Damit kann man diese letzten Bilder auch sehr gut im vis darstellen (Dateiname ist eben immer gleich). `

                      Hallo Ohula, danke für das tolle script, welches ich gleich 2 mal nutze… 1x für den hier beschriebenen Zweck und 1 x für ein Alarmanlagenscript bei Alarmierung Foto...

                      Da ich mehrere Kameras habe, wollte ich mal Fragen ob es denn möglich wäre auf Basis dieses Scripts auch weitere IP Cams einzubinden?

                      Klar, ich könnte das script einfach kopieren und mehrer instanzen davon anlegen. hätte das aber lieber in einem Script...

                      Für etwas Hilfestellung/Starthilfe wie man das am Besten löst, würde ich mich echt freuen...

                      1 Antwort Letzte Antwort
                      0
                      • wendy2702W Online
                        wendy2702W Online
                        wendy2702
                        schrieb am zuletzt editiert von
                        #20

                        @chrizzel:

                        NACHTRAG: Es geht! Mit NODE RED kann man das TCP Paket einfangen und dann weiterverarbeiten. Bei Bewegung an der Axis Kamera wird nun ein Trigger gesetzt der eine Telegram-Nachricht auslöst. Dieses Socket.io ist unnötig. `

                        Hi,

                        kannst du mir ein paar Informatione dazu geben und eventuell deinen NodeRed Flow bereitsstellen.

                        Meine HikVision kann auch eine "Alarmierung" bei Bewegungserkennung versenden welche ich gerne nutzen möchte.

                        Danke und Gruß

                        Bitte keine Fragen per PN, die gehören ins Forum!

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        1 Antwort Letzte Antwort
                        0
                        • wendy2702W Online
                          wendy2702W Online
                          wendy2702
                          schrieb am zuletzt editiert von
                          #21

                          @bishop:

                          Mit Blockly habe ich das so hinbekommen.

                          ! ````
                          on({id: 'tr-064.0.callmonitor.inbound.callee', change: "any"}, function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          if (getState("tr-064.0.callmonitor.inbound.callee").val == '100') {
                          sendTo("telegram", "send", {
                          text: 'hat geklingelt'
                          });
                          }
                          });

                          
                          Hi,
                          
                          kannst du mir sagen was du als Klingeltaster nutzt bzw. wie du den inbound.callee auf Value 100 bekommst wenn jemand klingelt?
                          
                          Hast du etwas an einen FON Anschluß der FB angeschlossen und als Türsprechanlage konfiguriert?
                          
                          Danke und Gruß
                          
                          Mirko ` 

                          Bitte keine Fragen per PN, die gehören ins Forum!

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          1 Antwort Letzte Antwort
                          0
                          • C Offline
                            C Offline
                            chrizzel
                            schrieb am zuletzt editiert von
                            #22

                            ` > Hi,

                            kannst du mir ein paar Informatione dazu geben und eventuell deinen NodeRed Flow bereitsstellen.

                            Meine HikVision kann auch eine "Alarmierung" bei Bewegungserkennung versenden welche ich gerne nutzen möchte.

                            Danke und Gruß `

                            Hey,

                            guck mal ob die Hikvision einen Nachrichtenserver konfigurieren kann. Dort kannst du bei meiner Cam ein Schlagwort einstellen und darauf lauschen. In meinem Fall "true". Im Node Red dann den gleichen Port einstellen wie in dieser Kameraeinstellung.
                            4724_snap.jpg
                            4724_snap2.jpg

                            Beste Grüße

                            Chris

                            1 Antwort Letzte Antwort
                            0
                            • B Offline
                              B Offline
                              bishop
                              schrieb am zuletzt editiert von
                              #23

                              Ich habe ein Gira ip gateway im zähler verbaut. Dadurch habe ich den klingeltaster mal digital im System, somit kann ich auch das Fritzfon klingeln lassen wenn der Klingeltaster gedrückt wird. Mit dem tr-064 adapter lausche ich dann einfach auf die internet telefonnummer 100 das der Klingetaster ist.

                              1 Antwort Letzte Antwort
                              0
                              • C Offline
                                C Offline
                                chrizzel
                                schrieb am zuletzt editiert von
                                #24

                                @bishop:

                                Ich habe ein Gira ip gateway im zähler verbaut. Dadurch habe ich den klingeltaster mal digital im System, somit kann ich auch das Fritzfon klingeln lassen wenn der Klingeltaster gedrückt wird. Mit dem tr-064 adapter lausche ich dann einfach auf die internet telefonnummer 100 das der Klingetaster ist. `

                                Wie funktioniert das mit dem Fritzfon klingeln lassen?

                                Mit Deiner Variante müsste das Fritzfon doch auch ein ipcamera Bild anzeigen können, oder?

                                (Ich glaube das können nur einige Modelle)

                                Beste Grüße

                                Chris

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                872

                                Online

                                32.6k

                                Benutzer

                                82.2k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe