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
    328

  • 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 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

                      418

                      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