Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Klingel auf mehreren Alexas

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Klingel auf mehreren Alexas

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

      Hi!
      Ich habe einen Aqara Kontaktsensor umgebaut und ihn an unsere Klingel gehängt.
      Ich habe ihn über einen Conbee II Stick angelernt. Der Conbee gibt leider nur Lichter an Alexa weiter, sonst hätte ich das ganze Problem nicht.
      Nun bastel ich gerade am Skript rum.
      Bei zu vielen Befehlen gleichzeitig kapituliert Alexa und es kommt nur sporadisch zum Klingeln.
      Folgendes Szenario. Wir haben 3 Etagen und ich möchte auf jeder min. eine Alexa zum Klingeln bringen. Hier brauche ich euch!
      Ich habe es auf zwei Wegen versucht, aber es klappt einfach nicht zuverlässig.
      Weg 1, alles über Iobroker

      • Lautstärke aller Alexas (oder einer Gruppe) erhöhen,
      • Ton von Amazon Music auf den Alexas wiedergeben
      • Lautstärke verringern

      -->absolute Katastrophe

      Weg 2, Routine nutzen

      • Routine erstellen (Lautstärke hoch, Ton wählen, Lautstärke runter und als Endgeräte, dass zu dem Gesprochen wird)
      • Im Iobroker nun pro Gerät einmal die Routine starten (mit 500ms delay je Geräte)

      --> das klappt so halbwegs, da Alexa eine Menge befehle intern abarbeitet, aber ist eben unflexibel (nicht jedes Gerät hat die selbe Lautstärke ...) und es klingelt (wenn es denn bei allen klappt) mit 2 Sekunden Unterschied.

      Gibt es einen anderen Weg, den ich übersehe? Einen der halt nicht an dem overflow von Befehlen an Alexa scheitert und dennoch etwas flexibler ist.

      Martin

      blue231181 Chaot Michael Fischer 3 Replies Last reply Reply Quote 0
      • blue231181
        blue231181 @MBM1982 last edited by

        @mbm1982
        Hallo,

        Sieh dir das Video an: https://youtu.be/r7rFjTq3ReE
        Und passe die Alexa Befehle deinen Ansprüchen an.

        Ich hb mir so eine Ansage gebastelt wenn in einem Zimmer die Temperatur unter 17 Grad gefallenist (quasi Fenster offen im Winter und vergessen)

        M 1 Reply Last reply Reply Quote 1
        • Chaot
          Chaot @MBM1982 last edited by

          @mbm1982 Bei mir klingeln drei Echos über Routinen.
          Ich habe zwischen den Befehlen keinen Delay und ich habe zwischen den Ausführungen keine Verzögerungen festgestellt.

          Meine Routinen laufen auch so ab.
          Lautstärke 9
          Klingel 3 abspielen
          Lautstärke 5

          Eventuell ist da der Unterschied, weil ich keine Sprachansage sondern einen Klingelton nutze.

          M 1 Reply Last reply Reply Quote 1
          • Michael Fischer
            Michael Fischer @MBM1982 last edited by

            @mbm1982

            Hi,

            Versuch es mal mit dem Befehl Announcement. So funktioniert es bei mir ohne Verzögerung und sogar mit Gong auf mehreren Echo Geräten.

            Michi

            M 2 Replies Last reply Reply Quote 1
            • M
              MBM1982 @Chaot last edited by

              @chaot kommt der Befehl für die Routinen vom Iobroker?
              Ich hatte einen alten WLAN Kontaktsensor, der als SmartHome-Gerät in Alexa war. Da ging das auch genauso, aber es dauert 7-15 Sekunden bis das Signal aus der China-Cloud kam...

              Chaot 1 Reply Last reply Reply Quote 0
              • M
                MBM1982 @Michael Fischer last edited by MBM1982

                @michael-fischer Danke dir, das hört sich sehr vielversprechend an!
                Aber jetzt pennen die Kiddies schon 😉

                1 Reply Last reply Reply Quote 0
                • M
                  MBM1982 @blue231181 last edited by

                  @blue231181 Danke dir, schau ich mir gleich mal an

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

                    @mbm1982 Der Befehl kommt aus dem ioBroker. Der Gong wird über einen Taster am Wemos ausgelöst und an den ioBroker gesendet. Dort werden dann per Script ein paar Aufgaben abgearbeitet. Unter anderem eben auch den Gong auslösen.
                    Eine Verzögerung ist zwar manchmal da, aber höchstens 2 Sekunden. Deshalb habe ich das auch nicht weiter verfeinert.

                    M 2 Replies Last reply Reply Quote 1
                    • M
                      MBM1982 @Chaot last edited by

                      @chaot
                      Na 2 Sekunden hatten manche Funk-Klingeln bei mir auch schon... Aber bei über 10 Sekunden ist der Postbote ja schon wieder am Auto, bevor ich überhaupt den Gong gehört habe 😉

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

                        @chaot Wie bekommst du denn den "Gong" in das Announcement? Ich kann nur einen Text ausgeben lassen.

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

                          @mbm1982 Unter "Töne - Glocken....-"
                          musst du in der App etwas runterscrollen damit das zu sehen ist.

                          1 Reply Last reply Reply Quote 1
                          • M
                            MBM1982 @Michael Fischer last edited by

                            @michael-fischer
                            Hi!

                            Kannst du mir noch sagen wie du einen Gong über die Announcements auslöst?
                            Oder meinst du den "Standard-Gong", der bei den Announcements kommt bevor sie den Text vorliest?

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

                              @mbm1982
                              Ich erstelle eine Routine

                              • Namen erstellen (beliebig)
                              • wenn folgendes passiert: Auslösewort (beispielsweise "Klingel") erstellen
                              • Als Aktion hinzufügen:
                                Lautstärke auf 9
                                Türklingel 3 abspielen (Töne -Glocken und Summer - Türklingel3)
                                Lautstärke auf 4

                              Das erstelle ich für verschiedene Echos die ich benötige. Der Name der Routine muss allerdings unterschiedlich sein.
                              Ich verwende dafür dann "Echo Bad, Echo Theke, usw."
                              Dann erscheinen die Routinen bei mir im ioBroker.
                              Ab hier kommt ein Script zum Einsatz das durch den Wemos ausgelöst wird:

                              // Klingelscript
                              // Entworfen durch LoxDUS
                              // mit Alexa Routinenaufruf, Bilder erfassen, Versand an 2 Empfänger
                              // Stand 01-2021
                              
                              const debug = false;
                              const cam_img = "http://192.168.8.95:8765/picture/1/current/?_username=****&_signature=**********";
                              const img_path = '/opt/iobroker/iobroker-data/files/0_userdata.0';
                              
                              const fs = require('fs');
                              
                              var BildSequenz = 0;        // Sequenznummer 0:Bereit, 1: (0s) Bild1+Mail, 2: (+5s) Bild2+Mail, 3: (+10s) Bild3, 4: (+10s) Bild4
                              var TBildsequenz = null;    // Timer-Objekt für die Bildsequenz
                              var TVis = null;            // Timer um VIS umzuschalten
                              
                              
                              on({id: 'sonoff.0.Eingang.POWER2', val: true}, function (obj) {
                                  
                                  // Benachrichtigung über Alexa das es geklingelt hat
                                  setState("alexa2.0.Echo-Devices.G091EU**********K6W.Routines.519a9af4-c186-4715-9e5d-cb4ac65c0c67", true); //Klingelt auf Echo Theke
                                  setState("alexa2.0.Echo-Devices.G2A0P**********LLE.Routines.11242dac-bf4b-4ab1-9521-37fdf5dae51d", true); //Klingelt auf Dot Anrichte
                              
                                  // Soll jedesmal eine Bildsequenz neu gestartet werden, egal ob die vorherige Sequenz abgeschlossen ist, dann diesen Code:
                                  //BildSequenz = 0;
                                  //ErstelleBildsequenz();
                                  //
                                  // ...ODER soll das Speichern der Bildersequenz komplett abgeschlossen werden und auch ein erneuter Klingeldruck vorher keine neue
                                  // Sequenz auslösen dann diesen Code:
                                  if(debug) log("Bildsequenz: " + BildSequenz);
                                  if(BildSequenz == 0) ErstelleBildsequenz(); // Die Bildsequenz wird nur erstellt wenn vorherige Bildsequenz abgeschlossen ist
                              });
                              
                              function ErstelleBildsequenz()
                              {   if(BildSequenz == 0) BildSequenz=1;  // Bildsequenz
                                  if(debug) log("Bildsequenz: " + BildSequenz);
                                  // Bild von Cam holen
                                  request.get({url: cam_img, encoding: 'binary'}, function (err, response, body) {
                                      if(err) {
                                          // Beim holen des Bildes von der Kamera ist ein Fehler aufgetreten
                                          log('Beim holen des Bildes von der Kamera ist ein Fehler aufgetreten: ' + err);
                                          BildSequenz = 0; // Die Bildsequenz zurück setzen
                                      } else
                                      {   // Bild wurde von der Kamera geladen. Jetzt speichern wir das Bild 
                                          fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', body, 'binary', function(err) {
                                              if (err) {
                                                  // Beim Speichern des Bildes ist ein Fehler aufgetreten
                                                  log('Fehler beim Speichern von Bild ' + img_path + '/alarm' + BildSequenz + '.jpg   Fehler:' + err, 'warn');
                                                  BildSequenz = 0; // Die Bildsequenz zurück setzen
                                              } else {
                              
                                                   // Bild wurde jetzt gespeichert wir können das Bild jetzt weiterverarbeiten
                                                  switch(BildSequenz)
                                                  {   case 1: // Bild 1 direkt nach dem drücken des Klingelknopfes aufnehmen und per Mail verschicken
                                                          // Vis umschalten: Setze View auf Kamerabild
                                                          if(debug) log(" 1 Bildsequenz: " + BildSequenz);
                                                          setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}'); 
                                                          if(TVis) clearTimeout(TVis); // Falls noch ein Timer läuft, diesen beenden.
                                                          TVis = setTimeout(function () {
                                                                      setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
                              				                    }, 60000); // Nach 60 Sekunden, zeige wieder Start View
                                                          
                                                          // Nächstes Bild soll nach 5s aufgenommen werden
                                                          BildSequenz = 2;                          
                                                          if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen
                                                          TBildsequenz = setTimeout(function(){ErstelleBildsequenz();}, 5000);
                                                          break;                            
                                                      case 2: // Bild 2, 5s nach dem drücken des Klingelknopfes aufnehmen und per Mail verschicken
                                                          // Bild per Mail verschicken
                                                          if(debug) log(" 2 Bildsequenz: " + BildSequenz);
                                                          
                                                          // Nächstes Bild soll nach 10s aufgenommen werden                            
                                                          BildSequenz = 3;
                                                          if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen                           
                                                          TBildsequenz = setTimeout(function(){ErstelleBildsequenz();}, 10000);
                                                          break;                         
                                                      case 3: // Bild 3 soll nach weiteren 10s gespeichert werden
                                                          
                                                          // Nächstes Bild soll nach 10s aufgenommen werden
                                                          if(debug) log(" 3 Bildsequenz: " + BildSequenz);                                                  
                                                          BildSequenz = 4;
                                                          if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen
                                                          TBildsequenz = setTimeout(function(){ErstelleBildsequenz();}, 10000);
                                                          break;                                                    
                                                      case 4: // Bild 4 soll nach weiteren 10s gespeichert werden
                                                          
                                                          // Damit ist die Sequenz beendet und die Klingel ist wieder bereit
                                                          if(debug) log(" 4 Bildsequenz: " + BildSequenz);
                                                          sendTo("email", "send", {
                                                                  text: '',
                                                                  to: '**********@gmail.com',
                                                                  subject: 'Klingel',
                                                                  attachments:[{path: img_path + '/alarm1.jpg', cid: "file1"},{path: img_path + '/alarm2.jpg', cid: "file2"},{path: img_path + '/alarm3.jpg', cid: "file3"},{path: img_path + '/alarm4.jpg', cid: "file4"},] });
                                                          sendTo("email", "send", {
                                                                  text: '',
                                                                  to: '**********@gmail.com',
                                                                  subject: 'Klingel',
                                                                  attachments:[{path: img_path + '/alarm1.jpg', cid: "file1"},{path: img_path + '/alarm2.jpg', cid: "file2"},{path: img_path + '/alarm3.jpg', cid: "file3"},{path: img_path + '/alarm4.jpg', cid: "file4"},] });
                                                          
                                                          BildSequenz = 0;
                                                          if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen
                                                       break;
                                                      default:
                                                          // Nicht bekannter Sequenzschritt bzw. es gab einen Fehler beim holen oder speichern 
                                                      break;
                                                  };
                                              };
                                          });
                                      };
                                  });
                              }
                              

                              Dank Loxdus habe ich das Script sehr weit abgespeckt als Sequenz am Laufen.
                              Hier wird im Grunde folgendes gemacht:
                              Wenn die Klingel gedrückt wird:

                              • werden 4 Bilder mit ein paar Sekunden Abstand aufgenommen
                              • Die Routinen bei den Echos werden ausgelöst (Zeile 20 und 21 derzeit, weil ein Echo derzeit weg ist)
                              • Die Bilder werden per mail an zwei verschieden Empfänger versendet
                              • Die VIS wird für ein paar Sekunden auf das live Kamerabild umgeschaltet und danach auf die Startseite zurück
                              • Es wird verhindert dass durch ein erneutes Klingeln die Sequenz unterbrochen wird. Wenn die Nachbarkids 30 mal den Taster drücken hat das System so seine Problemchen bekommen)

                              Dir reichen vermutlich de Zeilen 20 und 21 um deine Klingel umzusetzen.

                              M 1 Reply Last reply Reply Quote 1
                              • M
                                MBM1982 @Chaot last edited by MBM1982

                                @chaot Danke!
                                Reicht denn nicht eine Routine? Unten dann auswählen "Das Gerät zu dem Sie sprechen"?
                                Oder macht es mehr Sinn, für jedes Gerät eine Routine zu erstellen?

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

                                  @mbm1982 Das habe ich ehrlich gesagt noch nicht probiert. Ich habe mehrere Routinen, weil ich das Script im Sommer anders nutze und daher einen Echo mehr aktiviere. Da war das für mich einfacher zu handhaben den betreffenden Echo zu- und abzuschalten.

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  610
                                  Online

                                  31.7k
                                  Users

                                  79.8k
                                  Topics

                                  1.3m
                                  Posts

                                  4
                                  15
                                  874
                                  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