Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Bei Haustür Klingel Snapshot speichern

    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

    [Frage] Bei Haustür Klingel Snapshot speichern

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

      Hallo Zusammen,

      hat jemand schon mal folgendes realisiert?:

      An der Haustür klingelt es, nun soll die Uhrzeit und gleichzeitig ein Snap-Shoot erstellt werden.

      Das ganze soll dann in einer Tabelle gespeichert werden.
      326_unbenannt.png
      326_unbenannt2.png

      Im Prinzip soll das Snapshoot neben der Uhrzeit stehen oder darunter.

      Gruß Michael

      1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active last edited by

        ich habe sowas am laufen

        allerdings mit einem Pi und Gira Klingelanlage. Der Pi horcht auf ein Klingeln (externer Modul vom Gira) und bei änderung wird ein Bild gemacht (zusätzlich per pushbullet an mich gesendet) und im History Adapter protokolliert

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

          Un das Bild hast du auch protokolliert.

          Das würde mich interessieren wie ?

          1 Reply Last reply Reply Quote 0
          • arteck
            arteck Developer Most Active last edited by

            ich formatiere den Dateinamen auf auf Jahr_Monat_Tag_Stunde_Minute_Sekunde..

            in einen Ordner rein.. die letzten 7 Tage werden vorgehalten der rest fliegt raus

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

              Ja, das hab ich auch.

              Nur, wie lässt du diese dann anzeigen in vis.

              1 Reply Last reply Reply Quote 0
              • arteck
                arteck Developer Most Active last edited by

                per dialog Widget… den ich öffne wenn der GPIO (bei mir 24) reagiert

                ich schaue mir keine Historie an.. würde aber auch gehen mit einer HTML Lösung

                1 Reply Last reply Reply Quote 0
                • C
                  chrizzel last edited by

                  Hallo zusammen,

                  ich würde gerne auf euren Zug aufspringen…

                  An der Tür ist eine normale Klingel. Mit einem Relais könnte ich einen potentialfreien Kontakt erzeugen und (bestimmt) auf einen der Raspi Inputs geben. Dadurch ist der Trigger zum Klingeln gesetzt.

                  Das Bild der Kamera würde ich gerne, im Ergebnis, als Telegram Bild pushen. Das hatte ich mit FHEM irgendwie schon mal am laufen. Ist komfortabel und schnell.

                  Die IP Kameras können Bilder mittels FTP bei Bewegung ablegen (so hatte ich das damals). Im Gegensatz zu dem "Motion"-Plugin aus diesem Forum bleibt die CPU Last auf der Kamera.

                  Die Kameras können auch einen Snapshoot Befehl per Kommando auslösen (hier eine Foscam). Vielleicht mittels des Klingel-Triggers?

                  Die Funktion über den Klingelknopf-Trigger wäre perfekt, aber zur Not nehme ich die Bewegungserkennung der Kamera die dann ein Bild ablegen kann.

                  Wie löst man, dass die IP Kamera Bilder in einen Ordner auf dem Raspi wandern, [ggf. mit FTP von der Kamera aus]

                  dort nach ~10 Bildern das erste wieder gelöscht wird (Ringspeicher),

                  und automatisch <u>das letzte Bild</u> per Telegram oder anderem Dienst gepusht wird?

                  Diese Verzeichnisüberwachung auf einem Raspi verstehe ich nicht. Relais sind eher meine Welt 🙂

                  Falls einer eine Idee hat, würde ich mich freuen 🙂

                  1 Reply Last reply Reply Quote 0
                  • arteck
                    arteck Developer Most Active last edited by

                    > Diese Verzeichnisüberwachung auf einem Raspi verstehe ich nicht. Relais sind eher meine Welt

                    welche Verzeichnisüberwachung ??

                    1 Reply Last reply Reply Quote 0
                    • C
                      chrizzel last edited by

                      Ich meine:

                      Die IP Camera soll die snapshots bei Bewegung per FTP in einen Ordner auf dem Raspi speichern. Nennen wir den Ordner mal /cam . Das können die meisten Kameras ab Werk.

                      Sobald hier eine neue Datei reingeschoben wird, muss diese automatisch genommen und per Telegram versendet werden.

                      Die Datei heißt aber nicht immer gleich, sondern setzt sich bauartbedingt bei manchen Kameras aus einem Namen+Zeitstempel zusammen. zB: snap17122017_120000.jpg (17.12.17,12:00 Uhr)

                      Wie bringe ich dem Raspi bei, diesen Ordner ( /cam ) zu "überwachen" und automatisch die neuste Datei zu versenden?

                      Verstehst Du was ich meine?

                      1 Reply Last reply Reply Quote 0
                      • Uhula
                        Uhula last edited by

                        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 !

                        1 Reply Last reply Reply Quote 1
                        • C
                          chrizzel last edited by

                          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! 😄

                          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!

                          1 Reply Last reply Reply Quote 0
                          • C
                            chrizzel last edited by

                            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.

                            1 Reply Last reply Reply Quote 0
                            • B
                              bishop last edited by

                              @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 Reply Last reply Reply Quote -1
                              • Uhula
                                Uhula last edited by

                                @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 );
                                    });
                                  }
                                });
                                
                                
                                1 Reply Last reply Reply Quote 0
                                • B
                                  bishop last edited by

                                  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 Reply Last reply Reply Quote 0
                                  • arteck
                                    arteck Developer Most Active last edited by

                                    löschen
                                    1518_unbenannt.png

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      bishop last edited by

                                      Oh man so einfach, vielen dank!

                                      1 Reply Last reply Reply Quote 0
                                      • chucky666
                                        chucky666 last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • smartboart
                                          smartboart last edited by

                                          ` > 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 Reply Last reply Reply Quote 0
                                          • wendy2702
                                            wendy2702 last edited by

                                            @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ß

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            400
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            24
                                            5035
                                            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