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.
    • 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
                    • K
                      KHK @Glasfaser last edited by

                      @Glasfaser wie kann ich die Module entsprechend dem Screenshot eintragen? Irgendwie finde ich keinen Hinweis, wie ich das machen kann.
                      Habe die Version 4.10.8. Auch unter den Einstellungen sehe ich nichts!
                      Bin für jeden Hinweis dankbar....

                      Negalein 1 Reply Last reply Reply Quote 0
                      • Negalein
                        Negalein Global Moderator @KHK last edited by

                        @KHK sagte in [Vorstellung] Meine dritte VIS:

                        Bin für jeden Hinweis dankbar....

                        du öffnest die Instanz javascript.0
                        Dann schreibst du in die Zeile mit den Modulen einfach moment-duration-format rein und drückst Enter.

                        Screenshot_2020-12-12 instances - ioBroker.png

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

                          @Kuddel
                          Ich versuche gerade das Prinzip des Menü-Widget zu verstehen, aber habe ein paar Probleme.

                          Dazu habe ich mir mal ein paar Screenshots gemacht. Wenn ich im importierten VIS über das Menü einen Menüpkt aufrufe, dann steht in der DP bei mir "true" und die aufgerufene Seite ist laut Titel da, aber der Inhalt fehlt.
                          d2bf3e82-c416-4656-80d7-53bef1340a61-grafik.png

                          Wenn ich dann die gleich Seite über den Button auf der Startseite aufrufe, dann wird die Seit ekorrekt angezeigt und in dem DP ist die Seitenzahl auch abgelegt.

                          6ede8877-bf24-480c-8499-aff312225856-grafik.png

                          Wo ist im Menü hinterlegt, dass bei Aufruf einer Seite diese auch aufgerufen wird. In dem widegt8 finde ich unter "VIEW" die hinterlegten views...Dort sehe ich dass unter "ALLGEMEIN" als Objekt ID auch dieser neu erstellte DP "javascript.0.VIS-Steuerung.Aktuelle_VIS_Seite" hinterlegt ist - genauso wie unter dem "Top App Bar Nav Drawer" dieser DP hinterlegt ist.

                          Wieso erscheinen aber bei den unterschiedlichen Aufrufen zwei verschiedene Werte ?

                          Karl

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

                            @Kuddel
                            Hallo, ich versuch emich ein wenig in deine VIS einzuarbeiten, aber da ich noch nicht lange mit ioBroker und auch Javascript was gemacht habe, treten immer wieder viele ? auf.
                            Heute eins bei deinem Script (aus dem Paket bzw. dem hier eingefügten Update) "adapter_infos".
                            3c78dce6-6ec1-4c4f-87f3-aea86be19235-grafik.png

                            Wo finde ich diese ID? im admin-adapter bei mir ist keine solche ID vorhanden?

                            Eine andere Frage - wo finde ich die Berechnung der Zeiten deines ASTRO-views (Sonnenaufgang, Sonnenuntergang, Tageslänge, Nachtlänge)?

                            Karl

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

                              @KHK es sieht für mich so aus, als wenn im Menü der DP nicht korrekt hinterlegt ist.

                              Schaue mal ob du da auch "Aktuell_VIS_Seite" eingestellt hast

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

                                @KHK

                                Du musst die Expertenansicht aktivieren (siehe der Roten Butto)
                                b5267c0c-536d-4e11-b9b6-2d4e394a2ac3-grafik.png

                                Die Zeiten sind entweder im Rolladen-Skript oder im Skript "Zeiten"

                                C 1 Reply Last reply Reply Quote 0
                                • C
                                  cTech @Kuddel last edited by

                                  @Kuddel
                                  Kannst du einmal bitte mitteilen, wie du das im Adapter Parser ausgefüllt hast? Da komme ich irgendwie nicht weiter. Besten Dank

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

                                    @cTech was genau wills du wissen? welcher Anwendungsfall ?

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      cTech @Kuddel last edited by

                                      @Kuddel genau wie du, die Bahnverspätungen anzeigen lassen 😉 Aber mit dem Adapter komme ich nicht klar, was dort eingetragen werden muss

                                      K 1 Reply Last reply Reply Quote 0
                                      • T
                                        ToniMahoni last edited by

                                        Hallo Kuddel,
                                        ich habe mal eine Frage. Beim welchen Skript oder an welcher Stelle werden folgende zwei DP gesetzt, bzw. verändert:
                                        javascript.0.echo.ansage_aussentemperatur
                                        und
                                        javascript.0.sonstige.weihnachtszeit

                                        Vielen Dank.

                                        C 1 Reply Last reply Reply Quote 0
                                        • C
                                          cTech @ToniMahoni last edited by

                                          @ToniMahoni Weihnachtszeit und Alexa Benachrichtigungen...

                                          T 1 Reply Last reply Reply Quote 0
                                          • T
                                            ToniMahoni @cTech last edited by

                                            @cTech Wo die Werte abgefragt werden, weiß ich schon. Die Frage ist, wo werden die Werte geändert/gesetzt?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            859
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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