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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Vorstellung] Meine dritte VIS

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

      Hallo,

      erstmal Respekt...Super Visualisierung und tolle, praktische Skripts! Ich habe dadurch eine Menge gelernt.

      Mein Tablet hat Probleme die Visualisierung darzustellen bzw. es dauert ewig Am Seite zur Seite zu wechseln.
      Am PC funktioniert es eigentlich relativ flüssig.

      Ich benutze dafür ein Lenovo Tab 2 A10-70F.

      Meint Ihr liegt es am Tablet oder könnte mit der Visualisierung zu tun haben?

      Welches Tablet würdet Ihr mir vorschlagen? Reichen die 2GB RAM?

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

        @Kuddel
        vielen Dank für deine View. Nun eine Frage: benutze dein Menü. Ich habe es soweit verstanden, wie ich meine Views einbinden kann. Aber an den submenüs scheitere ich. Die Hauptviews werden angezeigt, aber nicht die Subviews...
        b0e394ad-fea0-41c5-9634-d9241ca59af1-grafik.png

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

          @jannis ich benutzte ein Samsung Galaxy TAB A 9.7

          Ist mitlerweile auch schon ein paar Jahre alt und braucht auch so 5 Sekunden und mehr um eine andere Seite darzustellen

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

            @jwerlsdf kannst du mal posten, was du so eingetragen hast?

            Dann kann ich das mit meinen Einstellungen vergleichen

            1 Reply Last reply Reply Quote 0
            • S
              SARCux @Kuddel last edited by

              @Kuddel
              Moin, derzeit verwende ich bei uns zuhause den MagicMirror, wenn ich aber das hier sehe haut es mich von den Socken.
              Habe mir nun eunen neuen pi 4 mit 4GB bestellt und eine sandisk ultra mit 128 GB (sollte dafür doch ausreichen)
              Sollte ich Fragen bei der Einrichtung haben, darf ich da auf dich oder die Community zukommen?

              Habe für die Visualisierung noch ein älteres Tablet in der Schublade, welches ich dafür verwenden möchte.
              Welche App zur Darstellung ist am Besten geeignet? KioskBrowser?

              Freue mich von euch zu hören

              BG
              SARCux

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

                @SARCux du kannst natürlich gerne Fragen stellen. Entweder hier oder auch gern per PN.

                Ich nutze auf meinem schon etw. älteren Galaxy Tab A 9.7 den Fully Kiosk Browser.

                Gerade mit einer Lizenz ist der Brwoser Top, da man das Tablet auslesen kann (Akkustand z.B.).

                S 1 Reply Last reply Reply Quote 0
                • S
                  SARCux @Kuddel last edited by SARCux

                  @Kuddel
                  Hatte mir vor zwei Jahren mal so ein China Tablet zugelegt.
                  Hoffe das ich den Fully da noch raufbekomme.
                  Werde es vorher mal testen und sobal der pi angekommen ist, geht es los. Bin gespannt ob ich meine Shellys einbinden kann und auch steuern.
                  Klappt das auch mit Sonos und Alexa?

                  Ein Fire Tab habe ich auch noch rumfliegen....

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

                    @SARCux was genau meinst du mit "Klappt das auch mit Sonos und Alexa"?

                    Ich habe keine Sonos Geräte, nutze aber verschiedene Echode Devices zur Steuerung.

                    S K 2 Replies Last reply Reply Quote 0
                    • S
                      SARCux @Kuddel last edited by

                      @Kuddel
                      ich stelle mir eine Vis für die Küche vor (dort hängt der Sonos) und beim antippen eines Sender (wenn drei zur auswahl als Icon) das es dann über den Sonos in der Küche wiedergegeben wird

                      🤔

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

                        @SARCux wenn man den Sonos in ioBroker integrieren kann, geht das bestimmt.

                        Mit Sonos kenne ich mich allerdings nicht aus.

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          SARCux @Kuddel last edited by

                          @Kuddel

                          Vorab schonmal danke für die schnellen Antworten.

                          Ich warte jetzt mal auf die Lieferung des pi und gehen dann Schritt für Schritt an den io broker ran.

                          Es werden dann sicherlich Fragen auftauchen, die ich ier bestimmt beantwortet bekomme.

                          BG
                          SARCux

                          1 Reply Last reply Reply Quote 0
                          • M
                            marhal @Kuddel last edited by Negalein

                            @Kuddel

                            Hallo Kuddel,

                            ich bin ja von deiner Vis begeistert und baue sie fleissig nach 🙂 ich bin gerade bei den iobroker Adaptern und dem Javascript (adapter_infos.). Leider bekomme ich folgende Meldungen bei dem Script kannst du mir da helfen was der Fehler dort ist ?

                            12:58:07.905	error	javascript.0 (1355) at script.js.java.abfragen.adapter_infos:14:39
                            12:58:07.905	error	javascript.0 (1355) at Object.<anonymous> (script.js.java.abfragen.adapter_infos:13:19)
                            12:58:22.813	warn	javascript.0 (1355) at script.js.java.abfragen.adapter_infos:35:18
                            12:58:22.814	warn	javascript.0 (1355) at Object.<anonymous> (script.js.java.abfragen.adapter_infos:13:19)
                            12:58:22.815	warn	javascript.0 (1355) at script.js.java.abfragen.adapter_infos:47:19
                            12:58:22.816	warn	javascript.0 (1355) at Object.<anonymous> (script.js.java.abfragen.adapter_infos:13:19)
                            

                            wäre super wenn mir da jemand helfen kann

                            gruß
                            Marhal

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

                              @marhal das ist meine aktuelle Version:

                              // Liest die ioBroker Adapter aus und legt verschiedenen State's an.
                              
                              //on({id:"system.adapter.admin.0.uptime",change:'any'}, function (obj) {
                              on({id:"system.adapter.admin.0.uptime",change:'any'}, function (obj) {
                                 createState('Adapter.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Adapter', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
                                 createState('Adapter.AdapterNummer', 0, { name: 'Adapter zum schalten', desc: 'Adapter zum schalten', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });    
                                 //var counterAlt = getState("javascript.0.Adapter.Anzahl").val;
                                 var counter =0;
                                 var on = 0
                                 var manuell=0	
                              
                                 var cacheSelector = $('[id=system.adapter.*.alive]');    
                                 cacheSelector.each(function(id, i) {        
                                     var devicename = getObject(id).common.name; 
                                 	
                                 	//Instanzen ausklammern
                                 	instanz0 = devicename.indexOf('daswetter');
                                 	instanz1 = devicename.indexOf('dwd');
                                     instanz2 = devicename.indexOf('ical');
                                 	instanz3 = devicename.indexOf('feiertage');
                                 	instanz4 = devicename.indexOf('snmp.1');
                                     instanz5 = devicename.indexOf('vis.0');
                                     instanz6 = devicename.indexOf('yamaha.0');
                                 	if(instanz0 !=0 && instanz1 != 0 && instanz2 !=0 && instanz3 != 0 && instanz4 != 0 && instanz5 !=0 && instanz6 !=0){
                                 	
                                 		var devicenameName=devicename;
                                 		var instanzname=getObject(id).common.name;
                                 		var test = devicenameName;
                                 		var devicename_array = devicenameName.split(' ');        
                                 		devicenameName = devicename_array[0];
                                 		counter = counter+1; 
                                 			
                                 		var strStatePath = "system.adapter." + devicenameName + ".alive";
                                 		if (isState(strStatePath, true)) {
                                 			var uptime = getState("system.adapter." + devicenameName + ".uptime").val;
                                 			var tage = Math.floor(uptime / (24*3600));
                                 			var stunden = Math.floor((uptime % (24*3600))/3600);
                                 			var minuten = Math.floor((uptime % (3600))/60);
                                 			//var sekunden = Math.floor(uptime % 60);      
                                 			if (stunden < 10) {stunden = "0"+stunden};
                                             if (minuten < 10) {minuten = "0"+minuten};				
                                 			if (tage == 1) {uptime = tage.toString()+" Tag, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";};
                                 			if (tage != 1) {uptime = tage.toString()+" Tage, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";}
                                 			//var total = getState("system.adapter." + devicenameName + ".memHeapTotal").val;
                                 			//var used = getState("system.adapter." + devicenameName + ".memHeapUsed").val;
                                 			//var rss = getState("system.adapter." + devicenameName + ".memRss").val;
                                 			var connect = getState("system.adapter." + devicenameName + ".alive").val;            
                              
                                 			if(connect == false){var con = 0;}
                                 			else {                
                                 				var con = 1;
                                 				var strStatePath = devicenameName + ".info.connection";
                                 				if (isState(strStatePath, true)) {
                                 					var connectS = getState(devicenameName + ".info.connection").val;
                                 					if (connectS == false) {
                                 						con = 2;
                                 					}                                                                        
                                 				} 
                                 			}
                                 			if(con==1) {on = on + 1}
                                 								  
                                 		}       
                                 		
                                 		devicename="Adapter.Adapter"+counter.toString()+".KompletterNameAdapter";
                                 		createState(devicename, 'empty', { name: 'Kompletter Name des Adapters', desc: '', type: 'string', role: '',read: true, write: true }); 
                                 		setStateDelayed(devicename, devicenameName, 800);
                                 		
                                 		var contentstring = devicenameName;
                                 		var suchstring = /(ical)/g; 
                                 		var suchergebnis = suchstring.test( contentstring );
                                 		
                                 		if (suchergebnis != true) {
                                 			var devicename_array = devicenameName.split('.');        
                                 			devicenameName = devicename_array[0];
                                 		}    
                              
                                 		if (devicenameName == "daswetter") {
                                 			var bild = "/" + devicenameName + ".admin/" + devicenameName + "com.png";
                                 		} else if (suchergebnis != false) {
                                 			var devicename_array = devicenameName.split('.');        
                                 			var icalName = devicename_array[0];        
                                 			var bild = "/" + icalName + ".admin/" + icalName + ".png";
                                 		} else {
                                 			var bild = "/" + devicenameName + ".admin/" + devicenameName + ".png";
                                 		}
                                 		
                                 		//Alexa2
                                 		if (devicenameName == 'alexa2') {var bild = "/" + devicenameName + ".admin/" + "alexa.png";}
                                 		//FritzDECT
                                 		if (devicenameName == 'fritzdect') {var bild = "/" + devicenameName + ".admin/" + "fritzdect_logo.png";}
                                 		//FullyBrowser
                                 		if (devicenameName == 'fullybrowser') {var bild = "/" + devicenameName + ".admin/" + "fully.png";}
                                 		//HM-Rega
                                 		//if (devicenameName == 'hm-rega') {var bild = "/" + devicenameName + ".admin/" + "homematic.png";}
                                 		if (devicenameName == 'hm-rega') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homematic.gif";}
                                 		//HomeMatic
                                 		//if (instanzname == 'hm-rpc.0 alive') {var bild = "/" + devicenameName + ".admin/" + "homematic.png";}
                                 		if (instanzname == 'hm-rpc.0 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homematic.gif";}
                                 		//HomeMatic-IP
                                 		//if (instanzname == 'hm-rpc.1 alive') {var bild = "/" + devicenameName + ".admin/" + "homematic.png";}
                                 		if (instanzname == 'hm-rpc.1 alive') {var bild = "/vis.0/VIS/Meine_Icons/Adapter_Icons/homematic_ip.jpg";}
                                 		//UPNP
                                 		if (devicenameName == 'upnp') {var bild = "/" + devicenameName + ".admin/" + "upnp-discovery.png";}
                                         //Pushover.1
                                 		if (instanzname == 'pushover.1 alive') {var bild = "/mihome-vacuum.admin/mihome-vacuum.png";}
                                         //Pushover.2
                                 		if (instanzname == 'pushover.2 alive') {var bild = "/daswetter.admin/daswettercom.png";}
                                 		
                              
                              
                                         ///////////////////////
                                 		//AdapterName anpassen
                                         ////////////////////////
                                 		            
                                         //DasWetter
                                 		if (instanzname == 'daswetter.0 alive') {devicenameName='DasWetter'; manuell=1}
                                 		//DWD
                                 		if (instanzname == 'dwd.0 alive') {devicenameName='DWD'; manuell=1}
                                 		//HM-REGA
                                 		if (instanzname == 'hm-rega.0 alive') {devicenameName='HM-Rega'; manuell=1}			
                                 		//HM-RPC.0
                                 		if (instanzname == 'hm-rpc.0 alive') {devicenameName='HomeMatic'; manuell=1}
                                 		//HM-RPC.1
                                 		if (instanzname == 'hm-rpc.1 alive') {devicenameName='HM-IP'; manuell=1}
                                 		//MiHome-Vacuum
                                 		if (instanzname == 'mihome-vacuum.0 alive') {devicenameName='Nono'; manuell=1}
                                 		//Pushover
                                 		if (instanzname == 'pushover.0 alive') {devicenameName='Pushover.0'; manuell=1}
                                 		if (instanzname == 'pushover.1 alive') {devicenameName='Pushover.1'; manuell=1}
                                 		if (instanzname == 'pushover.2 alive') {devicenameName='Pushover.2'; manuell=1}
                                 		//Simple-API
                                 		if (instanzname == 'simple-api.0 alive') {devicenameName='Simple-API'; manuell=1}
                                 		//SNMP.0
                                 		if (instanzname == 'snmp.0 alive') {devicenameName='SNMP.0'; manuell=1}
                                 		//SNMP.1
                                 		if (instanzname == 'snmp.1 alive') {devicenameName='SNMP.1'; manuell=1}
                                         //Spotify
                                         if (instanzname == 'spotify-premium.0 alive') {devicenameName='Spotify'; 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);}
                                 if(on < counter -1){setState(visstatus, false);}
                                 
                                 
                                 setStateDelayed('Adapter.Anzahl', counter, 800);
                              
                                 function isState(strStatePath, strict) {
                                     let mSelector;
                                     if (strict) {
                                         mSelector = $('state[id=' + strStatePath + '$]');
                                     } else {
                                         mSelector = $('state[id=' + strStatePath + ']');
                                     }
                                     if (mSelector.length > 0) {
                                         return true;
                                     } else {
                                         return false;
                                     }
                                 }  
                              }); 
                              
                              on({id:"javascript.0.Adapter.AdapterNummer", change: 'any'}, function (dpobj) {
                                 if (getState("javascript.0.Adapter.AdapterNummer").val != 0) {        
                                     const instanz = "javascript." + instance;
                                     var adapterNummer = getState(instanz + ".Adapter.AdapterNummer").val;
                                     var adapter = getState(instanz + ".Adapter.Adapter" + adapterNummer + ".KompletterNameAdapter").val; // Name und Instanz des Adapters 
                                     var idAdapter = "system.adapter." + adapter;
                                     
                                     var obj = getObject(idAdapter);
                                     if (dpobj.state.val == false) {
                                         obj.common.enabled = true;  // Adapter einschalten
                                     } else if (dpobj.state.val == true) {
                                         obj.common.enabled = false;  // Adapter ausschalten
                                     }
                                     setObject(idAdapter, obj);
                                     setStateDelayed('javascript.0.Adapter.AdapterNummer', 0, 800);        
                                 }
                              });   
                              

                              C M I 4 Replies Last reply Reply Quote -2
                              • C
                                ChrisXY @Kuddel last edited by

                                @Kuddel hast du zufällig vom Nono ein Update mit der Room funktion ?

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

                                  @ChrisXY ne habe ich mich bis jetzt noch nicht wieder mit beschäftigt

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

                                    erledigt

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

                                      Halli Hallo Ihr leiben,

                                      erst einmal allen einen schönen Nikolaus und 2. Advent. Ich hoffe mir kann hier jemand helfen, denn ich habe ein Problem mit dem Menü in meiner VIS. Im VIS-Editor Materialdesign - Top App Bar fehlt der reiter Untermenü wie kommt das?? Habe das System gewechselt und seid dem ist das. Hat jemand eine Ahnung wo das Problem ist? Anbei ist noch ein Bild vom VIS-Editor.

                                      Material kein untermenü.PNG

                                      Das ganze hat zufolge, dass ich die Seiten nicht wechseln kann.

                                      Grüße und vielen Dank

                                      1 Reply Last reply Reply Quote 0
                                      • Holger Etzel
                                        Holger Etzel last edited by

                                        Hallo Kuddel,
                                        schone Arbeit, gefällt mir sehr gut.
                                        Habe mir die VIS für den Saugroboter geklaut und die Skripte installiert,
                                        hier mal eine blöde Frage zum Blockly.
                                        Bei den Zonen sind 5-Stellige Zahlen in den Variablen definiert, wo kommen diese her?
                                        "app_zoned-clean [.............."
                                        Irgendwie stehe ich auf dem Schlauch, oder kapiere das nicht.

                                        Kannst du das etwas erklären, danke schon mal im vorraus.

                                        LG
                                        Holger

                                        Bluelinux 1 Reply Last reply Reply Quote 0
                                        • Bluelinux
                                          Bluelinux @Holger Etzel last edited by

                                          @Holger-Etzel hi hi ich bin zwar nich Kuddel aber ich habe das auch versucht zu lösen. Die Koordinaten habe ich mir mit einer APP namens : FloleVac ausgelesen. Dort kann man die Stellen (Räume) in der Karte makieren und somit die daten auslesen, ABER..... offensichtlich dreht sich die Grundkarte immer mal wieder was bedeutet, das deine Koordinaten um 90° oder 180° oder 270° verdreht sind. Deswegen funktioniert die Zonenreinigung bei MIR leider nicht. Um es mal noch Plumper auszudrücken.... angenommen deine Karte wäre immer richtung Norden ausgerichtet würde es klappen aber die ist halt mal nach osten süden oder westen ausgerichtet. Ich hoffe ich konnte es ein wenig erklären

                                          Grüße

                                          Holger Etzel 1 Reply Last reply Reply Quote 0
                                          • Holger Etzel
                                            Holger Etzel @Bluelinux last edited by

                                            @Bluelinux wie kommt man dann an die Koordinaten? kann die Zonen markieren und wie geht es dann weiter?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            863
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            vis vis projekte
                                            83
                                            640
                                            139786
                                            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