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] Objektnamen beschneiden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[gelöst] Objektnamen beschneiden

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
5 Beiträge 3 Kommentatoren 280 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.
  • B Offline
    B Offline
    bommel_030
    schrieb am zuletzt editiert von bommel_030
    #1

    Ich hab nach dem Umzug mal wieder ein altes Fensterskript (hier aus dem Forum kopiert) reaktiviert und möchte das nun etwas optimieren. Sobald ein Fenster geöffnet wird, wird das Skript getriggert, zählt die offenen Fenster und schreibt die offenen Fenster in einen Datenpunkt.

        hmFenster.each(function (id, i) {                                  // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
            var status = getState(id).val;                                          // Zustand *.STATE abfragen (jedes Element)
            var obj    = getObject(id);
            var name = getObject(id).common.name;
            var devicename = name.substring(0, name.indexOf(".STATE"));             //.state aus Text entfernen
            if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                 ++anzahlFensterauf;
                 textFensterauf.push(devicename/* + ' (' + fensterstatus(status) + ')'*/);  // Name und Zustand zum Array hinzufügen
            }                
            log('Fenster #' + (i+1) + ': ' + devicename + ' ' + fensterstatus(status)/* + ' (' + status + ' / ' + typeof status + ')'*/);
            ++anzahlFenster;                                                        // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
        }); 
    

    Nun holt sich das Skript den Objektnamen z.B.:

    Fenster Garderobe.STATE
    

    und schneidet .STATE ab. Soweit so gut. Nun hätte ich gerne aber:
    a) "Fenster " am Anfang auch abgeschnitten. Ergebnis wäre dann Garderobe.
    b) gibt natürlich auch Türen ;-), also einfach die ersten 8 Stellen abschneiden geht leider nicht.

    Vielleicht kann mir ja jemand nen Schubs in die richtige Richtung geben wie ich das zerlegen/entfernen kombinieren kann.
    Danke

    AsgothianA arteckA 2 Antworten Letzte Antwort
    0
    • B bommel_030

      Ich hab nach dem Umzug mal wieder ein altes Fensterskript (hier aus dem Forum kopiert) reaktiviert und möchte das nun etwas optimieren. Sobald ein Fenster geöffnet wird, wird das Skript getriggert, zählt die offenen Fenster und schreibt die offenen Fenster in einen Datenpunkt.

          hmFenster.each(function (id, i) {                                  // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
              var status = getState(id).val;                                          // Zustand *.STATE abfragen (jedes Element)
              var obj    = getObject(id);
              var name = getObject(id).common.name;
              var devicename = name.substring(0, name.indexOf(".STATE"));             //.state aus Text entfernen
              if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                   ++anzahlFensterauf;
                   textFensterauf.push(devicename/* + ' (' + fensterstatus(status) + ')'*/);  // Name und Zustand zum Array hinzufügen
              }                
              log('Fenster #' + (i+1) + ': ' + devicename + ' ' + fensterstatus(status)/* + ' (' + status + ' / ' + typeof status + ')'*/);
              ++anzahlFenster;                                                        // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
          }); 
      

      Nun holt sich das Skript den Objektnamen z.B.:

      Fenster Garderobe.STATE
      

      und schneidet .STATE ab. Soweit so gut. Nun hätte ich gerne aber:
      a) "Fenster " am Anfang auch abgeschnitten. Ergebnis wäre dann Garderobe.
      b) gibt natürlich auch Türen ;-), also einfach die ersten 8 Stellen abschneiden geht leider nicht.

      Vielleicht kann mir ja jemand nen Schubs in die richtige Richtung geben wie ich das zerlegen/entfernen kombinieren kann.
      Danke

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @bommel_030 Steht da immer "Fenster " im Namen ?
      Wenn Ja dann sollte per

      const reducedDeviceName = name.substring(0, name.indexOf(".STATE")).replace("Fenster ", "") gearbeitet werden können.
      

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      B 1 Antwort Letzte Antwort
      1
      • AsgothianA Asgothian

        @bommel_030 Steht da immer "Fenster " im Namen ?
        Wenn Ja dann sollte per

        const reducedDeviceName = name.substring(0, name.indexOf(".STATE")).replace("Fenster ", "") gearbeitet werden können.
        

        A.

        B Offline
        B Offline
        bommel_030
        schrieb am zuletzt editiert von
        #3

        @asgothian
        Leider nicht. Ist halt auch mal ne Tür dabei. Wobei es mir egal wäre wenn er dann z.B. "Tür Wohnzimmer" schreibt wenn er Fenster nicht ersetzen kann.
        Das andere teste ich gleich mal.

        1 Antwort Letzte Antwort
        0
        • B bommel_030

          Ich hab nach dem Umzug mal wieder ein altes Fensterskript (hier aus dem Forum kopiert) reaktiviert und möchte das nun etwas optimieren. Sobald ein Fenster geöffnet wird, wird das Skript getriggert, zählt die offenen Fenster und schreibt die offenen Fenster in einen Datenpunkt.

              hmFenster.each(function (id, i) {                                  // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                  var status = getState(id).val;                                          // Zustand *.STATE abfragen (jedes Element)
                  var obj    = getObject(id);
                  var name = getObject(id).common.name;
                  var devicename = name.substring(0, name.indexOf(".STATE"));             //.state aus Text entfernen
                  if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                       ++anzahlFensterauf;
                       textFensterauf.push(devicename/* + ' (' + fensterstatus(status) + ')'*/);  // Name und Zustand zum Array hinzufügen
                  }                
                  log('Fenster #' + (i+1) + ': ' + devicename + ' ' + fensterstatus(status)/* + ' (' + status + ' / ' + typeof status + ')'*/);
                  ++anzahlFenster;                                                        // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
              }); 
          

          Nun holt sich das Skript den Objektnamen z.B.:

          Fenster Garderobe.STATE
          

          und schneidet .STATE ab. Soweit so gut. Nun hätte ich gerne aber:
          a) "Fenster " am Anfang auch abgeschnitten. Ergebnis wäre dann Garderobe.
          b) gibt natürlich auch Türen ;-), also einfach die ersten 8 Stellen abschneiden geht leider nicht.

          Vielleicht kann mir ja jemand nen Schubs in die richtige Richtung geben wie ich das zerlegen/entfernen kombinieren kann.
          Danke

          arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @bommel_030 schaumal so

          hmFenster.each(function (id, i) {                                  // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                  var status = getState(id).val;                                          // Zustand *.STATE abfragen (jedes Element)
                  var obj    = getObject(id);
                  var name = getObject(id).common.name;
          
                  let devicename = name.substring(name.indexOf(" "), name.indexOf(".STATE"));             // hier 
          
                  if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                       ++anzahlFensterauf;
                       textFensterauf.push(devicename/* + ' (' + fensterstatus(status) + ')'*/);  // Name und Zustand zum Array hinzufügen
                  }                
                  log('Fenster #' + (i+1) + ': ' + devicename + ' ' + fensterstatus(status)/* + ' (' + status + ' / ' + typeof status + ')'*/);
                  ++anzahlFenster;                                                        // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
              });
          

          zigbee hab ich, zwave auch, nuc's genauso und HA auch

          B 1 Antwort Letzte Antwort
          1
          • arteckA arteck

            @bommel_030 schaumal so

            hmFenster.each(function (id, i) {                                  // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                    var status = getState(id).val;                                          // Zustand *.STATE abfragen (jedes Element)
                    var obj    = getObject(id);
                    var name = getObject(id).common.name;
            
                    let devicename = name.substring(name.indexOf(" "), name.indexOf(".STATE"));             // hier 
            
                    if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                         ++anzahlFensterauf;
                         textFensterauf.push(devicename/* + ' (' + fensterstatus(status) + ')'*/);  // Name und Zustand zum Array hinzufügen
                    }                
                    log('Fenster #' + (i+1) + ': ' + devicename + ' ' + fensterstatus(status)/* + ' (' + status + ' / ' + typeof status + ')'*/);
                    ++anzahlFenster;                                                        // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                });
            
            B Offline
            B Offline
            bommel_030
            schrieb am zuletzt editiert von
            #5

            @arteck @Asgothian
            Funktionieren beide Varianten ohne Fehlermeldung. Bei der Variante mit replace bleibt die Tür erhalten. Nun hab ich den Luxus auszuwählen was mir besser gefällt.
            Vielen Dank!

            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

            514

            Online

            32.6k

            Benutzer

            82.3k

            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