Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Vorlage/Code snippet Alexa Lautstärke limitieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Vorlage/Code snippet Alexa Lautstärke limitieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • Peoples
      Peoples last edited by

      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

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

      Support us

      ioBroker
      Community Adapters
      Donate

      777
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      javascript
      1
      1
      155
      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