Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Gerätenamen mit Leerzeichen verarbeiten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Gerätenamen mit Leerzeichen verarbeiten

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 244 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Offline
    K Offline
    Kuddel
    schrieb am zuletzt editiert von Kuddel
    #1

    Hallo zusammen,

    ich habe ein Skript geschrieben, dass meine Sonoff Geräte auflistet.

    Dazu habe ich folgendes Thema erstellt: Automatische Übersicht aller Sonoff Geräte .

    Das Ganze ist immer noch im Test-Stadium.

    Aktuell hat ein tester das Problem, dass er leerzeichen im Gerätenamen verwendet hat.

    Meine Javascript Kenntnisse reichen leider nicht aus, um dieses Problem zu beheben.

    kann jemand unterstützen?

    Hier die aktuelle Version von meinem Skript:

    //schedule('*/10 * * * * *', function (obj) {
    schedule('* * * * *', function (obj) {
       createState('Sonoff-Devices.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Devices', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
       var counter =0;
    
    
       var cacheSelector = $('[id=sonoff.0.*.INFO.Hostname]');
       counter = counter+1;
       cacheSelector.each(function(id, i) {        
           var devicename = getObject(id).common.name; 
    
           var devicenameName=devicename;
           var devicename_array = devicenameName.split(' ');        
           devicenameName = devicename_array[0];
         
           //Gerätetatus
           var connected_devices = getState("sonoff.0.info.connection").val;
           if(connected_devices.includes(devicenameName)){var status = true}
           else{var status = false}
           
           //Infos abfragen
           if(status == true ) {
               var status = "1"
               
               //Version
               var version = getState("sonoff.0." + devicenameName + ".INFO" + ".Version").val;
               if(version.indexOf("(sonoff)")){var version = version.replace("(sonoff)", "")}
               if(version.indexOf("(tasmota)")){var version = version.replace("(tasmota)", "")}
               // Version als INT für den Vergleich
               var version_1 = parseInt(version)
    
               //Uptime aus dem DP UptimeSec (ab Tasmota 7.x)
               if(version_1 > 6) {
                   var uptime = getState("sonoff.0." + devicenameName + ".UptimeSec").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 ";}
               }     
               
    
               //Uptime für Gartenbewässerung (Tasmota 6)
               if(devicenameName == "Bewaesserung") {uptime = getState("javascript.0.uptime.sonoff_bewaesserung").val;}
               
               //IP-Adresse
               var ip = getState("sonoff.0." + devicenameName + ".INFO" + ".IPAddress").val;
    
               //Typ
               var geraet = getState("sonoff.0." + devicenameName + ".INFO" + ".Module").val;
    
               //Powerschalter für Sonoff S20 / Sonoff Basic
               if(geraet == "Sonoff S2X" || geraet == "Sonoff Basic"){var powerschalter = "sonoff.0." + devicenameName + ".POWER"};
               
           }
           if(status == false){
               var status = "0"
               var uptime = ""
               var version = ""
               var ip = ""
               var geraet = ""
               var powerschalter = ""
           }
           
    
    
           //DPs befüllen
    
           // Device-Name
           devicename="Sonoff-Devices.Device_"+counter.toString()+".Device-Name";
           createState(devicename, 'empty', { name: 'Device-Name', desc: '', type: 'string', role: '',read: true, write: true }); 
           setStateDelayed(devicename, devicenameName, 800);
           // Uptime
           devicename="Sonoff-Devices.Device_"+counter.toString()+".Uptime"; 
           createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
           setStateDelayed(devicename, uptime, 800);
           // Status
           devicename="Sonoff-Devices.Device_"+counter.toString()+".Status";
           createState(devicename, 'empty', { name: 'Status', desc: '', type: 'string', role: '',read: true, write: true }); 
           setStateDelayed(devicename, status, 800);
           // Version
           devicename="Sonoff-Devices.Device_"+counter.toString()+".Version";
           createState(devicename, 'empty', { name: 'Version', desc: '', type: 'string', role: '',read: true, write: true }); 
           setStateDelayed(devicename, version, 800);
           // IP
           devicename="Sonoff-Devices.Device_"+counter.toString()+".IP";
           createState(devicename, 'empty', { name: 'IP', desc: '', type: 'string', role: '',read: true, write: true }); 
           setStateDelayed(devicename, ip, 800);
           // Gereatetyp
           devicename="Sonoff-Devices.Device_"+counter.toString()+".Geraet";
           createState(devicename, 'empty', { name: 'Geraet', desc: '', type: 'string', role: '',read: true, write: true }); 
           setStateDelayed(devicename, geraet, 800);
           //Powerschalter
           if(geraet == "Sonoff S2X" || geraet == "Sonoff Basic")  {
               devicename="Sonoff-Devices.Device_"+counter.toString()+".Powerschalter";
               createState(devicename, 'empty', { name: 'Powerschalter', desc: '', type: 'string', role: '',read: true, write: true }); 
               setStateDelayed(devicename, powerschalter, 800);
           }
       
           counter = counter+1;
           //console.log(devicenameName + " - " + uptime);
    
           
       }); 
    
       // Wegen sonoff.0.info muss vom Counter 1 abgezogen werden
       counter = counter - 1
       setStateDelayed('Sonoff-Devices.Anzahl', 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('Sonoff-Devices.Letztes_Update', 0, { name: 'Letztes_Update', desc: '', type: 'string', role: '',read: true, write: true }); 
       setStateDelayed('Sonoff-Devices.Letztes_Update', heute, 800);
    
       	
    }); 
    
    

    1 Antwort Letzte Antwort
    0
    • T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von ticaki
      #2
      var devicenameName=devicename;
      var devicename_array = devicenameName.split(' ');        
      devicenameName = devicename_array[0];
      

      Ich weiß nicht warum du das hier tust aber diese 3 Zeilen machen das:

      Ein guten Beispiel
      0: Ein
      1: gutes
      2: Beispiel
      
      devicenameName = Ein
      

      versuche es mal so:

      var devicenameName=devicename;
      //var devicename_array = devicenameName.split(' ');        
      //devicenameName = devicename_array[0];
      

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      K 1 Antwort Letzte Antwort
      0
      • T ticaki
        var devicenameName=devicename;
        var devicename_array = devicenameName.split(' ');        
        devicenameName = devicename_array[0];
        

        Ich weiß nicht warum du das hier tust aber diese 3 Zeilen machen das:

        Ein guten Beispiel
        0: Ein
        1: gutes
        2: Beispiel
        
        devicenameName = Ein
        

        versuche es mal so:

        var devicenameName=devicename;
        //var devicename_array = devicenameName.split(' ');        
        //devicenameName = devicename_array[0];
        
        K Offline
        K Offline
        Kuddel
        schrieb am zuletzt editiert von Kuddel
        #3

        @ticaki wenn ich es so mache wie du, steht im Datenpumnkt "Device-name" folgendes: Sonoff-S20 INFO Hostname

        Mit meiner Lösung steht da nur "Sonoff-S20".

        Wenn ich das reichtig verstehe, schneiden meine Befehle nach dem ersten Leerzeichen ab.

        Ich versuche es mal mit erstzen, damit die Leerzeichen nicht abgeschnitten werden.

        EDIT: @ticaki vielen Dank für den Hinweis. Habe es jetzt hinbekommen.

        var devicename = getObject(id).common.name;
        var devicename = devicename.replace(" INFO ", "")
        var devicename = devicename.replace(" Hostname", "")
        var devicenameName=devicename;
        
        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        734

        Online

        32.6k

        Benutzer

        82.1k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe