Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Tür Kamera bei Klingel

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Tür Kamera bei Klingel

    This topic has been deleted. Only users with topic management privileges can see it.
    • Meister-x
      Meister-x last edited by

      Hallo ,

      hoffe es kann mir einer helfen..habe schon Tage/Wochen voller Verzweiflung verbracht. :roll:

      Mein Wunsch wäre es in der VIS meine IP Kamera (Instar) beim Klingelzeichen anzeigen zu lassen.(z.B. jpg alle 5 Sekunden -kein Livevideo)

      Toll wäre es auch wenn das Tablet automatisch aufwacht.

      Benütze zum Aufwachen meines Tablet den Fully Kiosk .

      Im Fritzphone klappt es prima..lasse JPG in ca 5 Sek Rytmus anzeigen.

      Vielen Dank

      Gerhard

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

        sowas hier?: https://www.youtube.com/watch?v=0r6QgCjZMd8

        1 Reply Last reply Reply Quote 0
        • Meister-x
          Meister-x last edited by

          danke für die Info -werd es gleich mal versuchen.

          Mein grösseres Problem ist das meine Aussen-Kamera per JPG zwar im VIS am PC angezeigt wird aber nicht am Tablet ….

          Vielleicht hat einer eine Lösung ?

          Danke

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

            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.

            1 Reply Last reply Reply Quote 0
            • Meister-x
              Meister-x last edited by

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

                Hallo,

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

                Vielen Dank

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

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

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

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

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

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

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

                        1 Reply Last reply Reply Quote 0
                        • J
                          jensus11 last edited by 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.

                          Chaot 1 Reply Last reply Reply Quote 0
                          • Chaot
                            Chaot @jensus11 last edited by

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

                            1 Reply Last reply Reply Quote 0
                            • J
                              jensus11 last edited by

                              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 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              808
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              7
                              13
                              3582
                              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