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

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

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    324

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

Skript - Alexa Speak wenn zwei Bedingungen erfüllt

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 3 Kommentatoren 1.8k Aufrufe 2 Watching
  • Ä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.
  • M Offline
    M Offline
    mbw
    schrieb am zuletzt editiert von
    #8

    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 1 Antwort Letzte Antwort
    1
    • 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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          mbw
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 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

                        538

                        Online

                        32.5k

                        Benutzer

                        81.7k

                        Themen

                        1.3m

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

                        • Du hast noch kein Konto? Registrieren

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