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. ioBroker Allgemein
  4. Schreibzugriff auf (Objekt-)Attribute in Blockly

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Schreibzugriff auf (Objekt-)Attribute in Blockly

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
12 Beiträge 2 Kommentatoren 629 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.
  • L Offline
    L Offline
    legro
    schrieb am zuletzt editiert von legro
    #1

    Nach nunmehr vier Jahren Blockly will ich mich nun endlich in die direkte Programmierung via JavaScript vertiefen. Hierzu kam mir der Wunsch eines Familienmitglieds gerade recht: Rollladen in Gruppen verwalten.:slightly_smiling_face: Ziel ist es, Blöcke in Blockly bereitzustellen, mit denen die Rollladengruppen verwaltet werden können.

    Hierzu habe ich eine kleine OOP-Anwendung geschrieben. Ich habe ein Objekt erstellt, das neben mehreren Methoden einige Datenfelder enthält.

    Voraussetzungen ..

    Ein Datenfeld members des Objektes enthält ein ARRAY aus Objekten, die einzelne Rollladen beschreiben. Die Struktur des ARRAYs und eines Rollladens sind in der nachfolgenden Abbildung dargestellt. Ein Rollladenobjekt besteht aus einem Namen (String) und einer Objektadresse (String). Die Adresse verweist auf den zugehörigen Datenpunkt in einem Rollladenaktor, mit dem die Position des jeweiligen Rollladens gesteuert wird.

    ac0834f3-9f33-4329-96ce-583c45b0d327-image.png

    Meine ersten Versuche ..

    Der Block GrpGetRol liefert den i-ten Rollladen aus dem ARRAY members. Zwar kann ich nun auf das darin enthaltene Adressfeld zugreifen, aber ich weiß nicht, wie ich schreibend auf den im Adressfeld (als String) gespeicherten Datenpunkt mittels Blockly schreibend zugreifen kann (sozusagen eine indirekte Adressierung).

    3add165a-1a38-472f-b8c8-47b961e67eea-image.png

    Ausweg ..

    Selbstverständlich könnte ich mittels eines selbst erstellten Blocks, in dem ich via setState diesen Schreibzugriff realisiere, diese Aufgabe lösen, aber ich hätte gerne gewusst, ob es auch eine Lösung in Blockly gibt, die es ermöglich dies auszuführen.

    Wer's genauer wissen will, was ich gemacht habe, findet hier das Objekt ..

    function ObjGrpRol(ID_Data) {
        
        //Name des Datenpunktes der Gruppe im Objektbaum
        this.ID_Grp = ID_Data
    
        //Daten des Widgets: Liste mit Namen, Liste der Nummerierung, selektierter Eintrag
        this.WidgetData = {ID_lstNamen : '', ID_lstNr : '', ID_SelItem : ''}    
    
        //Array der Rollläden in ioBroker Objects speichern
        this.members = JSON.parse(getState(ID_Data).val)
    
        this.GrpSetWidgetData = function (ID_lstNamen, ID_lstNr, ID_selItem) {
            this.WidgetData.ID_lstNamen = ID_lstNamen
            this.WidgetData.ID_lstNr = ID_lstNr
            this.WidgetData.ID_selItem = 0
        }
    
        this.GetMembers = function () {
            return this.members
        }
    
        this.widgetUpdate = function (WidgetData) {
            let lName = "" //Datenpunkt(Widget) mit Namensliste der Rollläden
            let lNr = "" //Datenpunkt(Widget) mit Nummern der Listeneinträge
            let i = "" //Hilfsvariable
            this.members.forEach((item) => {
                lName = lName + ";" + item.Name //Namen der Rollläden
                lNr = lNr + ";" + String(i+1) //EintragsNr der Rollläden
                i++
            })
            lName = lName.slice(1) //führendes Semikolon entfernen
            lNr = lNr.slice(1) //führendes Semikolon entfernen
            
            setState(this.WidgetData.ID_lstNamen,lName,true) //Namenliste der Rollladengruppe in den Objekte abspeichern
            setState(this.WidgetData.ID_lstNr,lNr,true) //Nummern der Listeneinträge in den Objekten abspeichern
        }
    
        this.Get = function (i) {
            if(i < this.members.length) {
                console.log(this.members.length)
                return this.members[i]
            } else {
                return null
            }
        }
    
        //Array der Rollläden als JSON in Objekte abspeichern.
        this.store = function () {
            //let a = 'Käsekuchen' //'JSON.stringify(this.members)'
            setState(this.ID_Grp,JSON.stringify(this.members),true)
        }
        
        //einzelnen Rollladen (Rol) in eine Gruppe (Grp) einfügen
        this.ins = function (Rol) {
            if (Rol != null) {
                if (this.pos(Rol) < 0 ) { //noch nicht vorhanden liefert -1
                    this.members.push(Rol)
                }
            }
        }
    
        this.pos = function (Rol) {
            // -1 : Element wurde nicht gefunden
            // nr : Nummer der Postion des Elementes in der Gruppe (Array)
            let i = -1
            let found = false
            if (Rol != null) {
                while (!found && i<this.members.length - 1) {
                i++
                found = (this.members[i].Name == Rol.Name && this.members[i].ObjAddr == Rol.ObjAddr)
                }
            }
            if (found) return i
            else return -1
        }
    
        //einen Rollladen (Rol) aus der Gruppe (members) löschen
        this.del = function (Rol) {
            let nr = this.pos(Rol)
            if (nr >= 0) { //nr = -1 wenn Element nicht gefunden
                this.members.splice(nr,1)
            }
        }
    }
    
    grp = new ObjGrpRol(members);
    return grp
    
    

    Nach über vier Jahren Leidenszeit unter Qivicon/MSH vor den Telekomikern zu ioBroker geflüchtet.
    Raspberry Pi 4 mit 8GB + ArgonOneM.2 + 120GB SSD + Coordinator CC26X2R1 + ioBroker + piVCCU3

    paul53P 1 Antwort Letzte Antwort
    0
    • L legro

      Nach nunmehr vier Jahren Blockly will ich mich nun endlich in die direkte Programmierung via JavaScript vertiefen. Hierzu kam mir der Wunsch eines Familienmitglieds gerade recht: Rollladen in Gruppen verwalten.:slightly_smiling_face: Ziel ist es, Blöcke in Blockly bereitzustellen, mit denen die Rollladengruppen verwaltet werden können.

      Hierzu habe ich eine kleine OOP-Anwendung geschrieben. Ich habe ein Objekt erstellt, das neben mehreren Methoden einige Datenfelder enthält.

      Voraussetzungen ..

      Ein Datenfeld members des Objektes enthält ein ARRAY aus Objekten, die einzelne Rollladen beschreiben. Die Struktur des ARRAYs und eines Rollladens sind in der nachfolgenden Abbildung dargestellt. Ein Rollladenobjekt besteht aus einem Namen (String) und einer Objektadresse (String). Die Adresse verweist auf den zugehörigen Datenpunkt in einem Rollladenaktor, mit dem die Position des jeweiligen Rollladens gesteuert wird.

      ac0834f3-9f33-4329-96ce-583c45b0d327-image.png

      Meine ersten Versuche ..

      Der Block GrpGetRol liefert den i-ten Rollladen aus dem ARRAY members. Zwar kann ich nun auf das darin enthaltene Adressfeld zugreifen, aber ich weiß nicht, wie ich schreibend auf den im Adressfeld (als String) gespeicherten Datenpunkt mittels Blockly schreibend zugreifen kann (sozusagen eine indirekte Adressierung).

      3add165a-1a38-472f-b8c8-47b961e67eea-image.png

      Ausweg ..

      Selbstverständlich könnte ich mittels eines selbst erstellten Blocks, in dem ich via setState diesen Schreibzugriff realisiere, diese Aufgabe lösen, aber ich hätte gerne gewusst, ob es auch eine Lösung in Blockly gibt, die es ermöglich dies auszuführen.

      Wer's genauer wissen will, was ich gemacht habe, findet hier das Objekt ..

      function ObjGrpRol(ID_Data) {
          
          //Name des Datenpunktes der Gruppe im Objektbaum
          this.ID_Grp = ID_Data
      
          //Daten des Widgets: Liste mit Namen, Liste der Nummerierung, selektierter Eintrag
          this.WidgetData = {ID_lstNamen : '', ID_lstNr : '', ID_SelItem : ''}    
      
          //Array der Rollläden in ioBroker Objects speichern
          this.members = JSON.parse(getState(ID_Data).val)
      
          this.GrpSetWidgetData = function (ID_lstNamen, ID_lstNr, ID_selItem) {
              this.WidgetData.ID_lstNamen = ID_lstNamen
              this.WidgetData.ID_lstNr = ID_lstNr
              this.WidgetData.ID_selItem = 0
          }
      
          this.GetMembers = function () {
              return this.members
          }
      
          this.widgetUpdate = function (WidgetData) {
              let lName = "" //Datenpunkt(Widget) mit Namensliste der Rollläden
              let lNr = "" //Datenpunkt(Widget) mit Nummern der Listeneinträge
              let i = "" //Hilfsvariable
              this.members.forEach((item) => {
                  lName = lName + ";" + item.Name //Namen der Rollläden
                  lNr = lNr + ";" + String(i+1) //EintragsNr der Rollläden
                  i++
              })
              lName = lName.slice(1) //führendes Semikolon entfernen
              lNr = lNr.slice(1) //führendes Semikolon entfernen
              
              setState(this.WidgetData.ID_lstNamen,lName,true) //Namenliste der Rollladengruppe in den Objekte abspeichern
              setState(this.WidgetData.ID_lstNr,lNr,true) //Nummern der Listeneinträge in den Objekten abspeichern
          }
      
          this.Get = function (i) {
              if(i < this.members.length) {
                  console.log(this.members.length)
                  return this.members[i]
              } else {
                  return null
              }
          }
      
          //Array der Rollläden als JSON in Objekte abspeichern.
          this.store = function () {
              //let a = 'Käsekuchen' //'JSON.stringify(this.members)'
              setState(this.ID_Grp,JSON.stringify(this.members),true)
          }
          
          //einzelnen Rollladen (Rol) in eine Gruppe (Grp) einfügen
          this.ins = function (Rol) {
              if (Rol != null) {
                  if (this.pos(Rol) < 0 ) { //noch nicht vorhanden liefert -1
                      this.members.push(Rol)
                  }
              }
          }
      
          this.pos = function (Rol) {
              // -1 : Element wurde nicht gefunden
              // nr : Nummer der Postion des Elementes in der Gruppe (Array)
              let i = -1
              let found = false
              if (Rol != null) {
                  while (!found && i<this.members.length - 1) {
                  i++
                  found = (this.members[i].Name == Rol.Name && this.members[i].ObjAddr == Rol.ObjAddr)
                  }
              }
              if (found) return i
              else return -1
          }
      
          //einen Rollladen (Rol) aus der Gruppe (members) löschen
          this.del = function (Rol) {
              let nr = this.pos(Rol)
              if (nr >= 0) { //nr = -1 wenn Element nicht gefunden
                  this.members.splice(nr,1)
              }
          }
      }
      
      grp = new ObjGrpRol(members);
      return grp
      
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @legro sagte: schreibend auf den im Adressfeld (als String) gespeicherten Datenpunkt mittels Blockly schreibend zugreifen kann

      Das geht mit dem Block "schreibe".

      @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

      Rollladen in Gruppen verwalten.

      Dafür sind in ioBroker die Aufzählungen gedacht. Eine Aufzählung enthält die zugewiesenen IDs in common.members. Der $Selektor kann zur Auswahl der IDs einer Aufzählung dienen.

      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

      L 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @legro sagte: schreibend auf den im Adressfeld (als String) gespeicherten Datenpunkt mittels Blockly schreibend zugreifen kann

        Das geht mit dem Block "schreibe".

        @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

        Rollladen in Gruppen verwalten.

        Dafür sind in ioBroker die Aufzählungen gedacht. Eine Aufzählung enthält die zugewiesenen IDs in common.members. Der $Selektor kann zur Auswahl der IDs einer Aufzählung dienen.

        L Offline
        L Offline
        legro
        schrieb am zuletzt editiert von legro
        #3

        @paul53

        Vielen Dank für deine Unterstützung.

        Ich kann nur vermuten, dass du ggf. diesen Block meinst ..
        e89b3a43-7bac-48b3-91ad-f98118894bce-image.png

        Aber wie gebe ich hier die Zieladresse ein? Datenpunkt des Aktors liegt mir doch nur als String vor.

        Die Aufzählungen aus Blockly möchte ich aus zwei Gründen nicht verwenden. Zum einen möchte ich mich endlich in JavaScript vertiefen, zum anderen fehlt mir in den Aufzählungen die Möglichkeit einzelne Objekte hinzuzufügen oder zu löschen - oder habe ich die bloß nicht gefunden?

        Nach über vier Jahren Leidenszeit unter Qivicon/MSH vor den Telekomikern zu ioBroker geflüchtet.
        Raspberry Pi 4 mit 8GB + ArgonOneM.2 + 120GB SSD + Coordinator CC26X2R1 + ioBroker + piVCCU3

        paul53P 1 Antwort Letzte Antwort
        0
        • L legro

          @paul53

          Vielen Dank für deine Unterstützung.

          Ich kann nur vermuten, dass du ggf. diesen Block meinst ..
          e89b3a43-7bac-48b3-91ad-f98118894bce-image.png

          Aber wie gebe ich hier die Zieladresse ein? Datenpunkt des Aktors liegt mir doch nur als String vor.

          Die Aufzählungen aus Blockly möchte ich aus zwei Gründen nicht verwenden. Zum einen möchte ich mich endlich in JavaScript vertiefen, zum anderen fehlt mir in den Aufzählungen die Möglichkeit einzelne Objekte hinzuzufügen oder zu löschen - oder habe ich die bloß nicht gefunden?

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

          @legro sagte: wie gebe ich hier die Zieladresse ein?

          Blockly_temp.JPG

          @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

          Möglichkeit einzelne Objekte hinzuzufügen oder zu löschen - oder habe ich die bloß nicht gefunden?

          Die Funktionen zum Verändern (setObject) in "enum.functions.rollos" unter common.members liefert der Javascript-Adapter.

          const idEnum = 'enum.functions.rollos';
          const obj = getObject(idEnum);
          const members = obj.common.members; // Array mit IDs
          // Hinzufügen oder löschen von IDs in members
          setObject(idEnum, obj);
          

          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

          L 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @legro sagte: wie gebe ich hier die Zieladresse ein?

            Blockly_temp.JPG

            @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

            Möglichkeit einzelne Objekte hinzuzufügen oder zu löschen - oder habe ich die bloß nicht gefunden?

            Die Funktionen zum Verändern (setObject) in "enum.functions.rollos" unter common.members liefert der Javascript-Adapter.

            const idEnum = 'enum.functions.rollos';
            const obj = getObject(idEnum);
            const members = obj.common.members; // Array mit IDs
            // Hinzufügen oder löschen von IDs in members
            setObject(idEnum, obj);
            
            L Offline
            L Offline
            legro
            schrieb am zuletzt editiert von legro
            #5

            @paul53

            Wie ich oben schrieb: Ich möchte zum Üben dieses Projekt in der skizzierten Weise durchziehen.

            Mithin habe ich bloß die eine Frage: Könnte man auf das Attribut „objAddr“ eines Rollladen-Objektes schreibend zugreifen?

            So sieht meine Test-View aus. Mit den +/- Buttons kann man Rollladen in die Gruppen hinzufügen oder löschen.

            c271c2e1-3c8f-45c2-b2b8-a9068b70115d-image.png

            Nach über vier Jahren Leidenszeit unter Qivicon/MSH vor den Telekomikern zu ioBroker geflüchtet.
            Raspberry Pi 4 mit 8GB + ArgonOneM.2 + 120GB SSD + Coordinator CC26X2R1 + ioBroker + piVCCU3

            paul53P 1 Antwort Letzte Antwort
            0
            • L legro

              @paul53

              Wie ich oben schrieb: Ich möchte zum Üben dieses Projekt in der skizzierten Weise durchziehen.

              Mithin habe ich bloß die eine Frage: Könnte man auf das Attribut „objAddr“ eines Rollladen-Objektes schreibend zugreifen?

              So sieht meine Test-View aus. Mit den +/- Buttons kann man Rollladen in die Gruppen hinzufügen oder löschen.

              c271c2e1-3c8f-45c2-b2b8-a9068b70115d-image.png

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

              @legro sagte: auf das Attribut „objAddr“ eines Rollladen-Objektes schreibend zugreifen?

              Blockly_temp.JPG

              Neues Objekt (wie im ersten Beitrag gezeigt):

              Blockly_temp.JPG

              Diese Blöcke stehen seit JS-Version 7.9.0 zur Verfügung.

              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

              L 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @legro sagte: auf das Attribut „objAddr“ eines Rollladen-Objektes schreibend zugreifen?

                Blockly_temp.JPG

                Neues Objekt (wie im ersten Beitrag gezeigt):

                Blockly_temp.JPG

                Diese Blöcke stehen seit JS-Version 7.9.0 zur Verfügung.

                L Offline
                L Offline
                legro
                schrieb am zuletzt editiert von
                #7

                @paul53

                Erst einmal: Vielen Dank für deine tatkräftige Unterstützung!

                Wenn ich dich und das Ganze richtig verstanden habe, sollte ich mein Ziel doch auch (noch) kürzer erreichen, indem ich ..

                99ab0016-5024-4df0-8907-9a9a825a1aba-image.png

                .. kodiere. Der Datenpunkt Grp01_Position_01 enthält den Wert, den ich in den Datenpunkt objAddr schreiben möchte.

                Oder liege ich (mal wieder voll) daneben?

                Ich stelle mir das Ganze wie folgt vor ..

                Der rechte Block liefert an den linken Block die Adresse des zu steuernden Datenpunktes des Rollladens, die im Attribut objAddr des Rollladen-Objektes enthalten ist. Der linke Block sorgt nun dafür, dass der Wert aus dem Datenpunkt Grp01_Position_01 in den Datenpunkt des Rollladens geschrieben wird.

                Nach über vier Jahren Leidenszeit unter Qivicon/MSH vor den Telekomikern zu ioBroker geflüchtet.
                Raspberry Pi 4 mit 8GB + ArgonOneM.2 + 120GB SSD + Coordinator CC26X2R1 + ioBroker + piVCCU3

                paul53P 1 Antwort Letzte Antwort
                0
                • L legro

                  @paul53

                  Erst einmal: Vielen Dank für deine tatkräftige Unterstützung!

                  Wenn ich dich und das Ganze richtig verstanden habe, sollte ich mein Ziel doch auch (noch) kürzer erreichen, indem ich ..

                  99ab0016-5024-4df0-8907-9a9a825a1aba-image.png

                  .. kodiere. Der Datenpunkt Grp01_Position_01 enthält den Wert, den ich in den Datenpunkt objAddr schreiben möchte.

                  Oder liege ich (mal wieder voll) daneben?

                  Ich stelle mir das Ganze wie folgt vor ..

                  Der rechte Block liefert an den linken Block die Adresse des zu steuernden Datenpunktes des Rollladens, die im Attribut objAddr des Rollladen-Objektes enthalten ist. Der linke Block sorgt nun dafür, dass der Wert aus dem Datenpunkt Grp01_Position_01 in den Datenpunkt des Rollladens geschrieben wird.

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

                  @legro sagte: Grp01_Position_01 enthält den Wert, den ich in den Datenpunkt objAddr schreiben möchte.

                  Passt so.

                  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

                  L 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @legro sagte: Grp01_Position_01 enthält den Wert, den ich in den Datenpunkt objAddr schreiben möchte.

                    Passt so.

                    L Offline
                    L Offline
                    legro
                    schrieb am zuletzt editiert von legro
                    #9

                    @paul53 sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                    Passt so.

                    Langsam verstehe ich nun doch das Ganze.:blush: Nach vier Jahren wurde es höchste Zeit, dass ich endlich einmal mit JavaScript beginne. Blockly ist ja für den Einstieg schon eine feine Sache, aber man kommt doch schnell an dessen Grenzen.

                    Nun bitte nochmals zu den Kodierungen. Sind meine Vorstellungen richtig, wenn ich davon ausgehe, dass in deinem Vorschlag ..

                    • .. der erste (grüne) Block den Wert des Attributs des Objektes neu schreibt/füllt.
                    • .. der zweite (grüne) Block einen Datenpunkt im Objektbaum anlegt mit der Bezeichnung aus der Variable name.
                    • .. mein Lösungsvorschlag einen nur temporär existierenden Datenpunkt (ohne Bezeichnung) erzeugt, der nach dem Schreibvorgang wieder gelöscht wird.

                    Wo finde ich diese grünen Blöcke?

                    Nach über vier Jahren Leidenszeit unter Qivicon/MSH vor den Telekomikern zu ioBroker geflüchtet.
                    Raspberry Pi 4 mit 8GB + ArgonOneM.2 + 120GB SSD + Coordinator CC26X2R1 + ioBroker + piVCCU3

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • L legro

                      @paul53 sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                      Passt so.

                      Langsam verstehe ich nun doch das Ganze.:blush: Nach vier Jahren wurde es höchste Zeit, dass ich endlich einmal mit JavaScript beginne. Blockly ist ja für den Einstieg schon eine feine Sache, aber man kommt doch schnell an dessen Grenzen.

                      Nun bitte nochmals zu den Kodierungen. Sind meine Vorstellungen richtig, wenn ich davon ausgehe, dass in deinem Vorschlag ..

                      • .. der erste (grüne) Block den Wert des Attributs des Objektes neu schreibt/füllt.
                      • .. der zweite (grüne) Block einen Datenpunkt im Objektbaum anlegt mit der Bezeichnung aus der Variable name.
                      • .. mein Lösungsvorschlag einen nur temporär existierenden Datenpunkt (ohne Bezeichnung) erzeugt, der nach dem Schreibvorgang wieder gelöscht wird.

                      Wo finde ich diese grünen Blöcke?

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

                      @legro sagte: der erste (grüne) Block den Wert des Attributs des Objektes neu schreibt/füllt.

                      Ja, ein existierender Wert wird überschrieben, ein nicht existierendes Attribut des Javascript-Objektes wird erzeugt.

                      @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                      der zweite (grüne) Block einen Datenpunkt im Objektbaum anlegt mit der Bezeichnung aus der Variable name.

                      Nein: Es handelt sich um ein Javascript-Objekt, das erzeugt wird in der Form

                      var obj = {
                          objAddr: 'Objekt-ID',
                          Name: 'Objekt-Name'
                      };
                      

                      Das hat nichts mit ioBroker-Objekten zu tun!

                      @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                      mein Lösungsvorschlag einen nur temporär existierenden Datenpunkt (ohne Bezeichnung) erzeugt, der nach dem Schreibvorgang wieder gelöscht wird.

                      Es wird kein Datenpunkt erzeugt, sondern in einen Datenpunkt geschrieben, der bereits existieren muss.

                      @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                      Wo finde ich diese grünen Blöcke?

                      Bei mir sind sie hellbraun und erst ab Javascript-Version 7.9.0 verfügbar (ich nutze Version 8.3.0).

                      Blockly_Objekte.JPG

                      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

                      L 1 Antwort Letzte Antwort
                      1
                      • paul53P paul53

                        @legro sagte: der erste (grüne) Block den Wert des Attributs des Objektes neu schreibt/füllt.

                        Ja, ein existierender Wert wird überschrieben, ein nicht existierendes Attribut des Javascript-Objektes wird erzeugt.

                        @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                        der zweite (grüne) Block einen Datenpunkt im Objektbaum anlegt mit der Bezeichnung aus der Variable name.

                        Nein: Es handelt sich um ein Javascript-Objekt, das erzeugt wird in der Form

                        var obj = {
                            objAddr: 'Objekt-ID',
                            Name: 'Objekt-Name'
                        };
                        

                        Das hat nichts mit ioBroker-Objekten zu tun!

                        @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                        mein Lösungsvorschlag einen nur temporär existierenden Datenpunkt (ohne Bezeichnung) erzeugt, der nach dem Schreibvorgang wieder gelöscht wird.

                        Es wird kein Datenpunkt erzeugt, sondern in einen Datenpunkt geschrieben, der bereits existieren muss.

                        @legro sagte in Schreibzugriff auf (Objekt-)Attribute in Blockly:

                        Wo finde ich diese grünen Blöcke?

                        Bei mir sind sie hellbraun und erst ab Javascript-Version 7.9.0 verfügbar (ich nutze Version 8.3.0).

                        Blockly_Objekte.JPG

                        L Offline
                        L Offline
                        legro
                        schrieb am zuletzt editiert von legro
                        #11

                        @paul53

                        Da habe ich ja richtig Glück gehabt, dass ich in dir einen sehr guten Kenner von ioBroker und JavaScript angetroffen habe.:+1:

                        Ich habe die letzte Version aus dem stable repository 7.8.0. Hierin sind diese Blöcke (noch) nicht vorhanden. Es fehlt in dieser Version das gesamte Register Objekte.

                        Nach über vier Jahren Leidenszeit unter Qivicon/MSH vor den Telekomikern zu ioBroker geflüchtet.
                        Raspberry Pi 4 mit 8GB + ArgonOneM.2 + 120GB SSD + Coordinator CC26X2R1 + ioBroker + piVCCU3

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • L legro

                          @paul53

                          Da habe ich ja richtig Glück gehabt, dass ich in dir einen sehr guten Kenner von ioBroker und JavaScript angetroffen habe.:+1:

                          Ich habe die letzte Version aus dem stable repository 7.8.0. Hierin sind diese Blöcke (noch) nicht vorhanden. Es fehlt in dieser Version das gesamte Register Objekte.

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

                          @legro sagte: Es fehlt in dieser Version das gesamte Register Objekte.

                          Ja, 7.9.0 > 7.8.0.

                          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
                          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

                          761

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          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