Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Skript - Alexa Speak wenn zwei Bedingungen erfüllt

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    616

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

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

Skript - Alexa Speak wenn zwei Bedingungen erfüllt

Scheduled Pinned Locked Moved JavaScript
18 Posts 3 Posters 2.0k Views 2 Watching
  • 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.
  • M mbw

    Meinst du das so, also das der Wert den du einträgst auch ausgegeben wird?

    const idSV = 'hm-rega.0.14932'; 
    const idND = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.doNotDisturb';
    const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.speak';
     
    on({id: idSV}, function(dp) { // triggert bei Aktualisierung
       if(!getState(idND).val) {
          let txt = 'anderer Text';
          if(dp.state.val) txt = dp.state.val;
          setState(idSpeak, txt);
       }
    });
    
    nils50122N Offline
    nils50122N Offline
    nils50122
    wrote on last edited by nils50122
    #9

    @mbw

    Genau, also es soll quasi jedes mal wenn sich die SV "Alexa_TTS" ändert dessen Inhalt (Text) ausgegeben werden.
    Das aber auch nur wenn donotdisturb auf false ist.
    Der Inhalt der SV "Alexa_TTS" wird von den HM-Programmen geschrieben.

    Mich iritiert nun ein wenig die Zeile "anderer Text", kann die nicht raus?

    Idealerweise setzen wir vor senden des speak commands (alexa2.0.Echo-Devices.xxxx.Commands.speak-volume) noch die Lautstärke auf z.B. 20 (kann ruhig im Script definiert werden)

    paul53P 1 Reply Last reply
    0
    • nils50122N nils50122

      @mbw

      Genau, also es soll quasi jedes mal wenn sich die SV "Alexa_TTS" ändert dessen Inhalt (Text) ausgegeben werden.
      Das aber auch nur wenn donotdisturb auf false ist.
      Der Inhalt der SV "Alexa_TTS" wird von den HM-Programmen geschrieben.

      Mich iritiert nun ein wenig die Zeile "anderer Text", kann die nicht raus?

      Idealerweise setzen wir vor senden des speak commands (alexa2.0.Echo-Devices.xxxx.Commands.speak-volume) noch die Lautstärke auf z.B. 20 (kann ruhig im Script definiert werden)

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #10

      @nils50122 sagte:

      "anderer Text", kann die nicht raus?

      Ja.

      const idSV = 'hm-rega.0.14932'; 
      const idND = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.doNotDisturb';
      const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.speak';
       
      on(idSV, function(dp) { // triggert bei Wertänderung
         if(!getState(idND).val) setState(idSpeak, dp.state.val);
      });
      

      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
      • M Offline
        M Offline
        mbw
        wrote on last edited by
        #11

        @nils50122 sagte in Skript - Alexa Speak wenn zwei Bedingungen erfüllt:

        Idealerweise setzen wir vor senden des speak commands (alexa2.0.Echo-Devices.xxxx.Commands.speak-volume) noch die Lautstärke auf z.B. 20 (kann ruhig im Script definiert werden)

        const idSV = 'hm-rega.0.14932'; 
        const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands';
        const ausgabelautstaerke = 20;
         
        on({id: idSV}, function(dp) { // triggert bei Aktualisierung
            if(!getState(idSpeak + '.doNotDisturb').val) {
                alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke);
            }
        });
        
        function alexaSprich(idAlexa, text, lautstaerke) {
            var alteLautstaerke = getState(idAlexa + '.speak-volume').val;
            setState(idAlexa + '.speak-volume', lautstaerke);
            setState(idAlexa + '.speak', text);
            setState(idAlexa + '.speak-volume', alteLautstaerke);
        }
        
        nils50122N 1 Reply Last reply
        1
        • M mbw

          @nils50122 sagte in Skript - Alexa Speak wenn zwei Bedingungen erfüllt:

          Idealerweise setzen wir vor senden des speak commands (alexa2.0.Echo-Devices.xxxx.Commands.speak-volume) noch die Lautstärke auf z.B. 20 (kann ruhig im Script definiert werden)

          const idSV = 'hm-rega.0.14932'; 
          const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands';
          const ausgabelautstaerke = 20;
           
          on({id: idSV}, function(dp) { // triggert bei Aktualisierung
              if(!getState(idSpeak + '.doNotDisturb').val) {
                  alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke);
              }
          });
          
          function alexaSprich(idAlexa, text, lautstaerke) {
              var alteLautstaerke = getState(idAlexa + '.speak-volume').val;
              setState(idAlexa + '.speak-volume', lautstaerke);
              setState(idAlexa + '.speak', text);
              setState(idAlexa + '.speak-volume', alteLautstaerke);
          }
          
          nils50122N Offline
          nils50122N Offline
          nils50122
          wrote on last edited by
          #12

          @mbw

          Sogar mit dem setzen der alten Lautstärke, was ein Luxus :)
          Klappt perfekt, besten Dank.

          Die letzte bitte:

          Ich würde eine zweite SV "Alexa TTS - High Prio" für Ausgaben die DoNotDisturb nicht interessiert, anlegen.

          Welchen Teil im Skript muss ich löschen?

          M 1 Reply Last reply
          0
          • nils50122N nils50122

            @mbw

            Sogar mit dem setzen der alten Lautstärke, was ein Luxus :)
            Klappt perfekt, besten Dank.

            Die letzte bitte:

            Ich würde eine zweite SV "Alexa TTS - High Prio" für Ausgaben die DoNotDisturb nicht interessiert, anlegen.

            Welchen Teil im Skript muss ich löschen?

            M Offline
            M Offline
            mbw
            wrote on last edited by
            #13

            @nils50122 sagte in Skript - Alexa Speak wenn zwei Bedingungen erfüllt:

            Ich würde eine zweite SV "Alexa TTS - High Prio" für Ausgaben die DoNotDisturb nicht interessiert, anlegen.
            Welchen Teil im Skript muss ich löschen?

            const idSV = 'hm-rega.0.14932'; 
            const idSV2 = 'hm-rega.0.14933'; 
            const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands';
            const idSpeak2 = 'alexa2.0.Echo-Devices.yyDeviceIDyy.Commands';
            const ausgabelautstaerke = 20;
            const ausgabelautstaerke2 = 50;
             
            on({id: idSV}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus wenn doNotDisturb nicht gesetzt ist
                if(!getState(idSpeak + '.Commands.doNotDisturb').val) {
                    alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke);
                }
            });
            
            on({id: idSV2}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus auch wenn doNotDisturb gesetzt ist
                alexaSprich(idSpeak2, dp.state.val, ausgabelautstaerke2);
            });
            
            function alexaSprich(idAlexa, text, lautstaerke) {
                var alteLautstaerke = getState(idAlexa + '.speak-volume').val;
                setState(idAlexa + '.speak-volume', lautstaerke);
                setState(idAlexa + '.speak', text);
                setState(idAlexa + '.speak-volume', alteLautstaerke);
            }
            
            nils50122N 1 Reply Last reply
            0
            • M mbw

              @nils50122 sagte in Skript - Alexa Speak wenn zwei Bedingungen erfüllt:

              Ich würde eine zweite SV "Alexa TTS - High Prio" für Ausgaben die DoNotDisturb nicht interessiert, anlegen.
              Welchen Teil im Skript muss ich löschen?

              const idSV = 'hm-rega.0.14932'; 
              const idSV2 = 'hm-rega.0.14933'; 
              const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands';
              const idSpeak2 = 'alexa2.0.Echo-Devices.yyDeviceIDyy.Commands';
              const ausgabelautstaerke = 20;
              const ausgabelautstaerke2 = 50;
               
              on({id: idSV}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus wenn doNotDisturb nicht gesetzt ist
                  if(!getState(idSpeak + '.Commands.doNotDisturb').val) {
                      alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke);
                  }
              });
              
              on({id: idSV2}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus auch wenn doNotDisturb gesetzt ist
                  alexaSprich(idSpeak2, dp.state.val, ausgabelautstaerke2);
              });
              
              function alexaSprich(idAlexa, text, lautstaerke) {
                  var alteLautstaerke = getState(idAlexa + '.speak-volume').val;
                  setState(idAlexa + '.speak-volume', lautstaerke);
                  setState(idAlexa + '.speak', text);
                  setState(idAlexa + '.speak-volume', alteLautstaerke);
              }
              
              nils50122N Offline
              nils50122N Offline
              nils50122
              wrote on last edited by
              #14

              @mbw

              Wenn ich das richtig sehe, steuert das Skript nun zwei Devices an, oder?

              Das soll schon beides auf dem selben ankommen.

              M 1 Reply Last reply
              0
              • nils50122N nils50122

                @mbw

                Wenn ich das richtig sehe, steuert das Skript nun zwei Devices an, oder?

                Das soll schon beides auf dem selben ankommen.

                M Offline
                M Offline
                mbw
                wrote on last edited by
                #15

                @nils50122 sagte in Skript - Alexa Speak wenn zwei Bedingungen erfüllt:

                Das soll schon beides auf dem selben ankommen.

                on({id: idSV2}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus auch wenn doNotDisturb gesetzt ist
                    alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke2);
                });
                
                nils50122N 1 Reply Last reply
                1
                • M mbw

                  @nils50122 sagte in Skript - Alexa Speak wenn zwei Bedingungen erfüllt:

                  Das soll schon beides auf dem selben ankommen.

                  on({id: idSV2}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus auch wenn doNotDisturb gesetzt ist
                      alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke2);
                  });
                  
                  nils50122N Offline
                  nils50122N Offline
                  nils50122
                  wrote on last edited by
                  #16

                  @mbw

                  Anscheinend funktioniert das DoNotDisturb nicht korrekt (Übertragung IOBroker <-> Alexa).
                  Somit wurden wir nun schon mehrmals Nachts von der TTS geweckt.

                  Kriegen wir es hin zusätzlich in das bereits vorhandene Skript eine Zeitprüfung (Zeitfenster 08:00 Uhr - 22:00 Uhr erlaubt, danach nicht) einzubauen?

                  M 1 Reply Last reply
                  0
                  • nils50122N nils50122

                    @mbw

                    Anscheinend funktioniert das DoNotDisturb nicht korrekt (Übertragung IOBroker <-> Alexa).
                    Somit wurden wir nun schon mehrmals Nachts von der TTS geweckt.

                    Kriegen wir es hin zusätzlich in das bereits vorhandene Skript eine Zeitprüfung (Zeitfenster 08:00 Uhr - 22:00 Uhr erlaubt, danach nicht) einzubauen?

                    M Offline
                    M Offline
                    mbw
                    wrote on last edited by
                    #17

                    @nils50122 Hier sollte doch doNotDisturb nicht beachtet werden.
                    Zeitprüfung:

                    const idSV = 'hm-rega.0.14932'; 
                    const idSV2 = 'hm-rega.0.14933'; 
                    const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands';
                    const idSpeak2 = 'alexa2.0.Echo-Devices.yyDeviceIDyy.Commands';
                    const ausgabelautstaerke = 20;
                    const ausgabelautstaerke2 = 50;
                     
                    on({id: idSV}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus wenn doNotDisturb nicht gesetzt ist
                        if(!getState(idSpeak + '.Commands.doNotDisturb').val && compareTime("08:00", "22:00", "between")) {
                            alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke);
                        }
                    });
                     
                    on({id: idSV2}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus auch wenn doNotDisturb gesetzt ist
                        if (compareTime("08:00", "22:00", "between")) {    
                            alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke2);
                        }
                    });
                     
                    function alexaSprich(idAlexa, text, lautstaerke) {
                        var alteLautstaerke = getState(idAlexa + '.speak-volume').val;
                        setState(idAlexa + '.speak-volume', lautstaerke);
                        setState(idAlexa + '.speak', text);
                        setState(idAlexa + '.speak-volume', alteLautstaerke);
                    }
                    
                    nils50122N 1 Reply Last reply
                    0
                    • M mbw

                      @nils50122 Hier sollte doch doNotDisturb nicht beachtet werden.
                      Zeitprüfung:

                      const idSV = 'hm-rega.0.14932'; 
                      const idSV2 = 'hm-rega.0.14933'; 
                      const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands';
                      const idSpeak2 = 'alexa2.0.Echo-Devices.yyDeviceIDyy.Commands';
                      const ausgabelautstaerke = 20;
                      const ausgabelautstaerke2 = 50;
                       
                      on({id: idSV}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus wenn doNotDisturb nicht gesetzt ist
                          if(!getState(idSpeak + '.Commands.doNotDisturb').val && compareTime("08:00", "22:00", "between")) {
                              alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke);
                          }
                      });
                       
                      on({id: idSV2}, function(dp) { // triggert bei Aktualisierung und führt Sprachausgabe aus auch wenn doNotDisturb gesetzt ist
                          if (compareTime("08:00", "22:00", "between")) {    
                              alexaSprich(idSpeak, dp.state.val, ausgabelautstaerke2);
                          }
                      });
                       
                      function alexaSprich(idAlexa, text, lautstaerke) {
                          var alteLautstaerke = getState(idAlexa + '.speak-volume').val;
                          setState(idAlexa + '.speak-volume', lautstaerke);
                          setState(idAlexa + '.speak', text);
                          setState(idAlexa + '.speak-volume', alteLautstaerke);
                      }
                      
                      nils50122N Offline
                      nils50122N Offline
                      nils50122
                      wrote on last edited by
                      #18

                      @mbw

                      Gibt es eine Möglichkeit die Systemvariable (idSV und idSV2) nach erfolgreicher Übergabe zu leeren?

                      Ansonsten gibt es momentan immer das Problem, dass bei einem Neustart z.B. der Rega-Instanz, des IOBrokers, der Raspberrymatic die Systemvariable noch einmal übergeben wird.

                      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

                      759

                      Online

                      32.7k

                      Users

                      82.6k

                      Topics

                      1.3m

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

                      • Don't have an account? Register

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