Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    309

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[Vorstellung] Meine dritte VIS

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
visvis projekte
640 Posts 83 Posters 197.3k Views 117 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C chriss2007

    @kuddel dort habe ich diese jeweils auch angepasst gehabt.

    K Offline
    K Offline
    Kuddel
    wrote on last edited by
    #570

    @chriss2007 dann bleibt nur noch

    f97e6cf7-0c24-4933-b1d3-1d151cd2baea-grafik.png

    C 2 Replies Last reply
    0
    • K Kuddel

      @chriss2007 dann bleibt nur noch

      f97e6cf7-0c24-4933-b1d3-1d151cd2baea-grafik.png

      C Offline
      C Offline
      chriss2007
      wrote on last edited by
      #571

      @kuddel habe mal die Anwesenheit komplett neu gemacht. Jetzt gehen die logos einwandfrei.

      1 Reply Last reply
      1
      • K Kuddel

        @chriss2007 dann bleibt nur noch

        f97e6cf7-0c24-4933-b1d3-1d151cd2baea-grafik.png

        C Offline
        C Offline
        chriss2007
        wrote on last edited by
        #572

        @kuddel Ich muss dich noch mal stören, einzie wo es jetzt noch hängt an der uptime von motioneye und der ccu. der schreibt mir keine werde in denn Datenpunkt. anscheinend klappt die abfrage nicht. wenn ich in Putty abfrage geht es einwandfrei!

        uptime.jpg

        K 1 Reply Last reply
        0
        • C chriss2007

          @kuddel Ich muss dich noch mal stören, einzie wo es jetzt noch hängt an der uptime von motioneye und der ccu. der schreibt mir keine werde in denn Datenpunkt. anscheinend klappt die abfrage nicht. wenn ich in Putty abfrage geht es einwandfrei!

          uptime.jpg

          K Offline
          K Offline
          Kuddel
          wrote on last edited by
          #573

          @chriss2007 die Abfrage ich mittlweile aus BLockly herausgelöst und verwendet dafür den Adapter Linux-Control.

          Da kann man dann eigene Befehle hinterlegen

          C 1 Reply Last reply
          1
          • K Kuddel

            @chriss2007 die Abfrage ich mittlweile aus BLockly herausgelöst und verwendet dafür den Adapter Linux-Control.

            Da kann man dann eigene Befehle hinterlegen

            C Offline
            C Offline
            chriss2007
            wrote on last edited by
            #574

            @kuddel den Adapter habe ich mir auch schon angeschaut, aber will dort auch nicht. anscheinend hat es mit der ssh zu tun. ich finde aber nicht die ursache dafür

            K 1 Reply Last reply
            0
            • C chriss2007

              @kuddel den Adapter habe ich mir auch schon angeschaut, aber will dort auch nicht. anscheinend hat es mit der ssh zu tun. ich finde aber nicht die ursache dafür

              K Offline
              K Offline
              Kuddel
              wrote on last edited by
              #575

              @chriss2007 was meldet der Adapter denn, wenn du was anfragen willst?

              C 1 Reply Last reply
              1
              • K Kuddel

                @chriss2007 was meldet der Adapter denn, wenn du was anfragen willst?

                C Offline
                C Offline
                chriss2007
                wrote on last edited by
                #576

                @kuddel der Adapter sagt laut Protokoll das er fertig ist, aber Datenpunkt ist leer
                Protokol.jpg objekt.jpg adapter.jpg

                K 1 Reply Last reply
                0
                • C chriss2007

                  @kuddel der Adapter sagt laut Protokoll das er fertig ist, aber Datenpunkt ist leer
                  Protokol.jpg objekt.jpg adapter.jpg

                  K Offline
                  K Offline
                  Kuddel
                  wrote on last edited by
                  #577

                  @chriss2007 so sieht es bei mir aus für z.B. meine CCU

                  3f14e53c-6293-4bea-83b8-1966a18b744d-grafik.png

                  CPU

                  grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} {printf("%.2f\n",usage)}'
                  

                  RAM

                  free | grep Mem | awk '{usage=($3/$2 * 100.0)} END {printf("%.2f\n",usage)}'
                  

                  Uptime

                  awk '{printf("%u Tage, %02u Std, %02u Min\n",int($1/60/60/24),int($1%(60*60*24)/60/60),int(($1%(60*60))/60))}' /proc/uptime
                  
                  C 2 Replies Last reply
                  1
                  • K Kuddel

                    @chriss2007 so sieht es bei mir aus für z.B. meine CCU

                    3f14e53c-6293-4bea-83b8-1966a18b744d-grafik.png

                    CPU

                    grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} {printf("%.2f\n",usage)}'
                    

                    RAM

                    free | grep Mem | awk '{usage=($3/$2 * 100.0)} END {printf("%.2f\n",usage)}'
                    

                    Uptime

                    awk '{printf("%u Tage, %02u Std, %02u Min\n",int($1/60/60/24),int($1%(60*60*24)/60/60),int(($1%(60*60))/60))}' /proc/uptime
                    
                    C Offline
                    C Offline
                    chriss2007
                    wrote on last edited by
                    #578

                    @kuddel fehler gefunden und läuft auch jetzt.

                    1 Reply Last reply
                    0
                    • K Kuddel

                      @chriss2007 so sieht es bei mir aus für z.B. meine CCU

                      3f14e53c-6293-4bea-83b8-1966a18b744d-grafik.png

                      CPU

                      grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} {printf("%.2f\n",usage)}'
                      

                      RAM

                      free | grep Mem | awk '{usage=($3/$2 * 100.0)} END {printf("%.2f\n",usage)}'
                      

                      Uptime

                      awk '{printf("%u Tage, %02u Std, %02u Min\n",int($1/60/60/24),int($1%(60*60*24)/60/60),int(($1%(60*60))/60))}' /proc/uptime
                      
                      C Offline
                      C Offline
                      chriss2007
                      wrote on last edited by
                      #579

                      @kuddel Du hast die Adapter abfrage drin. kann man es ändern das unter 0_Userdata diese erstellt? aktuell sind die im javascript.

                      K 1 Reply Last reply
                      0
                      • C chriss2007

                        @kuddel Du hast die Adapter abfrage drin. kann man es ändern das unter 0_Userdata diese erstellt? aktuell sind die im javascript.

                        K Offline
                        K Offline
                        Kuddel
                        wrote on last edited by
                        #580

                        @chriss2007

                        // 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('0_userdata.0.adapter_infos.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Adapter', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
                           createState('0_userdata.0.adapter_infos.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.synology.1.alive');
                               var check11 = id.indexOf('system.adapter.yamaha.0.alive');
                           	var check12 = id.indexOf('system.adapter.vis.0.alive');
                        
                               var check = check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11 + check12;
                        
                               //Abfrage nur ausführen, wenn Instanz nicht ausgeklammert ist
                               if(check == -12){
                                   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="0_userdata.0.adapter_infos.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}
                                   // Synology
                                   if (instanzname == 'synology.0 alive') {devicenameName='XPEnology'; 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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.Adapter"+counter.toString()+".Uptime";          
                           		createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
                           		setStateDelayed(devicename, uptime, 800);
                           		//MemUsed setzen
                           		//devicename="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.vis-status.alle_adapter_gestartet";
                           if(on == counter){setState(visstatus, true);}
                           //if(on == counter -1){setState(visstatus, true);}
                           else{setState(visstatus, false);}
                           
                           
                           setStateDelayed('0_userdata.0.adapter_infos.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:"0_userdata.0.adapter_infos.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);        
                           }
                        });   
                        

                        1 Reply Last reply
                        1
                        • C Offline
                          C Offline
                          chriss2007
                          wrote on last edited by chriss2007
                          #581

                          Habe die Ursache gefunden, ein Adapter hat es nicht richtig Runtergeschmiesen.

                          Kann mir wer helfen von euch? Ich habe das Problem seit dem ich denn IOT Adapter installiert habe. Wenn dieser Installiert ist erstellt er bei der Adapter Abfrage nur bis "Adapter4". Habe Ihne Test halber deinstalliert. Da erstellt er alle bis ca 32....cloud.jpg

                          K 1 Reply Last reply
                          0
                          • D djsirius

                            @kuddel ich traue es mich gar nicht zur schreiben, aber die Rolladen fahren runter aber nicht hoch! :thinking_face:

                            A Offline
                            A Offline
                            Aachen1305
                            wrote on last edited by Aachen1305
                            #582

                            @djsirius ich habe genau das selbe Problem, wie Du. Die Rollos fahren runter, aber nicht hoch. Hast Du Du da schon ne Lösung gefunden?

                            C 2 Replies Last reply
                            0
                            • A Aachen1305

                              @djsirius ich habe genau das selbe Problem, wie Du. Die Rollos fahren runter, aber nicht hoch. Hast Du Du da schon ne Lösung gefunden?

                              C Offline
                              C Offline
                              chriss2007
                              wrote on last edited by
                              #583

                              @aachen1305 mit denn Rollos hat das bei mir nix zu tun! ich kann dir auch leider nicht helfen da ich bei mir direkt über die HM-IP Aktoren dort Arbeite.

                              1 Reply Last reply
                              0
                              • A Aachen1305

                                @djsirius ich habe genau das selbe Problem, wie Du. Die Rollos fahren runter, aber nicht hoch. Hast Du Du da schon ne Lösung gefunden?

                                C Offline
                                C Offline
                                chriss2007
                                wrote on last edited by
                                #584

                                @aachen1305 Kannst ja aber mal erzählen was genau das Problem ist und welche Geräte du nutzt? und was du an Fehler bekommst.

                                A 1 Reply Last reply
                                0
                                • C chriss2007

                                  @aachen1305 Kannst ja aber mal erzählen was genau das Problem ist und welche Geräte du nutzt? und was du an Fehler bekommst.

                                  A Offline
                                  A Offline
                                  Aachen1305
                                  wrote on last edited by
                                  #585

                                  @chriss2007
                                  ich arbeite mit den Xiaomi Fenstersensoren sowie Shelly 2.5 für die Rollos. Das Lustige ist ja dass ich keine Fehler angezeigt bekomme. Die Rollos fahren abends runter wie es sein soll, aber am nächsten Morgen nicht mehr hoch.
                                  Ich werde heute abend das Skript einfach mal neu installieren und schauen ob es dann klappt.

                                  C 1 Reply Last reply
                                  0
                                  • C chriss2007

                                    Habe die Ursache gefunden, ein Adapter hat es nicht richtig Runtergeschmiesen.

                                    Kann mir wer helfen von euch? Ich habe das Problem seit dem ich denn IOT Adapter installiert habe. Wenn dieser Installiert ist erstellt er bei der Adapter Abfrage nur bis "Adapter4". Habe Ihne Test halber deinstalliert. Da erstellt er alle bis ca 32....cloud.jpg

                                    K Offline
                                    K Offline
                                    Kuddel
                                    wrote on last edited by Kuddel
                                    #586

                                    @chriss2007 anbei einmal meine aktuell verwendete Version zur Abfrage der Adapter

                                    // 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('0_userdata.0.adapter_infos.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Adapter', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
                                       createState('0_userdata.0.adapter_infos.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.synology.1.alive');
                                           var check11 = id.indexOf('system.adapter.yamaha.0.alive');
                                       	var check12 = id.indexOf('system.adapter.vis.0.alive');
                                    
                                           var check = check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11 + check12;
                                    
                                           //Abfrage nur ausführen, wenn Instanz nicht ausgeklammert ist
                                           if(check == -12){
                                               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="0_userdata.0.adapter_infos.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 = "/vis.0/VIS_v3/Meine_Icons/Adapter_Icons/homematic.png";}
                                       		//HomeMatic
                                       		if (instanzname == 'hm-rpc.0 alive') {var bild = "/vis.0/VIS_v3/Meine_Icons/Adapter_Icons/homematic.png";}
                                       		//HomeMatic-IP
                                       		if (instanzname == 'hm-rpc.1 alive') {var bild = "/vis.0/VIS_v3/Meine_Icons/Adapter_Icons/homematic_ip.jpg";}
                                               //Homepilot
                                               if (instanzname == 'homepilot20.0 alive') {var bild = "/vis.0/VIS_v3/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}
                                               // Synology
                                               if (instanzname == 'synology.0 alive') {devicenameName='XPEnology'; 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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.Adapter"+counter.toString()+".Uptime";          
                                       		createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
                                       		setStateDelayed(devicename, uptime, 800);
                                       		//MemUsed setzen
                                       		//devicename="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.adapter_infos.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="0_userdata.0.vis-status.alle_adapter_gestartet";
                                       if(on == counter){setState(visstatus, true);}
                                       //if(on == counter -1){setState(visstatus, true);}
                                       else{setState(visstatus, false);}
                                       
                                       
                                       setStateDelayed('0_userdata.0.adapter_infos.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:"0_userdata.0.adapter_infos.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);        
                                       }
                                    });   
                                    

                                    Du müsstest den Adapter wohl von der Abfrage ausklammer, da er keinen Alive Objekt hat.

                                    Bitte unter Zeile 29 ergänzen:

                                    var check13 = id.indexOf('system.adapter.cloud.0.alive');
                                    

                                    und in Zeile 30

                                    var check = check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11 + check12 + check13;
                                    

                                    Dann wird der Adapter nicht mehr abgefragt

                                    A 1 Reply Last reply
                                    1
                                    • A Aachen1305

                                      @chriss2007
                                      ich arbeite mit den Xiaomi Fenstersensoren sowie Shelly 2.5 für die Rollos. Das Lustige ist ja dass ich keine Fehler angezeigt bekomme. Die Rollos fahren abends runter wie es sein soll, aber am nächsten Morgen nicht mehr hoch.
                                      Ich werde heute abend das Skript einfach mal neu installieren und schauen ob es dann klappt.

                                      C Offline
                                      C Offline
                                      chriss2007
                                      wrote on last edited by
                                      #587

                                      @aachen1305 Und wenn du diese manuel Ansteuerst fahren diese Ordentlich?

                                      A 1 Reply Last reply
                                      0
                                      • C chriss2007

                                        @aachen1305 Und wenn du diese manuel Ansteuerst fahren diese Ordentlich?

                                        A Offline
                                        A Offline
                                        Aachen1305
                                        wrote on last edited by
                                        #588

                                        @chriss2007
                                        Ja das klaapt einwandfrei.

                                        Habe das Skript mal neu installiert, Rollos sind runtergefahren. Warten wir mal ab, wie es morgen früh aus sieht :-)

                                        A 1 Reply Last reply
                                        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

                                          machs-smart.deM Offline
                                          machs-smart.deM Offline
                                          machs-smart.de
                                          wrote on last edited by
                                          #589

                                          @kuddel sehr schön! Gerne auch mal meine anschauen: https://www.machs-smart.de/smart-home-dashboard-mit-der-machs-smart-de-firehd-visualisierung/

                                          DD49DB88-909D-4AD6-9AA7-A15E012F4CFD.jpeg

                                          www.machs-smart.de
                                          Anleitungen und Tutorials rund um ioBroker

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          565

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe