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. Praktische Anwendungen (Showcase)
  4. Tür Kamera bei Klingel

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Tür Kamera bei Klingel

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
13 Beiträge 7 Kommentatoren 3.9k Aufrufe 12 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.
  • ChaotC Offline
    ChaotC Offline
    Chaot
    schrieb am zuletzt editiert von
    #4

    Am elegantesten wird es wenn du die Kamera als View in VIS einbindest.

    Bei meinem Klingelscript wird das alles automatisch abgearbeitet.

    var sperre = false;  //verhindert das doppeltes Drücken das Script stoppt
    
    on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
      if(!sperre) {
        sperre = true;
         sendTo('phantomjs.0', 'send', {
        url:                    'http://192.168.8.95:8765/picture/2/current/?_username=xxxxxx&_signature=xxxxxxx',
        output:                 'picture.png',  // default value
        width:                  800,            // default value
        height:                 600,            // default value
        timeout:                2000,           // default value
        zoom:                   1,              // default value
    
        'clip-top':             0,              // default value
        'clip-left':            0,              // default value
        'clip-width':           800,            // default value is equal to width
        'clip-height':          600,            // default value is equal to height
        'scroll-top':           0,              // default value
        'scroll-left':          0,              // default value
    
        online:                 true           // default value
    }, function (result) {
        if (result.error) {
            console.error(JSON.stringify(result.error));
        }
        if (result.stderr) {
            console.error(result.stderr);
        }
        if (result.stdout) {
            console.log(result.stdout);
        }
        console.log(result.output);
    
    });
    timeout = setTimeout(function () {
    sendTo("email", "send", {
         text: '',
         to: 'xxxxx@gxxx.com',
         subject: 'Klingel',
         attachments:[
            {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"},
          ]
    
     }); //Mail mit Bild Empfänger 1
     sendTo("email", "send", {
         text: '',
         to: 'xxxxxxxx@gxxxxx.com',
         subject: 'Klingel',
         attachments:[
            {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"},
          ]
    
     }); //Mail mit Bild Empfänger 2
     }, 5000); // Verzögert den Mailversand bis das Bild gespeichert ist
    
         setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}'); 
               // oder
               //setState("vis.0.control.instance", 'FFFFFFFF');
               //setState("vis.0.control.data",     'DemoView');
               //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
    
               // Setze View auf Kamerabild
               setTimeout(function () {
                          setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
               }, 60000); // Nach 60 Sekunden, zeige wieder Start View
        setState("tr-064.0.states.ring"/*ring*/, '**611, 15'); //Klingelt 15 Sekunden auf dem Telefon
        sendTo("pushover", "send", {
           message: 'Klingel',
              file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png",   
              sound: ""
        }); //Klingelinfo über Pushover
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2AxxxxxLLE.Player.volume"/*volume*/, 90, true);
        }, 500); // Setzt Alexa auf 90%
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2AxxxxxLLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür');
        }, 1000); // Sprachansage
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2AxxxxxLLE.Player.volume"/*volume*/, 50, true);
        }, 1500); // Setzt Alexa auf 50%
        setTimeout(function() {
           sperre = false;
        }, 5000); //Zeit für Klingelsperre 1.Zeile
      }  
    });
    

    Beim Drücken des Klingelknopfes passiert folgendes:

    • Es wird ein Snapshot erstellt

    • dieser wird an zwei Mailadressen versendet

    • über die Fritzbox wird das Dect Telefon angerufen (als Klingelsignal)

    • Alexa äußert sich

    • die View am Tablet wird für 60 Sekunden auf das Kamerabild geschaltet.

    Zusätzlich wird der Klingelknopf für 5000 ms gesperrt um zu verhindern das das Script durch schnelles Drücken gestoppt wird.

    Meine Kamera hat nur einen rstp Stream der auch so nicht verwendbar ist. Deshalb läuft nebenher noch Motineye das mir den Stream umsetzt.

    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

    1 Antwort Letzte Antwort
    0
    • Meister-xM Offline
      Meister-xM Offline
      Meister-x
      schrieb am zuletzt editiert von
      #5

      Dankeschön- ist ja echt toll !

      Für einen Anfänger wie mich sehr umfangreich -werde es versuchen - nur ohne Mail.

      Was für Adapter für Video benötige ich noch ?

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tege0
        schrieb am zuletzt editiert von
        #6

        Hallo,

        super Umsetzung, könntest du die auch als Blockly Ausgeben und/oder per Telgramm das Bild verschicken?

        Vielen Dank

        1 Antwort Letzte Antwort
        0
        • ChaotC Offline
          ChaotC Offline
          Chaot
          schrieb am zuletzt editiert von
          #7

          @tege0

          Das Versenden per Telegramm ist sicher möglich. Aber da ich Telegramm nicht nutze kann ich das auf die Schnelle so nicht erklären was da zu machen wäre.

          Als Blockly umsetzen?

          Ich wüsste nicht wie man das konvertieren könnte. Umgekehrt geht, aber von JS nach Blockly :?:

          @Meister-x

          Die Viedoausgabe hängt von deiner Kamera ab.

          In meinem Fall liefert die billige Chinesenkamera nur einen RSTP-Stream den ich direkt im ioBroker nicht nutzen konnte. So musste ich auf dem Server noch motionEye installieren und den Stream umwandeln.

          Manche Kameras liefern auch ein mjpg-Stream. Den kannst du direkt in VIS verwenden. Dann brauchst du auch keinen zusätzlichen Adapter im ioBroker

          Für das Bild benötige ich noch den "phantom.js" Adapter. Aber wenn du das Bild direkt vorliegen hast musst du nur den Speicerort beim Mailversand anpassen und kannst dir den Umweg vermutlich auch sparen.

          Wenn du den Mailversand auch nicht brauchst kannst du den Bereich:

           sperre = true;
               sendTo('phantomjs.0', 'send', {
              url:                    'http://192.168.8.95:8765/picture/2/current/?_username=xxxxxx&_signature=xxxxxxx',
              output:                 'picture.png',  // default value
              width:                  800,            // default value
              height:                 600,            // default value
              timeout:                2000,           // default value
              zoom:                   1,              // default value
          
              'clip-top':             0,              // default value
              'clip-left':            0,              // default value
              'clip-width':           800,            // default value is equal to width
              'clip-height':          600,            // default value is equal to height
              'scroll-top':           0,              // default value
              'scroll-left':          0,              // default value
          
              online:                 true           // default value
          }, function (result) {
              if (result.error) {
                  console.error(JSON.stringify(result.error));
              }
              if (result.stderr) {
                  console.error(result.stderr);
              }
              if (result.stdout) {
                  console.log(result.stdout);
              }
              console.log(result.output);
          
          });
          timeout = setTimeout(function () {
          sendTo("email", "send", {
               text: '',
               to: 'xxxxx@gxxx.com',
               subject: 'Klingel',
               attachments:[
                  {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"},
                ]
          
           }); //Mail mit Bild Empfänger 1
           sendTo("email", "send", {
               text: '',
               to: 'xxxxxxxx@gxxxxx.com',
               subject: 'Klingel',
               attachments:[
                  {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"},
                ]
          
           }); //Mail mit Bild Empfänger 2
           }, 5000); // Verzögert den Mailversand bis das Bild gespeichert ist
          

          weglassen.

          ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

          1 Antwort Letzte Antwort
          0
          • FredFF Online
            FredFF Online
            FredF
            Most Active Forum Testing
            schrieb am zuletzt editiert von
            #8

            @tege0:

            Hallo,

            super Umsetzung, könntest du die auch als Blockly Ausgeben und/oder per Telgramm das Bild verschicken?

            Vielen Dank `

            Ich habe auch eine Instar und nutze diese javascript hier aus dem Forum.

            Der Trigger ist ein Zigbee Kontakt und die Bilder werden nur gesendet wenn niemand zuhause ist (Unifi Adapter).

            // Telegram Bild senden durch Klingel oder Text to command
            var source_url = 'http://192.168.xx.xx:80/tmpfs/auto.jpg?usr=xxx&pwd=xxx', //IP Adresse der Instar mit user und password
                dest_path = 'G:/Kam/'; //Speicherort für das Bild
            
            var Nachricht = "Es hat an der Haustüre geklingelt"; // Nachricht, welche mit dem Bild gesendet wird
            
            var request = require('request');
            var fs      = require('fs');
            
            //var timer = null;
            var count = 0;
            
            // Bild an telegram schicken
            function sendImage (pfad) {
                    sendTo('telegram.0', pfad);
                    //log('Webcam Bild per telegram verschickt');
                    //sendTo("telegram.0", Nachricht);    // <-- nach der Timeout funktion ausführen
            }
            
            // Bild speichern
            function saveImage() {
                request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
                    fs.writeFile(dest_path + 'image2.jpg', body, 'binary', function(err) {
            
                    if (err) {
                        //log('Fehler beim Bild speichern: ' + err, 'warn');
                    } else {
                        //log('Webcam Bild gespeichert');
                        sendImage(dest_path + 'image2.jpg');
                    }
                  }); 
                });
            }
            
            //Trigger
            // 3 Bilder senden wenn Bewegung erkannt und keiner zu Hause ist
            on({id: "zigbee.0.xxxx.isopen"/*Is open*/, val: true}, function () {
            //    if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) {
                count = 3;
                counter();
                timer = setInterval(counter, 3000);
                }
            );
            
            function counter() {
                saveImage();
                count--;
                if(count === 0 && timer) clearInterval(timer);
            }   
            
            1 Antwort Letzte Antwort
            1
            • D Offline
              D Offline
              danw
              schrieb am zuletzt editiert von
              #9

              @Chaot:

              In meinem Fall liefert die billige Chinesenkamera nur einen RSTP-Stream den ich direkt im ioBroker nicht nutzen konnte. So musste ich auf dem Server noch motionEye installieren und den Stream umwandeln. `

              Schau dir mal ONVIF (https://en.wikipedia.org/wiki/ONVIF + https://github.com/futomi/node-onvif) an.

              It's not a Bug, it's a Feature

              1 Antwort Letzte Antwort
              0
              • ChaotC Offline
                ChaotC Offline
                Chaot
                schrieb am zuletzt editiert von
                #10

                @danw Aber dann muss ich den Stream doch trotzdem umwandeln um ihn in VIS darzustellen.

                Deshalb habe ich mich für motionEye entschieden. ONVIF kann zwar mehr, aber das sind überwiegend Funktionen die ich benötige.

                ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                1 Antwort Letzte Antwort
                0
                • J Offline
                  J Offline
                  jensus11
                  schrieb am zuletzt editiert von jensus11
                  #11

                  Hi,
                  ich versuche mir auch ein Script zurecht zu basteln, klappt leider nicht.
                  Kann da mal jemand rüber schauen?

                  var sperre = false;  //verhindert das doppeltes Drücken das Script stoppt
                  
                  on({id: "hm-rpc.0.OEQ0124924.1.STATE"/*Is open*/, val: true}, function () {
                      if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) {
                      
                      sendTo('phantomjs.0', 'send', {
                      url:                    'http://192.168.1.XX:XXX/picture/1/current/',
                      output:                 'picture.png',  // default value
                      width:                  800,            // default value
                      height:                 600,            // default value
                      timeout:                2000,           // default value
                      zoom:                   1,              // default value
                  
                      online:                 true           // default value
                  }, function (result) {
                      if (result.error) {
                          console.error(JSON.stringify(result.error));
                      }
                      if (result.stderr) {
                          console.error(result.stderr);
                      }
                      if (result.stdout) {
                          console.log(result.stdout);
                      }
                      console.log(result.output);
                  
                  }),
                  
                  // Bild an telegram schicken
                  function sendImage (pfad) {
                          sendTo('telegram.0', '/opt/iobroker/node_modules/iobroker.phantomjs/test.png');
                          log('Webcam Bild per telegram verschickt');
                          //sendTo("telegram.0", Nachricht);    // <-- nach der Timeout funktion ausführen
                  },
                  
                      sendTo("pushover", "send", {
                         message: 'Klingel',
                            file: "/opt/iobroker/node_modules/iobroker.phantomjs/test.png",   
                            sound: ""
                      }, //Klingelinfo über Pushover
                  
                      setTimeout(function() {
                         sperre = false;
                       }, 5000); //Zeit für Klingelsperre 1.Zeile
                    }  
                  });
                  

                  Zeile 44 meckert er immer.

                  danke.

                  ChaotC 1 Antwort Letzte Antwort
                  0
                  • J jensus11

                    Hi,
                    ich versuche mir auch ein Script zurecht zu basteln, klappt leider nicht.
                    Kann da mal jemand rüber schauen?

                    var sperre = false;  //verhindert das doppeltes Drücken das Script stoppt
                    
                    on({id: "hm-rpc.0.OEQ0124924.1.STATE"/*Is open*/, val: true}, function () {
                        if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) {
                        
                        sendTo('phantomjs.0', 'send', {
                        url:                    'http://192.168.1.XX:XXX/picture/1/current/',
                        output:                 'picture.png',  // default value
                        width:                  800,            // default value
                        height:                 600,            // default value
                        timeout:                2000,           // default value
                        zoom:                   1,              // default value
                    
                        online:                 true           // default value
                    }, function (result) {
                        if (result.error) {
                            console.error(JSON.stringify(result.error));
                        }
                        if (result.stderr) {
                            console.error(result.stderr);
                        }
                        if (result.stdout) {
                            console.log(result.stdout);
                        }
                        console.log(result.output);
                    
                    }),
                    
                    // Bild an telegram schicken
                    function sendImage (pfad) {
                            sendTo('telegram.0', '/opt/iobroker/node_modules/iobroker.phantomjs/test.png');
                            log('Webcam Bild per telegram verschickt');
                            //sendTo("telegram.0", Nachricht);    // <-- nach der Timeout funktion ausführen
                    },
                    
                        sendTo("pushover", "send", {
                           message: 'Klingel',
                              file: "/opt/iobroker/node_modules/iobroker.phantomjs/test.png",   
                              sound: ""
                        }, //Klingelinfo über Pushover
                    
                        setTimeout(function() {
                           sperre = false;
                         }, 5000); //Zeit für Klingelsperre 1.Zeile
                      }  
                    });
                    

                    Zeile 44 meckert er immer.

                    danke.

                    ChaotC Offline
                    ChaotC Offline
                    Chaot
                    schrieb am zuletzt editiert von
                    #12

                    @jensus11 Was mir auffällt ist, das du für das Speichern des Bildes keinen Timeout gesetzt hast. Also versuchst du zu versenden solange er noch das Bild speichert. Das hat bei mir nicht funktioniert.
                    Ob das jetzt dein Problem ist kann ich aber nicht erkennen.

                    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                    1 Antwort Letzte Antwort
                    0
                    • J Offline
                      J Offline
                      jensus11
                      schrieb am zuletzt editiert von
                      #13

                      Das kommt wenn ich speichern drücke.
                      Ich denke etwas stimmt mit den Klammern nicht.

                      2.3.2019, 08:21:51.712	[info ]: javascript.0 Stop script script.js.Meldungen_Alarme.Klingel
                      2.3.2019, 08:21:51.715	[info ]: javascript.1 Stop script script.js.Meldungen_Alarme.Klingel
                      2.3.2019, 08:21:51.725	[info ]: javascript.0 Start javascript script.js.Meldungen_Alarme.Klingel
                      2.3.2019, 08:21:51.725	[error]: javascript.0 script.js.Meldungen_Alarme.Klingel compile failed:
                      at script.js.Meldungen_Alarme.Klingel:44
                      
                      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

                      746

                      Online

                      32.6k

                      Benutzer

                      82.0k

                      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