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. Vorlage/Code snippet Alexa Lautstärke limitieren

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    936

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Vorlage/Code snippet Alexa Lautstärke limitieren

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
1 Beiträge 1 Kommentatoren 212 Aufrufe 1 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.
  • PeoplesP Offline
    PeoplesP Offline
    Peoples
    schrieb am zuletzt editiert von
    #1

    Hi ihr,

    heute möchte ich euch mal wieder einen von mir verwendeten Code-Schnipsel teilen.

    Meine lieben Kids, haben immer wieder meine Nerven traktiert mit dem ständigen Erhöhen der Lautstärke ihrer Alexa-Geräte auf ein Maas in dem Homeoffice fast nicht mehr möglich war. Deshalb dachte ich mir, dass es doch möglich sein muss diese zu limitieren :-)

    Funktion:

    • Erstellung von Datenpunkten für jedes eingetragene Gerät
    • Lautstärke limitieren des gewünschten Geräts
    • Wunschlimit einstellbar
    • Sprachausgabe bei Überschreiten

    So schauen die drei Buttons in meiner Vis dazu aus:
    nicht begrenzt.JPG
    Begrenzt.JPG

    Hier der Code Schnipsel dafür:

    
    
    // -----------------------------------------------------------------------------
    // allgemeine Variablen
    // -----------------------------------------------------------------------------
    var loglevel = 2;                 // Logging on/off
    
    var instanz = '0_userdata.0'; instanz = instanz +'.';
    var pfad0 = 'Multimedia'; pfad0 = pfad0 +'.';
    var pfad1 = 'EcoDots'; pfad1 = pfad1 +'.';
    
    var pfadEchoDevice = 'alexa2.0.Echo-Devices.';
    
    // Text der ausgegeben wird wenn das Maximum überschritten wurde
    var textVolumeLimitExceeded = 'Die Lautstärke kann nicht erhöht werden da sie begrenzt wurde'; 
    
    // Hier die ID's der Devices eintragen
    var Devices = [
                        /*Device ID */       
        /*Echo Bad*/
        {'deviceID':'G090XXXXXXX'}, 
        /*Echo Küche*/
        {'deviceID':'G090XXXXXXX'},
        /*Echo Kinderzimmer 1*/
        {'deviceID':'G09XXXXXXXX'},               
        /*Echo Kinderzimmer 2*/
        {'deviceID':'G09XXXXXXXX'}
        
    ];
    
    
    // #############################################################################
    // #                                                                           #
    // #  Funktion Amazon Echodot Lautstärkebegrenzung                             #
    // #                                                                           #
    // #############################################################################
    
    
    function volumeLimit(deviceID){
        deviceID = deviceID.split('.')[3];
        if(getState(instanz + pfad0 + pfad1 + deviceID + '.volumeLimitActive').val === true && parseInt(getState(pfadEchoDevice + deviceID + '.Player.volume'/*volume*/).val) > getState(instanz + pfad0 + pfad1 + deviceID + '.volumeLimitValue').val){
            setState(pfadEchoDevice + deviceID + '.Player.volume'/*volume*/, getState(instanz + pfad0 + pfad1 + deviceID + '.volumeLimitValue').val)
            setState(pfadEchoDevice + deviceID + '.Commands.speak'/*speak*/, textVolumeLimitExceeded);
            if(loglevel > 1) log('----------- Lautstärke ist:'+getState(pfadEchoDevice + deviceID + '.Player.volume'/*volume*/).val+' und wird eingestellt auf:'+ getState(instanz + pfad0 + pfad1 + deviceID + '.volumeLimitValue').val  + ' -----------');
        }
    }
    
    // #############################################################################
    // #                                                                           #
    // #  Funktion: Objekte anlegen und State Subscription                         #
    // #                                                                           #
    // #############################################################################
    function deviceSubsctiption(dp){ 
        for(var i = 0; i < Object.keys(Devices).length; i++){
            if(loglevel < 3){
                 
                // Datenpunkte anlegen
                createState(instanz + pfad0 + pfad1 + Devices[i].deviceID + '.volumeLimitActive', false, { name: getState(pfadEchoDevice + Devices[i].deviceID + '.Info.name').val + ': Volume Limit active', type: 'boolean' });
                createState(instanz + pfad0 + pfad1 + Devices[i].deviceID + '.volumeLimitValue', 30, { name: getState(pfadEchoDevice + Devices[i].deviceID + '.Info.name').val + ': Volume Limit value', type: 'number' });
                createState(instanz + pfad0 + pfad1 + Devices[i].deviceID + '.doorBellForwarding', false, { name: getState(pfadEchoDevice + Devices[i].deviceID + '.Info.name').val + ': Doorbell forwarding', type: 'boolean' });
                // Subscription anlegen Echo Device
                on({id: pfadEchoDevice + Devices[i].deviceID + '.Player.volume'/*volume*/, change: 'ne'}, function (dp) { 
                        volumeLimit(dp.id);
                });
                // Subscription anlegen Switch
                on({id: instanz + pfad0 + pfad1 + Devices[i].deviceID + '.volumeLimitActive', change: 'ne', val:true}, function (dp) { 
                    var deviceID = dp.id.split('.')[4];
                        setState(instanz + pfad0 + pfad1 + deviceID + '.volumeLimitValue',30);
                        volumeLimit(pfadEchoDevice + deviceID + '.Player.volume');
                });
            } 
        }
    }
    
    setTimeout(function () { deviceSubsctiption()}, 2000);
    
    

    Vielleicht kann ihn ja einer brauchen

    Ich beantworte keine Fragen zu Themen via PN

    1 Antwort Letzte Antwort
    1
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    323

    Online

    32.6k

    Benutzer

    82.2k

    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