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. Einsteigerfragen
  4. Einbindung von Geräten
  5. Klingel mit Aqara Sensor soll Videokamera anzeigen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    309

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

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

Klingel mit Aqara Sensor soll Videokamera anzeigen

Geplant Angeheftet Gesperrt Verschoben Einbindung von Geräten
14 Beiträge 3 Kommentatoren 1.1k Aufrufe 4 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.
  • T Offline
    T Offline
    TurboSasch
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe mir einen Aqara Fensterkontakt auseinandergebaut und auf die Spule der Klingel befestigt. Wenn jemand klingelt, reagiert er sofort und schaltet auf "false". Soweit passt das, aber wie bekomme ich das Videosignal so angesteuert, das sich beim Klingelvorgang das Ipad öffnet mit dem Videostream? Kann mir da vielleicht jemand weiterhelfen? Meine Kameras laufen mit rtsp über das Camera-ui Plugin in der Homebridge momentan.

    Gruß
    Sascha

    arteckA M 2 Antworten Letzte Antwort
    0
    • T TurboSasch

      Hallo zusammen,

      ich habe mir einen Aqara Fensterkontakt auseinandergebaut und auf die Spule der Klingel befestigt. Wenn jemand klingelt, reagiert er sofort und schaltet auf "false". Soweit passt das, aber wie bekomme ich das Videosignal so angesteuert, das sich beim Klingelvorgang das Ipad öffnet mit dem Videostream? Kann mir da vielleicht jemand weiterhelfen? Meine Kameras laufen mit rtsp über das Camera-ui Plugin in der Homebridge momentan.

      Gruß
      Sascha

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @turbosasch das thema ist nicht neu.. schon nach gesucht ??

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

      T 1 Antwort Letzte Antwort
      0
      • arteckA arteck

        @turbosasch das thema ist nicht neu.. schon nach gesucht ??

        T Offline
        T Offline
        TurboSasch
        schrieb am zuletzt editiert von
        #3

        @arteck ja klar! Aber bin leider nicht fündig geworden. Was die Klingel betrifft, habe etwas gefunden, aber nicht in Verbindung mit der Kamera.

        1 Antwort Letzte Antwort
        0
        • T TurboSasch

          Hallo zusammen,

          ich habe mir einen Aqara Fensterkontakt auseinandergebaut und auf die Spule der Klingel befestigt. Wenn jemand klingelt, reagiert er sofort und schaltet auf "false". Soweit passt das, aber wie bekomme ich das Videosignal so angesteuert, das sich beim Klingelvorgang das Ipad öffnet mit dem Videostream? Kann mir da vielleicht jemand weiterhelfen? Meine Kameras laufen mit rtsp über das Camera-ui Plugin in der Homebridge momentan.

          Gruß
          Sascha

          M Online
          M Online
          michihorn
          schrieb am zuletzt editiert von
          #4

          @turbosasch Ich habe das mit RING gemacht, wenn es klingelt, macht eine Reolink Kamera ein Standbild, das ich dann in meiner VIS darstellen kann.
          Anbei mal den Code, den ich verwende, vielleicht hilft es ja.

          /*****Haustür Klingel*****************
          **    August 2020
          **    RING, RING-Adapter, Kamera
          **    
          **    
          **    geä:21.09.20
          ******************************************************/
          
          var logging = getState('javascript.3.Logging.michi').val;
          var idKlingel = "ring.0.doorbell_90474299.kind";
          var anzahlbesucher
          var jetzt = new Date();
          var request = require('request');
          var fs = require('fs');
          var Stunde = jetzt.getHours();
          var Minute = jetzt.getMinutes();
          createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
          createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
          createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
          var value = getState(idKlingel).val
          
          on({ id: idKlingel, val: "ding" }, function (obj) {
              var datenpunkt = obj.common.name;
              var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
              var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
              setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
              if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
              request({
                  url: "http://192.168.178.xxxx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=adxxxxx&password=roadxxxxxx", encoding: null,
                     },
                  (error, response, body) => {
                      if (!error && body) {
                          writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                      }
                  }
              );
          });
          
          //Ereignisliste erstellen___________________________________________________________________________________________________
          function ereignis(text) {
              // text = text.toString();
              if (logging) log("Ereignisprotokoll " + text);
              var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
              var ereignisArr;
          
              if (ereignisStr) {
                  if (ereignisStr == "<ul><li></li></ul>") {
                      ereignisArr = [];
                  } else {
                      ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
                  }
              } else {
                  ereignisArr = [];
              }
              ereignisArr = ereignisArr.reverse();
              ereignisArr.push(text);
              ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
              var str = ereignisArr.join("</li><li>");
              setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
          }
          on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
              if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
              ereignis(data.newState.val);
          });
          
          function zeit_umwandeln(unix_zeit) {
              var nz = new Date(unix_zeit);
              var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
              var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
              var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
              neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
              return (neue_zeit);
          }
          //Klingeln_____________________________________________________________________________________________________________________
          on({ id: idKlingel }, (obj) => {
              let Haustuer = obj.state.val;
              let oldHaustuer = obj.oldState.val;
              let text = '';
              if (Haustuer == 'ding') {
                  //setState('javascript.3.Views.AktView', 0);
                  setState("hm-rega.0.22357", 3); 
                  text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
                  console.log(text);
                  anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
                  anzahlbesucher = anzahlbesucher + 1;
                  log(anzahlbesucher);
                  setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
                  var ereignis_text = zeit_umwandeln(obj.newState.ts);
                  setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                  if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
              }
          });
          
          //Zähler zurücksetzen
          on({ time: { hour: 23, minute: 59 } }, function () {
              setState("Klingel.HaustuerZaehler.Tag", 0);
              setState("Klingel.Ereignisprotokoll.Ereignis", "");
              setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
              anzahlbesucher = 0;
              log("*****Klingelereignisse gelöscht***** ");
          });
          
          T 1 Antwort Letzte Antwort
          0
          • M michihorn

            @turbosasch Ich habe das mit RING gemacht, wenn es klingelt, macht eine Reolink Kamera ein Standbild, das ich dann in meiner VIS darstellen kann.
            Anbei mal den Code, den ich verwende, vielleicht hilft es ja.

            /*****Haustür Klingel*****************
            **    August 2020
            **    RING, RING-Adapter, Kamera
            **    
            **    
            **    geä:21.09.20
            ******************************************************/
            
            var logging = getState('javascript.3.Logging.michi').val;
            var idKlingel = "ring.0.doorbell_90474299.kind";
            var anzahlbesucher
            var jetzt = new Date();
            var request = require('request');
            var fs = require('fs');
            var Stunde = jetzt.getHours();
            var Minute = jetzt.getMinutes();
            createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
            createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
            createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
            var value = getState(idKlingel).val
            
            on({ id: idKlingel, val: "ding" }, function (obj) {
                var datenpunkt = obj.common.name;
                var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
                var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
                setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
                request({
                    url: "http://192.168.178.xxxx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=adxxxxx&password=roadxxxxxx", encoding: null,
                       },
                    (error, response, body) => {
                        if (!error && body) {
                            writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                        }
                    }
                );
            });
            
            //Ereignisliste erstellen___________________________________________________________________________________________________
            function ereignis(text) {
                // text = text.toString();
                if (logging) log("Ereignisprotokoll " + text);
                var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
                var ereignisArr;
            
                if (ereignisStr) {
                    if (ereignisStr == "<ul><li></li></ul>") {
                        ereignisArr = [];
                    } else {
                        ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
                    }
                } else {
                    ereignisArr = [];
                }
                ereignisArr = ereignisArr.reverse();
                ereignisArr.push(text);
                ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
                var str = ereignisArr.join("</li><li>");
                setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
            }
            on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
                if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
                ereignis(data.newState.val);
            });
            
            function zeit_umwandeln(unix_zeit) {
                var nz = new Date(unix_zeit);
                var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
                var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
                var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
                neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
                return (neue_zeit);
            }
            //Klingeln_____________________________________________________________________________________________________________________
            on({ id: idKlingel }, (obj) => {
                let Haustuer = obj.state.val;
                let oldHaustuer = obj.oldState.val;
                let text = '';
                if (Haustuer == 'ding') {
                    //setState('javascript.3.Views.AktView', 0);
                    setState("hm-rega.0.22357", 3); 
                    text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
                    console.log(text);
                    anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
                    anzahlbesucher = anzahlbesucher + 1;
                    log(anzahlbesucher);
                    setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
                    var ereignis_text = zeit_umwandeln(obj.newState.ts);
                    setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                    if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
                }
            });
            
            //Zähler zurücksetzen
            on({ time: { hour: 23, minute: 59 } }, function () {
                setState("Klingel.HaustuerZaehler.Tag", 0);
                setState("Klingel.Ereignisprotokoll.Ereignis", "");
                setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
                anzahlbesucher = 0;
                log("*****Klingelereignisse gelöscht***** ");
            });
            
            T Offline
            T Offline
            TurboSasch
            schrieb am zuletzt editiert von
            #5

            @michihorn Das ist doch schon mal ein Anfang :-). Ist es bei RING egal, welche Kamera´s man verwendet? Ich habe selbst Eufy Cam´s dran.

            M 1 Antwort Letzte Antwort
            0
            • T TurboSasch

              @michihorn Das ist doch schon mal ein Anfang :-). Ist es bei RING egal, welche Kamera´s man verwendet? Ich habe selbst Eufy Cam´s dran.

              M Online
              M Online
              michihorn
              schrieb am zuletzt editiert von michihorn
              #6

              @turbosasch Die Ring ist quasi nur der Trigger so wie bei dir der Aqara Sensor. Wenn Die Ring auslöst (Zeile 22) startet im Prinzip die Verarbeitung. Ich muß noch dazu sagen, im meinem Fall läuft der RING Adapter im Hintergrund. Ich denke du wirst deine Aquara über den Zigbee Adapter auslesen und das Klingelsignal (Trigger) abnehmen.
              Zeile 10 würde dann etwa so aussehen:
              const idKingel = "zigbee.0.00158d0007e033e1.opened"
              Zeile 22 musst Du dann das "ding" durch "true" oder "false" ersetzten, je nach Logik.
              Zeile 24 ".Kind" durch ".opened" ersetzen

              In Zeile 29 wird der Snapshot der Reolink erzeugt, wie der CGI-Befehl bei deiner CAM aussieht mußt du mal googeln

              T 1 Antwort Letzte Antwort
              0
              • M michihorn

                @turbosasch Die Ring ist quasi nur der Trigger so wie bei dir der Aqara Sensor. Wenn Die Ring auslöst (Zeile 22) startet im Prinzip die Verarbeitung. Ich muß noch dazu sagen, im meinem Fall läuft der RING Adapter im Hintergrund. Ich denke du wirst deine Aquara über den Zigbee Adapter auslesen und das Klingelsignal (Trigger) abnehmen.
                Zeile 10 würde dann etwa so aussehen:
                const idKingel = "zigbee.0.00158d0007e033e1.opened"
                Zeile 22 musst Du dann das "ding" durch "true" oder "false" ersetzten, je nach Logik.
                Zeile 24 ".Kind" durch ".opened" ersetzen

                In Zeile 29 wird der Snapshot der Reolink erzeugt, wie der CGI-Befehl bei deiner CAM aussieht mußt du mal googeln

                T Offline
                T Offline
                TurboSasch
                schrieb am zuletzt editiert von TurboSasch
                #7

                @michihorn Top Danke!

                Der Sensor ist im Conbee2 gespeichert. Zigbee habe ich auch, aber alle Sensoren über Conbee2 gespeichert. Die Zeilen ab 23-27 wirklich löschen?

                Ah ja, und ich habe nur den rtsp Stream gefunden.

                Habe das mal soweit es geht ergänzt. Jetzt spuckt er dies im Protokoll aus:

                javascript.0
                2022-04-27 20:19:12.006 info script.js.common.Haustür_Klingel: registered 3 subscriptions and 1 schedule

                javascript.0
                2022-04-27 20:19:11.992 warn at script.js.common.Haustür_Klingel:103:3

                javascript.0
                2022-04-27 20:19:11.991 warn at script.js.common.Haustür_Klingel:20:13

                javascript.0
                2022-04-27 20:19:11.989 warn getState "'deconz.0.Sensors.17.open" not found (3)

                javascript.0
                2022-04-27 20:19:11.986 warn at script.js.common.Haustür_Klingel:103:3

                javascript.0
                2022-04-27 20:19:11.985 warn at script.js.common.Haustür_Klingel:9:15

                javascript.0
                2022-04-27 20:19:11.973 warn getState "javascript.3.Logging.michi" not found (3)

                M 1 Antwort Letzte Antwort
                0
                • T TurboSasch

                  @michihorn Top Danke!

                  Der Sensor ist im Conbee2 gespeichert. Zigbee habe ich auch, aber alle Sensoren über Conbee2 gespeichert. Die Zeilen ab 23-27 wirklich löschen?

                  Ah ja, und ich habe nur den rtsp Stream gefunden.

                  Habe das mal soweit es geht ergänzt. Jetzt spuckt er dies im Protokoll aus:

                  javascript.0
                  2022-04-27 20:19:12.006 info script.js.common.Haustür_Klingel: registered 3 subscriptions and 1 schedule

                  javascript.0
                  2022-04-27 20:19:11.992 warn at script.js.common.Haustür_Klingel:103:3

                  javascript.0
                  2022-04-27 20:19:11.991 warn at script.js.common.Haustür_Klingel:20:13

                  javascript.0
                  2022-04-27 20:19:11.989 warn getState "'deconz.0.Sensors.17.open" not found (3)

                  javascript.0
                  2022-04-27 20:19:11.986 warn at script.js.common.Haustür_Klingel:103:3

                  javascript.0
                  2022-04-27 20:19:11.985 warn at script.js.common.Haustür_Klingel:9:15

                  javascript.0
                  2022-04-27 20:19:11.973 warn getState "javascript.3.Logging.michi" not found (3)

                  M Online
                  M Online
                  michihorn
                  schrieb am zuletzt editiert von michihorn
                  #8

                  @turbosasch Okay du hast es wohl doch etwas zu wörtlich übernommen.
                  Als erstes kommentierst Du Zeile 9 aus, etwa so:
                  //var logging = getState('javascript.3.Logging.michi').val;
                  Zeig mir mal in den Objekten deinen deconz. Bei Zigbee sieht das etwa so aus:
                  Unbenannt.PNG
                  Wenn Du dann auf den Stift klickst siehst die die Syntax des Aquara
                  Unbenannt1.PNG
                  In Zeile 10 trägst du deinen angepassten String ein, der hier gelb markiert ist.
                  Die Zeilen 23-27 kannst du drin lassen, nur ".kind" durch ".opened" ersetzen.
                  Dann mußt du noch in deiner Iobroker Installation ein Verzeichnis "Klingelbild" anlegen und genau in dem Pfad, den ich im nächsten Bild abgebildet habe. Ich denke ab "iobroker-data" sieht es bei dir gleich aus.
                  Unbenannt.PNG
                  Wenn du die Änderungen drin hast , las das Script nochmal laufen und vielleicht postest du mal das Script wie es jetzt bei die Aussieht.
                  Hier zeige ich mal wie das ganze in meiner View aussieht:
                  Unbenannt2.PNG

                  T 1 Antwort Letzte Antwort
                  0
                  • M michihorn

                    @turbosasch Okay du hast es wohl doch etwas zu wörtlich übernommen.
                    Als erstes kommentierst Du Zeile 9 aus, etwa so:
                    //var logging = getState('javascript.3.Logging.michi').val;
                    Zeig mir mal in den Objekten deinen deconz. Bei Zigbee sieht das etwa so aus:
                    Unbenannt.PNG
                    Wenn Du dann auf den Stift klickst siehst die die Syntax des Aquara
                    Unbenannt1.PNG
                    In Zeile 10 trägst du deinen angepassten String ein, der hier gelb markiert ist.
                    Die Zeilen 23-27 kannst du drin lassen, nur ".kind" durch ".opened" ersetzen.
                    Dann mußt du noch in deiner Iobroker Installation ein Verzeichnis "Klingelbild" anlegen und genau in dem Pfad, den ich im nächsten Bild abgebildet habe. Ich denke ab "iobroker-data" sieht es bei dir gleich aus.
                    Unbenannt.PNG
                    Wenn du die Änderungen drin hast , las das Script nochmal laufen und vielleicht postest du mal das Script wie es jetzt bei die Aussieht.
                    Hier zeige ich mal wie das ganze in meiner View aussieht:
                    Unbenannt2.PNG

                    T Offline
                    T Offline
                    TurboSasch
                    schrieb am zuletzt editiert von TurboSasch
                    #9

                    @michihorn danke für die sehr ausführliche Erklärung :-)

                    Ich habe das Skript angepasst und es läuft ohne Fehler bisher. Leider finde ich nirgendwo diesen CGI Befehl für die Eufy C22. Ich google morgen noch einmal deswegen.

                    Was ich nicht verstehe, warum ist dein Pfad für das Klingelbild auf deinem Rechner? Ich habe die komplette installation von ioBroker auf der SSD vom Raspberry. Könnte nur ein Verzeichnis unter Objekte: 0_userdata anlegen.

                    Ich habe mal die Kamera über Motioneye zum Test aktiviert und den Pfad genommen. Die läuft aber regulär über camera-ui im Homekit secure.

                    Hier einmal den Teil vom Log:


                    javascript.0
                    2022-04-27 21:50:22.035 info script.js.common.Haustür_Klingel: registered 3 subscriptions and 1 schedule
                    javascript.0
                    2022-04-27 21:50:22.008 info Start javascript script.js.common.Haustür_Klingel
                    javascript.0
                    2022-04-27 21:50:22.006 info script.js.common.Motion: registered 0 subscriptions and 0 schedules

                    Und das Skript:


                    /Haustür Klingel************
                    ** August 2020
                    ** RING, RING-Adapter, Kamera
                    **
                    **
                    ** geä:21.09.20
                    ******************************************************/

                    //var logging = getState('javascript.3.Logging.michi').val;
                    var idKlingel = "deconz.0.Sensors.17.open";
                    var anzahlbesucher
                    var jetzt = new Date();
                    var request = require('request');
                    var fs = require('fs');
                    var Stunde = jetzt.getHours();
                    var Minute = jetzt.getMinutes();
                    createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
                    createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
                    createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
                    var value = getState(idKlingel).val

                    on({ id: idKlingel, val: "false" }, function (obj) {
                    var datenpunkt = obj.common.name;
                    var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".opened")); //.Kind abschneiden
                    var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
                    setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                    if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
                    request({
                    url: "http://192.168.178.79:8765/picture/1/current/", encoding: null,
                    },
                    (error, response, body) => {
                    if (!error && body) {
                    writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                    }
                    }
                    );
                    });

                    //Ereignisliste erstellen___________________________________________________________________________________________________
                    function ereignis(text) {
                    // text = text.toString();
                    if (logging) log("Ereignisprotokoll " + text);
                    var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
                    var ereignisArr;

                    if (ereignisStr) {
                        if (ereignisStr == "<ul><li></li></ul>") {
                            ereignisArr = [];
                        } else {
                            ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
                        }
                    } else {
                        ereignisArr = [];
                    }
                    ereignisArr = ereignisArr.reverse();
                    ereignisArr.push(text);
                    ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
                    var str = ereignisArr.join("</li><li>");
                    setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
                    

                    }
                    on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
                    if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
                    ereignis(data.newState.val);
                    });

                    function zeit_umwandeln(unix_zeit) {
                    var nz = new Date(unix_zeit);
                    var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
                    var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
                    var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
                    neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
                    return (neue_zeit);
                    }
                    //Klingeln_____________________________________________________________________________________________________________________
                    on({ id: idKlingel }, (obj) => {
                    let Haustuer = obj.state.val;
                    let oldHaustuer = obj.oldState.val;
                    let text = '';
                    if (Haustuer == 'ding') {
                    //setState('javascript.3.Views.AktView', 0);
                    setState("hm-rega.0.22357", 3);
                    text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
                    console.log(text);
                    anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
                    anzahlbesucher = anzahlbesucher + 1;
                    log(anzahlbesucher);
                    setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
                    var ereignis_text = zeit_umwandeln(obj.newState.ts);
                    setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                    if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
                    }
                    });

                    //Zähler zurücksetzen
                    on({ time: { hour: 23, minute: 59 } }, function () {
                    setState("Klingel.HaustuerZaehler.Tag", 0);
                    setState("Klingel.Ereignisprotokoll.Ereignis", "");
                    setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
                    anzahlbesucher = 0;
                    log("Klingelereignisse gelöscht ");
                    });

                    Und hier mein Kontakt:

                    CC950346-EC63-40D3-83F6-1D086ED5785B.jpeg

                    M 1 Antwort Letzte Antwort
                    0
                    • T TurboSasch

                      @michihorn danke für die sehr ausführliche Erklärung :-)

                      Ich habe das Skript angepasst und es läuft ohne Fehler bisher. Leider finde ich nirgendwo diesen CGI Befehl für die Eufy C22. Ich google morgen noch einmal deswegen.

                      Was ich nicht verstehe, warum ist dein Pfad für das Klingelbild auf deinem Rechner? Ich habe die komplette installation von ioBroker auf der SSD vom Raspberry. Könnte nur ein Verzeichnis unter Objekte: 0_userdata anlegen.

                      Ich habe mal die Kamera über Motioneye zum Test aktiviert und den Pfad genommen. Die läuft aber regulär über camera-ui im Homekit secure.

                      Hier einmal den Teil vom Log:


                      javascript.0
                      2022-04-27 21:50:22.035 info script.js.common.Haustür_Klingel: registered 3 subscriptions and 1 schedule
                      javascript.0
                      2022-04-27 21:50:22.008 info Start javascript script.js.common.Haustür_Klingel
                      javascript.0
                      2022-04-27 21:50:22.006 info script.js.common.Motion: registered 0 subscriptions and 0 schedules

                      Und das Skript:


                      /Haustür Klingel************
                      ** August 2020
                      ** RING, RING-Adapter, Kamera
                      **
                      **
                      ** geä:21.09.20
                      ******************************************************/

                      //var logging = getState('javascript.3.Logging.michi').val;
                      var idKlingel = "deconz.0.Sensors.17.open";
                      var anzahlbesucher
                      var jetzt = new Date();
                      var request = require('request');
                      var fs = require('fs');
                      var Stunde = jetzt.getHours();
                      var Minute = jetzt.getMinutes();
                      createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
                      createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
                      createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
                      var value = getState(idKlingel).val

                      on({ id: idKlingel, val: "false" }, function (obj) {
                      var datenpunkt = obj.common.name;
                      var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".opened")); //.Kind abschneiden
                      var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
                      setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                      if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
                      request({
                      url: "http://192.168.178.79:8765/picture/1/current/", encoding: null,
                      },
                      (error, response, body) => {
                      if (!error && body) {
                      writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                      }
                      }
                      );
                      });

                      //Ereignisliste erstellen___________________________________________________________________________________________________
                      function ereignis(text) {
                      // text = text.toString();
                      if (logging) log("Ereignisprotokoll " + text);
                      var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
                      var ereignisArr;

                      if (ereignisStr) {
                          if (ereignisStr == "<ul><li></li></ul>") {
                              ereignisArr = [];
                          } else {
                              ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
                          }
                      } else {
                          ereignisArr = [];
                      }
                      ereignisArr = ereignisArr.reverse();
                      ereignisArr.push(text);
                      ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
                      var str = ereignisArr.join("</li><li>");
                      setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
                      

                      }
                      on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
                      if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
                      ereignis(data.newState.val);
                      });

                      function zeit_umwandeln(unix_zeit) {
                      var nz = new Date(unix_zeit);
                      var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
                      var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
                      var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
                      neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
                      return (neue_zeit);
                      }
                      //Klingeln_____________________________________________________________________________________________________________________
                      on({ id: idKlingel }, (obj) => {
                      let Haustuer = obj.state.val;
                      let oldHaustuer = obj.oldState.val;
                      let text = '';
                      if (Haustuer == 'ding') {
                      //setState('javascript.3.Views.AktView', 0);
                      setState("hm-rega.0.22357", 3);
                      text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
                      console.log(text);
                      anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
                      anzahlbesucher = anzahlbesucher + 1;
                      log(anzahlbesucher);
                      setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
                      var ereignis_text = zeit_umwandeln(obj.newState.ts);
                      setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                      if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
                      }
                      });

                      //Zähler zurücksetzen
                      on({ time: { hour: 23, minute: 59 } }, function () {
                      setState("Klingel.HaustuerZaehler.Tag", 0);
                      setState("Klingel.Ereignisprotokoll.Ereignis", "");
                      setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
                      anzahlbesucher = 0;
                      log("Klingelereignisse gelöscht ");
                      });

                      Und hier mein Kontakt:

                      CC950346-EC63-40D3-83F6-1D086ED5785B.jpeg

                      M Online
                      M Online
                      michihorn
                      schrieb am zuletzt editiert von michihorn
                      #10

                      @turbosasch Bei Raspberry bin ich leider nicht so versiert.
                      Also das Script speichert nur Bilder, wenn du Video gestreamt haben willst und Motioneye Eye hast ist es noch einfacher.
                      Hier siehst du ein ein Widget das heißt basic - iframe 8
                      Unbenannt3.PNG
                      Hier habe ich die EmbedURL aus Motioneye eingetragen. Über die Obeject ID kannst die Kameras schalten, dort würde z.B. dein Aquara eingetragen werden
                      Unbenannt5.PNG
                      Wenn Du nur eine Kamera hast nimmst du das Widget basic -iFrame, trägst in die Quelle deine Motion EYE URL der CAM ein und arbeitest mit der Sichtbarkeit des Widget
                      Unbenannt6.PNG
                      Beim Wert der Bedingung kommt true oder false rein, musst du mal testen, bleibt nur noch die Zeit die das CAM Bild angezeigt werden soll, kleine Script könnte ein Delay realisieren.

                      /*****CAM Widget sichtbar / unsichtbar setzen ********************
                      **    April 2022
                      **    deconz
                      **    
                      **    erstellt:  
                      **    geändert: 
                      ***********************************************************************/
                      createState("javascript.0.CAM.Klingel"); //Dein Datenpunkt, einmal anlegegen, der wird im Widget als Object-ID genutzt
                      const id_Klingel = "deconz.0.Sensorxxxxx" // Dein Sensor (Klingel)
                      const idTrigger = "javascript.0.CAM.Klingel" //Dein Datenpunkt
                      
                      on({ id: id_Klingel, val: true }, function (dp) {   //Hier wird beobachtet der Klingelsensor auf "True" geht, er setzt dann den Datenpunkt auf "TRUE" der Umweg über DP ist notwendig, da das Klingelsignal nur während des Tastendruck auf "TRUE" steht
                          setState(idTrigger, true)
                          log("Klingel Auslösezeit: " + formatDate(dp.state.lc, 'hh:mm:ss'));
                      
                          setStateDelayed('idTrigger', false, 60000); //Datenpunkt wird nach 60 Sec wieder auf false gesetzt, Widget ist dann wieder unsichtbar
                      
                      });
                      

                      Code habe ich nicht getestet, mal eben Quick and dirty ;-)

                      T 1 Antwort Letzte Antwort
                      0
                      • M michihorn

                        @turbosasch Bei Raspberry bin ich leider nicht so versiert.
                        Also das Script speichert nur Bilder, wenn du Video gestreamt haben willst und Motioneye Eye hast ist es noch einfacher.
                        Hier siehst du ein ein Widget das heißt basic - iframe 8
                        Unbenannt3.PNG
                        Hier habe ich die EmbedURL aus Motioneye eingetragen. Über die Obeject ID kannst die Kameras schalten, dort würde z.B. dein Aquara eingetragen werden
                        Unbenannt5.PNG
                        Wenn Du nur eine Kamera hast nimmst du das Widget basic -iFrame, trägst in die Quelle deine Motion EYE URL der CAM ein und arbeitest mit der Sichtbarkeit des Widget
                        Unbenannt6.PNG
                        Beim Wert der Bedingung kommt true oder false rein, musst du mal testen, bleibt nur noch die Zeit die das CAM Bild angezeigt werden soll, kleine Script könnte ein Delay realisieren.

                        /*****CAM Widget sichtbar / unsichtbar setzen ********************
                        **    April 2022
                        **    deconz
                        **    
                        **    erstellt:  
                        **    geändert: 
                        ***********************************************************************/
                        createState("javascript.0.CAM.Klingel"); //Dein Datenpunkt, einmal anlegegen, der wird im Widget als Object-ID genutzt
                        const id_Klingel = "deconz.0.Sensorxxxxx" // Dein Sensor (Klingel)
                        const idTrigger = "javascript.0.CAM.Klingel" //Dein Datenpunkt
                        
                        on({ id: id_Klingel, val: true }, function (dp) {   //Hier wird beobachtet der Klingelsensor auf "True" geht, er setzt dann den Datenpunkt auf "TRUE" der Umweg über DP ist notwendig, da das Klingelsignal nur während des Tastendruck auf "TRUE" steht
                            setState(idTrigger, true)
                            log("Klingel Auslösezeit: " + formatDate(dp.state.lc, 'hh:mm:ss'));
                        
                            setStateDelayed('idTrigger', false, 60000); //Datenpunkt wird nach 60 Sec wieder auf false gesetzt, Widget ist dann wieder unsichtbar
                        
                        });
                        

                        Code habe ich nicht getestet, mal eben Quick and dirty ;-)

                        T Offline
                        T Offline
                        TurboSasch
                        schrieb am zuletzt editiert von TurboSasch
                        #11

                        @michihorn sagte in Klingel mit Aqara Sensor soll Videokamera anzeigen:

                        CAM.Klingel

                        Top und danke für die Hilfe! Das erste Skript bleibt bestehen und das neue hier muss mit dem VIS verbunden werden?

                        Bei mir im ioBroker wird die Motioneye gar nicht angezeigt. Damit bekomme ich die doch gar nicht hinzugefügt, oder? Das zweite Bild ist deine Cam?!

                        Mit der VIS bin ich noch ganz am Anfang. Habe mich da schon einmal versucht, aber dann wieder verworfen. Ich häng mich da jetzt nochmal rein.

                        M 2 Antworten Letzte Antwort
                        0
                        • T TurboSasch

                          @michihorn sagte in Klingel mit Aqara Sensor soll Videokamera anzeigen:

                          CAM.Klingel

                          Top und danke für die Hilfe! Das erste Skript bleibt bestehen und das neue hier muss mit dem VIS verbunden werden?

                          Bei mir im ioBroker wird die Motioneye gar nicht angezeigt. Damit bekomme ich die doch gar nicht hinzugefügt, oder? Das zweite Bild ist deine Cam?!

                          Mit der VIS bin ich noch ganz am Anfang. Habe mich da schon einmal versucht, aber dann wieder verworfen. Ich häng mich da jetzt nochmal rein.

                          M Online
                          M Online
                          michihorn
                          schrieb am zuletzt editiert von michihorn
                          #12

                          @turbosasch Du solltest dich wirklich mal mit VIS beschäftigen, dann können alle Deine Ideen umgesetzt werden. Die Kamera auf dem IPAD oder wo auch immer, dar zustellen, wenn dein Aquara Auslöst, mag vielleicht klappen, mir ist aber keine andere möglichkeit bewusst.

                          T 1 Antwort Letzte Antwort
                          0
                          • T TurboSasch

                            @michihorn sagte in Klingel mit Aqara Sensor soll Videokamera anzeigen:

                            CAM.Klingel

                            Top und danke für die Hilfe! Das erste Skript bleibt bestehen und das neue hier muss mit dem VIS verbunden werden?

                            Bei mir im ioBroker wird die Motioneye gar nicht angezeigt. Damit bekomme ich die doch gar nicht hinzugefügt, oder? Das zweite Bild ist deine Cam?!

                            Mit der VIS bin ich noch ganz am Anfang. Habe mich da schon einmal versucht, aber dann wieder verworfen. Ich häng mich da jetzt nochmal rein.

                            M Online
                            M Online
                            michihorn
                            schrieb am zuletzt editiert von
                            #13

                            @turbosasch sagte in Klingel mit Aqara Sensor soll Videokamera anzeigen:

                            @michihorn sagte in Klingel mit Aqara Sensor soll Videokamera anzeigen:

                            CAM.Klingel

                            Top und danke für die Hilfe! Das erste Skript bleibt bestehen und das neue hier muss mit dem VIS verbunden werden?

                            Bei mir im ioBroker wird die Motioneye gar nicht angezeigt. Damit bekomme ich die doch gar nicht hinzugefügt, oder? Das zweite Bild ist deine Cam?!

                            Mit der VIS bin ich noch ganz am Anfang. Habe mich da schon einmal versucht, aber dann wieder verworfen. Ich häng mich da jetzt nochmal rein.

                            Die URL des Motioneye kannst du direkt aus Motioneye kopieren
                            Unbenannt7.PNG
                            und dann die entsprechende URL:
                            Unbenannt8.PNG

                            Die kannst du dann in VIS widgets verwenden

                            1 Antwort Letzte Antwort
                            0
                            • M michihorn

                              @turbosasch Du solltest dich wirklich mal mit VIS beschäftigen, dann können alle Deine Ideen umgesetzt werden. Die Kamera auf dem IPAD oder wo auch immer, dar zustellen, wenn dein Aquara Auslöst, mag vielleicht klappen, mir ist aber keine andere möglichkeit bewusst.

                              T Offline
                              T Offline
                              TurboSasch
                              schrieb am zuletzt editiert von
                              #14

                              @michihorn sagte in Klingel mit Aqara Sensor soll Videokamera anzeigen:

                              @turbosasch Du solltest dich wirklich mal mit VIS beschäftigen, dann können alle Deine Ideen umgesetzt werden. Die Kamera auf dem IPAD oder wo auch immer, dar zustellen, wenn dein Aquara Auslöst, mag vielleicht klappen, mir ist aber keine andere möglichkeit bewusst.

                              Ja ich weiß, aber das ist für einen Handwerker absolutes Neuland! Ich war froh, das ich mit ioBroker zurecht komme und das VIS ist ja wieder was ganz anderes. Naja, ich gebe mein bestes :-)

                              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

                              544

                              Online

                              32.7k

                              Benutzer

                              82.5k

                              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