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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Klingel auf mehreren Alexas

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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

                        808
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

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