Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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.0k

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

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

Alarm Ansage mit Wiederholung per Script

Alarm Ansage mit Wiederholung per Script

Scheduled Pinned Locked Moved Skripten / Logik
9 Posts 5 Posters 1.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    Semenchkare
    wrote on last edited by
    #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 Reply Last reply
    0
    • Schuko80S Offline
      Schuko80S Offline
      Schuko80
      wrote on last edited by
      #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 Reply Last reply
      0
      • S Offline
        S Offline
        Semenchkare
        wrote on last edited by
        #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 Reply Last reply
        0
        • T Offline
          T Offline
          tempestas
          wrote on last edited by
          #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 Reply Last reply
          0
          • S Offline
            S Offline
            Semenchkare
            wrote on last edited by
            #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 Reply Last reply
            0
            • T Offline
              T Offline
              tempestas
              wrote on last edited by
              #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 Reply Last reply
              0
              • S Offline
                S Offline
                sruhsam
                wrote on last edited by
                #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 Reply Last reply
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    sruhsam
                    wrote on last edited by
                    #9

                    Hallo Paul,

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

                    Vielen leiben Dank …..

                    Gruß

                    Stephan 😄

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    406

                    Online

                    32.4k

                    Users

                    81.3k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe