Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Denon Skript

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Denon Skript

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

      so, die vorerst letzte änderung:

      Schönheitsfehler behoben

      neue Funktionen: 1: Systemname wird jetzt vom Gerät abgerufen 2: es wird angezeit wann der AVR '' fertig gebootet'' hat, also wenn es "klick" gemacht hat (das ist wichtig wenn man z.b. mit Alexa steuern will, denn erst wenn der AVR vollständig hochgefahren ist, werden die kommandos richtig umgesetzt!)

      ! ```
      `//Kontakt: s-nolte@htp-tel.de
      //ioBroker Forum: Lucky
      var net = require('net');
      ! // System
      createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"});
      createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false});
      createState('javascript.0.Denon.System.IP_Adresse', '000.000.000.000',{type: "string", role: "AVR IP Adresse"});
      createState('javascript.0.Denon.System.Trigger_1', false,{type: "boolean", role: "Trigger 1"});
      createState('javascript.0.Denon.System.Trigger_2', false,{type: "boolean", role: "Trigger 2"});
      createState('javascript.0.Denon.System.Command', '',{type: "string", role: "Command to AVR"});
      createState('javascript.0.Denon.System.Display_Dimmer',0,{type: "number", role: "FL Display Dimmer",states: "0:BRI;1:DIM;2:DAR;3:OFF"});
      createState('javascript.0.Denon.System.Verbunden',false,{type: "boolean", role: "Verbindung hergestellt",write:false});
      createState('javascript.0.Denon.System.Name',{type: "string", role: "Netzwerk-Name",write:false});
      ! //OSD
      createState('javascript.0.Denon.OSD.OSD_Info_List0', 'init',{type: "string", role: "Onscreen Display Info List00",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List1', 'init',{type: "string", role: "Onscreen Display Info List01",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List2', 'init',{type: "string", role: "Onscreen Display Info List02",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List3', 'init',{type: "string", role: "Onscreen Display Info List03",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List4', 'init',{type: "string", role: "Onscreen Display Info List04",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List5', 'init',{type: "string", role: "Onscreen Display Info List05",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List6', 'init',{type: "string", role: "Onscreen Display Info List06",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List7', 'init',{type: "string", role: "Onscreen Display Info List07",write:false});
      createState('javascript.0.Denon.OSD.OSD_Info_List8', 'init',{type: "string", role: "Onscreen Display Info List08",write:false});
      ! //Controls
      createState('javascript.0.Denon.Control.Play', false,{type:"boolean", role: "button"});
      createState('javascript.0.Denon.Control.Stop', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Control.Pause', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Control.Skip_Plus', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Control.Skip_Minus', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Control.Page_Next', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Control.Page_Previous', false,{type: "boolean", role: "button"});
      ! //Tuner Control
      createState('javascript.0.Denon.Tuner_Control.Frequency_UP', false,{type:"boolean", role: "button"});
      createState('javascript.0.Denon.Tuner_Control.Frequency_DOWN', false,{type:"boolean", role: "button"});
      createState('javascript.0.Denon.Tuner_Control.Preset_UP', false,{type:"boolean", role: "button"});
      createState('javascript.0.Denon.Tuner_Control.Preset_DOWN', false,{type:"boolean", role: "button"});
      createState('javascript.0.Denon.Tuner_Control.RDS_Station_Name', 'init',{type:"string", role: "RDS Station Name",write:false});
      ! //Zone_Main
      createState('javascript.0.Denon.Zone_Main.Power', false,{type: "boolean", role: "Power Status Zone Main"});
      createState('javascript.0.Denon.Zone_Main.Mute', false,{type: "boolean", role: "Mute Status"});
      createState('javascript.0.Denon.Zone_Main.Master_Volume', 0,{type: "number", role: "Master Volume"});
      createState('javascript.0.Denon.Zone_Main.Master_Volume_UP', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Zone_Main.Master_Volume_DOWN', false,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Zone_Main.Master_Volume_Max', 0,{type: "number", role: "Master Volume Max",write:false});
      createState('javascript.0.Denon.Zone_Main.Video_Input', 1,{type: "number", role: "Selected Video Input",
      states:"0:DVD;1:BD;2:TV;3:SAT/CBL;4:MPLAY;5:GAME;6:AUX1;7:AUX2;8:AUX3;9:AUX4;10:AUX5;11:AUX6;12:AUX7;13:CD"});
      createState('javascript.0.Denon.Zone_Main.Video_State', false,{type: "boolean", role: "Video ON/OFF"});
      createState('javascript.0.Denon.Zone_Main.Select_Input',5,{type: "number", role: "Select Input",
      states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
      createState('javascript.0.Denon.Zone_Main.Surround_Mode', 'init',{type: "string", role: "Surround Modus",write:false});
      createState('javascript.0.Denon.Zone_Main.Ratio_Mode', 'init',{type: "string", role: "Ratio Modus",write:false});
      createState('javascript.0.Denon.Zone_Main.Resolution', 'init',{type: "string", role: "Video Resolution",write:false});
      createState('javascript.0.Denon.Zone_Main.Sound_Parameter', 'init',{type: "string", role: "Sound_Parameter",write:false});
      createState('javascript.0.Denon.Zone_Main.HDMI_Monitor',0,{type: "number", role: "HDMI Monitor Out",states: "0:MONIAUTO;1:MONI1;2:MONI2"});
      ! //Zone 2
      createState('javascript.0.Denon.Zone_2.Power_Zone2', false,{type: "boolean", role: "Power Status Zone 2"});
      createState('javascript.0.Denon.Zone_2.Mute', false,{type: "boolean", role: "Mute Status Zone 2"});
      createState('javascript.0.Denon.Zone_2.Volume', 0,{type: "number", role: "Zone 2 Volume"});
      createState('javascript.0.Denon.Zone_2.Volume_UP', 0,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Zone_2.Volume_DOWN', 0,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Zone_2.Select_Input',5,{type: "number", role: "Select Input",
      states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
      ! //Zone 3
      createState('javascript.0.Denon.Zone_3.Power_Zone3', false,{type: "boolean", role: "Power Status Zone 3"});
      createState('javascript.0.Denon.Zone_3.Mute', false,{type: "boolean", role: "Mute Status Zone 3"});
      createState('javascript.0.Denon.Zone_3.Volume', 0,{type: "number", role: "Zone 3 Volume"});
      createState('javascript.0.Denon.Zone_3.Volume_UP', 0,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Zone_3.Volume_DOWN', 0,{type: "boolean", role: "button"});
      createState('javascript.0.Denon.Zone_3.Select_Input',5,{type: "number", role: "Select Input",
      states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
      ! // Variablen-------------------------------------------------------------------------
      var AVR_Command =['PW','MVMAX','MV','CV','MU','SI','ZM','SD','DC','SV','SLP','STBY','ECO','MS','VS','PS','PV','Z2','Z2MU','Z2CS','Z2CV','Z2HPF',
      'Z2PS','Z2HDS','Z2SLP','Z2STBY','Z3','Z3MU','Z3CS','Z3CV','Z3HPF','Z3PS','Z3SLP','Z3STBY','TFANNAME','NSET1','NSE','TR','DIM','NSFRN']; // räume den mist später auf 😉
      var t_request = 100; //beim ersten Start Funktion update aufrufen mit 100ms zwischen den Anfragen, maximal 50ms !
      var client;
      var PW_Request =0;
      ! setState('javascript.0.Denon.System.Verbunden',val=false,akt=false);
      checkIP(getState('javascript.0.Denon.System.IP_Adresse').val);
      ! function checkIP(IP){ //IP Adresse prüfen
      if(net.isIPv4(IP)){
      setTimeout(function () {
      client=Connect(IP);
      },2000);
      }
      else{console.error('ungültige IP Adresse')}
      }

      function Connect(IP){ // zu Server Verbinden

      ! var client = net.connect({host:IP, port:23});
      client.setKeepAlive(true,5000);

         console.log('Connectig...');
      
      client.on('error',function(error) {
          console.error(error);
          killClient(client);
      }); 
      
      client.on('connect', function () {          //Verbindung hergestellt
      console.log('Verbunden mit Denon AVR !');
       {setState('javascript.0.Denon.System.Verbunden',val=true,akt=true)}
        update(t_request); 
      });
      

      ! client.on('end', function () { //die Gegenseite hat die Verbindung geschlossen
      {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
      console.warn('Denon AVR hat die Verbindung geschlossen !');
      killClient(client);
      });

       client.on('data', function (data) {
           console.log(data.toString());
           response(data);
      
       });
      

      return client;
      }//end of Function Connect

      ! function killClient(client){
      {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
      client.destroy();
      client.unref();
      console.log('Connection closed !');
      }
      ! // Funktion Nachricht Senden----------------------------------------------------------
      function sendMessage(message) {
      if(getState('javascript.0.Denon.System.Verbunden').val===true){

      client.write(message+'\r');
      if (message=='PWON'||'ZMON'||'Z2ON'||'Z3ON'){PW_Request=1}
      console.log('Anfrage: '+ message );
      }
      

      }
      //Daten anfordern--------------------------------------------------------------------
      function update(Time){
      console.log('Update Start');
      var i_Pollen=0;
      var Request =['NSET1 ?','NSFRN ?','ZM?','MU?','PW?','SI?','SV?','MS?','MV?','Z2?','Z2MU?','Z3?','Z3MU?','NSE','VSSC ?','VSASP ?','VSMONI ?','TR?','DIM ?'];
      Intervall = setInterval(function () {

          sendMessage(Request[i_Pollen]);
      
          i_Pollen++;
      
              if (i_Pollen==Request.length){
                  i_Pollen=0;
                  clearInterval(Intervall);
              }
      
      }, Time);
      

      return true;
      }

      ! function StateText_toArray (StateNames){
      var StateName = StateNames.split(';');
      var StateArr=[];
      for(var i = 0; i < StateName.length; i++) {
      var ele = StateName[i].split(':');
      StateArr[ele[0]] = ele[1];
      }

      return StateArr;
      }

      ! // Daten empfangen------------------------------------------------------------------
      ! function response (data) {

      ! var AVR_Response=data.toString().replace(/[\n\r]/g, ''); // Steuerzeichen "CR" entfernen
      ! for (i = 0; i < AVR_Command.length; i++) {

          var search_index=AVR_Response.search(AVR_Command[i]);
      
          if (search_index===0){
              break;
          }
      
      }
      
      var id,val;
      
      switch(AVR_Command[i]){  
          case 'MU':
              // to Request MU?
              if (AVR_Response=='MUOFF'){setState("javascript.0.Denon.Zone_Main.Mute",false,akt=true)}
              if (AVR_Response=='MUON'){setState("javascript.0.Denon.Zone_Main.Mute",true,akt=true)}
             break;
      
          case 'PW':  
              // to Request PW?
             if (AVR_Response=='PWSTANDBY'){
                 setState('javascript.0.Denon.System.Power_System',false,akt=true);
                 setState('javascript.0.Denon.System.System_Ready',false,akt=true);
             }
             if (AVR_Response=='PWON'){
                 if(PW_Request==1){
                 setState('javascript.0.Denon.System.Power_System',true,akt=true);
                 PW_Request++;
                 }
                 else if(PW_Request==2){
                     setState('javascript.0.Denon.System.System_Ready',true,akt=true);
                     PW_Request=0;
                 }
      
             }
      
             break;
      
          case'Z2':
             if (AVR_Response=='Z2OFF'){setState('javascript.0.Denon.Zone_2.Power_Zone2',false,akt=true)}
             else if (AVR_Response=='Z2ON'){setState('javascript.0.Denon.Zone_2.Power_Zone2',true,akt=true)}
             else if (AVR_Response=='Z2MUON'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
             else if (AVR_Response=='Z2MUOFF'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
              else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
      
                  setState("javascript.0.Denon.Zone_2.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
               else {
      
                AVR_Response=AVR_Response.slice(2,AVR_Response.length);
              id='javascript.0.Denon.Zone_2.Select_Input';
              val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
              if (val>=0){setState(id,val,akt=true);}
               }
              break;
      
          case'Z3':
             if (AVR_Response=='Z3OFF'){setState('javascript.0.Denon.Zone_3.Power_Zone3',false,akt=true)}
             else if (AVR_Response=='Z3ON'){setState('javascript.0.Denon.Zone_3.Power_Zone3',true,akt=true)}
             else if (AVR_Response=='Z3MUON'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
             else if (AVR_Response=='Z3MUOFF'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
              else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
      
                  setState("javascript.0.Denon.Zone_3.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
               else {
      
                AVR_Response=AVR_Response.slice(2,AVR_Response.length);
              id='javascript.0.Denon.Zone_3.Select_Input';
              val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
              if (val>=0){setState(id,val,akt=true);}
               }
              break;    
      
          case 'MV':
              // to Request MV?
              AVR_Response=AVR_Response.slice(2,AVR_Response.length);
              if (AVR_Response.length<3){AVR_Response=AVR_Response+'0'}
              AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
             setState("javascript.0.Denon.Zone_Main.Master_Volume",parseFloat(AVR_Response),akt=true);
      
             break;
      
           case 'MVMAX':
              AVR_Response=AVR_Response.slice(6,AVR_Response.length);
              AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
             setState("javascript.0.Denon.Zone_Main.Master_Volume_Max",parseFloat(AVR_Response),akt=true);
             break;  
      
          case 'SV': 
              // to Request SV?
              if (AVR_Response=='SVOFF'){setState("javascript.0.Denon.Zone_Main.Video_State",false,akt=true)}
              else if (AVR_Response=='SVON'){setState("javascript.0.Denon.Zone_Main.Video_State",true,akt=true)}
              else {
      
              AVR_Response=AVR_Response.slice(2,AVR_Response.length);
              id = 'javascript.0.Denon.Zone_Main.Video_Input';
              val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response); //suche in array nach element
      
              setState(id,val,akt=true);
              }
             break;
      
          case 'SI':
              // to Request SI?
              AVR_Response=AVR_Response.slice(2,AVR_Response.length);
              id='javascript.0.Denon.Zone_Main.Select_Input';
              val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
      
              setState(id,val,akt=true);
             break;  
      
          case 'ZM':
              // to Request ZM?
              if (AVR_Response=='ZMOFF'){setState('javascript.0.Denon.Zone_Main.Power',false,akt=true)}
              if (AVR_Response=='ZMON'){setState('javascript.0.Denon.Zone_Main.Power',true,akt=true)}
             break;
      
          case 'MS':
              // to Request MS? 
              AVR_Response=AVR_Response.slice(2,AVR_Response.length);
              setState("javascript.0.Denon.Zone_Main.Surround_Mode",AVR_Response,akt=true);
             break;
      
          case 'VS':
      
              // to Request VSASP ?
              id = "javascript.0.Denon.Zone_Main.Ratio_Mode";
              if (AVR_Response=='VSASPFUL'){setState(id,'16:9',akt=true)}
              else if (AVR_Response=='VSASPNRM'){setState(id,'4:3',akt=true)}
      
              // to Request VSSC ?
              id = "javascript.0.Denon.Zone_Main.Resolution";
              if (AVR_Response=='VSSC48P'){setState(id,'480p/576p',akt=true)}
              else if (AVR_Response=='VSSC10I'){setState(id,'1080i',akt=true)}
              else if (AVR_Response=='VSSC72P'){setState(id,'720p',akt=true)}
              else if (AVR_Response=='VSSC10P'){setState(id,'1080p',akt=true)}
              else if (AVR_Response=='VSSC10P24'){setState(id,'1080p:24Hz',akt=true)}
              else if (AVR_Response=='VSSC4K'){setState(id,'4K',akt=true)}
              else if (AVR_Response=='VSSC4KF'){setState(id,'4K 60/50Hz',akt=true)}
              else if (AVR_Response=='VSSCAUTO'){setState(id,'AUTO',akt=true)}
      
              //to Request MONI ? 
              id='javascript.0.Denon.Zone_Main.HDMI_Monitor';
               if (AVR_Response=='VSMONIAUTO'){setState(id,0,akt=true)}
               else if (AVR_Response=='VSMONI1'){setState(id,1,akt=true)}
               else if (AVR_Response=='VSMONI2'){setState(id,2,akt=true)}
             break; 
      
          case 'PS':
      
              // to Request PSMODE: ?
              setState("javascript.0.Denon.Zone_Main.Sound_Parameter",AVR_Response.slice(7,AVR_Response.length),akt=true);
              break;
      
          case 'NSE':
      
                // to Request NSE  // Achtung ohne ? 
              id='javascript.0.Denon.OSD.OSD_Info_List'+AVR_Response.slice(3, 4);
      
              if (getState(id)) {             //prüfen ob State vorhanden ist
              setState (id,AVR_Response=AVR_Response.slice(4,AVR_Response.length),akt=true);
              }
      
              break;
      
          case 'TR':
      
              if (AVR_Response=='TR1 OFF'){setState('javascript.0.Denon.System.Trigger_1',false,akt=true)}
              else if (AVR_Response=='TR1 ON'){setState('javascript.0.Denon.System.Trigger_1',true,akt=true)}
              else if (AVR_Response=='TR2 OFF'){setState('javascript.0.Denon.System.Trigger_2',false,akt=true)}
              else if (AVR_Response=='TR2 ON'){setState('javascript.0.Denon.System.Trigger_2',true,akt=true)}
              break;
      
          case 'DIM':
               AVR_Response=AVR_Response.slice(4,AVR_Response.length);
              id='javascript.0.Denon.System.Display_Dimmer';
              val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
      
              setState(id,val,akt=true);
      
              break;
      
          case 'TFANNAME':
               setState('javascript.0.Denon.Tuner_Control.RDS_Station_Name',val=AVR_Response.slice(8,AVR_Response.length),akt=true);
              break;
      
          case 'NSET1':
              if (AVR_Response.slice(5,8)=='IPA'){
                  var IPstring=AVR_Response.slice(9,AVR_Response.length);
                  if(IPstring[12]=='0'){
                  IPstring=IPstring.substr(0, 12) + '' + IPstring.substr(13,14);
                  }
      

      ! setState('javascript.0.Denon.System.IP_Adresse',val=IPstring,akt=true);

              }
              break;    
      
          case 'NSFRN': 
              setState('javascript.0.Denon.System.Name',val=AVR_Response.slice(5,AVR_Response.length),akt=true);
              break;
      
          default:
              //console.log('häääää????');
      }
      

      }

      //--------------------------------------------------------------------------------------
      on('javascript.0.Denon.System.IP_Adresse', function (obj){
      if(getState('javascript.0.Denon.System.Verbunden').val===true){

      killClient(client);
         checkIP(obj.state.val);
      }
      else{checkIP(obj.state.val)}
      

      });

      ! on({id:'javascript.0.Denon.System.UPDATE',val:true}, function (obj){

         update(t_request);
      

      });

      ! on({id:"javascript.0.Denon.System.Command",change:"any"}, function (obj){sendMessage(obj.state.val+'')});
      ! on("javascript.0.Denon.System.Power_System", function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){
      sendMessage('PWON');
      }
      else{sendMessage('PWOFF')}
      }
      });
      ! on('javascript.0.Denon.Zone_Main.Power', function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){
      sendMessage('ZMON');
      }
      else{sendMessage('ZMOFF')}
      }
      });
      ! on('javascript.0.Denon.Zone_2.Power_Zone2', function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){sendMessage('Z2ON')}
      else{sendMessage('Z2OFF')}
      }
      });
      ! on('javascript.0.Denon.Zone_3.Power_Zone3', function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){sendMessage('Z3ON')}
      else{sendMessage('Z3OFF')}
      }
      });
      ! on("javascript.0.Denon.Zone_Main.Mute", function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){sendMessage('MUON')}
      else{sendMessage('MUOFF')}
      }
      });
      ! on("javascript.0.Denon.Zone_2.Mute", function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){sendMessage('Z2MUON')}
      else{sendMessage('Z2MUOFF')}
      }
      });
      ! on("javascript.0.Denon.Zone_3.Mute", function (obj){
      if (!obj.state.ack) {
      if (obj.state.val){sendMessage('Z3MUON')}
      else{sendMessage('Z3MUOFF')}
      }
      });
      ! on("javascript.0.Denon.Zone_Main.Master_Volume", function (obj){
      if (!obj.state.ack) {
      sendMessage('MV'+obj.state.val+'');
      }
      });
      ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_UP",val:true}, function (obj){
      if (!obj.state.ack) {
      sendMessage('MVUP'+'');
      }
      });
      ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_DOWN",val:true}, function (obj){
      if (!obj.state.ack) {
      sendMessage('MVDOWN'+'');
      }
      });
      ! on("javascript.0.Denon.Zone_2.Volume", function (obj){
      if (!obj.state.ack) {
      sendMessage('Z2'+obj.state.val+'');
      }
      });
      ! on({id:"javascript.0.Denon.Zone_2.Volume_UP",val:true}, function (obj){
      if (!obj.state.ack) {
      sendMessage('Z2UP'+'');
      }
      });
      ! on({id:"javascript.0.Denon.Zone_2.Volume_DOWN",val:true}, function (obj){
      if (!obj.state.ack) {
      sendMessage('Z2DOWN'+'');
      }
      });
      ! on("javascript.0.Denon.Zone_3.Volume", function (obj){
      if (!obj.state.ack) {
      sendMessage('Z3'+obj.state.val+'');
      }
      });
      ! on({id:"javascript.0.Denon.Zone_3.Volume_UP",val:true}, function (obj){
      if (!obj.state.ack) {
      sendMessage('Z3UP'+'');
      }
      });
      ! on({id:"javascript.0.Denon.Zone_3.Volume_DOWN",val:true}, function (obj){
      if (!obj.state.ack) {
      sendMessage('Z3DOWN'+'');
      }
      });
      ! on({id:"javascript.0.Denon.Control.Play",vla:true}, function (obj){
      if (obj.state.val===true){sendMessage('NS9A')}
      });
      ! on({id:"javascript.0.Denon.Control.Stop",val:true}, function (obj){
      sendMessage('NS9C')
      });
      ! on({id:"javascript.0.Denon.Control.Pause",val:true}, function (obj){
      //if (obj.state.val===true){sendMessage('NS9B')}
      sendMessage('NS9B');
      });
      ! on({id:"javascript.0.Denon.Control.Skip_Plus",val:true}, function (obj){
      sendMessage('NS9D')
      });
      ! on({id:"javascript.0.Denon.Control.Skip_Minus",val:true}, function (obj){
      sendMessage('NS9E')
      });
      ! on({id:"javascript.0.Denon.Control.Page_Next",val:true}, function (obj){
      sendMessage('NS9X')
      });
      ! on({id:"javascript.0.Denon.Control.Page_Previous",val:true}, function (obj){
      sendMessage('NS9Y')
      });
      ! on('javascript.0.Denon.Zone_Main.Select_Input', function (obj){
      if (!obj.state.ack) {
      if(obj.state.val>=0){
      sendMessage('SI'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
      }
      }
      });
      ! on('javascript.0.Denon.Zone_2.Select_Input', function (obj){
      if (!obj.state.ack) {
      if(obj.state.val>=0){
      sendMessage('Z2'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
      }
      }
      });
      ! on('javascript.0.Denon.Zone_3.Select_Input', function (obj){
      if (!obj.state.ack) {
      if(obj.state.val>=0){
      sendMessage('Z3'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
      }
      }
      });
      ! on('javascript.0.Denon.Zone_Main.Video_Input', function (obj){
      if (!obj.state.ack) {
      if(obj.state.val>=0){
      sendMessage('SV'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
      }
      }
      });
      ! on('javascript.0.Denon.Zone_Main.Video_State', function (obj){
      if (!obj.state.ack) {
      if (obj.state.val===true){sendMessage('SVON')}
      else{sendMessage('SVOFF')}
      }
      });
      ! on('javascript.0.Denon.Zone_Main.HDMI_Monitor', function (obj){
      if (!obj.state.ack) {
      if(obj.state.val>=0){
      sendMessage('VS'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
      }
      }
      });
      ! on("javascript.0.Denon.System.Trigger_1", function (obj){
      if (!obj.state.ack) {
      if (obj.state.val===true){sendMessage('TR1 ON')}
      else{sendMessage('TR1 OFF')}
      }
      });
      ! on("javascript.0.Denon.System.Trigger_2", function (obj){
      if (!obj.state.ack) {
      if (obj.state.val===true){sendMessage('TR2 ON')}
      else{sendMessage('TR2 OFF')}
      }
      });
      ! on('javascript.0.Denon.System.Display_Dimmer', function (obj){
      if (!obj.state.ack) {
      if(obj.state.val>=0){
      sendMessage('DIM '+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
      }
      }
      });
      ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_UP',val:true}, function (obj){sendMessage('TFANUP')});
      ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_DOWN',val:true}, function (obj){sendMessage('TFANDOWN')});
      ! on({id:'javascript.0.Denon.Tuner_Control.Preset_UP',val:true}, function (obj){sendMessage('TPANUP')});
      ! on({id:'javascript.0.Denon.Tuner_Control.Preset_DOWN',val:true}, function (obj){sendMessage('TPANDOWN')});
      ! //---------------------------------------------------------------------------------------
      ! // close connection if script stopped-------------------------------------------------
      onStop(function () {
      if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
      }, 2000 /ms/);` [/i][/i][/i]

      1 Reply Last reply Reply Quote 0
      • K
        Kueppert last edited by

        Hi Lucky, danke dir für das Script. Werde es mit meinem Denon 1300 Mal testen. Kannst du hier vielleicht einen Screen Posten von deiner"Fernbedienung" und evtl auch die Codes zu den Widgets die du für den Denon nutzt?

        Danke dir und Grüße, Thorsten

        Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • K
          Kueppert last edited by

          @Lucky:

          so, die vorerst letzte änderung:

          Schönheitsfehler behoben

          neue Funktionen: 1: Systemname wird jetzt vom Gerät abgerufen 2: es wird angezeit wann der AVR '' fertig gebootet'' hat, also wenn es "klick" gemacht hat (das ist wichtig wenn man z.b. mit Alexa steuern will, denn erst wenn der AVR vollständig hochgefahren ist, werden die kommandos richtig umgesetzt!)

          ! ```
          `//Kontakt: s-nolte@htp-tel.de
          //ioBroker Forum: Lucky
          var net = require('net');
          ! // System
          createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"});
          createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false});
          createState('javascript.0.Denon.System.IP_Adresse', '000.000.000.000',{type: "string", role: "AVR IP Adresse"});
          createState('javascript.0.Denon.System.Trigger_1', false,{type: "boolean", role: "Trigger 1"});
          createState('javascript.0.Denon.System.Trigger_2', false,{type: "boolean", role: "Trigger 2"});
          createState('javascript.0.Denon.System.Command', '',{type: "string", role: "Command to AVR"});
          createState('javascript.0.Denon.System.Display_Dimmer',0,{type: "number", role: "FL Display Dimmer",states: "0:BRI;1:DIM;2:DAR;3:OFF"});
          createState('javascript.0.Denon.System.Verbunden',false,{type: "boolean", role: "Verbindung hergestellt",write:false});
          createState('javascript.0.Denon.System.Name',{type: "string", role: "Netzwerk-Name",write:false});
          ! //OSD
          createState('javascript.0.Denon.OSD.OSD_Info_List0', 'init',{type: "string", role: "Onscreen Display Info List00",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List1', 'init',{type: "string", role: "Onscreen Display Info List01",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List2', 'init',{type: "string", role: "Onscreen Display Info List02",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List3', 'init',{type: "string", role: "Onscreen Display Info List03",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List4', 'init',{type: "string", role: "Onscreen Display Info List04",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List5', 'init',{type: "string", role: "Onscreen Display Info List05",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List6', 'init',{type: "string", role: "Onscreen Display Info List06",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List7', 'init',{type: "string", role: "Onscreen Display Info List07",write:false});
          createState('javascript.0.Denon.OSD.OSD_Info_List8', 'init',{type: "string", role: "Onscreen Display Info List08",write:false});
          ! //Controls
          createState('javascript.0.Denon.Control.Play', false,{type:"boolean", role: "button"});
          createState('javascript.0.Denon.Control.Stop', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Control.Pause', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Control.Skip_Plus', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Control.Skip_Minus', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Control.Page_Next', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Control.Page_Previous', false,{type: "boolean", role: "button"});
          ! //Tuner Control
          createState('javascript.0.Denon.Tuner_Control.Frequency_UP', false,{type:"boolean", role: "button"});
          createState('javascript.0.Denon.Tuner_Control.Frequency_DOWN', false,{type:"boolean", role: "button"});
          createState('javascript.0.Denon.Tuner_Control.Preset_UP', false,{type:"boolean", role: "button"});
          createState('javascript.0.Denon.Tuner_Control.Preset_DOWN', false,{type:"boolean", role: "button"});
          createState('javascript.0.Denon.Tuner_Control.RDS_Station_Name', 'init',{type:"string", role: "RDS Station Name",write:false});
          ! //Zone_Main
          createState('javascript.0.Denon.Zone_Main.Power', false,{type: "boolean", role: "Power Status Zone Main"});
          createState('javascript.0.Denon.Zone_Main.Mute', false,{type: "boolean", role: "Mute Status"});
          createState('javascript.0.Denon.Zone_Main.Master_Volume', 0,{type: "number", role: "Master Volume"});
          createState('javascript.0.Denon.Zone_Main.Master_Volume_UP', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Zone_Main.Master_Volume_DOWN', false,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Zone_Main.Master_Volume_Max', 0,{type: "number", role: "Master Volume Max",write:false});
          createState('javascript.0.Denon.Zone_Main.Video_Input', 1,{type: "number", role: "Selected Video Input",
          states:"0:DVD;1:BD;2:TV;3:SAT/CBL;4:MPLAY;5:GAME;6:AUX1;7:AUX2;8:AUX3;9:AUX4;10:AUX5;11:AUX6;12:AUX7;13:CD"});
          createState('javascript.0.Denon.Zone_Main.Video_State', false,{type: "boolean", role: "Video ON/OFF"});
          createState('javascript.0.Denon.Zone_Main.Select_Input',5,{type: "number", role: "Select Input",
          states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
          createState('javascript.0.Denon.Zone_Main.Surround_Mode', 'init',{type: "string", role: "Surround Modus",write:false});
          createState('javascript.0.Denon.Zone_Main.Ratio_Mode', 'init',{type: "string", role: "Ratio Modus",write:false});
          createState('javascript.0.Denon.Zone_Main.Resolution', 'init',{type: "string", role: "Video Resolution",write:false});
          createState('javascript.0.Denon.Zone_Main.Sound_Parameter', 'init',{type: "string", role: "Sound_Parameter",write:false});
          createState('javascript.0.Denon.Zone_Main.HDMI_Monitor',0,{type: "number", role: "HDMI Monitor Out",states: "0:MONIAUTO;1:MONI1;2:MONI2"});
          ! //Zone 2
          createState('javascript.0.Denon.Zone_2.Power_Zone2', false,{type: "boolean", role: "Power Status Zone 2"});
          createState('javascript.0.Denon.Zone_2.Mute', false,{type: "boolean", role: "Mute Status Zone 2"});
          createState('javascript.0.Denon.Zone_2.Volume', 0,{type: "number", role: "Zone 2 Volume"});
          createState('javascript.0.Denon.Zone_2.Volume_UP', 0,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Zone_2.Volume_DOWN', 0,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Zone_2.Select_Input',5,{type: "number", role: "Select Input",
          states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
          ! //Zone 3
          createState('javascript.0.Denon.Zone_3.Power_Zone3', false,{type: "boolean", role: "Power Status Zone 3"});
          createState('javascript.0.Denon.Zone_3.Mute', false,{type: "boolean", role: "Mute Status Zone 3"});
          createState('javascript.0.Denon.Zone_3.Volume', 0,{type: "number", role: "Zone 3 Volume"});
          createState('javascript.0.Denon.Zone_3.Volume_UP', 0,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Zone_3.Volume_DOWN', 0,{type: "boolean", role: "button"});
          createState('javascript.0.Denon.Zone_3.Select_Input',5,{type: "number", role: "Select Input",
          states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
          ! // Variablen-------------------------------------------------------------------------
          var AVR_Command =['PW','MVMAX','MV','CV','MU','SI','ZM','SD','DC','SV','SLP','STBY','ECO','MS','VS','PS','PV','Z2','Z2MU','Z2CS','Z2CV','Z2HPF',
          'Z2PS','Z2HDS','Z2SLP','Z2STBY','Z3','Z3MU','Z3CS','Z3CV','Z3HPF','Z3PS','Z3SLP','Z3STBY','TFANNAME','NSET1','NSE','TR','DIM','NSFRN']; // räume den mist später auf 😉
          var t_request = 100; //beim ersten Start Funktion update aufrufen mit 100ms zwischen den Anfragen, maximal 50ms !
          var client;
          var PW_Request =0;
          ! setState('javascript.0.Denon.System.Verbunden',val=false,akt=false);
          checkIP(getState('javascript.0.Denon.System.IP_Adresse').val);
          ! function checkIP(IP){ //IP Adresse prüfen
          if(net.isIPv4(IP)){
          setTimeout(function () {
          client=Connect(IP);
          },2000);
          }
          else{console.error('ungültige IP Adresse')}
          }

          function Connect(IP){ // zu Server Verbinden

          ! var client = net.connect({host:IP, port:23});
          client.setKeepAlive(true,5000);

             console.log('Connectig...');
             
          client.on('error',function(error) {
              console.error(error);
              killClient(client);
          }); 
          
          client.on('connect', function () {          //Verbindung hergestellt
          console.log('Verbunden mit Denon AVR !');
           {setState('javascript.0.Denon.System.Verbunden',val=true,akt=true)}
            update(t_request); 
          });
          

          ! client.on('end', function () { //die Gegenseite hat die Verbindung geschlossen
          {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
          console.warn('Denon AVR hat die Verbindung geschlossen !');
          killClient(client);
          });

           client.on('data', function (data) {
               console.log(data.toString());
               response(data);
               
           });
          

          return client;
          }//end of Function Connect

          ! function killClient(client){
          {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
          client.destroy();
          client.unref();
          console.log('Connection closed !');
          }
          ! // Funktion Nachricht Senden----------------------------------------------------------
          function sendMessage(message) {
          if(getState('javascript.0.Denon.System.Verbunden').val===true){

          client.write(message+'\r');
          if (message=='PWON'||'ZMON'||'Z2ON'||'Z3ON'){PW_Request=1}
          console.log('Anfrage: '+ message );
          }
          

          }
          //Daten anfordern--------------------------------------------------------------------
          function update(Time){
          console.log('Update Start');
          var i_Pollen=0;
          var Request =['NSET1 ?','NSFRN ?','ZM?','MU?','PW?','SI?','SV?','MS?','MV?','Z2?','Z2MU?','Z3?','Z3MU?','NSE','VSSC ?','VSASP ?','VSMONI ?','TR?','DIM ?'];
          Intervall = setInterval(function () {

              sendMessage(Request[i_Pollen]);
              
              i_Pollen++;
                  
                  if (i_Pollen==Request.length){
                      i_Pollen=0;
                      clearInterval(Intervall);
                  }
              
          }, Time);
          

          return true;
          }

          ! function StateText_toArray (StateNames){
          var StateName = StateNames.split(';');
          var StateArr=[];
          for(var i = 0; i < StateName.length; i++) {
          var ele = StateName[i].split(':');
          StateArr[ele[0]] = ele[1];
          }

          return StateArr;
          }

          ! // Daten empfangen------------------------------------------------------------------
          ! function response (data) {

          ! var AVR_Response=data.toString().replace(/[\n\r]/g, ''); // Steuerzeichen "CR" entfernen
          ! for (i = 0; i < AVR_Command.length; i++) {

              var search_index=AVR_Response.search(AVR_Command[i]);
              
              if (search_index===0){
                  break;
              }
              
          }
          
          var id,val;
          
          switch(AVR_Command[i]){  
              case 'MU':
                  // to Request MU?
                  if (AVR_Response=='MUOFF'){setState("javascript.0.Denon.Zone_Main.Mute",false,akt=true)}
                  if (AVR_Response=='MUON'){setState("javascript.0.Denon.Zone_Main.Mute",true,akt=true)}
                 break;
                 
              case 'PW':  
                  // to Request PW?
                 if (AVR_Response=='PWSTANDBY'){
                     setState('javascript.0.Denon.System.Power_System',false,akt=true);
                     setState('javascript.0.Denon.System.System_Ready',false,akt=true);
                 }
                 if (AVR_Response=='PWON'){
                     if(PW_Request==1){
                     setState('javascript.0.Denon.System.Power_System',true,akt=true);
                     PW_Request++;
                     }
                     else if(PW_Request==2){
                         setState('javascript.0.Denon.System.System_Ready',true,akt=true);
                         PW_Request=0;
                     }
                     
                 }
                
                 break;
                 
                 
              case'Z2':
                 if (AVR_Response=='Z2OFF'){setState('javascript.0.Denon.Zone_2.Power_Zone2',false,akt=true)}
                 else if (AVR_Response=='Z2ON'){setState('javascript.0.Denon.Zone_2.Power_Zone2',true,akt=true)}
                 else if (AVR_Response=='Z2MUON'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                 else if (AVR_Response=='Z2MUOFF'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                  else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                      
                      setState("javascript.0.Denon.Zone_2.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                   else {
                  
                    AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                  id='javascript.0.Denon.Zone_2.Select_Input';
                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                  if (val>=0){setState(id,val,akt=true);}
                   }
                  break;
                  
              case'Z3':
                 if (AVR_Response=='Z3OFF'){setState('javascript.0.Denon.Zone_3.Power_Zone3',false,akt=true)}
                 else if (AVR_Response=='Z3ON'){setState('javascript.0.Denon.Zone_3.Power_Zone3',true,akt=true)}
                 else if (AVR_Response=='Z3MUON'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                 else if (AVR_Response=='Z3MUOFF'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                  else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                     
                      setState("javascript.0.Denon.Zone_3.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                   else {
                  
                    AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                  id='javascript.0.Denon.Zone_3.Select_Input';
                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                  if (val>=0){setState(id,val,akt=true);}
                   }
                  break;    
              
              case 'MV':
                  // to Request MV?
                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                  if (AVR_Response.length<3){AVR_Response=AVR_Response+'0'}
                  AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                 setState("javascript.0.Denon.Zone_Main.Master_Volume",parseFloat(AVR_Response),akt=true);
                  
                 break;
                 
               case 'MVMAX':
                  AVR_Response=AVR_Response.slice(6,AVR_Response.length);
                  AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                 setState("javascript.0.Denon.Zone_Main.Master_Volume_Max",parseFloat(AVR_Response),akt=true);
                 break;  
                 
              case 'SV': 
                  // to Request SV?
                  if (AVR_Response=='SVOFF'){setState("javascript.0.Denon.Zone_Main.Video_State",false,akt=true)}
                  else if (AVR_Response=='SVON'){setState("javascript.0.Denon.Zone_Main.Video_State",true,akt=true)}
                  else {
                  
                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                  id = 'javascript.0.Denon.Zone_Main.Video_Input';
                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response); //suche in array nach element
                  
                  setState(id,val,akt=true);
                  }
                 break;
                 
              case 'SI':
                  // to Request SI?
                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                  id='javascript.0.Denon.Zone_Main.Select_Input';
                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                  
                  setState(id,val,akt=true);
                 break;  
                 
              case 'ZM':
                  // to Request ZM?
                  if (AVR_Response=='ZMOFF'){setState('javascript.0.Denon.Zone_Main.Power',false,akt=true)}
                  if (AVR_Response=='ZMON'){setState('javascript.0.Denon.Zone_Main.Power',true,akt=true)}
                 break;
                 
              case 'MS':
                  // to Request MS? 
                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                  setState("javascript.0.Denon.Zone_Main.Surround_Mode",AVR_Response,akt=true);
                 break;
                 
              case 'VS':
                  
                  // to Request VSASP ?
                  id = "javascript.0.Denon.Zone_Main.Ratio_Mode";
                  if (AVR_Response=='VSASPFUL'){setState(id,'16:9',akt=true)}
                  else if (AVR_Response=='VSASPNRM'){setState(id,'4:3',akt=true)}
                  
                  // to Request VSSC ?
                  id = "javascript.0.Denon.Zone_Main.Resolution";
                  if (AVR_Response=='VSSC48P'){setState(id,'480p/576p',akt=true)}
                  else if (AVR_Response=='VSSC10I'){setState(id,'1080i',akt=true)}
                  else if (AVR_Response=='VSSC72P'){setState(id,'720p',akt=true)}
                  else if (AVR_Response=='VSSC10P'){setState(id,'1080p',akt=true)}
                  else if (AVR_Response=='VSSC10P24'){setState(id,'1080p:24Hz',akt=true)}
                  else if (AVR_Response=='VSSC4K'){setState(id,'4K',akt=true)}
                  else if (AVR_Response=='VSSC4KF'){setState(id,'4K 60/50Hz',akt=true)}
                  else if (AVR_Response=='VSSCAUTO'){setState(id,'AUTO',akt=true)}
                  
                  //to Request MONI ? 
                  id='javascript.0.Denon.Zone_Main.HDMI_Monitor';
                   if (AVR_Response=='VSMONIAUTO'){setState(id,0,akt=true)}
                   else if (AVR_Response=='VSMONI1'){setState(id,1,akt=true)}
                   else if (AVR_Response=='VSMONI2'){setState(id,2,akt=true)}
                 break; 
           
              case 'PS':
                  
                  // to Request PSMODE: ?
                  setState("javascript.0.Denon.Zone_Main.Sound_Parameter",AVR_Response.slice(7,AVR_Response.length),akt=true);
                  break;
                  
              
              case 'NSE':
                  
                    // to Request NSE  // Achtung ohne ? 
                  id='javascript.0.Denon.OSD.OSD_Info_List'+AVR_Response.slice(3, 4);
                  
                  if (getState(id)) {             //prüfen ob State vorhanden ist
                  setState (id,AVR_Response=AVR_Response.slice(4,AVR_Response.length),akt=true);
                  }
                
                  break;
                  
              case 'TR':
                  
                  if (AVR_Response=='TR1 OFF'){setState('javascript.0.Denon.System.Trigger_1',false,akt=true)}
                  else if (AVR_Response=='TR1 ON'){setState('javascript.0.Denon.System.Trigger_1',true,akt=true)}
                  else if (AVR_Response=='TR2 OFF'){setState('javascript.0.Denon.System.Trigger_2',false,akt=true)}
                  else if (AVR_Response=='TR2 ON'){setState('javascript.0.Denon.System.Trigger_2',true,akt=true)}
                  break;
                  
              case 'DIM':
                   AVR_Response=AVR_Response.slice(4,AVR_Response.length);
                  id='javascript.0.Denon.System.Display_Dimmer';
                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                  
                  setState(id,val,akt=true);
                  
                  break;
              
              case 'TFANNAME':
                   setState('javascript.0.Denon.Tuner_Control.RDS_Station_Name',val=AVR_Response.slice(8,AVR_Response.length),akt=true);
                  break;
                  
              case 'NSET1':
                  if (AVR_Response.slice(5,8)=='IPA'){
                      var IPstring=AVR_Response.slice(9,AVR_Response.length);
                      if(IPstring[12]=='0'){
                      IPstring=IPstring.substr(0, 12) + '' + IPstring.substr(13,14);
                      }
          

          ! setState('javascript.0.Denon.System.IP_Adresse',val=IPstring,akt=true);

                  }
                  break;    
              
              case 'NSFRN': 
                  setState('javascript.0.Denon.System.Name',val=AVR_Response.slice(5,AVR_Response.length),akt=true);
                  break;
                  
              default:
                  //console.log('häääää????');
          }
          

          }

          //--------------------------------------------------------------------------------------
          on('javascript.0.Denon.System.IP_Adresse', function (obj){
          if(getState('javascript.0.Denon.System.Verbunden').val===true){

          killClient(client);
             checkIP(obj.state.val);
          }
          else{checkIP(obj.state.val)}
          

          });

          ! on({id:'javascript.0.Denon.System.UPDATE',val:true}, function (obj){

             update(t_request);
          

          });

          ! on({id:"javascript.0.Denon.System.Command",change:"any"}, function (obj){sendMessage(obj.state.val+'')});
          ! on("javascript.0.Denon.System.Power_System", function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){
          sendMessage('PWON');
          }
          else{sendMessage('PWOFF')}
          }
          });
          ! on('javascript.0.Denon.Zone_Main.Power', function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){
          sendMessage('ZMON');
          }
          else{sendMessage('ZMOFF')}
          }
          });
          ! on('javascript.0.Denon.Zone_2.Power_Zone2', function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){sendMessage('Z2ON')}
          else{sendMessage('Z2OFF')}
          }
          });
          ! on('javascript.0.Denon.Zone_3.Power_Zone3', function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){sendMessage('Z3ON')}
          else{sendMessage('Z3OFF')}
          }
          });
          ! on("javascript.0.Denon.Zone_Main.Mute", function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){sendMessage('MUON')}
          else{sendMessage('MUOFF')}
          }
          });
          ! on("javascript.0.Denon.Zone_2.Mute", function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){sendMessage('Z2MUON')}
          else{sendMessage('Z2MUOFF')}
          }
          });
          ! on("javascript.0.Denon.Zone_3.Mute", function (obj){
          if (!obj.state.ack) {
          if (obj.state.val){sendMessage('Z3MUON')}
          else{sendMessage('Z3MUOFF')}
          }
          });
          ! on("javascript.0.Denon.Zone_Main.Master_Volume", function (obj){
          if (!obj.state.ack) {
          sendMessage('MV'+obj.state.val+'');
          }
          });
          ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_UP",val:true}, function (obj){
          if (!obj.state.ack) {
          sendMessage('MVUP'+'');
          }
          });
          ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_DOWN",val:true}, function (obj){
          if (!obj.state.ack) {
          sendMessage('MVDOWN'+'');
          }
          });
          ! on("javascript.0.Denon.Zone_2.Volume", function (obj){
          if (!obj.state.ack) {
          sendMessage('Z2'+obj.state.val+'');
          }
          });
          ! on({id:"javascript.0.Denon.Zone_2.Volume_UP",val:true}, function (obj){
          if (!obj.state.ack) {
          sendMessage('Z2UP'+'');
          }
          });
          ! on({id:"javascript.0.Denon.Zone_2.Volume_DOWN",val:true}, function (obj){
          if (!obj.state.ack) {
          sendMessage('Z2DOWN'+'');
          }
          });
          ! on("javascript.0.Denon.Zone_3.Volume", function (obj){
          if (!obj.state.ack) {
          sendMessage('Z3'+obj.state.val+'');
          }
          });
          ! on({id:"javascript.0.Denon.Zone_3.Volume_UP",val:true}, function (obj){
          if (!obj.state.ack) {
          sendMessage('Z3UP'+'');
          }
          });
          ! on({id:"javascript.0.Denon.Zone_3.Volume_DOWN",val:true}, function (obj){
          if (!obj.state.ack) {
          sendMessage('Z3DOWN'+'');
          }
          });
          ! on({id:"javascript.0.Denon.Control.Play",vla:true}, function (obj){
          if (obj.state.val===true){sendMessage('NS9A')}
          });
          ! on({id:"javascript.0.Denon.Control.Stop",val:true}, function (obj){
          sendMessage('NS9C')
          });
          ! on({id:"javascript.0.Denon.Control.Pause",val:true}, function (obj){
          //if (obj.state.val===true){sendMessage('NS9B')}
          sendMessage('NS9B');
          });
          ! on({id:"javascript.0.Denon.Control.Skip_Plus",val:true}, function (obj){
          sendMessage('NS9D')
          });
          ! on({id:"javascript.0.Denon.Control.Skip_Minus",val:true}, function (obj){
          sendMessage('NS9E')
          });
          ! on({id:"javascript.0.Denon.Control.Page_Next",val:true}, function (obj){
          sendMessage('NS9X')
          });
          ! on({id:"javascript.0.Denon.Control.Page_Previous",val:true}, function (obj){
          sendMessage('NS9Y')
          });
          ! on('javascript.0.Denon.Zone_Main.Select_Input', function (obj){
          if (!obj.state.ack) {
          if(obj.state.val>=0){
          sendMessage('SI'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
          }
          }
          });
          ! on('javascript.0.Denon.Zone_2.Select_Input', function (obj){
          if (!obj.state.ack) {
          if(obj.state.val>=0){
          sendMessage('Z2'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
          }
          }
          });
          ! on('javascript.0.Denon.Zone_3.Select_Input', function (obj){
          if (!obj.state.ack) {
          if(obj.state.val>=0){
          sendMessage('Z3'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
          }
          }
          });
          ! on('javascript.0.Denon.Zone_Main.Video_Input', function (obj){
          if (!obj.state.ack) {
          if(obj.state.val>=0){
          sendMessage('SV'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
          }
          }
          });
          ! on('javascript.0.Denon.Zone_Main.Video_State', function (obj){
          if (!obj.state.ack) {
          if (obj.state.val===true){sendMessage('SVON')}
          else{sendMessage('SVOFF')}
          }
          });
          ! on('javascript.0.Denon.Zone_Main.HDMI_Monitor', function (obj){
          if (!obj.state.ack) {
          if(obj.state.val>=0){
          sendMessage('VS'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
          }
          }
          });
          ! on("javascript.0.Denon.System.Trigger_1", function (obj){
          if (!obj.state.ack) {
          if (obj.state.val===true){sendMessage('TR1 ON')}
          else{sendMessage('TR1 OFF')}
          }
          });
          ! on("javascript.0.Denon.System.Trigger_2", function (obj){
          if (!obj.state.ack) {
          if (obj.state.val===true){sendMessage('TR2 ON')}
          else{sendMessage('TR2 OFF')}
          }
          });
          ! on('javascript.0.Denon.System.Display_Dimmer', function (obj){
          if (!obj.state.ack) {
          if(obj.state.val>=0){
          sendMessage('DIM '+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
          }
          }
          });
          ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_UP',val:true}, function (obj){sendMessage('TFANUP')});
          ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_DOWN',val:true}, function (obj){sendMessage('TFANDOWN')});
          ! on({id:'javascript.0.Denon.Tuner_Control.Preset_UP',val:true}, function (obj){sendMessage('TPANUP')});
          ! on({id:'javascript.0.Denon.Tuner_Control.Preset_DOWN',val:true}, function (obj){sendMessage('TPANDOWN')});
          ! //---------------------------------------------------------------------------------------
          ! // close connection if script stopped-------------------------------------------------
          onStop(function () {
          if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
          }, 2000 /ms/);Muss das Thema noch einmal hoch holen. Lucky, magst du vielleicht einen Screen hochladen und ggf die Codes deiner Widgets? Wurde bestimmt auch anderen weiterhelfen... Danke dir schon einmal. ! VG kueppert ! Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk[/i][/i][/i] ```

          1 Reply Last reply Reply Quote 0
          • D
            djtale2003 last edited by

            @Lucky:

            !!!!!!!!Aktuelle Version im Post vom 21.06.2017, 22:28 !!!!!! `

            Hallo Zuzsammen. Wo finde ich diesen Post?

            Wie geht es dann weiter?

            Bin gerade total hilflos.

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              Wirklich? 3 Beiträge über deinem.

              Gesendet von Unterwegs

              1 Reply Last reply Reply Quote 0
              • K
                Kueppert last edited by

                Hab das Script jetzt Mal bei mir in die Scripte über einen neuen Ordner Denon importiert und gestartet. Sieht gut aus. Musste nur die IP im Script eintragen und die Objekte sind da 🙂 jetzt noch die entstehenden Widgets in vis suchen und die Fernbedienung für den Denon wird gebaut. Top

                Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • K
                  Kueppert last edited by

                  Hi,

                  bin dabei meine Fernbedienung zu bauen. Kann mir jemand sagen, mit welchem Objekt ich den Receiver einschalte?? Aktuell versuche ich es mit dem Wiget "basic bulb" und der Objekt-ID "javascript.0.Denon.System.Power_System". Wert für ID = false ist dann false und Wert für ID = true habe ich true eingetragen. Aber das funktioniert nicht 😞

                  Danke euch und Grüße, Thorsten

                  1 Reply Last reply Reply Quote 0
                  • lobomau
                    lobomau last edited by

                    Ich möchte das Script auch mal testen. In welcher Zeile trage ich die IP des Denon ein?

                    1 Reply Last reply Reply Quote 0
                    • K
                      Kueppert last edited by

                      In die Zeile wo die 12 nuller stehen 000.000.000.000

                      Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                      1 Reply Last reply Reply Quote 0
                      • K
                        knopers1 last edited by

                        Hi,

                        ich habe einen Denon-AVR-X1100-W.

                        Die IP Adresse habe ich angepasst, ist auch statisch. Script ist unter common.

                        createState('javascript.0.Denon.System.IP_Adresse', '192.168.001.051',{type: "string", role: "AVR IP Adresse"});
                        

                        Netzwerksteuerung ist EIN uns steht auf "immer"

                        Beim Starten des Scriptes bekomme ich immer:

                        17:44:54.405	[error]	javascript.0 script.js.common.DenonAVR: ungültige IP Adresse
                        

                        IP Adresse passt, ds ich über die IP auf die Weboberfläche komme.

                        Hast Du eine Idee was da nicht stimmen könnte?
                        1526_unbenannt.png
                        1526_unbenannt1.png

                        1 Reply Last reply Reply Quote 0
                        • K
                          Kueppert last edited by

                          Hm, hat bei mir zumindest die Verbindung auf Anhieb funktioniert. Du musst meine ich die IP wird in deinem 2. Bild im Script eintragen, also nicht 192.168.1.1 sondern 192.168.001.001 (ist nur eine Beispiel IP)

                          Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                          1 Reply Last reply Reply Quote 0
                          • K
                            Kueppert last edited by

                            Kleiner Tip für alle, die einen Denon 1200W nutzen:

                            Im Script ist ein Fehler, daher kann man den Receiver nicht an oder ausschalten.

                            Einfach folgenden Code:

                                    else{sendMessage('PWOFF')}
                            ````in Zeile 422 (gemäß Notepad) in
                            
                                else{sendMessage('PWSTANDBY')}
                            
                            
                            Die Codes habe ich von folgender URL (verweist auf Denon_USA):
                            
                            [https://www.google.de/url?sa=t&amp;rct=j&amp;q= … SOoo6RRrWA](https://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=3&amp;ved=0ahUKEwisntPRxvrVAhWCVBQKHdfgDMIQFgg7MAI&amp;url=https%3A%2F%2Fusa.denon.com%2Fus%2Fproduct%2Fhometheater%2Freceivers%2Favr3808ci%3Fdocname%3DAVR-3808CISerialProtocol_Ver520a.pdf&amp;usg=AFQjCNHfUGmjlbRyMffC3GsaSOoo6RRrWA)
                            
                            Umgesetzt habe ich den Power-Button mit "Basic Bulp on/off"
                            
                            Habe mal mein Widget exportiert:
                            
                            >! [{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Denon.System.Power_System","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/vis.0/main/img/on.png","icon_on":"/vis.0/main/img/off.png","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"g_ccontrol":true,"oidTrueValue":"false","oidFalseValue":"true","min":"0"},"style":{"left":"1072px","top":"387px","z-index":"2","width":"90px","height":"90px","border-width":"4px","border-style":"solid"},"widgetSet":"basic"}]
                            
                            Denke, das könnte dem einen oder anderen weiterhelfen :o)
                            
                            VG Thorsten
                            1 Reply Last reply Reply Quote 0
                            • lobomau
                              lobomau last edited by

                              @knopers1:

                              Hi,

                              ich habe einen Denon-AVR-X1100-W.

                              Die IP Adresse habe ich angepasst, ist auch statisch. Script ist unter common.

                              createState('javascript.0.Denon.System.IP_Adresse', '192.168.001.051',{type: "string", role: "AVR IP Adresse"});
                              

                              Netzwerksteuerung ist EIN uns steht auf "immer"

                              Beim Starten des Scriptes bekomme ich immer:

                              17:44:54.405	[error]	javascript.0 script.js.common.DenonAVR: ungültige IP Adresse
                              

                              IP Adresse passt, ds ich über die IP auf die Weboberfläche komme.

                              Hast Du eine Idee was da nicht stimmen könnte? `
                              Bei mir genau das gleiche. Ich habe einen Denon AVR-X1000.

                              Probiert habe 192.168.178.54 und 192.168.178.054.

                              Eventuell ist das Gerät nicht kompatibel? Laufen tut die Android app "Denon Remote App".

                              Edit: was bei mir funktioniert… aus dem ersten thread:

                              http://192.168.178.54/goform/formiPhoneAppDirect.xml?SIFAVORITES
                              
                              1 Reply Last reply Reply Quote 0
                              • K
                                knopers1 last edited by

                                @lomobau

                                wo hastv Du die Zeile eingefügt? Läuft das Script jetzt bei Dir?

                                Kannst Du dein Script hier zeigen?

                                1 Reply Last reply Reply Quote 0
                                • lobomau
                                  lobomau last edited by

                                  @knopers1:

                                  @lomobau

                                  wo hastv Du die Zeile eingefügt? Läuft das Script jetzt bei Dir?

                                  Kannst Du dein Script hier zeigen? `
                                  Nein, läuft nicht. Habe einfach die http-Zeile in Browser eingefügt, um zu prüfen ob es generell funktioniert.

                                  Wenn ich es eingebe, springt die App auf Favourites, der Denon wohl auch (der steht im Keller… ich hatte da grad keine Zeit zu schauen)

                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    Kueppert last edited by

                                    Versucht doch Mal, eine Doku für euren Receiver zu finden wie ich oben eine für meinen angehangen habe. Evtl sind die Befehle für den 1100 anders?

                                    Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                                    1 Reply Last reply Reply Quote 0
                                    • L
                                      Lucky last edited by

                                      Moin Moin 😉

                                      tragt bitte die IP Adresse NICHT im Skript ein, sondern in dem dafür gedachten State, das Skript überprüft diese auf richtige Schreibweise sobald sich der Wert ändert !

                                      Das ist auch der Grund für die Meldung "ungültige IP Adresse"

                                      Da ich natürlich nicht jedes Gerät testen kann, könnt ihr im State "Command to AVR" direkt die Befehle aus der passenden API zu eurem Gerät eintragen um diese zu testen.
                                      2611_unbenannt.png

                                      1 Reply Last reply Reply Quote 0
                                      • lobomau
                                        lobomau last edited by

                                        @Lucky:

                                        Moin Moin 😉

                                        tragt bitte die IP Adresse NICHT im Skript ein, sondern in dem dafür gedachten State, das Skript überprüft diese auf richtige Schreibweise sobald sich der Wert ändert !

                                        Das ist auch der Grund für die Meldung "ungültige IP Adresse"

                                        Da ich natürlich nicht jedes Gerät testen kann, könnt ihr im State "Command to AVR" direkt die Befehle aus der passenden API zu eurem Gerät eintragen um diese zu testen. `
                                        :lol: Sachen gibt´s, die gibt´s gar nicht 😄

                                        Hab vorher alle states gelöscht, Script gestartet, gibt Fehler ungültige IP und paar Warnungen, dann in Objekte die IP eingetragen und es läuft!
                                        1146_unbenannt.jpg

                                        1 Reply Last reply Reply Quote 0
                                        • L
                                          Lucky last edited by

                                          alles wird gut 😄

                                          wenn du States manuell löscht und dann das Skript neu Startest, ist es normal das erstmal Fehler auflaufen, da die State dann neu beschrieben werden 😉 beim nächsten Start sollte auch das weg sein.

                                          Hier nochmal eine überarbeitete Version mit folgenden Änderungen:

                                          1. Fehler bei System Power OFF behoben (Danke für den Hinweis von Kueppert)

                                          2. Fehler beim Manuellen umschalten der Tunerfrequenz behoben

                                          3. Nach dem letzten Firmware Update des AVR ist es bei mir so, das wenn als Quelle NET z.b. Spotify gewählt ist, der AVR nicht mehr seine OSD Informationen selbständig updatet, für diesen Fall habe ich einen Updateintervall eingeführt.

                                          4. mit dem State "Log" unter System kann der das Loggen des Regulären Datenstroms ausgeschaltet werden, was den Log sehr aufräumt 😉

                                          <size size="150">hier die Aktuelle Version !!!</size>

                                          ! ```
                                          `//Kontakt: s-nolte@htp-tel.de
                                          //ioBroker Forum: Lucky
                                          var net = require('net');
                                          ! // System
                                          createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"});
                                          createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false});
                                          createState('javascript.0.Denon.System.IP_Adresse', '000.000.000.000',{type: "string", role: "AVR IP Adresse"});
                                          createState('javascript.0.Denon.System.Trigger_1', false,{type: "boolean", role: "Trigger 1"});
                                          createState('javascript.0.Denon.System.Trigger_2', false,{type: "boolean", role: "Trigger 2"});
                                          createState('javascript.0.Denon.System.Command', '',{type: "string", role: "Command to AVR"});
                                          createState('javascript.0.Denon.System.Display_Dimmer',0,{type: "number", role: "FL Display Dimmer",states: "0:BRI;1:DIM;2:DAR;3:OFF"});
                                          createState('javascript.0.Denon.System.Verbunden',false,{type: "boolean", role: "Verbindung hergestellt",write:false});
                                          createState('javascript.0.Denon.System.Name',{type: "string", role: "Netzwerk-Name",write:false});
                                          createState('javascript.0.Denon.System.Log', true,{type: "boolean", role: "Log für Tx/Rx Daten"});
                                          ! //OSD
                                          createState('javascript.0.Denon.OSD.OSD_Info_List0', 'init',{type: "string", role: "Onscreen Display Info List00",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List1', 'init',{type: "string", role: "Onscreen Display Info List01",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List2', 'init',{type: "string", role: "Onscreen Display Info List02",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List3', 'init',{type: "string", role: "Onscreen Display Info List03",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List4', 'init',{type: "string", role: "Onscreen Display Info List04",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List5', 'init',{type: "string", role: "Onscreen Display Info List05",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List6', 'init',{type: "string", role: "Onscreen Display Info List06",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List7', 'init',{type: "string", role: "Onscreen Display Info List07",write:false});
                                          createState('javascript.0.Denon.OSD.OSD_Info_List8', 'init',{type: "string", role: "Onscreen Display Info List08",write:false});
                                          ! //Controls
                                          createState('javascript.0.Denon.Control.Play', false,{type:"boolean", role: "button"});
                                          createState('javascript.0.Denon.Control.Stop', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Control.Pause', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Control.Skip_Plus', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Control.Skip_Minus', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Control.Page_Next', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Control.Page_Previous', false,{type: "boolean", role: "button"});
                                          ! //Tuner Control
                                          createState('javascript.0.Denon.Tuner_Control.Frequency_UP', false,{type:"boolean", role: "button"});
                                          createState('javascript.0.Denon.Tuner_Control.Frequency_DOWN', false,{type:"boolean", role: "button"});
                                          createState('javascript.0.Denon.Tuner_Control.Preset_UP', false,{type:"boolean", role: "button"});
                                          createState('javascript.0.Denon.Tuner_Control.Preset_DOWN', false,{type:"boolean", role: "button"});
                                          createState('javascript.0.Denon.Tuner_Control.RDS_Station_Name', 'init',{type:"string", role: "RDS Station Name",write:false});
                                          createState('javascript.0.Denon.Tuner_Control.Preset_Number',0,{type:"number", role: "Preset No."});
                                          ! //Zone_Main
                                          createState('javascript.0.Denon.Zone_Main.Power', false,{type: "boolean", role: "Power Status Zone Main"});
                                          createState('javascript.0.Denon.Zone_Main.Mute', false,{type: "boolean", role: "Mute Status"});
                                          createState('javascript.0.Denon.Zone_Main.Master_Volume', 0,{type: "number", role: "Master Volume"});
                                          createState('javascript.0.Denon.Zone_Main.Master_Volume_UP', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Zone_Main.Master_Volume_DOWN', false,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Zone_Main.Master_Volume_Max', 0,{type: "number", role: "Master Volume Max",write:false});
                                          createState('javascript.0.Denon.Zone_Main.Video_Input', 1,{type: "number", role: "Selected Video Input",
                                          states:"0:DVD;1:BD;2:TV;3:SAT/CBL;4:MPLAY;5:GAME;6:AUX1;7:AUX2;8:AUX3;9:AUX4;10:AUX5;11:AUX6;12:AUX7;13:CD"});
                                          createState('javascript.0.Denon.Zone_Main.Video_State', false,{type: "boolean", role: "Video ON/OFF"});
                                          createState('javascript.0.Denon.Zone_Main.Input_Text',5,{type: "string", role: "Input Text",write:false});
                                          createState('javascript.0.Denon.Zone_Main.Select_Input',5,{type: "number", role: "Select Input",
                                          states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                          createState('javascript.0.Denon.Zone_Main.Surround_Mode', 'init',{type: "string", role: "Surround Modus",write:false});
                                          createState('javascript.0.Denon.Zone_Main.Ratio_Mode', 'init',{type: "string", role: "Ratio Modus",write:false});
                                          createState('javascript.0.Denon.Zone_Main.Resolution', 'init',{type: "string", role: "Video Resolution",write:false});
                                          createState('javascript.0.Denon.Zone_Main.Sound_Parameter', 'init',{type: "string", role: "Sound_Parameter",write:false});
                                          createState('javascript.0.Denon.Zone_Main.HDMI_Monitor',0,{type: "number", role: "HDMI Monitor Out",states: "0:MONIAUTO;1:MONI1;2:MONI2"});
                                          ! //Zone 2
                                          createState('javascript.0.Denon.Zone_2.Power_Zone2', false,{type: "boolean", role: "Power Status Zone 2"});
                                          createState('javascript.0.Denon.Zone_2.Mute', false,{type: "boolean", role: "Mute Status Zone 2"});
                                          createState('javascript.0.Denon.Zone_2.Volume', 0,{type: "number", role: "Zone 2 Volume"});
                                          createState('javascript.0.Denon.Zone_2.Volume_UP', 0,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Zone_2.Volume_DOWN', 0,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Zone_2.Select_Input',5,{type: "number", role: "Select Input",
                                          states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                          ! //Zone 3
                                          createState('javascript.0.Denon.Zone_3.Power_Zone3', false,{type: "boolean", role: "Power Status Zone 3"});
                                          createState('javascript.0.Denon.Zone_3.Mute', false,{type: "boolean", role: "Mute Status Zone 3"});
                                          createState('javascript.0.Denon.Zone_3.Volume', 0,{type: "number", role: "Zone 3 Volume"});
                                          createState('javascript.0.Denon.Zone_3.Volume_UP', 0,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Zone_3.Volume_DOWN', 0,{type: "boolean", role: "button"});
                                          createState('javascript.0.Denon.Zone_3.Select_Input',5,{type: "number", role: "Select Input",
                                          states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                          ! // Variablen-------------------------------------------------------------------------
                                          var AVR_Command =['PW','MVMAX','MV','CV','MU','SI','ZM','SD','DC','SV','SLP','STBY','ECO','MS','VS','PS','PV','Z2','Z2MU','Z2CS','Z2CV','Z2HPF',
                                          'Z2PS','Z2HDS','Z2SLP','Z2STBY','Z3','Z3MU','Z3CS','Z3CV','Z3HPF','Z3PS','Z3SLP','Z3STBY','TFANNAME','TPANMEM','NSET1','NSE','TR','DIM','NSFRN']; // räume den mist später auf 😉
                                          var t_request = 100; //beim ersten Start Funktion update aufrufen mit 100ms zwischen den Anfragen, maximal 50ms !
                                          var client;
                                          var PW_Request =0;
                                          ! setState('javascript.0.Denon.System.Verbunden',val=false,akt=false);
                                          checkIP(getState('javascript.0.Denon.System.IP_Adresse').val);
                                          ! function checkIP(IP){ //IP Adresse prüfen
                                          if(net.isIPv4(IP)){
                                          setTimeout(function () {
                                          client=Connect(IP);
                                          },2000);
                                          }
                                          else{console.error('ungültige IP Adresse')}
                                          }

                                          function Connect(IP){ // zu Server Verbinden

                                          ! var client = net.connect({host:IP, port:23});
                                          client.setKeepAlive(true,5000);

                                             console.log('Connectig...');
                                          
                                          client.on('error',function(error) {
                                              console.error(error);
                                              killClient(client);
                                          }); 
                                          
                                          client.on('connect', function () {          //Verbindung hergestellt
                                          console.log('Verbunden mit Denon AVR !');
                                           {setState('javascript.0.Denon.System.Verbunden',val=true,akt=true)}
                                            update(t_request); 
                                          });
                                          

                                          ! client.on('end', function () { //die Gegenseite hat die Verbindung geschlossen
                                          {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
                                          console.warn('Denon AVR hat die Verbindung geschlossen !');
                                          killClient(client);
                                          });

                                           client.on('data', function (data) {
                                          
                                                if (getState('javascript.0.Denon.System.Log').val===true){
                                                 console.log(data.toString());         //log für kommende Daten ################################################################################################
                                                }
                                               response(data);
                                          
                                           });
                                          

                                          return client;
                                          }//end of Function Connect

                                          ! function killClient(client){
                                          {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
                                          client.destroy();
                                          client.unref();
                                          console.log('Connection closed !');
                                          }
                                          ! // Funktion Nachricht Senden----------------------------------------------------------
                                          function sendMessage(message) {
                                          if(getState('javascript.0.Denon.System.Verbunden').val===true){

                                          client.write(message+'\r');
                                          if (message=='PWON'||'ZMON'||'Z2ON'||'Z3ON'){PW_Request=1}
                                          
                                              if (getState('javascript.0.Denon.System.Log').val===true){
                                              console.log('Anfrage: '+ message );   // log für gesendete Daten  ################################################################################################
                                              }
                                          }
                                          

                                          }
                                          //Daten anfordern--------------------------------------------------------------------
                                          function update(Time){
                                          console.log('Update Start');
                                          var i_Pollen=0;
                                          var Request =['NSET1 ?','NSFRN ?','ZM?','MU?','PW?','SI?','SV?','MS?','MV?','Z2?','Z2MU?','Z3?','Z3MU?','NSE','VSSC ?','VSASP ?','VSMONI ?','TR?','DIM ?'];
                                          Intervall = setInterval(function () {

                                              sendMessage(Request[i_Pollen]);
                                          
                                              i_Pollen++;
                                          
                                                  if (i_Pollen==Request.length){
                                                      i_Pollen=0;
                                                      clearInterval(Intervall);
                                                  }
                                          
                                          }, Time);
                                          

                                          return true;
                                          }

                                          ! function StateText_toArray (StateNames){
                                          var StateName = StateNames.split(';');
                                          var StateArr=[];
                                          for(var i = 0; i < StateName.length; i++) {
                                          var ele = StateName[i].split(':');
                                          StateArr[ele[0]] = ele[1];
                                          }

                                          return StateArr;
                                          }

                                          ! // Daten empfangen------------------------------------------------------------------
                                          ! function response (data) {

                                          ! var AVR_Response=data.toString().replace(/[\n\r]/g, ''); // Steuerzeichen "CR" entfernen
                                          ! for (i = 0; i < AVR_Command.length; i++) {

                                              var search_index=AVR_Response.search(AVR_Command[i]);
                                          
                                              if (search_index===0){
                                                  break;
                                              }
                                          
                                          }
                                          
                                          var id,val;
                                          
                                          switch(AVR_Command[i]){  
                                              case 'MU':
                                                  // to Request MU?
                                                  if (AVR_Response=='MUOFF'){setState("javascript.0.Denon.Zone_Main.Mute",false,akt=true)}
                                                  if (AVR_Response=='MUON'){setState("javascript.0.Denon.Zone_Main.Mute",true,akt=true)}
                                                 break;
                                          
                                              case 'PW':  
                                                  // to Request PW?
                                                 if (AVR_Response=='PWSTANDBY'){
                                                     setState('javascript.0.Denon.System.Power_System',false,akt=true);
                                                     setState('javascript.0.Denon.System.System_Ready',false,akt=true);
                                                     if ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                                 }
                                                 if (AVR_Response=='PWON'){
                                                     if(PW_Request==1){
                                                     setState('javascript.0.Denon.System.Power_System',true,akt=true);
                                                     PW_Request++;
                                                     }
                                                     else if(PW_Request==2){
                                                         setState('javascript.0.Denon.System.System_Ready',true,akt=true);
                                                         PW_Request=0;
                                                     }
                                          
                                                 }
                                          
                                                 break;
                                          
                                              case'Z2':
                                                 if (AVR_Response=='Z2OFF'){setState('javascript.0.Denon.Zone_2.Power_Zone2',false,akt=true)}
                                                 else if (AVR_Response=='Z2ON'){setState('javascript.0.Denon.Zone_2.Power_Zone2',true,akt=true)}
                                                 else if (AVR_Response=='Z2MUON'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                                                 else if (AVR_Response=='Z2MUOFF'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                                                  else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                                          
                                                      setState("javascript.0.Denon.Zone_2.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                                                   else {
                                          
                                                    AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                  id='javascript.0.Denon.Zone_2.Select_Input';
                                                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                                  if (val>=0){setState(id,val,akt=true);}
                                                   }
                                                  break;
                                          
                                              case'Z3':
                                                 if (AVR_Response=='Z3OFF'){setState('javascript.0.Denon.Zone_3.Power_Zone3',false,akt=true)}
                                                 else if (AVR_Response=='Z3ON'){setState('javascript.0.Denon.Zone_3.Power_Zone3',true,akt=true)}
                                                 else if (AVR_Response=='Z3MUON'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                                                 else if (AVR_Response=='Z3MUOFF'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                                                  else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                                          
                                                      setState("javascript.0.Denon.Zone_3.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                                                   else {
                                          
                                                    AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                  id='javascript.0.Denon.Zone_3.Select_Input';
                                                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                                  if (val>=0){setState(id,val,akt=true);}
                                                   }
                                                  break;    
                                          
                                              case 'MV':
                                                  // to Request MV?
                                                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                  if (AVR_Response.length<3){AVR_Response=AVR_Response+'0'}
                                                  AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                                                 setState("javascript.0.Denon.Zone_Main.Master_Volume",parseFloat(AVR_Response),akt=true);
                                          
                                                 break;
                                          
                                               case 'MVMAX':
                                                  AVR_Response=AVR_Response.slice(6,AVR_Response.length);
                                                  AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                                                 setState("javascript.0.Denon.Zone_Main.Master_Volume_Max",parseFloat(AVR_Response),akt=true);
                                                 break;  
                                          
                                              case 'SV': 
                                                  // to Request SV?
                                                  if (AVR_Response=='SVOFF'){setState("javascript.0.Denon.Zone_Main.Video_State",false,akt=true)}
                                                  else if (AVR_Response=='SVON'){setState("javascript.0.Denon.Zone_Main.Video_State",true,akt=true)}
                                                  else {
                                          
                                                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                  id = 'javascript.0.Denon.Zone_Main.Video_Input';
                                                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response); //suche in array nach element
                                          
                                                  setState(id,val,akt=true);
                                                  }
                                                 break;
                                          
                                              case 'SI':
                                                  // to Request SI?
                                                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                  id='javascript.0.Denon.Zone_Main.Select_Input';
                                                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                          
                                                  setState(id,val,akt=true);
                                                  setState('javascript.0.Denon.Zone_Main.Input_Text',AVR_Response,akt=true);
                                          
                                                 if (AVR_Response=='NET'){
                                                  StaticPollen=setInterval(sendMessage,2000,'NSE');  //wenn Quelle = NET ist (z.b. Spotify) OSD Informationen Pollen mit 2s
                                                  }
                                          
                                                 else {if ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                                 }
                                                 break;  
                                          
                                              case 'ZM':
                                                  // to Request ZM?
                                                  if (AVR_Response=='ZMOFF'){setState('javascript.0.Denon.Zone_Main.Power',false,akt=true)}
                                                  if (AVR_Response=='ZMON'){setState('javascript.0.Denon.Zone_Main.Power',true,akt=true)}
                                                 break;
                                          
                                              case 'MS':
                                                  // to Request MS? 
                                                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                  setState("javascript.0.Denon.Zone_Main.Surround_Mode",AVR_Response,akt=true);
                                                 break;
                                          
                                              case 'VS':
                                          
                                                  // to Request VSASP ?
                                                  id = "javascript.0.Denon.Zone_Main.Ratio_Mode";
                                                  if (AVR_Response=='VSASPFUL'){setState(id,'16:9',akt=true)}
                                                  else if (AVR_Response=='VSASPNRM'){setState(id,'4:3',akt=true)}
                                          
                                                  // to Request VSSC ?
                                                  id = "javascript.0.Denon.Zone_Main.Resolution";
                                                  if (AVR_Response=='VSSC48P'){setState(id,'480p/576p',akt=true)}
                                                  else if (AVR_Response=='VSSC10I'){setState(id,'1080i',akt=true)}
                                                  else if (AVR_Response=='VSSC72P'){setState(id,'720p',akt=true)}
                                                  else if (AVR_Response=='VSSC10P'){setState(id,'1080p',akt=true)}
                                                  else if (AVR_Response=='VSSC10P24'){setState(id,'1080p:24Hz',akt=true)}
                                                  else if (AVR_Response=='VSSC4K'){setState(id,'4K',akt=true)}
                                                  else if (AVR_Response=='VSSC4KF'){setState(id,'4K 60/50Hz',akt=true)}
                                                  else if (AVR_Response=='VSSCAUTO'){setState(id,'AUTO',akt=true)}
                                          
                                                  //to Request MONI ? 
                                                  id='javascript.0.Denon.Zone_Main.HDMI_Monitor';
                                                   if (AVR_Response=='VSMONIAUTO'){setState(id,0,akt=true)}
                                                   else if (AVR_Response=='VSMONI1'){setState(id,1,akt=true)}
                                                   else if (AVR_Response=='VSMONI2'){setState(id,2,akt=true)}
                                                 break; 
                                          
                                              case 'PS':
                                          
                                                  // to Request PSMODE: ?
                                                  setState("javascript.0.Denon.Zone_Main.Sound_Parameter",AVR_Response.slice(7,AVR_Response.length),akt=true);
                                                  break;
                                          
                                              case 'NSE':
                                          
                                                    // to Request NSE  // Achtung ohne ? 
                                                  id='javascript.0.Denon.OSD.OSD_Info_List'+AVR_Response.slice(3, 4);
                                          
                                                  if (getState(id)) {             //prüfen ob State vorhanden ist
                                                  setState (id,AVR_Response=AVR_Response.slice(4,AVR_Response.length),akt=true);
                                                  }
                                          
                                                  break;
                                          
                                              case 'TR':
                                          
                                                  if (AVR_Response=='TR1 OFF'){setState('javascript.0.Denon.System.Trigger_1',false,akt=true)}
                                                  else if (AVR_Response=='TR1 ON'){setState('javascript.0.Denon.System.Trigger_1',true,akt=true)}
                                                  else if (AVR_Response=='TR2 OFF'){setState('javascript.0.Denon.System.Trigger_2',false,akt=true)}
                                                  else if (AVR_Response=='TR2 ON'){setState('javascript.0.Denon.System.Trigger_2',true,akt=true)}
                                                  break;
                                          
                                              case 'DIM':
                                                   AVR_Response=AVR_Response.slice(4,AVR_Response.length);
                                                  id='javascript.0.Denon.System.Display_Dimmer';
                                                  val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                          
                                                  setState(id,val,akt=true);
                                          
                                                  break;
                                          
                                              case 'TFANNAME':
                                                   setState('javascript.0.Denon.Tuner_Control.RDS_Station_Name',val=AVR_Response.slice(8,AVR_Response.length),akt=true);    
                                                  break;
                                          
                                              case 'TPANMEM':
                                                  AVR_Response=AVR_Response.slice(7,AVR_Response.length);
                                                  if (AVR_Response.length==2){         //29.08.2017 angepasst
                                                  setState('javascript.0.Denon.Tuner_Control.Preset_Number',parseInt(AVR_Response),akt=true);
                                                  }
                                          
                                                  break;
                                          
                                              case 'NSET1':
                                                  if (AVR_Response.slice(5,8)=='IPA'){
                                                      var IPstring=AVR_Response.slice(9,AVR_Response.length);
                                                      if(IPstring[12]=='0'){
                                                      IPstring=IPstring.substr(0, 12) + '' + IPstring.substr(13,14);
                                                      }
                                          

                                          ! setState('javascript.0.Denon.System.IP_Adresse',val=IPstring,akt=true);

                                                  }
                                                  break;    
                                          
                                              case 'NSFRN': 
                                                  setState('javascript.0.Denon.System.Name',val=AVR_Response.slice(5,AVR_Response.length),akt=true);
                                                  break;
                                          
                                              default:
                                                  //console.log('häääää????');
                                          }
                                          

                                          }

                                          //--------------------------------------------------------------------------------------
                                          on('javascript.0.Denon.System.IP_Adresse', function (obj){
                                          if(getState('javascript.0.Denon.System.Verbunden').val===true){

                                          killClient(client);
                                             checkIP(obj.state.val);
                                          }
                                          else{checkIP(obj.state.val)}
                                          

                                          });

                                          ! on({id:'javascript.0.Denon.System.UPDATE',val:true}, function (obj){

                                             update(t_request);
                                          

                                          });

                                          ! on({id:"javascript.0.Denon.System.Command",change:"any"}, function (obj){sendMessage(obj.state.val+'')});
                                          ! on("javascript.0.Denon.System.Power_System", function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){
                                          sendMessage('PWON');
                                          }
                                          else{sendMessage('PWSTANDBY')}
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_Main.Power', function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){
                                          sendMessage('ZMON');
                                          }
                                          else{sendMessage('ZMOFF')}
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_2.Power_Zone2', function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){sendMessage('Z2ON')}
                                          else{sendMessage('Z2OFF')}
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_3.Power_Zone3', function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){sendMessage('Z3ON')}
                                          else{sendMessage('Z3OFF')}
                                          }
                                          });
                                          ! on("javascript.0.Denon.Zone_Main.Mute", function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){sendMessage('MUON')}
                                          else{sendMessage('MUOFF')}
                                          }
                                          });
                                          ! on("javascript.0.Denon.Zone_2.Mute", function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){sendMessage('Z2MUON')}
                                          else{sendMessage('Z2MUOFF')}
                                          }
                                          });
                                          ! on("javascript.0.Denon.Zone_3.Mute", function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val){sendMessage('Z3MUON')}
                                          else{sendMessage('Z3MUOFF')}
                                          }
                                          });
                                          ! on("javascript.0.Denon.Zone_Main.Master_Volume", function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('MV'+obj.state.val+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_UP",val:true}, function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('MVUP'+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_DOWN",val:true}, function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('MVDOWN'+'');
                                          }
                                          });
                                          ! on("javascript.0.Denon.Zone_2.Volume", function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('Z2'+obj.state.val+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Zone_2.Volume_UP",val:true}, function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('Z2UP'+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Zone_2.Volume_DOWN",val:true}, function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('Z2DOWN'+'');
                                          }
                                          });
                                          ! on("javascript.0.Denon.Zone_3.Volume", function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('Z3'+obj.state.val+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Zone_3.Volume_UP",val:true}, function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('Z3UP'+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Zone_3.Volume_DOWN",val:true}, function (obj){
                                          if (!obj.state.ack) {
                                          sendMessage('Z3DOWN'+'');
                                          }
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Play",vla:true}, function (obj){
                                          sendMessage('NS9A')
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Stop",val:true}, function (obj){
                                          sendMessage('NS9C')
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Pause",val:true}, function (obj){
                                          //if (obj.state.val===true){sendMessage('NS9B')}
                                          sendMessage('NS9B');
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Skip_Plus",val:true}, function (obj){
                                          sendMessage('NS9D')
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Skip_Minus",val:true}, function (obj){
                                          sendMessage('NS9E')
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Page_Next",val:true}, function (obj){
                                          sendMessage('NS9X')
                                          });
                                          ! on({id:"javascript.0.Denon.Control.Page_Previous",val:true}, function (obj){
                                          sendMessage('NS9Y')
                                          });
                                          ! on('javascript.0.Denon.Zone_Main.Select_Input', function (obj){
                                          if (!obj.state.ack) {
                                          if(obj.state.val>=0){
                                          sendMessage('SI'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                          }
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_2.Select_Input', function (obj){
                                          if (!obj.state.ack) {
                                          if(obj.state.val>=0){
                                          sendMessage('Z2'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                          }
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_3.Select_Input', function (obj){
                                          if (!obj.state.ack) {
                                          if(obj.state.val>=0){
                                          sendMessage('Z3'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                          }
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_Main.Video_Input', function (obj){
                                          if (!obj.state.ack) {
                                          if(obj.state.val>=0){
                                          sendMessage('SV'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                          }
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_Main.Video_State', function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val===true){sendMessage('SVON')}
                                          else{sendMessage('SVOFF')}
                                          }
                                          });
                                          ! on('javascript.0.Denon.Zone_Main.HDMI_Monitor', function (obj){
                                          if (!obj.state.ack) {
                                          if(obj.state.val>=0){
                                          sendMessage('VS'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                          }
                                          }
                                          });
                                          ! on("javascript.0.Denon.System.Trigger_1", function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val===true){sendMessage('TR1 ON')}
                                          else{sendMessage('TR1 OFF')}
                                          }
                                          });
                                          ! on("javascript.0.Denon.System.Trigger_2", function (obj){
                                          if (!obj.state.ack) {
                                          if (obj.state.val===true){sendMessage('TR2 ON')}
                                          else{sendMessage('TR2 OFF')}
                                          }
                                          });
                                          ! on('javascript.0.Denon.System.Display_Dimmer', function (obj){
                                          if (!obj.state.ack) {
                                          if(obj.state.val>=0){
                                          sendMessage('DIM '+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                          }
                                          }
                                          });
                                          ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_UP',val:true}, function (obj){sendMessage('TFANUP')});
                                          ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_DOWN',val:true}, function (obj){sendMessage('TFANDOWN')});
                                          ! on({id:'javascript.0.Denon.Tuner_Control.Preset_UP',val:true}, function (obj){sendMessage('TPANUP')});
                                          ! on({id:'javascript.0.Denon.Tuner_Control.Preset_DOWN',val:true}, function (obj){sendMessage('TPANDOWN')});
                                          ! on('javascript.0.Denon.Tuner_Control.Preset_Number', function (obj){
                                          if (obj.state.val.toString().length<2){
                                          sendMessage('TPAN'+'0'+obj.state.val.toString())
                                          }
                                          else{sendMessage('TPAN'+obj.state.val.toString())}

                                          });

                                          ! //---------------------------------------------------------------------------------------
                                          ! // close connection if script stopped-------------------------------------------------
                                          onStop(function () {
                                          if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
                                          }, 2000 /ms/);` [/i][/i][/i]

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            djtale2003 last edited by

                                            @Jey Cee:

                                            Wirklich? 3 Beiträge über deinem.

                                            Gesendet von Unterwegs `

                                            Ich habe mich an dem Datum orientiert. Sorry

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            590
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            35
                                            141
                                            28408
                                            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