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
    10
    1
    187

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

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.
  • nils50122N Offline
    nils50122N Offline
    nils50122
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich bastel nun schon einige Zeit mit Javascript und HomeMatic Programmen herum.

    Mein Anliegen ist folgendes:

    Ich setze auf der HomeMatic aus Programmen verschiedene Variablen auf "true".
    Sollte sich die Variable auf "true" ändern
    UND
    prüfe das Objekt "alexa2.0.Echo-Devices.xxxxxx.Commands.doNotDisturb" ist auf "false"
    DANN setze das Objekt "alexa2.0.Echo-Devices.xxxx.Commands.speak" auf z.B. "Achtung. xxx".

    Momentan habe ich aus den HomeMatic-Programmen per SimpleAPI das speak direkt gesetzt.
    Allerdings fängt Alexa dann auch Nachts an diese Sprachausgaben zu tätigen.
    Eine Übergangslösung war, per SimpleAPI das command.ssml zu setzen, hier wird anscheinend der do not disturb modus berücksichtigt. Dieses funktioniert allerdings bei mir nicht zuverlässig genug.

    Wie müsste das Javascript für diesen Fall aussehen?

    paul53P 1 Antwort Letzte Antwort
    0
    • nils50122N nils50122

      Hallo,

      ich bastel nun schon einige Zeit mit Javascript und HomeMatic Programmen herum.

      Mein Anliegen ist folgendes:

      Ich setze auf der HomeMatic aus Programmen verschiedene Variablen auf "true".
      Sollte sich die Variable auf "true" ändern
      UND
      prüfe das Objekt "alexa2.0.Echo-Devices.xxxxxx.Commands.doNotDisturb" ist auf "false"
      DANN setze das Objekt "alexa2.0.Echo-Devices.xxxx.Commands.speak" auf z.B. "Achtung. xxx".

      Momentan habe ich aus den HomeMatic-Programmen per SimpleAPI das speak direkt gesetzt.
      Allerdings fängt Alexa dann auch Nachts an diese Sprachausgaben zu tätigen.
      Eine Übergangslösung war, per SimpleAPI das command.ssml zu setzen, hier wird anscheinend der do not disturb modus berücksichtigt. Dieses funktioniert allerdings bei mir nicht zuverlässig genug.

      Wie müsste das Javascript für diesen Fall aussehen?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

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

      Sollte sich die Variable auf "true" ändern
      UND
      prüfe das Objekt "alexa2.0.Echo-Devices.xxxxxx.Commands.doNotDisturb" ist auf "false"
      DANN setze das Objekt "alexa2.0.Echo-Devices.xxxx.Commands.speak" auf z.B. "Achtung. xxx".

      Eine System-Variable der Rega ?

      const idSV = 'hm-rega.0.xyz'; // Anpassen !
      const idND = 'alexa2.0.Echo-Devices.xxxxxx.Commands.doNotDisturb';
      const idSpeak = 'alexa2.0.Echo-Devices.xxxx.Commands.speak';
      
      on(idSV, function(dp) {
         if(dp.state.val && !getState(idND).val) setState(idSpeak, 'Achtung.xxx');
      });
      

      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

      nils50122N 1 Antwort Letzte Antwort
      1
      • paul53P paul53

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

        Sollte sich die Variable auf "true" ändern
        UND
        prüfe das Objekt "alexa2.0.Echo-Devices.xxxxxx.Commands.doNotDisturb" ist auf "false"
        DANN setze das Objekt "alexa2.0.Echo-Devices.xxxx.Commands.speak" auf z.B. "Achtung. xxx".

        Eine System-Variable der Rega ?

        const idSV = 'hm-rega.0.xyz'; // Anpassen !
        const idND = 'alexa2.0.Echo-Devices.xxxxxx.Commands.doNotDisturb';
        const idSpeak = 'alexa2.0.Echo-Devices.xxxx.Commands.speak';
        
        on(idSV, function(dp) {
           if(dp.state.val && !getState(idND).val) setState(idSpeak, 'Achtung.xxx');
        });
        
        nils50122N Offline
        nils50122N Offline
        nils50122
        schrieb am zuletzt editiert von nils50122
        #3

        @paul53

        Danke für das Skript.

        Leider löst es anscheinend nicht aus.

        Die rega Variable hat sich aktualisiert.

        Dieser Text soll auch nur bei "true" ausgeführt werden.

        Bei "false" soll ein anderer Text ausgeführt werden.

        Sieht wie folgt aus:

        const idSV = 'hm-rega.0.14932'; // Anpassen !
        const idND = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.doNotDisturb';
        const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.speak';
         
        on(idSV, function(dp) {
           if(dp.state.val && !getState(idND).val) setState(idSpeak, 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21');
        });
        
        paul53P 1 Antwort Letzte Antwort
        0
        • nils50122N nils50122

          @paul53

          Danke für das Skript.

          Leider löst es anscheinend nicht aus.

          Die rega Variable hat sich aktualisiert.

          Dieser Text soll auch nur bei "true" ausgeführt werden.

          Bei "false" soll ein anderer Text ausgeführt werden.

          Sieht wie folgt aus:

          const idSV = 'hm-rega.0.14932'; // Anpassen !
          const idND = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.doNotDisturb';
          const idSpeak = 'alexa2.0.Echo-Devices.xxDeviceIDxx.Commands.speak';
           
          on(idSV, function(dp) {
             if(dp.state.val && !getState(idND).val) setState(idSpeak, 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21');
          });
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @nils50122 sagte:

          Die rega Variable hat sich aktualisiert.
          Dieser Text soll auch nur bei "true" ausgeführt werden.
          Bei "false" soll ein anderer Text ausgeführt werden.

          So wird auch nur bei Wertänderung getriggert.

          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 = 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21');
                setState(idSpeak, txt);
             }
          });
          

          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

          nils50122N 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @nils50122 sagte:

            Die rega Variable hat sich aktualisiert.
            Dieser Text soll auch nur bei "true" ausgeführt werden.
            Bei "false" soll ein anderer Text ausgeführt werden.

            So wird auch nur bei Wertänderung getriggert.

            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 = 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21');
                  setState(idSpeak, txt);
               }
            });
            
            nils50122N Offline
            nils50122N Offline
            nils50122
            schrieb am zuletzt editiert von
            #5

            @paul53

            javascript.0	2020-07-10 07:20:47.824	error	(2329) at processTicksAndRejections (internal/process/task_queues.js:97:5)
            javascript.0	2020-07-10 07:20:47.823	error	(2329) at runMicrotasks (<anonymous>)
            javascript.0	2020-07-10 07:20:47.822	error	(2329) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
            javascript.0	2020-07-10 07:20:47.821	error	(2329) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
            javascript.0	2020-07-10 07:20:47.820	error	(2329) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:608:33
            javascript.0	2020-07-10 07:20:47.819	error	(2329) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1112:17
            javascript.0	2020-07-10 07:20:47.818	error	(2329) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1521:17
            javascript.0	2020-07-10 07:20:47.817	error	(2329) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1468:37)
            javascript.0	2020-07-10 07:20:47.815	error	(2329) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1245:28)
            javascript.0	2020-07-10 07:20:47.814	error	(2329) at Object.createScript (vm.js:263:10)
            javascript.0	2020-07-10 07:20:47.813	error	(2329) at new Script (vm.js:88:7)
            javascript.0	2020-07-10 07:20:47.812	error	(2329) SyntaxError: Unexpected token ')'
            javascript.0	2020-07-10 07:20:47.811	error	(2329) ^
            javascript.0	2020-07-10 07:20:47.810	error	(2329) if(dp.state.val) txt = 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21');
            javascript.0	2020-07-10 07:20:47.808	error	at script.js.Alexa_TTS_Regenalarm_Ankleidezimmer_Soundbar_Wohnzimmer:8
            javascript.0	2020-07-10 07:20:47.808	error	(2329) script.js.Alexa_TTS_Regenalarm_Ankleidezimmer_Soundbar_Wohnzimmer compile failed:
            
            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              mbw
              schrieb am zuletzt editiert von
              #6
              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 = 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21';
                    setState(idSpeak, txt);
                 }
              });
              
              nils50122N 1 Antwort Letzte Antwort
              1
              • M mbw
                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 = 'Ich+habe+Regen+erkannt+und+das+Dachfenster+im+Ankleidezimmer+ist+noch+offen%21';
                      setState(idSpeak, txt);
                   }
                });
                
                nils50122N Offline
                nils50122N Offline
                nils50122
                schrieb am zuletzt editiert von
                #7

                @mbw

                Hatte es in der Zwischenzeit schon selber gefunden, danke.

                @paul53 oder @mbw :

                Ich möchte nun die Anzahl der Scripts auf dem IOBroker reduzieren, bzw. hier nicht jedes mal den neuen Text definieren.

                Ich ändere nun die Systemvariable "Alexa_TTS" auf der HomeMatic und beschreibe diese mit dem Ausgabetext.
                Bei Aktualisierung der Systemvariable "Alexa_TTS" triggert ein HM-Programm die Rega im IOBroker zur sofortigen Aktualisierung.

                Wie ändere ich nun das Javascript ab, sodass es jedes mal wenn die SV aktualisiert wird, dessen Text als speak ausgibt? Natürlich unter Berücksichtigung des Do not disturb.

                1 Antwort Letzte Antwort
                0
                • 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

                                      885

                                      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