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. [gelöst] Teil vom Gerätenamen bzw. Raumnamen entfernen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    260

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

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

[gelöst] Teil vom Gerätenamen bzw. Raumnamen entfernen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 3 Kommentatoren 479 Aufrufe 2 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.
  • dslraserD Offline
    dslraserD Offline
    dslraser
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #1

    Hallo,

    wie kann ich einen Teil eines Gerätenamen/Raumnamen entfernen ?

    Konkret habe ich mir das Fensterscript für meine Hue Lampen angepasst.

    Hier wird ja das .on aus dem Namen entfernt, ich möchte aber gern noch vorn im Gerätenamen bzw. Raumnamen die ersten 10 Stellen entfernen.

    (das HueBridge. soll wech)

    var devicename = name.substring(0, name.indexOf(".on")); //.on aus Text entfernen
    

    Wie stelle ich das an ?

    Aktuell sieht es so aus….
    3822_licht.jpg

    Der Name stammt von hier:

    3822_licht_2.jpg

    Das ist das Script, was muß ich da ändern ?

    //Licht Status
    var logging = true;
    
    var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
    idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
    idText = 'javascript.0.Status.Lichter.Text',
    idRaum = 'javascript.0.Status.Lichter.Raum',
    idAnsage = 'javascript.0.Status.Lichter.Ansage';
    
    // Ab hier nix mehr ändern
    createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
    type: 'number',
    name: 'Anzahl aller Lichter',
    min: 0,
    def: 0,
    role: 'value'
    });
    createState(idAnzahlEin, { // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
    type: 'number',
    name: 'Anzahl der eingeschalteten Lichter',
    min: 0,
    def: 0,
    role: 'value'
    });
    createState(idText, { // Anzahl der eingeschalteten Lichter und deren Namen als Variable unter Javascript.0 anlegen
    type: 'string',
    name: 'eingeschaltete Lichter',
    desc: 'Namen der eingeschalteten Lichter',
    def: ' ',
    role: 'value'
    });
    createState(idAnsage, {
    type: 'string',
    name: 'eingeschaltete Lichter (Ansage)',
    desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
    def: ' ',
    role: 'value'
    });
    createState(idRaum, { // Räume, in denen Lichter eingeschaltet sind
    type: 'string',
    name: 'Räume mit eingeschalteten Lichter',
    desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
    def: ' ',
    role: 'value'
    });
    
    var cacheSelectorState = $('channel[state.id=*.on](functions="Licht")');//Gewerk Licht
    
    function checkDevices(obj) {
    // Setzt die Zähler vor dem Durchlauf aller Elemente *.on im Gewerk Licht auf 0
    var anzahlLichtAn = 0;
    var anzahlLicht = 0;
    var textLichtAn = [];
    var textRaum = [];
    
    cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.on im Gewerk Licht
    var obj = getObject(id);
    var name = getObject(id).common.name;
    var status = getState(id).val; // Zustand *.on abfragen (jedes Element)
    var devicename = name.substring(0, name.indexOf(".on")); //.on aus Text entfernen
    var raumname = getObject(id, "rooms");
    
    //if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
    if ( status){
    ++anzahlLichtAn; 
    textLichtAn.push(devicename); // Zu Array hinzufügen
    textRaum.push(raumname.enumNames);
    }
    ++anzahlLicht; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
    });
    
    textRaum = deleteDuplicates(textRaum);
    
    // Array mit Lichternamen sortieren
    textLichtAn.sort();
    textRaum.sort(); 
    // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
    if (logging) log("Text: " + textLichtAn);
    if (logging) log("Anzahl Lichter: " + anzahlLicht + " # davon Lichter an: " + anzahlLichtAn);
    // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
    setState(idText, textLichtAn.join(',\nund\n')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
    setState(idAnzahlEin, textLichtAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
    setState(idAnzahl, anzahlLicht); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
    setState(idRaum, textRaum.join(',
    ')); // Räume, in denen Lichter eingeschaltet ist
    setState(idRaum, textRaum.join(',\nund\n')); // Räume, in denen Lichter eingeschaltet ist 
    }
    
    // Trigger
    
    cacheSelectorState.on(function(obj) { // bei Zustandänderung *.on im Gewerk Lichter
    //if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
    checkDevices();
    });
    
    function main() {
    setTimeout(function(){
    if (logging) log('Auslöser Skriptstart');
    checkDevices();
    }, 2000);
    }
    
    main(); // Skriptstart-Auslöser
    
    //Aufbereitung für Ansage
    function strip_tags(data) {
        var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
    return(rueckgabe);
    }
    
        on(idText, function(obj) {
        var text = obj.state.val;
        text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Lampen ausgeschaltet';
        setState(idAnsage, text);
    });
    
    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2
      name = name.split('.')[1];
      

      oder, wenn es immer 10 Zeichen vorn sind, die weg sollen

      name = name.substring(10);
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      dslraserD 1 Antwort Letzte Antwort
      0
      • dslraserD Offline
        dslraserD Offline
        dslraser
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #3

        Danke Dir.

        so geht es wie gewünscht

        var devicename = name.substring(10, name.indexOf(".on")); //.on und HueBridge. aus Text entfernen
        
        1 Antwort Letzte Antwort
        0
        • paul53P paul53
          name = name.split('.')[1];
          

          oder, wenn es immer 10 Zeichen vorn sind, die weg sollen

          name = name.substring(10);
          
          dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @paul53 sagte in [gelöst] Teil vom Gerätenamen bzw. Raumnamen entfernen:

          name = name.split('.')[1];
          

          oder, wenn es immer 10 Zeichen vorn sind, die weg sollen

          name = name.substring(10);
          

          Hallo @paul53
          wie macht man Zeichen von hinten weg ?

          P paul53P 2 Antworten Letzte Antwort
          0
          • dslraserD dslraser

            @paul53 sagte in [gelöst] Teil vom Gerätenamen bzw. Raumnamen entfernen:

            name = name.split('.')[1];
            

            oder, wenn es immer 10 Zeichen vorn sind, die weg sollen

            name = name.substring(10);
            

            Hallo @paul53
            wie macht man Zeichen von hinten weg ?

            P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #5

            @dslraser Sieh Dir mal diese hervorragende Dokumentation an:
            https://javascript.info/string#getting-a-substring

            substring() schneidet einen definierten Teil weg
            substr() behält einen definierten Teil
            slice() ist variabler, da Werte auch negativ sein können

            Wie schneidet man von hinten?

            let d=-3; // es werden 3 Zeichen von hinten Weg geschnitten (minus)
            name= name.slice(-name.length, d); // Start von hinten, weil Länge des Strings die Endposition ist
            

            Ab letzter Position sollen 3 Zeichen abgeschnitten werden. Man muss halt wissen, wieviel von hinten weg muss.

            Gruß
            Pix

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Antwort Letzte Antwort
            2
            • dslraserD dslraser

              @paul53 sagte in [gelöst] Teil vom Gerätenamen bzw. Raumnamen entfernen:

              name = name.split('.')[1];
              

              oder, wenn es immer 10 Zeichen vorn sind, die weg sollen

              name = name.substring(10);
              

              Hallo @paul53
              wie macht man Zeichen von hinten weg ?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @dslraser sagte:

              wie macht man Zeichen von hinten weg ?

              Eine bestimmte Anzahl ?
              Oder ab letztem Punkt ?

              idParent = id.substring(0, id.lastIndexOf('.'));
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              dslraserD 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @dslraser sagte:

                wie macht man Zeichen von hinten weg ?

                Eine bestimmte Anzahl ?
                Oder ab letztem Punkt ?

                idParent = id.substring(0, id.lastIndexOf('.'));
                
                dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                @paul53
                ja, eine bestimmte Anzahl von hinten soll weg, aber es gibt keinen Punkt. Ich habe nur nochmal den alten Beitrag rausgekramt. Also z.B.

                Das ist der Name und das kann weg

                Übrig bleiben soll

                Das ist der Name

                Ich bin gerade nicht zu Hause und konnte @pix seine Beispiele noch nicht probieren.

                paul53P 1 Antwort Letzte Antwort
                0
                • dslraserD dslraser

                  @paul53
                  ja, eine bestimmte Anzahl von hinten soll weg, aber es gibt keinen Punkt. Ich habe nur nochmal den alten Beitrag rausgekramt. Also z.B.

                  Das ist der Name und das kann weg

                  Übrig bleiben soll

                  Das ist der Name

                  Ich bin gerade nicht zu Hause und konnte @pix seine Beispiele noch nicht probieren.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @dslraser sagte:

                  eine bestimmte Anzahl von hinten soll weg

                  name = name.slice(0, -3); // letzte 3 Zeichen entfernen
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  1
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  617

                  Online

                  32.7k

                  Benutzer

                  82.5k

                  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