Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Vorstellung] Meine dritte VIS

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    358

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

[Vorstellung] Meine dritte VIS

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
visvis projekte
640 Beiträge 83 Kommentatoren 191.5k Aufrufe 117 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Kuddel

    @maximal1981

    zu 1: kopiere mal diesen Code in dein Widget

    http://192.168.4.161:8082/flot/index.html?l%5B0%5D%5Bid%5D=javascript.0.android_akkus.tablet&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Baggregate%5D=average&l%5B0%5D%5Bcolor%5D=%2341f316&l%5B0%5D%5Bmin%5D=0&l%5B0%5D%5Bmax%5D=100&l%5B0%5D%5Bthickness%5D=3&l%5B0%5D%5Bshadowsize%5D=3&l%5B0%5D%5Bunit%5D=%25&l%5B0%5D%5Byaxe%5D=right&l%5B0%5D%5Bxaxe%5D=bottom&l%5B0%5D%5Bfill%5D=0&l%5B0%5D%5Bpoints%5D=false&l%5B0%5D%5BchartType%5D=line&l%5B0%5D%5BafterComma%5D=0&l%5B0%5D%5Bdashes%5D=false&l%5B0%5D%5BdashLength%5D=10&l%5B0%5D%5BspaceLength%5D=10&l%5B0%5D%5Bname%5D=Akkustand&l%5B0%5D%5BignoreNull%5D=true&l%5B1%5D%5Bid%5D=fullybrowser.0.192_168_4_17.Info.isScreenOn&l%5B1%5D%5Boffset%5D=0&l%5B1%5D%5Baggregate%5D=max&l%5B1%5D%5Bcolor%5D=yellow&l%5B1%5D%5Bmin%5D=0.1&l%5B1%5D%5Bmax%5D=5&l%5B1%5D%5Bthickness%5D=3&l%5B1%5D%5Bshadowsize%5D=3&l%5B1%5D%5Bname%5D=Display+An&l%5B1%5D%5BchartType%5D=steps&l%5B1%5D%5Bfill%5D=1&l%5B1%5D%5Byaxe%5D=off&l%5B1%5D%5Bxaxe%5D=off&l%5B1%5D%5BignoreNull%5D=true&l%5B1%5D%5BafterComma%5D=0&l%5B1%5D%5Bdashes%5D=false&l%5B1%5D%5BdashLength%5D=10&l%5B1%5D%5BspaceLength%5D=10&l%5B2%5D%5Bid%5D=alias.0.Wohnzimmer.SD_WZ_Tablet.SET&l%5B2%5D%5Boffset%5D=0&l%5B2%5D%5Baggregate%5D=max&l%5B2%5D%5Bcolor%5D=red&l%5B2%5D%5Bmin%5D=0.1&l%5B2%5D%5Bmax%5D=50&l%5B2%5D%5Bthickness%5D=3&l%5B2%5D%5Bshadowsize%5D=3&l%5B2%5D%5Bname%5D=Ladevorgang&l%5B2%5D%5BchartType%5D=steps&l%5B2%5D%5Bfill%5D=1&l%5B2%5D%5Byaxe%5D=off&l%5B2%5D%5Bxaxe%5D=off&timeType=relative&relativeEnd=now&range=4320&live=300&aggregateType=count&aggregateSpan=300&width=900&height=150&noBorder=noborder&window_bg=%23303030&bg=black&x_labels_color=%23ffffff&y_labels_color=%23ffffff&border_width=1&titlePos=top%3A35%3Bleft%3A50&titleColor=%23ffffff&hoverDetail=true&timeFormat=%25H%3A%25M+%25a&useComma=false&zoom=false&noedit=true&animation=300&start=2019-02-09&start_time=15%3A48&end=2019-02-09&end_time=16%3A00&barLabels=topover&barFontColor=white&titleSize=40px&legColumns=3&legBgOpacity=0&legBg=%23303030
    

    Zu 2 hat dir @Glasfaser bereits geantwortet. Ich bin noch nicht dazu gekommen, den Adapter zu aktualisieren, da ich dann mein komplettes Menü neu machen muss

    maximal1981M Offline
    maximal1981M Offline
    maximal1981
    schrieb am zuletzt editiert von
    #494

    @kuddel & @Glasfaser

    super 1 und 2 gelöst

    für 2 hat sich jetzt eine Bonusfrage ergeben: kann man das Untermenü wieder reduzieren wenn man in einer Unterseite war/ist?

    K 1 Antwort Letzte Antwort
    0
    • maximal1981M maximal1981

      @kuddel & @Glasfaser

      super 1 und 2 gelöst

      für 2 hat sich jetzt eine Bonusfrage ergeben: kann man das Untermenü wieder reduzieren wenn man in einer Unterseite war/ist?

      K Offline
      K Offline
      Kuddel
      schrieb am zuletzt editiert von
      #495

      @maximal1981 mein Stand ist nein.

      Das Untermenü geht nicht wieder automatisch zu... leider

      maximal1981M 1 Antwort Letzte Antwort
      0
      • K Kuddel

        @maximal1981 mein Stand ist nein.

        Das Untermenü geht nicht wieder automatisch zu... leider

        maximal1981M Offline
        maximal1981M Offline
        maximal1981
        schrieb am zuletzt editiert von
        #496

        @kuddel das ist zwar schade, aber ich geh eh zum Großteil über die Icons vom MainView rein :blush:

        trotzdem besten Dank.

        1 Antwort Letzte Antwort
        0
        • maximal1981M Offline
          maximal1981M Offline
          maximal1981
          schrieb am zuletzt editiert von
          #497

          @Kuddel ich bin es mal wieder :baby:
          ich bin gerade dabei den ioBroker-Tab in Betrieb zunehmen.

          Jedoch stehe ich wie so oft an.
          Ich finde vermutlich nicht mal das zugehörige Script. Möglicherweise ist es java\abfragen\adapter_widget
          Wenn ja, hab ich schon mal das Problem, dass ich die Fehlermeldungen nicht auswerten kann.

          Bevor ich hier unnötige Fehlermeldungen post, würde ich gerne wissen ob ich richtig bin.

          lg

          K 1 Antwort Letzte Antwort
          0
          • maximal1981M maximal1981

            @Kuddel ich bin es mal wieder :baby:
            ich bin gerade dabei den ioBroker-Tab in Betrieb zunehmen.

            Jedoch stehe ich wie so oft an.
            Ich finde vermutlich nicht mal das zugehörige Script. Möglicherweise ist es java\abfragen\adapter_widget
            Wenn ja, hab ich schon mal das Problem, dass ich die Fehlermeldungen nicht auswerten kann.

            Bevor ich hier unnötige Fehlermeldungen post, würde ich gerne wissen ob ich richtig bin.

            lg

            K Offline
            K Offline
            Kuddel
            schrieb am zuletzt editiert von
            #498

            @maximal1981 meinst du die Anzeige der laufenden Adapter ?

            Hier mein aktuelles Skript (java):

            // Liest die ioBroker Adapter aus und legt verschiedenen State's an.
            
            schedule('*/10 * * * * *', 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;
               
               //Variablen zurücksetzen
               var counter =0;
               var on = 0
               var manuell=0	
            
               var cacheSelector = $('[id=system.adapter.*.alive]');    
               cacheSelector.each(function(id, i) { 
            
                   //Instanzen ausklammer
                   var check1 = id.indexOf('system.adapter.coronavirus-statistics.0.alive');
               	var check2 = id.indexOf('system.adapter.daswetter.0.alive');
               	var check3 = id.indexOf('system.adapter.dwd.0.alive');
               	var check4 = id.indexOf('system.adapter.ical.0.alive');
               	var check5 = id.indexOf('system.adapter.ical.1.alive');
               	var check6 = id.indexOf('system.adapter.ical.2.alive');
               	var check7 = id.indexOf('system.adapter.feiertage.0.alive');
               	var check8 = id.indexOf('system.adapter.kodi.0.alive');
               	var check9 = id.indexOf('system.adapter.snmp.1.alive');
                   var check10 = id.indexOf('system.adapter.yamaha.0.alive');
               	var check11 = id.indexOf('system.adapter.vis.0.alive');
            
                   var check = check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11;
            
                   //Abfrage nur ausführen, wenn Instanz nicht ausgeklammert ist
                   if(check == -11){
                       var devicename = getObject(id).common.name; 
            
                       //console.log(devicename);
                                  
               		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";
               		
               		//Uptime
               		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);
               		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 ";}
               		
               		//Arbeitsspeicher etc.
               		//var total = getState("system.adapter." + devicenameName + ".memHeapTotal").val;
               		//var used = getState("system.adapter." + devicenameName + ".memHeapUsed").val;
               		//var rss = getState("system.adapter." + devicenameName + ".memRss").val;
               		
               		//Connection Status
               		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";
               		}
               		
               		//////////////////////////
               		// Icon-Pfad definieren //
               		//////////////////////////
            
               		//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";}
                       //Homepilot
                       if (instanzname == 'homepilot20.0 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homepilot.png";}
               		//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
               		////////////////////////
            
               		//Corona-Statistics
               		if (instanzname == 'coronavirus-statistics.0 alive') {devicenameName='Corona'; manuell=1}
               		//DasWetter
               		if (instanzname == 'daswetter.0 alive') {devicenameName='DasWetter'; manuell=1}
               		//DWD
               		if (instanzname == 'dwd.0 alive') {devicenameName='DWD'; manuell=1}
               		//Fullybrowser
               		if (instanzname == 'fullybrowser.0 alive') {devicenameName='FullyKiosk'; 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}
                       //Homepilot
                       if (instanzname == 'homepilot20.0 alive') {devicenameName='Homepilot'; manuell=1}
               		//Linux-Control
               		if (instanzname == 'linux-control.0 alive') {devicenameName='Linux-Ctr.'; manuell=1}
               		//MiHome-Vacuum -> NoNo
               		if (instanzname == 'mihome-vacuum.0 alive') {devicenameName='Nono'; manuell=1}
                       //MiHome-Vacuum -> Dusty
               		if (instanzname == 'mihome-vacuum.1 alive') {devicenameName='Dusty'; 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='QNAP-B'; manuell=1}
               		//SNMP.1
               		if (instanzname == 'snmp.1 alive') {devicenameName='QNAP-Archiv'; manuell=1}
                       //SNMP.2
               		if (instanzname == 'snmp.2 alive') {devicenameName='Brother'; manuell=1}
               		//Spotify
               		if (instanzname == 'spotify-premium.0 alive') {devicenameName='Spotify'; manuell=1}
               		//Tankerkoenig
               		if (instanzname == 'tankerkoenig.0 alive') {devicenameName='Tankerk.'; manuell=1}
               		//Tashscheduler
               		if (instanzname == 'trashschedule.0 alive') {devicenameName='Trashsched.'; 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}
               		//XPEnology
               		if (instanzname == 'synology.1 alive') {devicenameName='XPEnology'; 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);}
               else{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);        
               }
            });   
            

            maximal1981M D 2 Antworten Letzte Antwort
            0
            • K Kuddel

              @maximal1981 meinst du die Anzeige der laufenden Adapter ?

              Hier mein aktuelles Skript (java):

              // Liest die ioBroker Adapter aus und legt verschiedenen State's an.
              
              schedule('*/10 * * * * *', 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;
                 
                 //Variablen zurücksetzen
                 var counter =0;
                 var on = 0
                 var manuell=0	
              
                 var cacheSelector = $('[id=system.adapter.*.alive]');    
                 cacheSelector.each(function(id, i) { 
              
                     //Instanzen ausklammer
                     var check1 = id.indexOf('system.adapter.coronavirus-statistics.0.alive');
                 	var check2 = id.indexOf('system.adapter.daswetter.0.alive');
                 	var check3 = id.indexOf('system.adapter.dwd.0.alive');
                 	var check4 = id.indexOf('system.adapter.ical.0.alive');
                 	var check5 = id.indexOf('system.adapter.ical.1.alive');
                 	var check6 = id.indexOf('system.adapter.ical.2.alive');
                 	var check7 = id.indexOf('system.adapter.feiertage.0.alive');
                 	var check8 = id.indexOf('system.adapter.kodi.0.alive');
                 	var check9 = id.indexOf('system.adapter.snmp.1.alive');
                     var check10 = id.indexOf('system.adapter.yamaha.0.alive');
                 	var check11 = id.indexOf('system.adapter.vis.0.alive');
              
                     var check = check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11;
              
                     //Abfrage nur ausführen, wenn Instanz nicht ausgeklammert ist
                     if(check == -11){
                         var devicename = getObject(id).common.name; 
              
                         //console.log(devicename);
                                    
                 		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";
                 		
                 		//Uptime
                 		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);
                 		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 ";}
                 		
                 		//Arbeitsspeicher etc.
                 		//var total = getState("system.adapter." + devicenameName + ".memHeapTotal").val;
                 		//var used = getState("system.adapter." + devicenameName + ".memHeapUsed").val;
                 		//var rss = getState("system.adapter." + devicenameName + ".memRss").val;
                 		
                 		//Connection Status
                 		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";
                 		}
                 		
                 		//////////////////////////
                 		// Icon-Pfad definieren //
                 		//////////////////////////
              
                 		//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";}
                         //Homepilot
                         if (instanzname == 'homepilot20.0 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homepilot.png";}
                 		//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
                 		////////////////////////
              
                 		//Corona-Statistics
                 		if (instanzname == 'coronavirus-statistics.0 alive') {devicenameName='Corona'; manuell=1}
                 		//DasWetter
                 		if (instanzname == 'daswetter.0 alive') {devicenameName='DasWetter'; manuell=1}
                 		//DWD
                 		if (instanzname == 'dwd.0 alive') {devicenameName='DWD'; manuell=1}
                 		//Fullybrowser
                 		if (instanzname == 'fullybrowser.0 alive') {devicenameName='FullyKiosk'; 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}
                         //Homepilot
                         if (instanzname == 'homepilot20.0 alive') {devicenameName='Homepilot'; manuell=1}
                 		//Linux-Control
                 		if (instanzname == 'linux-control.0 alive') {devicenameName='Linux-Ctr.'; manuell=1}
                 		//MiHome-Vacuum -> NoNo
                 		if (instanzname == 'mihome-vacuum.0 alive') {devicenameName='Nono'; manuell=1}
                         //MiHome-Vacuum -> Dusty
                 		if (instanzname == 'mihome-vacuum.1 alive') {devicenameName='Dusty'; 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='QNAP-B'; manuell=1}
                 		//SNMP.1
                 		if (instanzname == 'snmp.1 alive') {devicenameName='QNAP-Archiv'; manuell=1}
                         //SNMP.2
                 		if (instanzname == 'snmp.2 alive') {devicenameName='Brother'; manuell=1}
                 		//Spotify
                 		if (instanzname == 'spotify-premium.0 alive') {devicenameName='Spotify'; manuell=1}
                 		//Tankerkoenig
                 		if (instanzname == 'tankerkoenig.0 alive') {devicenameName='Tankerk.'; manuell=1}
                 		//Tashscheduler
                 		if (instanzname == 'trashschedule.0 alive') {devicenameName='Trashsched.'; 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}
                 		//XPEnology
                 		if (instanzname == 'synology.1 alive') {devicenameName='XPEnology'; 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);}
                 else{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);        
                 }
              });   
              

              maximal1981M Offline
              maximal1981M Offline
              maximal1981
              schrieb am zuletzt editiert von
              #499

              @kuddel danke schön

              1 Antwort Letzte Antwort
              0
              • K Kuddel

                @maximal1981 meinst du die Anzeige der laufenden Adapter ?

                Hier mein aktuelles Skript (java):

                // Liest die ioBroker Adapter aus und legt verschiedenen State's an.
                
                schedule('*/10 * * * * *', 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;
                   
                   //Variablen zurücksetzen
                   var counter =0;
                   var on = 0
                   var manuell=0	
                
                   var cacheSelector = $('[id=system.adapter.*.alive]');    
                   cacheSelector.each(function(id, i) { 
                
                       //Instanzen ausklammer
                       var check1 = id.indexOf('system.adapter.coronavirus-statistics.0.alive');
                   	var check2 = id.indexOf('system.adapter.daswetter.0.alive');
                   	var check3 = id.indexOf('system.adapter.dwd.0.alive');
                   	var check4 = id.indexOf('system.adapter.ical.0.alive');
                   	var check5 = id.indexOf('system.adapter.ical.1.alive');
                   	var check6 = id.indexOf('system.adapter.ical.2.alive');
                   	var check7 = id.indexOf('system.adapter.feiertage.0.alive');
                   	var check8 = id.indexOf('system.adapter.kodi.0.alive');
                   	var check9 = id.indexOf('system.adapter.snmp.1.alive');
                       var check10 = id.indexOf('system.adapter.yamaha.0.alive');
                   	var check11 = id.indexOf('system.adapter.vis.0.alive');
                
                       var check = check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11;
                
                       //Abfrage nur ausführen, wenn Instanz nicht ausgeklammert ist
                       if(check == -11){
                           var devicename = getObject(id).common.name; 
                
                           //console.log(devicename);
                                      
                   		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";
                   		
                   		//Uptime
                   		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);
                   		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 ";}
                   		
                   		//Arbeitsspeicher etc.
                   		//var total = getState("system.adapter." + devicenameName + ".memHeapTotal").val;
                   		//var used = getState("system.adapter." + devicenameName + ".memHeapUsed").val;
                   		//var rss = getState("system.adapter." + devicenameName + ".memRss").val;
                   		
                   		//Connection Status
                   		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";
                   		}
                   		
                   		//////////////////////////
                   		// Icon-Pfad definieren //
                   		//////////////////////////
                
                   		//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";}
                           //Homepilot
                           if (instanzname == 'homepilot20.0 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homepilot.png";}
                   		//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
                   		////////////////////////
                
                   		//Corona-Statistics
                   		if (instanzname == 'coronavirus-statistics.0 alive') {devicenameName='Corona'; manuell=1}
                   		//DasWetter
                   		if (instanzname == 'daswetter.0 alive') {devicenameName='DasWetter'; manuell=1}
                   		//DWD
                   		if (instanzname == 'dwd.0 alive') {devicenameName='DWD'; manuell=1}
                   		//Fullybrowser
                   		if (instanzname == 'fullybrowser.0 alive') {devicenameName='FullyKiosk'; 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}
                           //Homepilot
                           if (instanzname == 'homepilot20.0 alive') {devicenameName='Homepilot'; manuell=1}
                   		//Linux-Control
                   		if (instanzname == 'linux-control.0 alive') {devicenameName='Linux-Ctr.'; manuell=1}
                   		//MiHome-Vacuum -> NoNo
                   		if (instanzname == 'mihome-vacuum.0 alive') {devicenameName='Nono'; manuell=1}
                           //MiHome-Vacuum -> Dusty
                   		if (instanzname == 'mihome-vacuum.1 alive') {devicenameName='Dusty'; 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='QNAP-B'; manuell=1}
                   		//SNMP.1
                   		if (instanzname == 'snmp.1 alive') {devicenameName='QNAP-Archiv'; manuell=1}
                           //SNMP.2
                   		if (instanzname == 'snmp.2 alive') {devicenameName='Brother'; manuell=1}
                   		//Spotify
                   		if (instanzname == 'spotify-premium.0 alive') {devicenameName='Spotify'; manuell=1}
                   		//Tankerkoenig
                   		if (instanzname == 'tankerkoenig.0 alive') {devicenameName='Tankerk.'; manuell=1}
                   		//Tashscheduler
                   		if (instanzname == 'trashschedule.0 alive') {devicenameName='Trashsched.'; 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}
                   		//XPEnology
                   		if (instanzname == 'synology.1 alive') {devicenameName='XPEnology'; 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);}
                   else{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);        
                   }
                });   
                

                D Offline
                D Offline
                djsirius
                schrieb am zuletzt editiert von djsirius
                #500

                Ich habe den Fehler gefunden!

                Gruß

                djsirius

                1 Antwort Letzte Antwort
                0
                • K Kuddel

                  Hallo zusammen,

                  nach meiner zweiten VIS folgt jetzt meine dritte VIS.

                  Die größte Neuerung ist ein komplett neues Menü mit Hilfe des Top App Bar Widget. Vielen Dank an dieser Stelle an @Scrounger.

                  Bestimmt sind immer noch ein paar Fehler drin, aber fertig wird man ja eh nie.

                  Vieles habe ich aus meiner zweiten VIS übernommen, so dass die Screenshots aus dem Thread oben auch fast noch alle aktuell sind.

                  Screenshots:


                  Startseite
                  90372124-cd0b-40d0-ae6e-b8286ee25672-grafik.png

                  Menü
                  52f11cf6-b7f3-49c8-9344-b1a0f89d0eaa-grafik.png
                  e766325b-8727-48c0-b6e7-9f773f4f246b-grafik.png

                  BVB Details
                  423488b3-1367-4ebf-b28e-8b730970dfae-grafik.png

                  Tablet Details
                  ac924af2-ac1c-4069-a59e-6a68c8775a3f-grafik.png

                  System -> ioBroker
                  eb9f518b-c318-4a00-a66e-6879959792a4-grafik.png

                  System -> Homematic
                  1aaaed6f-8e59-4cdc-8bfd-c26185f1c28b-grafik.png

                  System -> Netzwerk
                  622fd166-ec5b-4ff3-9cbe-d5a81fd5332b-grafik.png

                  System -> Geräte
                  f20ab8dd-18f2-446e-94ac-55a74765e1ca-grafik.png

                  Details VU
                  9cdd9c50-f62a-4e3c-b01a-f911d2e8388d-grafik.png

                  System -> Logs
                  e190e53e-2a68-4e6d-ae7e-a48d069f809f-grafik.png

                  System -> VMware
                  34ffe501-5b74-4b2c-9092-2e1a8ed9f99e-grafik.png

                  Erdgeschoss -> Wohnzimmer
                  18c3b9dc-75e4-41c9-9338-ef3c827f4c86-grafik.png

                  Garten -> Bewässerung
                  160a9338-d885-42be-8ae8-2d0daa67a8f1-grafik.png

                  Wetter
                  840f00c2-b9bb-4f94-be9d-9bb5b0330947-grafik.png

                  Staubsauger
                  1343f5bc-1514-44d2-8754-9a6eff483708-grafik.png

                  Echo Geräte
                  aebe9414-69fe-46ef-86b9-9125b66e2f1d-grafik.png

                  Mutlimedia -> TV
                  d3549b5b-2178-48de-aa40-86c03343a04d-grafik.png

                  Damit die Navigation und alle Widgets funktionieren, wird vor dem Import der DP

                  javascript.0.VIS-Steuerung.Aktuelle_VIS_Seite
                  

                  benöigt.

                  Ebenso sind natürlich alle von mir verwendeten Widgets wichitg:

                  ad5673c8-1694-4fe5-9839-ca55c4dd920d-grafik.png
                  aba96ff9-f4c4-4291-a479-95ce40906c5b-grafik.png

                  Anleitung zum Import der kompletten VIS inkl. meiner Icons:


                  2020-08-17-VIS_v3.zip
                  Meine_Icons.zip

                  1. meine_icons.zip entpacken
                  2. 2020-08-17-vis_v3.zip entpacken
                  3. Die beiden VIS-Datein und die den Icons Ordner zu einem neuen Zip Archiv zusammefügen
                  4. Wie gewohnt das neue Archiv im VIS Editor importieren

                  Anleitung zum Import meiner Skripte:


                  Voraussetzung für den Skript Import

                  • Adapter: Mail, Pushover
                  • Objekte für meine Skripts

                  Objekte anlegen

                  Alle Objekte, mit denen ich in meinen Skripten arbeite, können mit einem Javascript erstellt werden:
                  objekte.txt

                  • Den Inhalt der TXT-Datei in ein neues Javascript kopieren
                  • Das Skript starten
                  • Alle Objekte werden angelegt
                  • Das Skript wieder stoppen

                  Import

                  1. Download der Datei 2020-03-17-scripts.zip
                  2. Eigene Skripte in Zip Datei exportieren
                  3. Beide Archive entpacken und dann die Skripte / Gruppen in einem gemeinsamen Archiv zusammenführen
                  4. Import des neu erstellten Archivs

                  Bei Fragen einfach im Thread stellen ;-)

                  Das nächste Projekt wird dann eine VIS fürs Smartphone

                  RouwdyR Offline
                  RouwdyR Offline
                  Rouwdy
                  schrieb am zuletzt editiert von
                  #501

                  @kuddel hallo kuddel ich bin absoluter frischling was das programmieren hier angeht und versuche nun so pö a pö schlau zu werden, mein problem ist schon denke fehlendes grundwissen :-( , wie genau importiere ich wo genau deine objekte / skripte ? einen mail-adapter hab ich so wie auch die von dir vorgeschlagenen adapter

                  Wirklich "WAHRE" Kameradschaft oder Freundschaft wird erst in der Not erkannt.
                  Alles andere ist leider meist eine mehr oder weniger flüchtige Bekanntschaft.

                  W 1 Antwort Letzte Antwort
                  0
                  • RouwdyR Rouwdy

                    @kuddel hallo kuddel ich bin absoluter frischling was das programmieren hier angeht und versuche nun so pö a pö schlau zu werden, mein problem ist schon denke fehlendes grundwissen :-( , wie genau importiere ich wo genau deine objekte / skripte ? einen mail-adapter hab ich so wie auch die von dir vorgeschlagenen adapter

                    W Offline
                    W Offline
                    WeiserWolf
                    schrieb am zuletzt editiert von
                    #502

                    @rouwdy Als erstes installierst du mal den Adapter "Script Engine" und startest danach den ioBroker neu. Anschließend erscheint links in der Übersicht der Bereich Skripte.
                    Dort gehst du oben auf die drei Punkte --> Skripts importieren und ziehst die heruntergeladene ZIP-Datei per Drag&Drop in den Uploadbereich. Danach sind schon einmal alle Skripts importiert. Dort liegt dann ein Skript "Objekte_anlegen"
                    Das startest du einmal kurz und kannst es danach wieder beenden. Dieses Skript legt sämtliche Datenpunkte im Bereich "Objekte" an (javascript.0 in den einzelnen Unterordner sortiert)
                    Evtl ist auch hier ein Neustart des ioBroker bzw. der Script-Engine erforderlich.
                    Ist zumindest bei mir öfter mal der Fall wenn ich neue Adapter installiere o.ä.

                    RouwdyR 1 Antwort Letzte Antwort
                    0
                    • W WeiserWolf

                      @rouwdy Als erstes installierst du mal den Adapter "Script Engine" und startest danach den ioBroker neu. Anschließend erscheint links in der Übersicht der Bereich Skripte.
                      Dort gehst du oben auf die drei Punkte --> Skripts importieren und ziehst die heruntergeladene ZIP-Datei per Drag&Drop in den Uploadbereich. Danach sind schon einmal alle Skripts importiert. Dort liegt dann ein Skript "Objekte_anlegen"
                      Das startest du einmal kurz und kannst es danach wieder beenden. Dieses Skript legt sämtliche Datenpunkte im Bereich "Objekte" an (javascript.0 in den einzelnen Unterordner sortiert)
                      Evtl ist auch hier ein Neustart des ioBroker bzw. der Script-Engine erforderlich.
                      Ist zumindest bei mir öfter mal der Fall wenn ich neue Adapter installiere o.ä.

                      RouwdyR Offline
                      RouwdyR Offline
                      Rouwdy
                      schrieb am zuletzt editiert von
                      #503

                      @weiserwolf said in [Vorstellung] Meine dritte VIS:

                      Script Engine

                      Dank Dir @weiserwolf , werd es ausprobieren.

                      Wirklich "WAHRE" Kameradschaft oder Freundschaft wird erst in der Not erkannt.
                      Alles andere ist leider meist eine mehr oder weniger flüchtige Bekanntschaft.

                      1 Antwort Letzte Antwort
                      0
                      • maximal1981M Offline
                        maximal1981M Offline
                        maximal1981
                        schrieb am zuletzt editiert von maximal1981
                        #504

                        Hallo,

                        ich habe gerade ein komisches Phänomen.
                        Am Abend wird der Rolladen nicht zur korrekten Zeit herunter gefahren. Jedoch sieht laut mir theoretisch alles richtig aus.

                        2021-06-19 20:18:00.443  - info: javascript.0 (1506) script.js.smarthome.rolladen.rolladen_tag_nacht: +++ Sonnenuntergang -30: Wonhzimmer Seite auf 0% +++
                        

                        Unbenannt.PNG

                        Selbst die Ausgabe/debug des Cron sieht richtig aus.

                        2021-06-19 20:32:02.320  - warn: javascript.0 (1506) script.js.smarthome.rolladen.rolladen_tag_nacht: 31 20 * * *
                        

                        Zeit am Tablet bzw. ioBroker stimmt auch, was man ja auch im Log sehen kann, dass sie nicht mit der Schließzeit übereinstimmt.

                        Jemand eine Idee?

                        lg

                        K 1 Antwort Letzte Antwort
                        0
                        • maximal1981M maximal1981

                          Hallo,

                          ich habe gerade ein komisches Phänomen.
                          Am Abend wird der Rolladen nicht zur korrekten Zeit herunter gefahren. Jedoch sieht laut mir theoretisch alles richtig aus.

                          2021-06-19 20:18:00.443  - info: javascript.0 (1506) script.js.smarthome.rolladen.rolladen_tag_nacht: +++ Sonnenuntergang -30: Wonhzimmer Seite auf 0% +++
                          

                          Unbenannt.PNG

                          Selbst die Ausgabe/debug des Cron sieht richtig aus.

                          2021-06-19 20:32:02.320  - warn: javascript.0 (1506) script.js.smarthome.rolladen.rolladen_tag_nacht: 31 20 * * *
                          

                          Zeit am Tablet bzw. ioBroker stimmt auch, was man ja auch im Log sehen kann, dass sie nicht mit der Schließzeit übereinstimmt.

                          Jemand eine Idee?

                          lg

                          K Offline
                          K Offline
                          Kuddel
                          schrieb am zuletzt editiert von
                          #505

                          @maximal1981 kurzer check, ob ich das Problem richtig verstanden habe:

                          Die Rolladen sollen um 20:31 Uhr (30 Min vor dem Sonnenuntergang) heruterfahren.

                          Der entsprechende Log-Eintrag kommt aver schon um 20:18 Uhr.

                          Das sieht für mich so aus, als wenn sich der Cron-Job nicht die richtige Zeit zieht.

                          1 Antwort Letzte Antwort
                          0
                          • maximal1981M Offline
                            maximal1981M Offline
                            maximal1981
                            schrieb am zuletzt editiert von
                            #506

                            ich werde es mal weiter beobachten

                            1 Antwort Letzte Antwort
                            0
                            • H Offline
                              H Offline
                              HoTi
                              schrieb am zuletzt editiert von HoTi
                              #507

                              Hallo zusammen,

                              ich bin auch neu hier und wollte mich mal an die VIS machen, da die Anzeige der Daten für meine Frau erstmal das wichtigste ist. Vorher habe ich alles mit FHEM und TabletUI gemacht, aber da fange ich jetzt nicht wieder mit an.

                              Nun scheitere ich allerdings schon am Import und zwar an den ICONS.
                              Ich meine sie liegen richtig:

                              9f57950c-620b-48b6-9b8e-7bfcdaa5f9a4-image.png

                              aber angezeigt wird mir nix :-(

                              5788ca19-bbf4-49ed-98e8-8ef8b6fd99f6-image.png

                              Was mache ich nun falsch? Nun verbringe ich schon 3 Tage damit, weil ich euch nicht mit so einer Kleinigkeit nerven wollte, aber langsam verzweifle ich.

                              edit
                              Na gut, habe nun rausgefunden das die Wetter ICONS vom Widget kommen, aber die werden trotzdem nicht angezeigt. Bei den Widget Einstellungen von DasWetter schon.
                              Viele Grüße
                              Tim

                              sigi234S 1 Antwort Letzte Antwort
                              0
                              • H HoTi

                                Hallo zusammen,

                                ich bin auch neu hier und wollte mich mal an die VIS machen, da die Anzeige der Daten für meine Frau erstmal das wichtigste ist. Vorher habe ich alles mit FHEM und TabletUI gemacht, aber da fange ich jetzt nicht wieder mit an.

                                Nun scheitere ich allerdings schon am Import und zwar an den ICONS.
                                Ich meine sie liegen richtig:

                                9f57950c-620b-48b6-9b8e-7bfcdaa5f9a4-image.png

                                aber angezeigt wird mir nix :-(

                                5788ca19-bbf4-49ed-98e8-8ef8b6fd99f6-image.png

                                Was mache ich nun falsch? Nun verbringe ich schon 3 Tage damit, weil ich euch nicht mit so einer Kleinigkeit nerven wollte, aber langsam verzweifle ich.

                                edit
                                Na gut, habe nun rausgefunden das die Wetter ICONS vom Widget kommen, aber die werden trotzdem nicht angezeigt. Bei den Widget Einstellungen von DasWetter schon.
                                Viele Grüße
                                Tim

                                sigi234S Offline
                                sigi234S Offline
                                sigi234
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #508

                                @hoti

                                Welche Vis Version?
                                Welche Icons?
                                Eigene musst du immer mit den Dateimanager hochladen!

                                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                Immer Daten sichern!

                                H 1 Antwort Letzte Antwort
                                0
                                • sigi234S sigi234

                                  @hoti

                                  Welche Vis Version?
                                  Welche Icons?
                                  Eigene musst du immer mit den Dateimanager hochladen!

                                  H Offline
                                  H Offline
                                  HoTi
                                  schrieb am zuletzt editiert von
                                  #509

                                  @sigi234

                                  Ja habe ich auch gemacht. Ich Depp habe nicht Kapiert das die Wetter ICONS nicht in "Meine_Icons" liegen.

                                  Aber die Wetter ICONS werden nicht angezeigt weil er die auf einer mir Unbekannten IP Adresse sucht. Wo verdammt muss ich das nur ändern?

                                  b18d0c5b-3b58-41bf-8390-e2e20fa957de-image.png

                                  GlasfaserG 1 Antwort Letzte Antwort
                                  0
                                  • H HoTi

                                    @sigi234

                                    Ja habe ich auch gemacht. Ich Depp habe nicht Kapiert das die Wetter ICONS nicht in "Meine_Icons" liegen.

                                    Aber die Wetter ICONS werden nicht angezeigt weil er die auf einer mir Unbekannten IP Adresse sucht. Wo verdammt muss ich das nur ändern?

                                    b18d0c5b-3b58-41bf-8390-e2e20fa957de-image.png

                                    GlasfaserG Offline
                                    GlasfaserG Offline
                                    Glasfaser
                                    schrieb am zuletzt editiert von
                                    #510

                                    @hoti

                                    https://forum.iobroker.net/topic/30497/vorstellung-meine-dritte-vis/322

                                    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                    H 1 Antwort Letzte Antwort
                                    0
                                    • GlasfaserG Glasfaser

                                      @hoti

                                      https://forum.iobroker.net/topic/30497/vorstellung-meine-dritte-vis/322

                                      H Offline
                                      H Offline
                                      HoTi
                                      schrieb am zuletzt editiert von
                                      #511

                                      @glasfaser
                                      Danke.
                                      Habe die IP Adresse raus genommen und schon geht es auch.

                                      aber irgendwas mach ich noch falsch. Ich habe ganz viele solche überlagerungen:
                                      009c5090-c5f2-468c-abf0-d6d7bb717c78-image.png

                                      und sowas, im Editor sieht es so aus:

                                      177f0cc7-f2d1-425e-8ef2-65fe945eacde-image.png

                                      und auf der Webseite dann so:
                                      44dcee97-d795-4dba-a5f7-44c397fe7eec-image.png

                                      K 1 Antwort Letzte Antwort
                                      0
                                      • H HoTi

                                        @glasfaser
                                        Danke.
                                        Habe die IP Adresse raus genommen und schon geht es auch.

                                        aber irgendwas mach ich noch falsch. Ich habe ganz viele solche überlagerungen:
                                        009c5090-c5f2-468c-abf0-d6d7bb717c78-image.png

                                        und sowas, im Editor sieht es so aus:

                                        177f0cc7-f2d1-425e-8ef2-65fe945eacde-image.png

                                        und auf der Webseite dann so:
                                        44dcee97-d795-4dba-a5f7-44c397fe7eec-image.png

                                        K Offline
                                        K Offline
                                        Kuddel
                                        schrieb am zuletzt editiert von Kuddel
                                        #512

                                        @hoti ich arbeite oft mit Sichtbarkeiten.

                                        Wenn in deiner Umgebung die verwendeten Datenpunkte nicht vorhanden sind, werden immer alle Objekte angezeigt

                                        Da hilft nur eines: Schritt für Schritt anpassen

                                        1 Antwort Letzte Antwort
                                        0
                                        • maximal1981M Offline
                                          maximal1981M Offline
                                          maximal1981
                                          schrieb am zuletzt editiert von
                                          #513

                                          @HoTi
                                          wie schon @Kuddel erwähnt hat, es gibt viele Ebenen. Ich habe die Icons Anfangs hin und her geschoben um an die anderen Schichten zu kommen, aber das ist nicht notwendig.
                                          Jedes Widget auf einer Seite ist ein Widget in sich. Das muss man immer beachten, und die Ebenen lassen sich im Widget-Editor sehr gut bearbeiten.

                                          Unbenannt.PNG

                                          Würde mal empfehlen mit der Hauptseite 0000 anzufangen, ich habe viel gelernt, durch dieses VIS, und du hast sicher etliches anzupassen. Den zu 99% passen die Adapter nicht zu deinen, der Aufbau nicht mit deinen vorhandenen Gegebenheiten überein. Mit "etwas" Einarbeitung wird das, aber wenn du so wie ich Neuland betrittst, stelle dich darauf ein, dass hier etliche Zeit reinfließt.

                                          Ich habe die Scripte nach Bedarf eingeschaltet und angepasst, da man sonst Zuviel Müll im Log produziert.
                                          Nach 2 Monaten habe ich das schon unter anderem im Schlafzimmer umgesetzt (ich arbeite aber nur zeitweise an der Umsetzung):
                                          Unbenannt.PNG

                                          Man muss auch die IP nicht zwingend wissen, bzw. war das noch nie notwendig.
                                          Ich liefere mal Beispiele:

                                          • Wetter: /adapter/daswetter/icons/tiempo-weather/galeria1/1.png
                                          • Flot:
                                          /flot/index.html?l%5B0%5D%5Bid%5D=tado.0.122768.Weather.outsideTemperature.celsius&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Baggregate%5D=minmax&l%5B0%5D%5Bcolor%5D=%23FF0000&l%5B0%5D%5Bmin%5D=-20&l%5B0%5D%5Bmax%5D=40&l%5B0%5D%5Bthickness%5D=3&l%5B0%5D%5Bshadowsize%5D=3&l%5B0%5D%5Bunit%5D=%C2%B0C&l%5B0%5D%5Byaxe%5D=right&l%5B0%5D%5Bxaxe%5D=bottom&l%5B0%5D%5BignoreNull%5D=true&l%5B0%5D%5BafterComma%5D=0&l%5B0%5D%5Bdashes%5D=false&l%5B0%5D%5BdashLength%5D=10&l%5B0%5D%5BspaceLength%5D=10&l%5B0%5D%5Bfill%5D=0&l%5B0%5D%5Bmultiplicator%5D=1&timeType=relative&relativeEnd=now&range=10080&live=300&aggregateType=step&aggregateSpan=300&window_bg=%23212121&bg=2&barLabels=topover&hoverDetail=true&timeFormat=%25H%3A%25M+%25a&useComma=false&zoom=false&noedit=true&animation=0&m%5B0%5D%5Bl%5D=0&m%5B0%5D%5Bv%5D=0&m%5B0%5D%5Bf%5D=0&m%5B0%5D%5Bc%5D=black&m%5B0%5D%5Bt%5D=3&m%5B0%5D%5Bs%5D=3&m%5B0%5D%5Bd%5D=&m%5B0%5D%5Bp%5D=l&m%5B0%5D%5Bpy%5D=0&m%5B0%5D%5Bfc%5D=%23FF0000&m%5B0%5D%5Bfs%5D=&m%5B0%5D%5Bvl%5D=0&start=2019-02-09&start_time=15%3A48&end=2019-02-09&end_time=16%3A00&noBorder=noborder&x_labels_color=ffffff&y_labels_color=ffffff&barFontColor=white&titlePos=top%3A35%3Bleft%3A50&titleSize=40px&legColumns=0&legBgOpacity=0&legBg=black&width=380&height=230&border_width=1&titleColor=%23ffffff
                                          
                                          • ...
                                          1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          671

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe