Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Alarm Ansage mit Wiederholung per Script

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Alarm Ansage mit Wiederholung per Script

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 5 Kommentatoren 1.1k Aufrufe
  • Ä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.
  • S Offline
    S Offline
    Semenchkare
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich habe eine per vpn eingebundene ccu2 in den iobroker eingebunden. Wenn dort Alarm ausgelöst wird, wird die Variable (Systemintern, bereits vorhanden) "hm-rega.1.alarms" auch von 0 auf 1 gesetzt. In Vis gesetzte Bilder werden entsprechend signalisiert.

    Per Sayit lasse ich dann "Alarm" sagen. Das solle sich alle 2 Minuten wiederholen.

    Leider wird das ganze nur 1x wiederholt, dann ist schluss.

    Gleiches Script verwende ich, wenn die Haustür zu lange geöffnet ist. Dort funktioniert das Script exakt, d.h. die Ansage "Tür zu lange offen" kommt fortwährend. Variable dort "hm-rpc.0.LEQ0000000.1.STATE".

    Kann mir jemand noch ein Tipp geben, wie ich eine MP3 (Alarmsirene) mit starten kann? in Sayit kann ich nur einen Gong oder einen vorgegebenes Signal ("Sci-Fi") vor der Ansage starten.

    var idSayIt  = "sayit.1.tts.text"; // Hier die entsprechende SayIt Text ID
    var idSayIt2  = "sayit.2.tts.text"; // Hier die entsprechende SayIt Text ID
    var idButton = "hm-rega.1.alarms"; // Test ID
    var lastSay  = null;
    var timer    = null;
    
    // Bei Tastendruck wird folgender Text gesprochen
    subscribe(idButton, function (obj) {
       if (obj.newState.val) {
          if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) {
             lastSay = (new Date()).getTime();
             setState (idSayIt, "de;50;Alarm");
          }
          // Starte timer für 2 Minuten
          if (!timer) {
             timer = setTimeout(function () {
                timer = null;
                setState (idSayIt2, "de;50;Alarm");
                setState (idSayIt, "de;50;Alarm");
             }, 120000);
          }
       } else {
          // Alarm beendet. Falls timer läuft = stopp
          if (timer) {
             clearTimeout(timer);
             timer = null;
          }
       }
    
    });
    

    Viele Grüße

    Semenchkare

    raspberry 5 8GB mit iobroker,
    raspberry 5 8GB mit Raspberrymatic

    1 Antwort Letzte Antwort
    0
    • Schuko80S Offline
      Schuko80S Offline
      Schuko80
      schrieb am zuletzt editiert von
      #2

      Vielleicht bin ich jetzt zu schnell, arbeite mich selber gerade erst in JavaScript ein. Aber muß das nicht setInterval heißen statt setTimeout

      Nuc6cayh + Proxmox / Zigbee (Deconz / Conbee I ) / ZWave / Homematic (CCU2)

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Semenchkare
        schrieb am zuletzt editiert von
        #3

        Na ja, bei meiner Haustür hat es bisher zumindest seit 9 Monaten problemlos funktioniert.

        Ich habe gerade bei der Haustür getestet:

        Hier gibt's auch keine Wiederholungen mehr! Das muss mit dem Update des Javascript-Adapters erfolgt sein….

        ich muss mal lesen, wie ich diesen downgrade...

        Viele Grüße

        Semenchkare

        raspberry 5 8GB mit iobroker,
        raspberry 5 8GB mit Raspberrymatic

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tempestas
          schrieb am zuletzt editiert von
          #4

          So gehts

          // Einstellungen
          
          createState('javascript.1.alarm.triggertest', false, {
            read: true, 
            write: true, 
            name: "Löckengelöt", 
            type: "boolean", 
            def: false
          });
          
          var idSayIt  = "sayit.1.tts.text"; // Hier die entsprechende SayIt Text ID
          var idButton = 'javascript.1.alarm.triggertest'; // Test ID
          var timer;
          
          var maxrepeat   = 5;          // maximale Anzahl der Wdh. der Ansage
          var interval = 10;                 // Abstand zwischen den Ansagen in Sekunden
          
          // function
          
          function repeatAlarm(){
            count--;
          
            if(count > 0){ setState(idSayIt, "de;10;Dies ist ein Testalarm");
            log("Der Testalarm wird noch "+count +" mal ausgeführt." );
          
            }
          
            else { 
              clearInterval(timer);
              log("Interval nach Ablauf der maximalen Anzahl beendet");
              setState(idButton, false);
            }
          
          }
          
          // Trigger
          
          on({id: idButton, change: "ne"}, function(obj){
            if(obj.state.val) { 
              count = maxrepeat;
              timer = setInterval(repeatAlarm, interval * 1000);
            } 
            else {
                clearInterval(timer);
                log("Manuell beendet");
                  setState(idButton, false);      
            }
          });
          
          

          <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            Semenchkare
            schrieb am zuletzt editiert von
            #5

            Hallo,

            untertänigsten Dank! Das ist es! Ich habe es so zum Laufen bekommen:

            var idSayIt0  = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID
            var idSayIt3  = "sayit.3.tts.text"; // Hier die entsprechende SayIt Text ID
            //var idButton = 'javascript.1.alarm.triggertest'; // Test ID
            var idButton = 'hm-rega.1.alarms'; // Test ID
            var timer;
            
            var maxrepeat   = 5;          // maximale Anzahl der Wdh. der Ansage
            var interval = 30;                 // Abstand zwischen den Ansagen in Sekunden
            
            // function
            
            function repeatAlarm(){
              count--;
            
              if(count > 0){ setState(idSayIt0, "de;70;Alarm");
              setState(idSayIt3, "de;70;Alarm");
              log("Der Alarm wird noch "+count +" mal ausgeführt." );
            
              }
            
              else { 
                clearInterval(timer);
                log("Interval nach Ablauf der maximalen Anzahl beendet");
                setState(idButton, false);
              }
            
            }
            
            // Trigger
            
            on({id: idButton, change: "ne"}, function(obj){
              if(obj.state.val) { 
                count = maxrepeat;
                timer = setInterval(repeatAlarm, interval * 1000);
              } 
              else {
                  clearInterval(timer);
                  log("Manuell beendet");
                    setState(idButton, false);      
              }
            });
            

            Viele Grüße

            Semenchkare

            raspberry 5 8GB mit iobroker,
            raspberry 5 8GB mit Raspberrymatic

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

              Das ist doch schön. Setze bitte das Topic dann auf [gelöst] (erstes Posting editeren, Betreff anpassen)

              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                sruhsam
                schrieb am zuletzt editiert von
                #7

                Hallo Profis:

                Ich komm einfach nicht weiter. Seh bestimmt den Wald vor lauter Bäume nicht 🙂

                Ich möchte durch einen Tastendruck dass ein Text für einen bestimmte Anzahl angesagt wird.

                Hab jetzt als Sayit einfach eine Logausgabe angeben um um zu testen.

                Wenn ich dass so laufen lasse, startet der Prozess immer von neuem, möchte aber dass er einmal durchläuft.

                In diesem Fall soll sich also die Logausgabe 5 mal wiederholen, mit einer Pause von 3 Sekunden zwischen den Ausgaben und danach auf einen weiteren Tastendruck warten.

                Gruß

                Stephan

                var idButton = "hm-rpc.0.NEQ0929126.8.PRESS_SHORT";
                var timer;
                var maxrepeat   = 5;          // maximale Anzahl der Wdh. der Ansage
                var interval = 3;                // Abstand zwischen den Ansagen in Sekunden
                
                // function
                
                function repeatAlarm(){
                  count--;
                
                  if(count > 0){ 
                  log("Der Alarm wird noch "+count +" mal ausgeführt." );
                
                  }
                
                  else { 
                    clearInterval(timer);
                    log("Interval nach Ablauf der maximalen Anzahl beendet");
                    setState(idButton, false);
                  }
                
                }
                
                // Trigger
                
                on({id: idButton, change: "ne"}, function(obj){
                  if(obj.state.val) { 
                    log("Tastendruck");
                    count = maxrepeat;
                    timer = setInterval(repeatAlarm, interval * 1000);
                  } 
                  else {
                      clearInterval(timer);
                      log("Manuell beendet");
                        setState(idButton, false);      
                  }
                });
                
                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  Ein HM-Taster (PRESS_SHORT) liefert immer true. Versuche es mal so:

                  var idButton = "hm-rpc.0.NEQ0929126.8.PRESS_SHORT";
                  var timer;
                  var maxrepeat   = 5;          // maximale Anzahl der Wdh. der Ansage
                  var interval = 3;                // Abstand zwischen den Ansagen in Sekunden
                  var count = 0;
                  
                  function repeatAlarm(){
                    count--;
                    if(count > 0){ 
                      log("Der Alarm wird noch "+count +" mal ausgeführt." );
                    } else { 
                      clearInterval(timer);
                      log("Interval nach Ablauf der maximalen Anzahl beendet");
                    }
                  }
                  
                  // Trigger
                  on({id: idButton}, function(){
                    log("Tastendruck");
                    if(count > 0) {
                      clearInterval(timer); // Abbruch bei erneutem Tastendruck
                      count = 0;
                    } else {
                      count = maxrepeat;
                      repeatAlarm();
                      timer = setInterval(repeatAlarm, interval * 1000);
                    }  
                  });
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • S Offline
                    S Offline
                    sruhsam
                    schrieb am zuletzt editiert von
                    #9

                    Hallo Paul,

                    das wars, nachdem ich die variable "count" noch deklariert habe, lauft es.

                    Vielen leiben Dank …..

                    Gruß

                    Stephan 😄

                    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

                    748

                    Online

                    32.4k

                    Benutzer

                    81.4k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe