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. Datenpunkt vom Typ Array States löschen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Datenpunkt vom Typ Array States löschen

Geplant Angeheftet Gesperrt Verschoben JavaScript
11 Beiträge 2 Kommentatoren 686 Aufrufe 1 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.
  • R Offline
    R Offline
    RaBu60
    schrieb am zuletzt editiert von RaBu60
    #1

    Hallo,

    ich sitze hier schon seit Tagen vor einem Problem mit einem Datenpunkt vom Typ Array.
    Alles Probieren, Doku lesen, Googeln und Forumsuche (vielleicht habe ich auch die falschen Stichworte verwendet) hat mich nicht weiter gebracht :white_frowning_face:

    Ich habe einen Datenpunk unter "0_userdata.0.NeuerZustand" mit folgender Definition angelegt:

    "common": {
        "name": "NeuerZustand",
        "desc": "Manuell erzeugt",
        "role": "state",
        "type": "array",
        "read": true,
        "write": true,
        "states": {
            "1": "Erdgeschoss",
            "2": "Obergeschoss",
            "3": "Beete",
            "4": "Halle"
        }
      }
    

    Mit

    extendObject('0_userdata.0.NeuerZustand', {common: { "states": { 
            "1": "Erdgeschoss",
            "2": "Obergeschoss",
            "3": "Dach",
            "4": "Halle"
        }}})
    

    kann ich den Text der einzelnen Elemente im Array (im Beispiel oben Beete --> Dach) ändern bzw. neue Elemente einfügen.

    Wie kann ich in dem Array einzelne Elemente löschen bzw. das ganze Array löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

    paul53P 2 Antworten Letzte Antwort
    0
    • R RaBu60

      Hallo,

      ich sitze hier schon seit Tagen vor einem Problem mit einem Datenpunkt vom Typ Array.
      Alles Probieren, Doku lesen, Googeln und Forumsuche (vielleicht habe ich auch die falschen Stichworte verwendet) hat mich nicht weiter gebracht :white_frowning_face:

      Ich habe einen Datenpunk unter "0_userdata.0.NeuerZustand" mit folgender Definition angelegt:

      "common": {
          "name": "NeuerZustand",
          "desc": "Manuell erzeugt",
          "role": "state",
          "type": "array",
          "read": true,
          "write": true,
          "states": {
              "1": "Erdgeschoss",
              "2": "Obergeschoss",
              "3": "Beete",
              "4": "Halle"
          }
        }
      

      Mit

      extendObject('0_userdata.0.NeuerZustand', {common: { "states": { 
              "1": "Erdgeschoss",
              "2": "Obergeschoss",
              "3": "Dach",
              "4": "Halle"
          }}})
      

      kann ich den Text der einzelnen Elemente im Array (im Beispiel oben Beete --> Dach) ändern bzw. neue Elemente einfügen.

      Wie kann ich in dem Array einzelne Elemente löschen bzw. das ganze Array löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

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

      @rabu60
      So wie common.states angelegt ist, muss der Datenpunkt vom Typ "number" sein - nicht "array". Das Objekt common.states enthält die Zuweisung von Zustandstexten zu Werten.

      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
      0
      • R RaBu60

        Hallo,

        ich sitze hier schon seit Tagen vor einem Problem mit einem Datenpunkt vom Typ Array.
        Alles Probieren, Doku lesen, Googeln und Forumsuche (vielleicht habe ich auch die falschen Stichworte verwendet) hat mich nicht weiter gebracht :white_frowning_face:

        Ich habe einen Datenpunk unter "0_userdata.0.NeuerZustand" mit folgender Definition angelegt:

        "common": {
            "name": "NeuerZustand",
            "desc": "Manuell erzeugt",
            "role": "state",
            "type": "array",
            "read": true,
            "write": true,
            "states": {
                "1": "Erdgeschoss",
                "2": "Obergeschoss",
                "3": "Beete",
                "4": "Halle"
            }
          }
        

        Mit

        extendObject('0_userdata.0.NeuerZustand', {common: { "states": { 
                "1": "Erdgeschoss",
                "2": "Obergeschoss",
                "3": "Dach",
                "4": "Halle"
            }}})
        

        kann ich den Text der einzelnen Elemente im Array (im Beispiel oben Beete --> Dach) ändern bzw. neue Elemente einfügen.

        Wie kann ich in dem Array einzelne Elemente löschen bzw. das ganze Array löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

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

        @rabu60 sagte: löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

        Du möchtest das Objekt common.states löschen? Man kann es leeren:

        extendObject('0_userdata.0.NeuerZustand', {common: {states: {}}})
        

        Eigentlich sind die Objekte statisch, d.h. sie sollten konstant bleiben. Variable Werte schreibt man mit setState() in den Datenpunktwert. Was möchtest Du erreichen?

        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

        R 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @rabu60 sagte: löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

          Du möchtest das Objekt common.states löschen? Man kann es leeren:

          extendObject('0_userdata.0.NeuerZustand', {common: {states: {}}})
          

          Eigentlich sind die Objekte statisch, d.h. sie sollten konstant bleiben. Variable Werte schreibt man mit setState() in den Datenpunktwert. Was möchtest Du erreichen?

          R Offline
          R Offline
          RaBu60
          schrieb am zuletzt editiert von
          #4

          @paul53 sagte in Datenpunkt vom Typ Array States löschen:

          @rabu60 sagte: löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

          Du möchtest das Objekt common.states löschen? Man kann es leeren:

          extendObject('0_userdata.0.NeuerZustand', {common: {states: {}}})
          

          Ich habe jetzt den Datenpunkt mit Typ "number" neu angelegt und die States geschrieben.
          Der Vorschlag es zu leeren hat leider auch nicht funktioniert.

          Eigentlich sind die Objekte statisch, d.h. sie sollten konstant bleiben. Variable Werte schreibt man mit setState() in den Datenpunktwert. Was möchtest Du erreichen?

          Nun, ich möchte, dass in diesem Datenpunkt nur bestimmte Werte gespeichert werden können. Leider ist diese Werteliste unter bestimmten Bedingungen variabel und nicht immer (wie in meinem Beispiel) Werte zwischen 1 und <n>

          paul53P 1 Antwort Letzte Antwort
          0
          • R RaBu60

            @paul53 sagte in Datenpunkt vom Typ Array States löschen:

            @rabu60 sagte: löschen ohne gleich den ganzen Datenpunkt neu anlegen zu müssen?

            Du möchtest das Objekt common.states löschen? Man kann es leeren:

            extendObject('0_userdata.0.NeuerZustand', {common: {states: {}}})
            

            Ich habe jetzt den Datenpunkt mit Typ "number" neu angelegt und die States geschrieben.
            Der Vorschlag es zu leeren hat leider auch nicht funktioniert.

            Eigentlich sind die Objekte statisch, d.h. sie sollten konstant bleiben. Variable Werte schreibt man mit setState() in den Datenpunktwert. Was möchtest Du erreichen?

            Nun, ich möchte, dass in diesem Datenpunkt nur bestimmte Werte gespeichert werden können. Leider ist diese Werteliste unter bestimmten Bedingungen variabel und nicht immer (wie in meinem Beispiel) Werte zwischen 1 und <n>

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

            @rabu60 sagte: Werteliste unter bestimmten Bedingungen variabel

            Wie variabel? Genügt es nicht, common.min (1), common.max (4) und common.step (1) zu setzen? Dann können zumindest Skripte keine Werte außerhalb des Bereiches schreiben.

            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

            R 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @rabu60 sagte: Werteliste unter bestimmten Bedingungen variabel

              Wie variabel? Genügt es nicht, common.min (1), common.max (4) und common.step (1) zu setzen? Dann können zumindest Skripte keine Werte außerhalb des Bereiches schreiben.

              R Offline
              R Offline
              RaBu60
              schrieb am zuletzt editiert von
              #6

              @paul53 sagte :

              Wie variabel? Genügt es nicht, common.min (1), common.max (4) und common.step (1) zu setzen? Dann können zumindest Skript keine Werte außerhalb des Bereiches schreiben.

              Nein, leider nicht.

              paul53P 1 Antwort Letzte Antwort
              0
              • R RaBu60

                @paul53 sagte :

                Wie variabel? Genügt es nicht, common.min (1), common.max (4) und common.step (1) zu setzen? Dann können zumindest Skript keine Werte außerhalb des Bereiches schreiben.

                Nein, leider nicht.

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

                @rabu60 sagte: Nein, leider nicht.

                Dann sprengt Deine (ungewöhnliche) Anforderung die Möglichkeiten von ioBroker.

                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

                R 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @rabu60 sagte: Nein, leider nicht.

                  Dann sprengt Deine (ungewöhnliche) Anforderung die Möglichkeiten von ioBroker.

                  R Offline
                  R Offline
                  RaBu60
                  schrieb am zuletzt editiert von
                  #8

                  @paul53
                  Man muss nur hartnäckig sein...

                  Ich habe einen Weg gefunden:

                  let sObjID = '0_userdata.0.NeuerZustand';
                  
                  let obj=getObject(sObjID);
                  
                  delete obj.common.states;
                  
                  setObject(sObjID, obj);
                  
                  extendObject(sObjID, {common: { "states": {
                        1: "Rasen und Hang",
                        2: "Rasen und Hochbeet",
                        5: "Dach",
                        4: "Vorgarten"
                      }
                  }});
                  
                  

                  Vielen Dank für Deine Hilfe und Inspiration. Manchmal braucht man nur einen Denkanstoß :+1:

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • R RaBu60

                    @paul53
                    Man muss nur hartnäckig sein...

                    Ich habe einen Weg gefunden:

                    let sObjID = '0_userdata.0.NeuerZustand';
                    
                    let obj=getObject(sObjID);
                    
                    delete obj.common.states;
                    
                    setObject(sObjID, obj);
                    
                    extendObject(sObjID, {common: { "states": {
                          1: "Rasen und Hang",
                          2: "Rasen und Hochbeet",
                          5: "Dach",
                          4: "Vorgarten"
                        }
                    }});
                    
                    

                    Vielen Dank für Deine Hilfe und Inspiration. Manchmal braucht man nur einen Denkanstoß :+1:

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

                    @rabu60 sagte: Ich habe einen Weg gefunden:

                    Es funktioniert auch so (ohne Löschen):

                    const sObjID = '0_userdata.0.NeuerZustand';
                     
                    const obj = getObject(sObjID);
                     
                    obj.common.states = {
                        1: "Rasen und Hang",
                        2: "Rasen und Hochbeet",
                        5: "Dach",
                        4: "Vorgarten"
                    };
                     
                    setObject(sObjID, obj);
                    

                    In deiner Version können sich setObject() und extendObject() in die Quere kommen, d.h. setObject() ist noch nicht fertig, wenn extendObject() das Objekt einliest. extendObject() müsste in der Callback-Funktion von setObject() ausgeführt werden.

                    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

                    R 2 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @rabu60 sagte: Ich habe einen Weg gefunden:

                      Es funktioniert auch so (ohne Löschen):

                      const sObjID = '0_userdata.0.NeuerZustand';
                       
                      const obj = getObject(sObjID);
                       
                      obj.common.states = {
                          1: "Rasen und Hang",
                          2: "Rasen und Hochbeet",
                          5: "Dach",
                          4: "Vorgarten"
                      };
                       
                      setObject(sObjID, obj);
                      

                      In deiner Version können sich setObject() und extendObject() in die Quere kommen, d.h. setObject() ist noch nicht fertig, wenn extendObject() das Objekt einliest. extendObject() müsste in der Callback-Funktion von setObject() ausgeführt werden.

                      R Offline
                      R Offline
                      RaBu60
                      schrieb am zuletzt editiert von
                      #10

                      @paul53

                      Danke für den Hinweis. Ich verzichte auf extendObject() komplett.

                      let sObjID = '0_userdata.0.NeuerZustand';
                      
                      let obj=getObject(sObjID);
                      
                      obj.common["states"]={};
                      
                      var i_list = Array.prototype.slice.apply($("state[state.id=0_userdata.0.Zones.Zone_*.relay]"));
                      for (var i_index in i_list) {
                          i = i_list[i_index];
                          sBasePoint = i.slice(0, i.lastIndexOf('.') + 1);
                          obj.common.states[parseInt(getState((String(sBasePoint) + 'relay')).val)] = getState((String(sBasePoint) + 'name')).val;
                      };
                      
                      setObject(sObjID, obj);
                      

                      So funktioniert es (Hoffentlich) :stuck_out_tongue_winking_eye:

                      1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @rabu60 sagte: Ich habe einen Weg gefunden:

                        Es funktioniert auch so (ohne Löschen):

                        const sObjID = '0_userdata.0.NeuerZustand';
                         
                        const obj = getObject(sObjID);
                         
                        obj.common.states = {
                            1: "Rasen und Hang",
                            2: "Rasen und Hochbeet",
                            5: "Dach",
                            4: "Vorgarten"
                        };
                         
                        setObject(sObjID, obj);
                        

                        In deiner Version können sich setObject() und extendObject() in die Quere kommen, d.h. setObject() ist noch nicht fertig, wenn extendObject() das Objekt einliest. extendObject() müsste in der Callback-Funktion von setObject() ausgeführt werden.

                        R Offline
                        R Offline
                        RaBu60
                        schrieb am zuletzt editiert von
                        #11

                        Hallo @paul53

                        es funktioniert :+1:

                        Nochmals vielen Dank für Deine Unterstützung.

                        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

                        784

                        Online

                        32.6k

                        Benutzer

                        82.2k

                        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