Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Vorstellung] Meine dritte VIS

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorstellung] Meine dritte VIS

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kuddel @chriss2007 last edited by Kuddel

      @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 Reply Quote 1
      • C
        chriss2007 @Aachen1305 last edited by

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

        A 1 Reply Last reply Reply Quote 0
        • A
          Aachen1305 @chriss2007 last edited by

          @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 Reply Quote 0
          • machs-smart.de
            machs-smart.de @Kuddel last edited by

            @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

            1 Reply Last reply Reply Quote 0
            • A
              Aachen1305 @Aachen1305 last edited by

              @aachen1305
              Skript klappt nach Neuinstallation

              1 Reply Last reply Reply Quote 1
              • A
                AKuehnemann73 @Kuddel last edited by

                @kuddel

                könntest du mir mal bitte das skript für den Saugroboter bereitstellen?
                Beim importieren aus der Sammlung kommt immer nur
                Can't extract blockly code

                K 1 Reply Last reply Reply Quote 0
                • K
                  Kuddel @AKuehnemann73 last edited by

                  @akuehnemann73

                  Nono.txt

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    AKuehnemann73 @Kuddel last edited by

                    @kuddel

                    Vielen Dank hat jetzt geklappt 👍

                    1 Reply Last reply Reply Quote 0
                    • B
                      Ben 1 last edited by

                      Hallo,
                      klasse Vis 👍

                      Ich brauche bitte mal Hilfe zur Anleitung, ich habe den Meine_Icons.zip entpackt dadrin ist der Ordner Meine_Icons:
                      1597641339374-meine_icons->Meine_Icons

                      Jetzt entpacke und kopiere ich die 2 files von 2020-08-17-VIS_v3.zip in den Ordner 1597641339374-meine_icons wodrin sich der unterordner Meine_Icons befindet und zippe das ganze und Importieren das im Vis Editor unter Projekte->Import.

                      Bei dem Import muss ich einen Namen eingeben ist dieser entscheidend bzw. vorgegeben ?
                      Leider kommen nachdem import fehler und mir wird die default Ansicht angezeigt.

                      error2.jpg

                      error.jpg

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Kuddel @Ben 1 last edited by

                        @ben-1 ich würde vorschlagen den Import ohne Icons zu machen.

                        Erstmal meine VIS importieren.

                        Wenn das funktioniert, die Icons hochladen

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          Ben 1 @Kuddel last edited by

                          @kuddel
                          Danke für deine Hilfe, welchen importnamen muss ich angeben ?

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            Kuddel @Ben 1 last edited by

                            @ben-1 bei mir heißt die VIS: VIS_v3

                            Könnte später entscheidend für die Icons sein.

                            1 Reply Last reply Reply Quote 0
                            • B
                              Ben 1 last edited by

                              @knuddel
                              wie erstellst du den den Rahmen bzw. wie heißt das Widget ?
                              ich habe versucht die Größe zu verändern, finde aber nirgends den Wert.

                              Kannst du mir evtl. ein Beispiel geben wo ich das sauber für mich erstelle.

                              view.jpg

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                Ben 1 @Ben 1 last edited by

                                Habs gesehen das ist das Widget Shape und dann darauf einen Text

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

                                  Alexa

                                  Hallo die View gefällt mir sehr …

                                  Habe 3 Dots 1 Bose 900 Alexafähig

                                  Wie mache ich das mit den Radiosender ?

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    Aachen1305 @mgieso last edited by

                                    @mgieso
                                    Schau Dir den ersten Post an, gehe danach vor und baue nach.
                                    Genau so habe ich es auch gemacht 👍

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

                                      @Kuddel
                                      wie änderst du die Player-Steuer Widgets der Echos?
                                      z.B. DP: ....0.echo.wohnzimmer_status
                                      Spotify, Amazon Music, Tunein, Stopped

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        Kuddel @maximal1981 last edited by

                                        @maximal1981 ich lese den aktiven Player vom Echo aus und setze dann darüber den Status

                                        307fc914-bf1e-41b1-8bae-c76223f02c86-grafik.png

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

                                          @kuddel

                                          ok. Aber "active provider" hab ich nicht

                                          und wie übergibst du amazon playlist, denn der Ballerman Top 100 via Tunein funktioniert ja so nicht

                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            Kuddel @maximal1981 last edited by

                                            @maximal1981

                                            Suche mal nach alexa2.0.Echo-Devices.DEIN_DEVICE.Player.providerName

                                            Da ist der DP, den ich verwende

                                            Ballermann Top 100 ist / war ein Online Radio sender.

                                            Da übergabe ich den Wert "Ballermann Radio Top 100" an den DP alexa2.0.Echo-Devices.SEIN_DEVICE.Music-Provider.TuneIn

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            426
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            vis vis projekte
                                            83
                                            640
                                            154670
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo