Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Verständnis Attribute mit Blockly ändern

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    [gelöst] Verständnis Attribute mit Blockly ändern

    This topic has been deleted. Only users with topic management privileges can see it.
    • padrino
      padrino Most Active last edited by padrino

      Hi,

      also, eigentlich will ich ein Attribut überschreiben, aber irgendwie komm ich da nicht ran.
      Auslesen ist kein Problem, aber will ich schreiben, wird es nicht gefunden.
      Bereits das Prüfen auf Existenz scheitert... 🤷‍♂️
      20251013_034008.png
      Wo biegt mein Hirn hier falsch ab? 😌

      Asgothian paul53 3 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @padrino last edited by Asgothian

        @padrino sagte in Verständnis Attribute mit Blockly ändern:

        Wo biegt mein Hirn hier falsch ab?

        Ganz am Anfang.

        Dein Objekt sieht so aus:

        WC_Besucher = {
           common: ...
        }
        

        Die Funktion hat attribut Prüft nur dieses Objekt ab. Was auch immer da hinter dem Attribut common steht ist für die Funktion irrelevant. Das könnte so

        WC_Besucher = {
           common: "hier steht nur ein normaler Text"
        }
        

        oder so aussehen

        WC_Besucher = {
           common: { 
                desc: "description",
                name: "WC_Besucher"
        }
        

        der Baustein attribut "A" von Objekt Objekt B übersetzt sich dagegen in B.A Wenn da also an Stelle von "A" "A.S.E" steht, dann wird daraus B.A.S.E.

        Nebenbei geht das auch nur wenn da direkt ein Text eingesetzt wird. Wenn an Stelle des Bausteins "common.desc" eine die Variable attr eingesetzt wird, dann ändert sich der Code von WC_Besucher.common.desc zu WC_Besucher[attr]. Und wenn dann der Wert von attr "common.desc" ist, dann wird dein erstes Debug auch undefined heraus werfen.

        A.

        Edit: Typos. Wer noch welche Findet: Herzlichen Glückwunsch, Test bestanden 🙂

        padrino 1 Reply Last reply Reply Quote 1
        • paul53
          paul53 @padrino last edited by paul53

          @padrino sagte: will ich schreiben, wird es nicht gefunden.

          Um ein Datenpunkt-Attribut zu ändern, benötigt man die Funktion setObject(id, obj) oder extendObject(id, attr), die es in Blockly absichtlich nicht gibt.

          EDIT: Man kann sich mit einer Javascript-Funktion behelfen:

          extendObject(id, {common: {desc: desc}});
          

          Blockly_temp.JPG

          1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @padrino last edited by

            @padrino sagte: Auslesen ist kein Problem

            Das geht auch einfacher:

            Blockly_temp.JPG

            1 Reply Last reply Reply Quote 0
            • padrino
              padrino Most Active @Asgothian last edited by

              @asgothian
              Uff, das ist schon etwas verwirrend, aber danke für die Erklärung. 😌

              @paul53
              Ah, ok, da man wohl vermutlich zu viel kaputt machen kann, kommt man nur mit Blockly nicht ran.
              Aber danke, dass Du mir den Weg über JS gezeigt hast.
              Damit kann ich was anfangen. 🥳

              Danke auch für den Hinweis, dass man einfacher an die Desc kommen kann.
              Evtl. kann ich das später mal verwenden.
              Für den aktuellen Fall war das mit der Desc nur als Beispiel gedacht, bzw. für mich, zum Testen, ein Attribute mit dem ich recht gefahrlos experimentieren könnte, bis mein Skript funktioniert. 😄
              In Wirklichkeit ist mein Ziel in ein paar rflink Objekten zu werkeln, genauer, deren interne "GeräteID" zu aktualieren/ändern. 🙂

              "native": {
                  "ID": 283538,
                  "brand": "F007_TH",
              ...
              

              Also, braucht es schon den "generellen Ansatz". 😉

              Denke, dass mit Deinem Beispiel Skript-Blockly-Hybriden die Chancen gut stehen, dass ich mein Ziel umsetzen kann. 👍

              Asgothian 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @padrino last edited by

                @padrino sagte in [gelöst] Verständnis Attribute mit Blockly ändern:

                Für den aktuellen Fall war das mit der Desc nur als Beispiel gedacht, bzw. für mich, zum Testen, ein Attribute mit dem ich recht gefahrlos experimentieren könnte, bis mein Skript funktioniert.
                In Wirklichkeit ist mein Ziel in ein paar rflink Objekten zu werkeln, genauer, deren interne "GeräteID" zu aktualieren/ändern.

                Vorsicht beim Verändern von Objektattributen die in Namespaces der Adapter liegen - ggf. überwachen die Adapter diese und schreiben sie ggf. zu beliebigen Zeiten neu. Der Zigbee-Adapter macht das zum Beispiel bei jedem Start und jedes mal wenn ein Gerät neu angelernt wird.

                A.

                padrino 1 Reply Last reply Reply Quote 0
                • padrino
                  padrino Most Active @Asgothian last edited by

                  @asgothian
                  Also, ich weiß jetzt leider nicht, was Du mit "Namespace" meinst, aber die von mir angesprochene "ID" wird im rflink Adapter nur einmal beim Anlegen des Objekts vergeben. Sie dient wohl dazu ein 433mHz Gerät von den anderen (eines Herstellers) zu unterscheiden.
                  Wenn ich also z.B. die Batterie wechsle wird dieses ID neu vergeben, nachdem ich das Gerät neu hab suchen lassen.
                  Damit der Objektbaum sauber und geordnet bleibt, habe ich für mich den Weg über die ID auserkoren, statt ein neues Gerät anlegen zu lassen, das alte dann manuell zu löschen und das neue in den Nanen des alten umzubenennen...

                  Homoran Asgothian 2 Replies Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @padrino last edited by

                    @padrino sagte in [gelöst] Verständnis Attribute mit Blockly ändern:

                    was Du mit "Namespace"

                    der "Namensbereich" des Adapters, Also adapterName.#
                    im Prinzip alles was nicht 0_userdata.0 oder alias.0 ist

                    1 Reply Last reply Reply Quote 1
                    • Asgothian
                      Asgothian Developer @padrino last edited by

                      @padrino sagte in [gelöst] Verständnis Attribute mit Blockly ändern:

                      @asgothian
                      Also, ich weiß jetzt leider nicht, was Du mit "Namespace" meinst, aber die von mir angesprochene "ID" wird im rflink Adapter nur einmal beim Anlegen des Objekts vergeben. Sie dient wohl dazu ein 433mHz Gerät von den anderen (eines Herstellers) zu unterscheiden.
                      Wenn ich also z.B. die Batterie wechsle wird dieses ID neu vergeben, nachdem ich das Gerät neu hab suchen lassen.
                      Damit der Objektbaum sauber und geordnet bleibt, habe ich für mich den Weg über die ID auserkoren, statt ein neues Gerät anlegen zu lassen, das alte dann manuell zu löschen und das neue in den Nanen des alten umzubenennen...

                      Das müsste doch ein Standard-Problem für andere Nutzer des rflink Adapters zu sein. Hast du am Adapter mal ein Issue aufgemacht ob es eine Möglichkeit geben kann / soll das im Adapter abzubilden, anstatt das via JS nur für Dich zu lösen ?

                      A.

                      padrino 1 Reply Last reply Reply Quote 0
                      • padrino
                        padrino Most Active @Asgothian last edited by

                        @asgothian
                        Also, ich glaube, der Adapter ist ziemlich tot. 😉
                        Wollte damit auch niemanden behelligen...
                        Hatte schon angefangen zu überlegen ob der Adapter evtl... und wie....
                        Aber dann dachte ich, ich guck mal, was ich in JS hin bekomme, und wenn's ordentlich klappt mach ich das Skript zugänglich für Interessierte. 😌

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        966
                        Online

                        32.3k
                        Users

                        80.9k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        178
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo