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


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