Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Alexa Quittierungston (Ping bzw. "Okay") killen

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Alexa Quittierungston (Ping bzw. "Okay") killen

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      Nick.The.Bird.92 last edited by Nick.The.Bird.92

      Moin Zusammen,

      versuche mich gerade etwas am coden und habe Alexa´s Quittierungscode reduzeirt bekommen.

      Alexa redet normal mit euch bei Standardfragen: Wie ist das Wetter heute?

      Wenn ihr allerdings zb. Lichter steuert wird der Quittierungston gekillt, dafür einfach folgendes Script verwenden. In diesem Script ist ein Alexagerät benannt.

      Es gibt nur eine Voraussetzung, ich braucht den IOT Adapter, dieser reagiert nämlich unverzüglich auf den Sprachbefehl eurer Lampen und Geräte. Über den Alexa Adapter habe ich leider keine Möglichkeit gefunden zuverlässig zu triggern. Meine Lampen laufen bisher eh gesammelt über

      Das Skript stellt die Lautstärke des Gerätes entspannt auf 0 und danach wieder auf die Lautstärke die vorher eingestellt war.
      Alexa steuert leider mit 10% Lautstärke gegen für den Quittierungston, aber immerhin noch besser als das laute Geräusch.

      Zeile 2 Seriennummer vom Echo eingeben.
      Zeile 5 könnt ihr noch einstellen wie lange Alexa Stummgeschaltet sein soll, nicht unter 1300ms ansonsten funktioniert adaptive Erhöhung nach dem muten nicht
      Zeile 6: DEBUG auf true setzen um Infos im Log zu erhalten

      /***** CONFIG *****/
      const SERIAL = 'G091ET14152604Q0';  // Schlafzimmer Echo
      const VOL_ID = `alexa2.0.Echo-Devices.${SERIAL}.Player.volume`; // 0–100
      const TRIGGER_ID = 'iot.0.smart.lastResponse';
      const MUTE_MS = 1300; // nicht unter 1300ms ansonsten funktioniert adaptive Erhöhung nicht 
      const DEBUG = true;
      /***** END CONFIG *****/
      
      function logD(...a){ if (DEBUG) console.log('[Anti-Ping]', ...a); }
      
      /** Persistenter Cache (über Neustarts hinweg) */
      const CACHE_ID = '0_userdata.0.antiPingEcho.lastVol';
      if (!existsState(CACHE_ID)) {
        createState(CACHE_ID, 30, { name: 'Letzte Echo-Lautstärke >0', type: 'number', read: true, write: true });
      }
      
      let timer = null;
      let isMuting = false;
      let lockUntil = 0; // Debounce
      
      function clamp(v){ return Math.max(0, Math.min(100, v)); }
      
      function readVol(){
        const s = getState(VOL_ID);
        return (s && typeof s.val === 'number') ? s.val : null;
      }
      
      function saveCachedVol(v){
        if (typeof v === 'number' && v > 0) {
          setState(CACHE_ID, clamp(v), true); // ack=true, reiner Cache
          logD('Cache gespeichert:', v);
        }
      }
      
      function readCachedVol(){
        const s = getState(CACHE_ID);
        const v = (s && typeof s.val === 'number') ? s.val : null;
        return (v !== null && v > 0) ? v : null;
      }
      
      function setVol(v){
        setState(VOL_ID, clamp(v), false); // schreiben
      }
      
      /** Lautstärke-Änderungen mitschneiden – aber nicht während Stummschalten */
      on({ id: VOL_ID, change: 'ne' }, obj => {
        const v = obj?.state?.val;
        if (!isMuting && typeof v === 'number' && v > 0) {
          saveCachedVol(v);
        }
      });
      
      /** Hauptfunktion */
      function mutePing(){
        const now = Date.now();
        if (now < lockUntil) {
          logD('Debounce aktiv, überspringe Trigger.');
          return;
        }
        lockUntil = now + 1500; // 1,5s harte Entprellung
      
        // Vor dem Mute aktuellen Wert holen; wenn der 0/invalid ist, nimm den persistenten Cache
        const current = readVol();
        const cached = readCachedVol();
        const restoreTarget = (typeof current === 'number' && current > 0) ? current : cached;
      
        if (restoreTarget === null) {
          logD('Kein gültiger Restore-Wert vorhanden → kein Restore, nur Mute.');
        } else {
          logD('Geplanter Restore-Wert:', restoreTarget);
        }
      
        if (timer){ clearTimeout(timer); timer = null; }
      
        isMuting = true;
        setVol(0);
        logD('Echo → Volume 0');
      
        timer = setTimeout(() => {
          if (restoreTarget !== null) {
            setVol(restoreTarget); // **keine** 10%-Fallbacks mehr
            logD(`Echo → Volume wiederhergestellt auf ${restoreTarget}`);
          } else {
            logD('Kein Restore möglich (kein Cachewert).');
          }
          isMuting = false;
          timer = null;
        }, MUTE_MS);
      }
      
      /** Trigger: kurz bevor Alexa „Okay“ sagt */
      on({ id: TRIGGER_ID, change: 'ne' }, obj => {
        const resp = String(obj?.state?.val || '');
        if (/ok|okay|eingeschaltet|ausgeschaltet/i.test(resp)) {
          logD('Trigger durch Antwort:', resp);
          mutePing();
        }
      });
      
      
      
      1 Reply Last reply Reply Quote 0
      • Negalein
        Negalein Global Moderator last edited by Negalein

        @nick-the-bird-92 sagte in Alexa Quittierungston (Ping bzw. "Okay") killen:

        versuche mich gerade etwas am coden und habe Alexa´s Quittierungscode zuverlässig gekillt bekommen.

        warum mit Script?
        Kannst direkt in der App machen.

        • Alexa-App öffnen
        • Unten rechts auf Mehr (⋯) tippen
        • Einstellungen → Geräteeinstellungen
        • Dein Echo-Gerät auswählen
        • Runterscrollen zu Töne
        • Dort gibt es den Bereich „Audio-Bestätigung“ oder „Sprachfeedback“ (je nach Version der App).
        • Deaktivieren – dann macht Alexa keinen Signalton mehr, wenn sie z. B. eine Lampe schaltet.

        Du kannst auch sagen:
        „Alexa, schalte Audio-Bestätigungen aus.“

        👉 Danach quittiert Alexa Smart-Home-Befehle nur noch mit einer kurzen Sprachmeldung oder manchmal auch ganz ohne Ton – je nach Einstellung.

        N 1 Reply Last reply Reply Quote 0
        • N
          Nick.The.Bird.92 @Negalein last edited by Nick.The.Bird.92

          @negalein Moin, also bei mir gibt es diese Einstellung nicht. Ist die IOS App und aktuell. Es gibt die Anfragetöne: Start der Anfrage und Ende der Anfrage, aber dies ist nicht der Quittierungston (dieser kommt im Kurzmodus), alternative ist bei mir nur das nervige "okay"

          Sprachbefehl funktioniert nicht: Meldung: Èntschuldige welches Gerät?

          Negalein 1 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @Nick.The.Bird.92 last edited by

            @nick-the-bird-92

            Ok, hab gerade bei mir geschaut. Finde es auch nicht mehr (Android).
            Habe es schon vor Ewigkeiten deaktiviert. Funktioniert noch immer, obwohl App-Punkt nicht mehr existiert.

            N 1 Reply Last reply Reply Quote 0
            • N
              Nick.The.Bird.92 @Negalein last edited by

              @negalein oha das ist mal fies haha - ich versuche jetzt gerade nur noch das ducking zu deaktivieren - alexa reduziert leider 15 Sekunden lang die Lautstärke des Sonos Gerätes - nicht so schön

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              982
              Online

              32.1k
              Users

              80.7k
              Topics

              1.3m
              Posts

              2
              5
              47
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo