Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Hilfe bei der Verwendung von JSON

    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

    [gelöst] Hilfe bei der Verwendung von JSON

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

      Hallo zusammen,

      ich habe mir für die Übersicht meiner Shellys ein kurzes Skript geschrieben, dass die Infos aus dem Shelly-Adapter in DPs schreibt, die ich dann in meiner VIS anzeigen kann:

      Kleiner Auszug:
      17b6f9f6-6730-43cb-82d4-a2c328e746a5-grafik.png

      Skript:

         // Liest den Adapter Shelly.0 aus und erstelle neue Datenpunkte unter javascript
      
         schedule('*/10 * * * * *', function (obj) {
         	if(!existsState('0_userdata.0.shelly-devices.Anzahl')){
         		createState('0_userdata.0.shelly-devices.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Devices', type: 'number'});
         	};
         	var counter = 0;
         	var status_counter = 0;
         	var offline_devices = 0;
      
         	var cacheSelector = $('[id=shelly.0.*.name]');
         	counter = counter+1;
         	cacheSelector.each(function(id, i) {
         		var id = id.replace('.name','');
         		geraetename = getState(id + ".name").val;
         		devicename = id
         		devicenameName = devicename.replace('shelly.0.','');
      
           
         		//Gerätetatus
         		var connected = getState("shelly.0." + devicenameName + ".online").val;
         		if(connected == true) {var status = true}
         		else{var status = false}
         		
         		//IP-Adresse
         		var ip = getState("shelly.0." + devicenameName + ".hostname").val;
      
         		//Infos abfragen
         		if(status == true ) {
         			var status = "1"
      
         			//Typ
         			var geraet = getState("shelly.0." + devicenameName + ".id").val;
         			if(geraet == 'shelly1') {geraet = 'Shelly 1';}
         			if(geraet == 'shellyswitch25') {geraet = 'Shelly 2.5';}
         			if(geraet == 'shellyplug-s') {geraet = 'Shelly Plug S';}
         			if(geraet == 'shellyrgbw2') {geraet = 'Shelly RGBW 2';}
         			if(geraet == 'shellyplus1') {geraet = 'Shelly Plus 1';}
      
         			
         			//Version
         			var version = getState("shelly.0." + devicenameName + ".version").val;
      
         				//Shelly Plus 1
         				if(geraet == 'Shelly Plus 1') {
         					//Version in String konverteiren
         					version = String(version);
      
         					//Suchen vom Slash in der Version
         					indexslash = version.indexOf('/');
      
         					//Funktion zum Suchen des - in der Versionsnummer
         					function getPosition(string, subString, index) {return string.split(subString, index).join(subString).length;}
      
         					//Minus in der Versionsnummer suchen
         					position = getPosition(version, '-', 2);
      
         					//Version auslesen
         					version = version.substring(indexslash +1, position);
      
         				}
         				//normale Shellys
         				else{
         					//Version in String konverteiren
         					version = String(version);
      
         					//Suche vom v in Version
         					indexv = version.indexOf('v');
         					
         					//Funktion zum Suchen des 2. Punktes in der Versionsnummer
         					function getPosition(string, subString, index) {return string.split(subString, index).join(subString).length;}
      
         					//2. Punkt in der Versionsnummer suchen
         					position = getPosition(version, '.', 2);
         					
         					//Version auslesen
         					version = version.substring(indexv +1, position +2);
         				}
      
         			//Uptime
         			var uptime = getState("shelly.0." + devicenameName + ".uptime").val;
         				//Uptime in String konvertieren
         				uptime = String(uptime);
         				//Tage
         				indexday = uptime.indexOf('D');
         				
         				if(indexday != 0) {
         						tage = uptime.substring(0, indexday);
         						if(tage == 1) {tage = tage + ' Tag, ';}
         						if(tage > 1) {tage = tage + ' Tage, ';}
         				}
         				if(indexday < 1) {tage = '0 Tage, ';}
         			
         				//Stunden
         				indexstd = uptime.indexOf(':');
         				stunden = uptime.substring(indexday +1 , indexstd );
         				if(stunden == 1){stunden = stunden + ' Std, ';}
         				else{stunden = stunden + ' Std, ';}
         				//Minuten
         				minuten = uptime.substring(indexstd +1 , indexstd +3 );
         				minuten = minuten + ' Min';
      
         				uptime = tage + stunden + minuten;
      
      
         			//Power
         			if(geraet != "Shelly RGBW 2") {
         				var power = getState("shelly.0." + devicenameName + ".Relay0.Switch").val;    
         			}
         			else{
         				var power = getState("shelly.0." + devicenameName + ".lights.Switch").val;    
         			}
      
         			//Update
         			var update = getState("shelly.0." + devicenameName + ".firmware").val; 
         			if(update == true)   {update = "veraltet"}
         			else{update = "aktuell"}
         			if(!(update)) {update = ""}
         		}
         		if(status == false){
         			var status = "0"
         			var uptime = ""
         			var version = ""
         			//var ip = ""
         			var geraet = ""
         			var power = false
         			var update = ""
         			offline_devices = offline_devices+1;
         		}
         		
      
         		//DPs befüllen
      
         		// Device-Name
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Device-Name";
         		createState(dp, 'empty', { name: 'Device-Name', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, geraetename, 800);
         		// Uptime
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Uptime"; 
         		createState(dp, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
         		setStateDelayed(dp, uptime, 800);
         		// Status
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Status";
         		createState(dp, 'empty', { name: 'Status', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, status, 800);
         		// Version
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Version";
         		createState(dp, 'empty', { name: 'Version', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, version, 800);
         		// IP
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".IP";
         		createState(dp, 'empty', { name: 'IP', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, ip, 800);
         		// Gereatetyp
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Geraet";
         		createState(dp, 'empty', { name: 'Geraet', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, geraet, 800);
         		// Power
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Power";
         		createState(dp, 'empty', { name: 'Power', desc: '', type: 'boolean', role: '',read: true, write: true }); 
         		setStateDelayed(dp, power, 800);
         		// Update
         		dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Update";
         		createState(dp, 'empty', { name: 'Update', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, update, 800);
      
      
         		counter = counter+1;
         		
      
         		
         	}); 
      
         	// Wegen shelly.0.info muss vom Counter 1 abgezogen werden
         	counter = counter - 1
      
         	
         	//Gesamt Anzahl der online Geräte berechnen
         	dp="0_userdata.0.shelly-devices.Anzahl";
         	createState(dp, 'empty', { name: 'Anzahl', desc: '', type: 'number', role: '',read: true, write: true }); 
         	setStateDelayed(dp, counter, 800);
      
         	
         	//Letzte aktualisierung
         	var datum = new Date();
         	var heute = datum.getDate()+ "." + (datum.getMonth()+ 1)+"." + datum.getFullYear()+" " +datum.getHours() +":" + datum.getMinutes() +":" + datum.getSeconds() + " Uhr" ;
         	createState('0_userdata.0.shelly-devices.Letztes_Update', 0, { name: 'Letztes_Update', desc: '', type: 'string', role: '',read: true, write: true }); 
         	setStateDelayed('0_userdata.0.shelly-devices.Letztes_Update', heute, 800);
      
         	//Alle Geräte online
         	if(status_counter == counter) {
         		dp="0_userdata.0.shelly-devices.Alle_Devices_verbunden";
         		createState(dp, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, "1", 800);
         	}
         	else{
         		dp="0_userdata.0.shelly-devices.Alle_Devices_verbunden";
         		createState(dp, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
         		setStateDelayed(dp, "0", 800);
         	}
         	
         	//Anzahl offline Geräte
         	dp="0_userdata.0.shelly-devices.Anzahl_offline_Devices";
         	createState(dp, 'empty', { name: 'Anzahl_offline_Devices', desc: '', type: 'number', role: '',read: true, write: true }); 
         	setStateDelayed(dp, offline_devices, 800);
         }); 
      
      
      

      Jetzt geht es ein Bisschen tiefer in javascript, wobei ich Hilfe benötige.

      Da die Geräte im Shelly-Adapter nach der Seriennummer sortiert sind, wollte ich jetzt einen kurzen Zwischenschritt über ein JSON Array machen, um die Geräte zu sortieren (nach Name oder IP oder ...).

      Frage 1: Wie füge ich die Daten in ein bestehendes JSON hinzu?
      Mein Versuch funzt leider nicht, da "push" nicht erkannt wird:

      //Alle Werte eines Gerätes in JSON schreiben
      if(typeof json === 'undefined' || json === null){
      	let json = [
                      {"Device-Name": geraetename, "Uptime": uptime, "Status": status, "Version": version, "IP": ip, "Gereat": gereat, "Power": power, "Update": update},
                  ]
      }
      else{
      	let json.push = [
                      {"Device-Name": geraetename, "Uptime": uptime, "Status": status, "Version": version, "IP": ip, "Gereat": gereat, "Power": power, "Update": update},
                  ]
      }
      

      Frage 2: Wie kann ich die Daten im JSON sortieren?
      Per VIS möchte ich das Attribut zur Sortierung auswählen. Daher steht im DP "0_userdata.0.shelly-devices.Sortierung" ein Wert 0 bis X, worüber das Attribut ausgewählt werden soll

      Beispiel: 0 = Name, somit sollen die Werte nach dem Attribut "Device-Name" sortiert werden

      Wenn die Werte sortiert sind, werden die einzelnen Attribute aus dem JSON in den jeweiligen DP geschrieben:

      0ca37693-e21b-4294-b7ba-5ae1a47f356a-grafik.png

      Vielen Dank schon einmal

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

        @kuddel

        Zu 1)
        die richtige form wäre

        let json = [];
        json.push({"Device-Name": geraetename, "Uptime": uptime, "Status": status, "Version": version, "IP": ip, "Gereat": gereat, "Power": power, "Update": update};
        

        So wie du es aufgeschrieben hast würdest du direkt ein Array mit einem Objekt definieren, aber ohne das Push.
        Push wäre hier ein property des Objekts json was aber nicht gibt, Da ja oben abgefragt wird ob null oder undefined
        Das Komma nach der letzten geschweiften Klammer würde ebenfalls noch zu einem Fehler führen.

        Zu 2)
        https://www.javascripttutorial.net/array/javascript-sort-an-array-of-objects/

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

          @oliverio die Sortierung vernachlässige ich erst einmal noch.

          Aktuell macht die Schleife zur Erstellung / zum Schreiben der DPs Probleme, weil sie die Variable json nicht finden kann

          Skript

          // Liest den Adapter Shelly.0 aus und erstelle neue Datenpunkte unter javascript
          
          //schedule('* * * * * *', function (obj) {
          schedule('*/10 * * * * *', function (obj) {
          //schedule('* * * * *', function (obj) {
          
             //Devices-Anzahl erstenne
             if(!existsState('0_userdata.0.shelly-devices.Anzahl')){
                 createState('0_userdata.0.shelly-devices.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Devices', type: 'number'});
             };
          
             //Sortierung erstellen
             if(!existsState('0_userdata.0.shelly-devices.Sortierung')){
                 createState('0_userdata.0.shelly-devices.Sortierung', 0, {name: 'Sortierung',type: "number", def: 0, states: {0:"Name",1:"IP",2:"Raum",3:"Update",4:"Gereat"}});
             };
          
          
             var counter = 0;
             var status_counter = 0;
             var offline_devices = 0;
          
             var cacheSelector = $('[id=shelly.0.*.name]');
             counter = counter+1;
             cacheSelector.each(function(id, i) {
                 var id = id.replace('.name','');
                 geraetename = getState(id + ".name").val;
                 devicename = id
                 devicenameName = devicename.replace('shelly.0.','');
           
                 //Gerätetatus
                 var connected = getState("shelly.0." + devicenameName + ".online").val;
                 if(connected == true) {var status = true}
                 else{var status = false}
                 
                 //IP-Adresse
                 var ip = getState("shelly.0." + devicenameName + ".hostname").val;
          
                 //Infos abfragen
                 if(status == true ) {
                     var status = "1"
          
                     //Typ
                     var geraet = getState("shelly.0." + devicenameName + ".id").val;
                     if(geraet == 'shelly1') {geraet = 'Shelly 1';}
                     if(geraet == 'shellyswitch25') {geraet = 'Shelly 2.5';}
                     if(geraet == 'shellyplug-s') {geraet = 'Shelly Plug S';}
                     if(geraet == 'shellyrgbw2') {geraet = 'Shelly RGBW 2';}
                     if(geraet == 'shellyplus1') {geraet = 'Shelly Plus 1';}
                     
                     //Version
                     var version = getState("shelly.0." + devicenameName + ".version").val;
          
                         //Shelly Plus 1
                         if(geraet == 'Shelly Plus 1') {
                             //Version in String konverteiren
                             version = String(version);
          
                             //Suchen vom Slash in der Version
                             indexslash = version.indexOf('/');
          
                             //Funktion zum Suchen des - in der Versionsnummer
                             function getPosition(string, subString, index) {return string.split(subString, index).join(subString).length;}
          
                             //Minus in der Versionsnummer suchen
                             position = getPosition(version, '-', 2);
          
                             //Version auslesen
                             version = version.substring(indexslash +1, position);
          
                         }
                         //normale Shellys
                         else{
                             //Version in String konverteiren
                             version = String(version);
          
                             //Suche vom v in Version
                             indexv = version.indexOf('v');
                             
                             //Funktion zum Suchen des 2. Punktes in der Versionsnummer
                             function getPosition(string, subString, index) {return string.split(subString, index).join(subString).length;}
          
                             //2. Punkt in der Versionsnummer suchen
                             position = getPosition(version, '.', 2);
                             
                             //Version auslesen
                             version = version.substring(indexv +1, position +2);
                         }
          
                     //Uptime
             		var uptime = getState("shelly.0." + devicenameName + ".uptime").val;
                         //Uptime in String konvertieren
                         uptime = String(uptime);
                         //Tage
                         indexday = uptime.indexOf('D');
                         
                         if(indexday != 0) {
                                 tage = uptime.substring(0, indexday);
                                 if(tage == 1) {tage = tage + ' Tag, ';}
                                 if(tage > 1) {tage = tage + ' Tage, ';}
                         }
                         if(indexday < 1) {tage = '0 Tage, ';}
                     
                         //Stunden
                         indexstd = uptime.indexOf(':');
                         stunden = uptime.substring(indexday +1 , indexstd );
                         if(stunden == 1){stunden = stunden + ' Std, ';}
                         else{stunden = stunden + ' Std, ';}
                         //Minuten
                         minuten = uptime.substring(indexstd +1 , indexstd +3 );
                         minuten = minuten + ' Min';
          
                         uptime = tage + stunden + minuten;
                 
          
          
                     //var gereat = gereat.charAt(0).toUpperCase() + gereat.slice(1);
          
                     //Power
                     if(geraet != "Shelly RGBW 2") {
                         var power = getState("shelly.0." + devicenameName + ".Relay0.Switch").val;    
                     }
                     else{
                         var power = getState("shelly.0." + devicenameName + ".lights.Switch").val;    
                     }
          
                     //Update
                     var update = getState("shelly.0." + devicenameName + ".firmware").val; 
                     if(update == true)   {update = "veraltet"}
                     else{update = "aktuell"}
                     if(!(update)) {update = ""}
                 }
                 if(status == false){
                     var status = "0"
                     var uptime = ""
                     var version = ""
                     //var ip = ""
                     var geraet = ""
                     var power = false
                     var update = ""
                     offline_devices = offline_devices+1;
                 }
                 
                 //Alle Werte eines Gerätes in JSON schreiben
                 let json = [];
                 json.push({"Device-Name": geraetename, "Uptime": uptime, "Status": status, "Version": version, "IP": ip, "Gereat": geraet, "Power": power, "Update": update});
          
             }); 
             
          
          
             //JSON sortieren
             var sortierung = getState("0_userdata.0.shelly-devices.Sortierung").val;
             //Nach Namen sortieren
             console.log(sortierung);
           
          
          
             //Inhalt aus JSON in DPs schreiben
             counter = 0;
             json.forEach(device => {
                 //Device Counter
                 counter = counter+1;
          
                 // Device-Name
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Device-Name";
                 createState(dp, 'empty', { name: 'Device-Name', desc: '', type: 'string', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.geraetename, 800);
                 // Uptime
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Uptime"; 
                 createState(dp, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
                 setStateDelayed(dp, device.uptime, 800);
                 // Status
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Status";
                 createState(dp, 'empty', { name: 'Status', desc: '', type: 'string', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.status, 800);
                 // Version
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Version";
                 createState(dp, 'empty', { name: 'Version', desc: '', type: 'string', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.version, 800);
                 // IP
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".IP";
                 createState(dp, 'empty', { name: 'IP', desc: '', type: 'string', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.ip, 800);
                 // Gereatetyp
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Geraet";
                 createState(dp, 'empty', { name: 'Geraet', desc: '', type: 'string', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.geraet, 800);
                 // Power
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Power";
                 createState(dp, 'empty', { name: 'Power', desc: '', type: 'boolean', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.power, 800);
                 // Update
                 dp="0_userdata.0.shelly-devices.Device_"+counter.toString()+".Update";
                 createState(dp, 'empty', { name: 'Update', desc: '', type: 'string', role: '',read: true, write: true }); 
                 setStateDelayed(dp, device.update, 800);
          
             });
          
          
          
             // Wegen shelly.0.info muss vom Counter 1 abgezogen werden
             counter = counter - 1
          
             // 1 von der Anzahl der Offlien-Geräte abziehen (wenn Shelly offline), da der Shelly von der Druckerbeleuchtung nicht immer an ist
             var shellyrgbw2 = getState("shelly.0.SHRGBW2#A89CF7#1.online").val;
             if(shellyrgbw2 == false) {offline_devices = offline_devices -1};
             
          
             //Gesamt Anzahl der online Geräte berechnen
             dp="0_userdata.0.shelly-devices.Anzahl";
             createState(dp, 'empty', { name: 'Anzahl', desc: '', type: 'number', role: '',read: true, write: true }); 
             setStateDelayed(dp, counter, 800);
             
          
             
             //Letzte aktualisierung
             var datum = new Date();
             var heute = datum.getDate()+ "." + (datum.getMonth()+ 1)+"." + datum.getFullYear()+" " +datum.getHours() +":" + datum.getMinutes() +":" + datum.getSeconds() + " Uhr" ;
             createState('0_userdata.0.shelly-devices.Letztes_Update', 0, { name: 'Letztes_Update', desc: '', type: 'string', role: '',read: true, write: true }); 
             setStateDelayed('0_userdata.0.shelly-devices.Letztes_Update', heute, 800);
          
             //Alle Geräte online
             if(status_counter == counter) {
             	dp="0_userdata.0.shelly-devices.Alle_Devices_verbunden";
             	createState(dp, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
             	setStateDelayed(dp, "1", 800);
             }
             else{
             	dp="0_userdata.0.shelly-devices.Alle_Devices_verbunden";
             	createState(dp, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
             	setStateDelayed(dp, "0", 800);
             }
             
             //Anzahl offline Geräte
             dp="0_userdata.0.shelly-devices.Anzahl_offline_Devices";
             createState(dp, 'empty', { name: 'Anzahl_offline_Devices', desc: '', type: 'number', role: '',read: true, write: true }); 
             setStateDelayed(dp, offline_devices, 800);
          }); 
          
          
          

          Error:

          javascript.1	2022-07-25 11:04:30.007	error	at processTimers (node:internal/timers:502:7)
          javascript.1	2022-07-25 11:04:30.007	error	at listOnTimeout (node:internal/timers:559:17)
          javascript.1	2022-07-25 11:04:30.007	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
          javascript.1	2022-07-25 11:04:30.007	error	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
          javascript.1	2022-07-25 11:04:30.007	error	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
          javascript.1	2022-07-25 11:04:30.007	error	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1408:34)
          javascript.1	2022-07-25 11:04:30.007	error	at Object.<anonymous> (script.js.java.abfragen.shelly_infos_neu:160:5)
          javascript.1	2022-07-25 11:04:30.007	error	Error in callback: ReferenceError: json is not defined
          

          EDIT:

          Fehler gefunden:

          Das

          let json = [];
          

          muss nach oben an den Anfang. Jetzt wird auch die Schleife abgearbeitet

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

            @oliverio ich habe jetzt mit der Sortierung angefangen:

            console.log("Test Sortierung");
                json.forEach((e) => {
                console.log(`${e.DeviceName}`);
                });
            

            Ergebnis:

            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: Shelly-1-Plus-Test
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: RA_SZ_Front
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: RA_KZ_Front
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: LS_BZ_Lichtschalter
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: HA_GA_Ventil-5
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_GA_Poolthermometer
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: Shelly1-Test
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: LS_BR_Deckenlampe
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: LS_AZ_Lichtschalter
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: LA_BR_3D-Drucker
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_BR_Ladegereat
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_BR_PCs
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_BR_Monitore
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_BR_ESX-NUC
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_FL_Lichterkette
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_SZ_Kommode
            javascript.1	2022-07-25 11:32:20.009	info	script.js.java.abfragen.shelly_infos_neu: SD_BR_3D-Drucker
            
            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @Kuddel last edited by OliverIO

              @kuddel
              schade, du hast dir den link nicht durchgelesen. Nicht mit forEach, geht zwar auch ist aber
              aufwändiger

              json.sort((a, b) => {
                  return a.name.localeCompare(b.name));
              });
              

              als anfänger erst mal alle befehle in der referenz nachlesen
              mdn hat viele Beschreibungen auch auf deutsch
              https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
              bei google einfach

              mdn <javascriptbefehl>
              

              eingeben

              noch ein Tip, nenne die variable nicht json, da sie ggfs. mit dem eingebauten Befehlsobjekt
              JSON kollidieren könnte.

              K paul53 2 Replies Last reply Reply Quote 0
              • K
                Kuddel @OliverIO last edited by

                @oliverio vielen Dank für deine Hilfe.

                Habe es jetzt genau so hinbekommen, wie ich wollte 🙂

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @OliverIO last edited by

                  @oliverio sagte: nenne die variable nicht json

                  Sie enthält auch kein JSON, sondern ein Array.

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

                    Eine Frage habe ich dann doch noch:

                    Aktuell läuft das Skript ja alle 10 Sekunden.

                    Wie bekomme ich es hin, dass es zusätzlich zum schedule auch ausgeführt wird, wenn es gestartet wird und wenn der DP zur Sortierung sich ändert?

                    EDIT:

                    Habe es schon selber hinbekommen.

                    Das ganze Skript in eine Funktion, die dann aufgerufen wird

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    488
                    Online

                    31.9k
                    Users

                    80.1k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    473
                    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