Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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 ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.6k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    667

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Skript - Alexa Speak wenn zwei Bedingungen erfüllt

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 3 Kommentatoren 2.1k Aufrufe 2 Beobachtet
  • Ä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 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: Asus PN 42 / N100 / 8 GB / 500 GB

      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

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      585

                      Online

                      32.9k

                      Benutzer

                      82.9k

                      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