Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Problem mit Adapter_Infos

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Problem mit Adapter_Infos

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

      Hallo alle Zusammen

      ich habe Probleme mit dem Adapter_Info Skript

      15:29:45.863	warn	javascript.0 (834) script.js.java.abfragen.adapter_infos: Object "system.adapter.vis.0.alive" does not exist
      15:29:45.866	error	javascript.0 (834) at script.js.java.abfragen.adapter_infos:14:39
      15:29:45.866	error	javascript.0 (834) at Object.<anonymous> (script.js.java.abfragen.adapter_infos:13:19)
      
      // Liest die ioBroker Adapter aus und legt verschiedenen State's an.
      
      //on({id:"system.adapter.admin.0.uptime",change:'any'}, function (obj) {
      on({id:"system.adapter.admin.0.uptime",change:'any'}, function (obj) {
          createState('Adapter.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Adapter', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
          createState('Adapter.AdapterNummer', 0, { name: 'Adapter zum schalten', desc: 'Adapter zum schalten', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });    
          //var counterAlt = getState("javascript.0.Adapter.Anzahl").val;
          var counter =0;
      	var on = 0
      	var manuell=0	
      
          var cacheSelector = $('[id=system.adapter.*.alive]');    
          cacheSelector.each(function(id, i) {        
              var devicename = getObject(id).common.name; 
      		
      		//Instanzen ausklammern
      		instanz0 = devicename.indexOf('daswetter');
      		instanz1 = devicename.indexOf('dwd');
              instanz2 = devicename.indexOf('ical');
      		instanz3 = devicename.indexOf('feiertage');
      		instanz4 = devicename.indexOf('snmp.1');
              instanz5 = devicename.indexOf('synology');
              instanz6 = devicename.indexOf('vis');
      		if(instanz0 !=0 && instanz1 != 0 && instanz2 !=0 && instanz3 != 0 && instanz4 != 0 && instanz5 !=0 && instanz6 != 0){
      		
      			var devicenameName=devicename;
      			var instanzname=getObject(id).common.name;
      			var test = devicenameName;
      			var devicename_array = devicenameName.split(' ');        
      			devicenameName = devicename_array[0];
      			counter = counter+1; 
      				
      			var strStatePath = "system.adapter." + devicenameName + ".alive";
      			if (isState(strStatePath, true)) {
      				var uptime = getState("system.adapter." + devicenameName + ".uptime").val;
      				var tage = Math.floor(uptime / (24*3600));
      				var stunden = Math.floor((uptime % (24*3600))/3600);
      				var minuten = Math.floor((uptime % (3600))/60);
      				//var sekunden = Math.floor(uptime % 60);      
      				if (stunden < 10) {stunden = "0"+stunden};
                      if (minuten < 10) {minuten = "0"+minuten};				
      				if (tage == 1) {uptime = tage.toString()+" Tag, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";};
      				if (tage != 1) {uptime = tage.toString()+" Tage, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";}
      				//var total = getState("system.adapter." + devicenameName + ".memHeapTotal").val;
      				//var used = getState("system.adapter." + devicenameName + ".memHeapUsed").val;
      				//var rss = getState("system.adapter." + devicenameName + ".memRss").val;
      				var connect = getState("system.adapter." + devicenameName + ".alive").val;            
      
      				if(connect == false){var con = 0;}
      				else {                
      					var con = 1;
      					var strStatePath = devicenameName + ".info.connection";
      					if (isState(strStatePath, true)) {
      						var connectS = getState(devicenameName + ".info.connection").val;
      						if (connectS == false) {
      							con = 2;
      						}                                                                        
      					} 
      				}
      				if(con==1) {on = on + 1}
      									  
      			}       
      			
      			devicename="Adapter.Adapter"+counter.toString()+".KompletterNameAdapter";
      			createState(devicename, 'empty', { name: 'Kompletter Name des Adapters', desc: '', type: 'string', role: '',read: true, write: true }); 
      			setStateDelayed(devicename, devicenameName, 800);
      			
      			var contentstring = devicenameName;
      			var suchstring = /(ical)/g; 
      			var suchergebnis = suchstring.test( contentstring );
      			
      			if (suchergebnis != true) {
      				var devicename_array = devicenameName.split('.');        
      				devicenameName = devicename_array[0];
      			}    
      
      			if (devicenameName == "daswetter") {
      				var bild = "/" + devicenameName + ".admin/" + devicenameName + "com.png";
      			} else if (suchergebnis != false) {
      				var devicename_array = devicenameName.split('.');        
      				var icalName = devicename_array[0];        
      				var bild = "/" + icalName + ".admin/" + icalName + ".png";
      			} else {
      				var bild = "/" + devicenameName + ".admin/" + devicenameName + ".png";
      			}
      			
      			//Alexa2
      			if (devicenameName == 'alexa2') {var bild = "/" + devicenameName + ".admin/" + "alexa.png";}
      			//FritzDECT
      			if (devicenameName == 'fritzdect') {var bild = "/" + devicenameName + ".admin/" + "fritzdect_logo.png";}
      			//FullyBrowser
      			if (devicenameName == 'fullybrowser') {var bild = "/" + devicenameName + ".admin/" + "fully.png";}
      			//HM-Rega
      			//if (devicenameName == 'hm-rega') {var bild = "/" + devicenameName + ".admin/" + "homematic.png";}
      			if (devicenameName == 'hm-rega') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homematic.gif";}
      			//HomeMatic
      			//if (instanzname == 'hm-rpc.0 alive') {var bild = "/" + devicenameName + ".admin/" + "homematic.png";}
      			if (instanzname == 'hm-rpc.0 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homematic.gif";}
      			//HomeMatic-IP
      			//if (instanzname == 'hm-rpc.1 alive') {var bild = "/" + devicenameName + ".admin/" + "homematic.png";}
      			if (instanzname == 'hm-rpc.1 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homematic_ip.jpg";}
      			//UPNP
      			if (devicenameName == 'upnp') {var bild = "/" + devicenameName + ".admin/" + "upnp-discovery.png";}
                  //Pushover.1
      			if (instanzname == 'pushover.1 alive') {var bild = "/mihome-vacuum.admin/mihome-vacuum.png";}
                  //Pushover.2
      			if (instanzname == 'pushover.2 alive') {var bild = "/daswetter.admin/daswettercom.png";}
      			
      			//AdapterName anpassen
      			
      			//DasWetter
      			if (instanzname == 'daswetter.0 alive') {devicenameName='DasWetter'; manuell=1}
      			//DWD
      			if (instanzname == 'dwd.0 alive') {devicenameName='DWD'; manuell=1}
      			//HM-REGA
      			if (instanzname == 'hm-rega.0 alive') {devicenameName='HM-Rega'; manuell=1}			
      			//HM-RPC.0
      			if (instanzname == 'hm-rpc.0 alive') {devicenameName='HomeMatic'; manuell=1}
      			//HM-RPC.1
      			if (instanzname == 'hm-rpc.1 alive') {devicenameName='HM-IP'; manuell=1}
      			//MiHome-Vacuum
      			if (instanzname == 'mihome-vacuum.0 alive') {devicenameName='Nono'; manuell=1}
      			//Pushover
      			if (instanzname == 'pushover.0 alive') {devicenameName='Pushover.0'; manuell=1}
      			if (instanzname == 'pushover.1 alive') {devicenameName='Pushover.1'; manuell=1}
      			if (instanzname == 'pushover.2 alive') {devicenameName='Pushover.2'; manuell=1}
      			//Simple-API
      			if (instanzname == 'simple-api.0 alive') {devicenameName='Simple-API'; manuell=1}
      			//SNMP.0
      			if (instanzname == 'snmp.0 alive') {devicenameName='SNMP.0'; manuell=1}
      			//SNMP.1
      			if (instanzname == 'snmp.1 alive') {devicenameName='SNMP.1'; manuell=1}
      			//TR-064.0
      			if (instanzname == 'tr-064.0 alive') {devicenameName='TR-064.0'; manuell=1}
      			//TR-064.1
      			if (instanzname == 'tr-064.1 alive') {devicenameName='TR-064.1'; manuell=1}
      			
      			
      			
      			//Instanz-Namen setzen
      			if(manuell!=1) {devicenameName = devicenameName.substring(0, 1).toUpperCase() + devicenameName.substring(1).toLowerCase();}	
                  //devicenameName = devicenameName.substring(0, 1).toUpperCase() + devicenameName.substring(1).toLowerCase();
      			devicename="Adapter.Adapter"+counter.toString()+".NameInstanz";
      			createState(devicename, 'empty', { name: 'Name des Geräts', desc: '', type: 'string', role: '',read: true, write: true }); 
      			setStateDelayed(devicename, devicenameName, 800);
      			//Bild Pfad setzen
      			devicename="Adapter.Adapter"+counter.toString()+".Bild";
      			createState(devicename, 'empty', { name: 'Speicherort Bild', desc: '', type: 'string', role: '',read: true, write: true });
      			setStateDelayed(devicename, bild, 800);
      			//Uptime setzen
      			devicename="Adapter.Adapter"+counter.toString()+".Uptime";          
      			createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
      			setStateDelayed(devicename, uptime, 800);
      			//MemUsed setzen
      			//devicename="Adapter.Adapter"+counter.toString()+".MemUsed";          
      			//createState(devicename, 0, { name: 'Link MemUsed', desc: '', type: 'number', role: '',read: true, write: true });
      			//setStateDelayed(devicename, used, 800);
      			//MemToal setzen
      			//devicename="Adapter.Adapter"+counter.toString()+".MemTotal";          
      			//createState(devicename, 0, { name: 'Link MemTotal', desc: '', type: 'number', role: '',read: true, write: true });
      			//setStateDelayed(devicename, total, 800);
      			//MemRSS setzen
      			//devicename="Adapter.Adapter"+counter.toString()+".MemRSS";          
      			//createState(devicename, 0, { name: 'Link MemRSS', desc: '', type: 'number', role: '',read: true, write: true });
      			//setStateDelayed(devicename, rss, 800);
      			//Connected setzen
      			devicename="Adapter.Adapter"+counter.toString()+".Connected";          
      			createState(devicename, 0, { name: 'Status Adapter', desc: '', type: 'number', role: '',read: true, write: true });
      			setStateDelayed(devicename, con, 800);
      			
                  //Wert zurücksetzen
                  var manuell=0
      		}
          });
          
      	//Adaptet Icon Übersicht
          visstatus="javascript.0.VIS-Status.alle_adapter_gestartet";
          if(on == counter){setState(visstatus, true);}
          if(on == counter -1){setState(visstatus, true);}
          if(on < counter -1){setState(visstatus, false);}
      	
      	
          setStateDelayed('Adapter.Anzahl', counter, 800);
      
          function isState(strStatePath, strict) {
              let mSelector;
              if (strict) {
                  mSelector = $('state[id=' + strStatePath + '$]');
              } else {
                  mSelector = $('state[id=' + strStatePath + ']');
              }
              if (mSelector.length > 0) {
                  return true;
              } else {
                  return false;
              }
          }  
      }); 
      
      on({id:"javascript.0.Adapter.AdapterNummer", change: 'any'}, function (dpobj) {
          if (getState("javascript.0.Adapter.AdapterNummer").val != 0) {        
              const instanz = "javascript." + instance;
              var adapterNummer = getState(instanz + ".Adapter.AdapterNummer").val;
              var adapter = getState(instanz + ".Adapter.Adapter" + adapterNummer + ".KompletterNameAdapter").val; // Name und Instanz des Adapters 
              var idAdapter = "system.adapter." + adapter;
              
              var obj = getObject(idAdapter);
              if (dpobj.state.val == false) {
                  obj.common.enabled = true;  // Adapter einschalten
              } else if (dpobj.state.val == true) {
                  obj.common.enabled = false;  // Adapter ausschalten
              }
              setObject(idAdapter, obj);
              setStateDelayed('javascript.0.Adapter.AdapterNummer', 0, 800);        
          }
      });   
      
      
      

      Kann mir hier jemand sagen was ich falsch mache ??

      LG Daniel

      paul53 1 Reply Last reply Reply Quote 0
      • M
        MCU last edited by

        @dg19222 sagte in Problem mit Adapter_Infos:

        if(instanz0 !=0 && instanz1 != 0 && instanz2 !=0 && instanz3 != 0 && instanz4 != 0 && instanz5 !=0 && instanz6 != 0){

        Du willst sie ausklammern

        instanz0 <0 && instanz1 <0....
        
        D 1 Reply Last reply Reply Quote 0
        • D
          dg19222 @MCU last edited by

          @mcu
          Stehe grad auf em Schlauch

          M 1 Reply Last reply Reply Quote 0
          • M
            MCU @dg19222 last edited by

            @dg19222 Wo und wie?

            D 1 Reply Last reply Reply Quote 0
            • D
              dg19222 @MCU last edited by

              @mcu

              ich habe das skript übernommen ich kenne mich mit Java Skripten nur sehr wenig aus

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @dg19222 last edited by

                @dg19222 sagte: Object "system.adapter.vis.0.alive" does not exist

                Starte mal die Javascript-Instanz neu. Offenbar hat sie noch ungültige Zustände im Puffer.

                D 1 Reply Last reply Reply Quote 0
                • D
                  dg19222 @paul53 last edited by dg19222

                  @paul53
                  Danke für den tip Jetzt ist der fehler weg
                  Die ordner werden Erstellt allerdings liefert das Skript nur den Namen der Adapter aber leider keine zahlenwerte hier giebt er nur {"ack":false} aus

                  Screenshot 2023-12-22 163247.png

                  Hast du da noch ne idee?

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  945
                  Online

                  31.6k
                  Users

                  79.5k
                  Topics

                  1.3m
                  Posts

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