Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    123

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    163

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    868

[gelöst] Gerätenamen mit Leerzeichen verarbeiten

Scheduled Pinned Locked Moved JavaScript
3 Posts 2 Posters 263 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Kuddel
    wrote on last edited by 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 Reply Last reply
    0
    • T Do not disturb
      T Do not disturb
      ticaki
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by 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 Reply Last reply
        0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        454

        Online

        32.8k

        Users

        82.7k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Home
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe