Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. [Gelöst] Funktion (Aufzählung) per Skript zuweisen

NEWS

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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    442

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

[Gelöst] Funktion (Aufzählung) per Skript zuweisen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
9 Beiträge 2 Kommentatoren 764 Aufrufe 2 Beobachtet
  • Ä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.
  • H-a-m-iH Offline
    H-a-m-iH Offline
    H-a-m-i
    schrieb am zuletzt editiert von H-a-m-i
    #1

    Guten Morgen,

    ich bin ziemlich neu im ioBroker und mache dort alles per Blockly. Von manuellen Skripten habe ich überhaupt keine Ahnung, weshalb meine Frage für die meisten wohl lächerlich erscheint, aber ich kriege es seit Stunden einfach nicht hin und verstehe alles, was ich dazu per Suche gefunden habe, nicht. Ich hoffe hier kann mir jemand helfen.

    Ich habe ein Blockly in dem ich ein code aus dem Internet eingefügt habe, der mir einen neuen Datenpunkt erzeugt, was soweit auch einwandfrei funktioniert. Das sieht bisher so aus:

    1.JPG

    createState(id, init, {type:'number', unit:'kWh', read:true, write:true, role:'state'});
    

    Jetzt möchte ich eigentlich nur, dass diesem Datenpunkt auch die Funktion/Aufzählung mit dem Namen Ladekosten (unter Aufzählungen natürlich erstellt) zugewiesen wird. Habe schon verschiedene Schnipsel aus dem Netz in den Code eingefügt, aber es funktioniert einfach nicht.

    Wäre super, wenn mir jemand sagen könnte, wie ich den Code ergänzen muss

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • H-a-m-iH H-a-m-i

      Guten Morgen,

      ich bin ziemlich neu im ioBroker und mache dort alles per Blockly. Von manuellen Skripten habe ich überhaupt keine Ahnung, weshalb meine Frage für die meisten wohl lächerlich erscheint, aber ich kriege es seit Stunden einfach nicht hin und verstehe alles, was ich dazu per Suche gefunden habe, nicht. Ich hoffe hier kann mir jemand helfen.

      Ich habe ein Blockly in dem ich ein code aus dem Internet eingefügt habe, der mir einen neuen Datenpunkt erzeugt, was soweit auch einwandfrei funktioniert. Das sieht bisher so aus:

      1.JPG

      createState(id, init, {type:'number', unit:'kWh', read:true, write:true, role:'state'});
      

      Jetzt möchte ich eigentlich nur, dass diesem Datenpunkt auch die Funktion/Aufzählung mit dem Namen Ladekosten (unter Aufzählungen natürlich erstellt) zugewiesen wird. Habe schon verschiedene Schnipsel aus dem Netz in den Code eingefügt, aber es funktioniert einfach nicht.

      Wäre super, wenn mir jemand sagen könnte, wie ich den Code ergänzen muss

      haus-automatisierungH Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @h-a-m-i sagte in Anfängerfrage: Funktion (Aufzählung) per Skript zuweisen:

      Jetzt möchte ich eigentlich nur, dass diesem Datenpunkt auch die Funktion/Aufzählung mit dem Namen Ladekosten (unter Aufzählungen natürlich erstellt) zugewiesen wird

      Ich mache das mit einer eigenen Funktion (sollte wirklich mal als Standard in den JavaScript-Adapter):

      https://github.com/haus-automation/iobroker-script-examples/blob/main/objects-states/add-objectid-to-enum.md

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      1 Antwort Letzte Antwort
      1
      • H-a-m-iH Offline
        H-a-m-iH Offline
        H-a-m-i
        schrieb am zuletzt editiert von H-a-m-i
        #3

        Danke für deine Antwort. Aber das ist mir leider schon zu viel xD sorry, was genau sollte ich jetzt machen? Dein Skript in Blockly in meine vorhandene JavaScript-Funktion einfügen?

        Mein Blockly sieht insgesamt so aus:
        2.JPG

        edit:
        Das sieht jetzt so aus:

        createState(id, init, {type:'number', unit:'kWh', read:true, write:true, role:'state'});
        
        function addToEnum(enumId, objId) {
            if (existsObject(objId)) {
                if (existsObject(enumId)) {
                    const enumObj = getObject(enumId);
        
                    if (enumObj.type === 'enum') {
                        if (!enumObj.common.members.includes(objId)) {
                            extendObject(enumId, {
                                common: {
                                    members: Array.prototype.concat(enumObj.common.members, [objId])
                                }
                            });
                        }
        
                        return true;
                    } else {
                        throw new Error(`Target object with ID ${enumId} is not an enum`);
                    }
                } else {
                    throw new Error(`Enum with ID ${enumId} does not exist`);
                }
            } else {
                throw new Error(`Object with ID ${objId} does not exist`);
            }
        }
        
        // Test
        addToEnum('enum.functions.ladekosten', '0_userdata.0.verbrauch');
        

        Ladekosten ist in dem erzeugten Datenpunkt aber nicht gesetzt

        haus-automatisierungH 1 Antwort Letzte Antwort
        0
        • H-a-m-iH H-a-m-i

          Danke für deine Antwort. Aber das ist mir leider schon zu viel xD sorry, was genau sollte ich jetzt machen? Dein Skript in Blockly in meine vorhandene JavaScript-Funktion einfügen?

          Mein Blockly sieht insgesamt so aus:
          2.JPG

          edit:
          Das sieht jetzt so aus:

          createState(id, init, {type:'number', unit:'kWh', read:true, write:true, role:'state'});
          
          function addToEnum(enumId, objId) {
              if (existsObject(objId)) {
                  if (existsObject(enumId)) {
                      const enumObj = getObject(enumId);
          
                      if (enumObj.type === 'enum') {
                          if (!enumObj.common.members.includes(objId)) {
                              extendObject(enumId, {
                                  common: {
                                      members: Array.prototype.concat(enumObj.common.members, [objId])
                                  }
                              });
                          }
          
                          return true;
                      } else {
                          throw new Error(`Target object with ID ${enumId} is not an enum`);
                      }
                  } else {
                      throw new Error(`Enum with ID ${enumId} does not exist`);
                  }
              } else {
                  throw new Error(`Object with ID ${objId} does not exist`);
              }
          }
          
          // Test
          addToEnum('enum.functions.ladekosten', '0_userdata.0.verbrauch');
          

          Ladekosten ist in dem erzeugten Datenpunkt aber nicht gesetzt

          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @h-a-m-i sagte in Anfängerfrage: Funktion (Aufzählung) per Skript zuweisen:

          Ladekosten ist in dem erzeugten Datenpunkt aber nicht gesetzt

          Die Enums werden ja auch nicht auf dem Datenpunkt/Objekt selbst gespeichert.

          Guck mal im Tab Aufzählungen ob dein Datenpunkt gelandet ist. Ansonsten würde ich an Deiner Stelle mit await und createStateAsync (oder Callback) arbeiten, damit der DP auch wirklich erstellt wird bevor es weiter geht:

          function addToEnum(enumId, objId) {
              if (existsObject(objId)) {
                  if (existsObject(enumId)) {
                      const enumObj = getObject(enumId);
           
                      if (enumObj.type === 'enum') {
                          if (!enumObj.common.members.includes(objId)) {
                              extendObject(enumId, {
                                  common: {
                                      members: Array.prototype.concat(enumObj.common.members, [objId])
                                  }
                              });
                          }
           
                          return true;
                      } else {
                          throw new Error(`Target object with ID ${enumId} is not an enum`);
                      }
                  } else {
                      throw new Error(`Enum with ID ${enumId} does not exist`);
                  }
              } else {
                  throw new Error(`Object with ID ${objId} does not exist`);
              }
          }
           
          await createStateAsync(id, init, { type: 'number', unit: 'kWh', read: true, write: true, role: 'state' });
          addToEnum('enum.functions.ladekosten', id);
          

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          haus-automatisierungH 1 Antwort Letzte Antwort
          1
          • haus-automatisierungH haus-automatisierung

            @h-a-m-i sagte in Anfängerfrage: Funktion (Aufzählung) per Skript zuweisen:

            Ladekosten ist in dem erzeugten Datenpunkt aber nicht gesetzt

            Die Enums werden ja auch nicht auf dem Datenpunkt/Objekt selbst gespeichert.

            Guck mal im Tab Aufzählungen ob dein Datenpunkt gelandet ist. Ansonsten würde ich an Deiner Stelle mit await und createStateAsync (oder Callback) arbeiten, damit der DP auch wirklich erstellt wird bevor es weiter geht:

            function addToEnum(enumId, objId) {
                if (existsObject(objId)) {
                    if (existsObject(enumId)) {
                        const enumObj = getObject(enumId);
             
                        if (enumObj.type === 'enum') {
                            if (!enumObj.common.members.includes(objId)) {
                                extendObject(enumId, {
                                    common: {
                                        members: Array.prototype.concat(enumObj.common.members, [objId])
                                    }
                                });
                            }
             
                            return true;
                        } else {
                            throw new Error(`Target object with ID ${enumId} is not an enum`);
                        }
                    } else {
                        throw new Error(`Enum with ID ${enumId} does not exist`);
                    }
                } else {
                    throw new Error(`Object with ID ${objId} does not exist`);
                }
            }
             
            await createStateAsync(id, init, { type: 'number', unit: 'kWh', read: true, write: true, role: 'state' });
            addToEnum('enum.functions.ladekosten', id);
            
            haus-automatisierungH Offline
            haus-automatisierungH Offline
            haus-automatisierung
            Developer Most Active
            schrieb am zuletzt editiert von haus-automatisierung
            #5

            Gern auch etwas vereinfachen und die ganzen Prüfungen weglassen:

            const enumId = 'enum.functions.ladekosten';
             
            await createStateAsync(id, init, { type: 'number', unit: 'kWh', read: true, write: true, role: 'state' });
            
            const enumObj = await getObjectAsync(enumId);
            if (enumObj && enumObj.type === 'enum') {
                if (!enumObj.common.members.includes(id)) {
                    await extendObjectAsync(enumId, {
                        common: {
                            members: [...enumObj.common.members, id]
                        }
                    });
                }
            }
            
            

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            1 Antwort Letzte Antwort
            1
            • H-a-m-iH Offline
              H-a-m-iH Offline
              H-a-m-i
              schrieb am zuletzt editiert von
              #6

              Hey mega, das letzte hab ich eingefügt und das funktioniert super, der Datenpunkt ist unter Aufzählungen zu sehen! 😀

              Vielen lieben Dank, das hätte ich selbst nie hinbekommen

              1 Antwort Letzte Antwort
              0
              • H-a-m-iH Offline
                H-a-m-iH Offline
                H-a-m-i
                schrieb am zuletzt editiert von
                #7

                @haus-automatisierung kannst du mir evtl. auch einen Tipp geben, wie ich einen Datenpunkt mit zb. "So" im Name lösche? Ich habe einen Objekt Ordner, in dem ich Datenpunkte mit dem Wochentag im Namen erstellen lasse, zB.: "0_userdata.0.Kosten.Fahrtkosten.So_Fahrtende>12:16"
                Jetzt möchte ich täglich alle Datenpunkte die von vorgestern sind (in dem Fall also So) löschen und habe das bis jetzt so zusammengestellt:

                Unbenannt.JPG

                // Delete state
                await deleteObject(id);
                
                

                Leider scheint das mit dem Platzhalter nicht zu funktionieren und ich finde nichts dazu, welchen Platzhalter man verwendet. Wenn ich in Blockly statt dem * das "_Fahrtende>12:16" einsetze, klappt das löschen. Also müsste der Rest soweit passen, nur eben der Platzhalter nicht

                haus-automatisierungH 1 Antwort Letzte Antwort
                0
                • H-a-m-iH H-a-m-i

                  @haus-automatisierung kannst du mir evtl. auch einen Tipp geben, wie ich einen Datenpunkt mit zb. "So" im Name lösche? Ich habe einen Objekt Ordner, in dem ich Datenpunkte mit dem Wochentag im Namen erstellen lasse, zB.: "0_userdata.0.Kosten.Fahrtkosten.So_Fahrtende>12:16"
                  Jetzt möchte ich täglich alle Datenpunkte die von vorgestern sind (in dem Fall also So) löschen und habe das bis jetzt so zusammengestellt:

                  Unbenannt.JPG

                  // Delete state
                  await deleteObject(id);
                  
                  

                  Leider scheint das mit dem Platzhalter nicht zu funktionieren und ich finde nichts dazu, welchen Platzhalter man verwendet. Wenn ich in Blockly statt dem * das "_Fahrtende>12:16" einsetze, klappt das löschen. Also müsste der Rest soweit passen, nur eben der Platzhalter nicht

                  haus-automatisierungH Offline
                  haus-automatisierungH Offline
                  haus-automatisierung
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @h-a-m-i Erstmal finde ich es ganz komisch auf die Art und Weise Datenpunkte zu erstellen und wieder zu löschen - das gesamte Konzept würde ich überdenken.

                  Aber zu Deinem Problem:

                  • Du musst mit einem RegEx oder $-Selektor alle Datenpunkte suchen, welche Deiner Logik entsprechen
                  • Dann mit einer Schleife über das Ergebnis gehen
                  • Die Datenpunkte einzeln in der Schleife löschen

                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                  📚 Meine inoffizielle ioBroker Dokumentation

                  H-a-m-iH 1 Antwort Letzte Antwort
                  0
                  • haus-automatisierungH haus-automatisierung

                    @h-a-m-i Erstmal finde ich es ganz komisch auf die Art und Weise Datenpunkte zu erstellen und wieder zu löschen - das gesamte Konzept würde ich überdenken.

                    Aber zu Deinem Problem:

                    • Du musst mit einem RegEx oder $-Selektor alle Datenpunkte suchen, welche Deiner Logik entsprechen
                    • Dann mit einer Schleife über das Ergebnis gehen
                    • Die Datenpunkte einzeln in der Schleife löschen
                    H-a-m-iH Offline
                    H-a-m-iH Offline
                    H-a-m-i
                    schrieb am zuletzt editiert von
                    #9

                    @haus-automatisierung sagte in Anfängerfrage: Funktion (Aufzählung) per Skript zuweisen:

                    Erstmal finde ich es ganz komisch auf die Art und Weise Datenpunkte zu erstellen und wieder zu löschen - das gesamte Konzept würde ich überdenken.

                    Echt? Hmm ok. Da ich absolut keine Ahnung habe, habe ich mir das so zusammen gesucht aus anderen Foren/Seiten.

                    Du musst mit einem RegEx oder $-Selektor alle Datenpunkte suchen, welche Deiner Logik entsprechen
                    Dann mit einer Schleife über das Ergebnis gehen
                    Die Datenpunkte einzeln in der Schleife löschen

                    Das ist für mich leider schon wieder spanisch, aber trotzdem vielen Dank für deine schnelle Antwort. Ich lass das Löschen der Datenpunkte dann einfach

                    1 Antwort Letzte Antwort
                    0

                    Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                    Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                    Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                    Registrieren Anmelden
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate
                    FAQ Cloud / IOT
                    HowTo: Node.js-Update
                    HowTo: Backup/Restore
                    Downloads
                    BLOG

                    511

                    Online

                    32.8k

                    Benutzer

                    82.9k

                    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