Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Variable in ID-Namen verwenden?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Variable in ID-Namen verwenden?

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

      Vorschlag: Erstelle das Skript für einen Raum in Blockly, kopiere das erzeugte Javascript (ohne die letzte Zeile) in ein neues Javascript und passe die IDs unter Verwendung von getIdByName() an. Nach erfolgreichem Test kannst Du dieses Skript als Kopier-Vorlage für die weiteren Räume verwenden.

      Homoran 1 Reply Last reply Reply Quote 1
      • Homoran
        Homoran Global Moderator Administrators @paul53 last edited by Homoran

        @paul53

        Danke!
        Das werde ich mal versuchen.

        Aber erst das Blockly für einen Raum mit allen Optionen (Fenstergriff, Urlaub, Kino...) pimpen 😉

        Und als nächste Stufe kommt dann das iterieren in einem Skript 😉

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          Anmerkung: Die Namen müssen für getIdByName() eindeutig sein, d.h. es darf kein weiteres Objekt mit diesem Namen existieren.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @paul53 last edited by Homoran

            @paul53
            Klar - werde auch noch einiges umbenennen müssen, resp. komplett neu machen, wenn ich das Grundgerüst erweitere.
            Habe zum Beispiel bereits im Wohnzimmer die Balkon-Tür und das Fenster.
            Räume und unter WZ noch Tür und Fenster.
            Die Struktur müsste dann wieder einheitlich sein, auch wenn es nur einen Rolladen gibt müsste es dann Raum - Fenster - states sein

            Im Endeffekt soll es nur noch ein Skript werden, das diese DP nacheinander abarbeitet.
            Aber das ist Zukuunftsmusik

            1 Reply Last reply Reply Quote 0
            • rantanplan
              rantanplan @Homoran last edited by

              @Homoran sagte in Variable in ID-Namen verwenden?:

              Besteht eigentlich in Blockly die Möglichkeit Zustände von IDs variabel abzufragen.
              Voraussetzung ist natürlich, dass die IDs (oder die Namen??) systematisch benannt sind.

              Ich habe für jeden Raum das gleiche Skkript und würde gerne nach dem Kopiern nur den Raumnamen in einer Variable ändern:

              Werte von einer ID-Variablen abfragen geht leider (noch) nicht in Blockly.
              Werte setzen/verändern aber schon.
              Ich stand vor der gleichen Problematik bei meiner Heizungssteuerung. Jede Menge Räume und alle einzeln steuerbar.
              Da die Logik in jedem Raum gleich ist und ich grundsätzlich ein "fauler Hund" bin, wollte ich die Scripte einfach kopieren.

              Damit ich nicht jedes Script komplett überarbeiten musste, habe ich eine "Initialisierung" Funktion eingebaut.
              Dort werden alle raumspezifischen Daten in lokale Variablen gesetzt. Wenn der Trigger auslöst, wird als erstes die Initialisierung aufgerufen.
              Somit habe ich nur eine Stelle an der ich die Parameter anpassen muss.
              Init_001.png

              Und hier der "schreibe" Baustein mit dem man ID's, die in einer Variablen stehen, ändern kann.
              Init_002.png

              Homoran 1 Reply Last reply Reply Quote 2
              • Homoran
                Homoran Global Moderator Administrators @rantanplan last edited by Homoran

                @rantanplan sagte in Variable in ID-Namen verwenden?:

                Damit ich nicht jedes Script komplett überarbeiten musste, habe ich eine "Initialisierung" Funktion eingebaut.

                That's it!!!!

                So was wollte ich haben!
                Aber auf die Idee, die GANZE Id mitzugeben bin ich nicht gekommen

                Danke!

                1 Reply Last reply Reply Quote 0
                • rantanplan
                  rantanplan last edited by

                  Zitat Homoran

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  ☺ ☺ ☺

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @rantanplan last edited by

                    @rantanplan

                    Success!

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by paul53

                      Die Blöcke "schreibe", "binde direct_oid_src" und "Falls Objekt" sind die einzigen Blöcke, an die die Datenpunkt-ID auch als String übergeben werden kann. Es fehlt ein entsprechender Block zum Einlesen (getState()).
                      So etwas ist in Blockly möglich:
                      Blockly_Trigger_getIdByName.JPG
                      Die Javascript-Funktion ist ganz einfach:

                      return getIdByName(name);
                      
                      rantanplan 2 Replies Last reply Reply Quote 0
                      • rantanplan
                        rantanplan @paul53 last edited by

                        @paul53 sagte in Variable in ID-Namen verwenden?:

                        ..... Es fehlt ein entsprechender Block zum Einlesen (getState()).

                        Ja, den hätte ich ja auch gerne. Ein issue dazu ist aber mal "abgeblockt" worden.
                        issue 154

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @rantanplan last edited by

                          @rantanplan
                          Das Issue ist noch offen - ich schreib da mal was rein 😉

                          1 Reply Last reply Reply Quote 0
                          • rantanplan
                            rantanplan @paul53 last edited by

                            @paul53 sagte in Variable in ID-Namen verwenden?:

                            So etwas ist in Blockly möglich:

                            Grundsächlich eine gute Idee.

                            Viel, viel schöner wäre es aber hier.
                            Wert.png
                            Dies würde vieles vereinfachen.

                            Diesem Baustein konnte ich seine Funktion noch nicht entlocken.
                            attribut.png

                            Ich hatte gehofft damit geht es. Produziere aber nur Errors.

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @rantanplan last edited by

                              @rantanplan sagte:

                              Diesem Baustein konnte ich seine Funktion noch nicht entlocken.

                              Wo hast Du den gefunden ? Ich finde den Block nicht (Version 3.6.4).

                              rantanplan 1 Reply Last reply Reply Quote 0
                              • thewhobox
                                thewhobox last edited by

                                Wenn ich das richtig verstanden habe, dann bräuchtet Ihr einen Block so wie hier?
                                164b5008-4b6e-4cd9-a0f6-caa48324806d-grafik.png
                                (Hab ich mal manuell hinzugefügt, noch ohne Funktion)

                                rantanplan 1 Reply Last reply Reply Quote 0
                                • rantanplan
                                  rantanplan @paul53 last edited by

                                  @paul53 sagte in Variable in ID-Namen verwenden?:

                                  @rantanplan sagte:

                                  Diesem Baustein konnte ich seine Funktion noch nicht entlocken.

                                  Wo hast Du den gefunden ? Ich finde den Block nicht (Version 3.6.4).

                                  Ich teste gerade die 4.1.7. Ist irgend wann bei 4.x.x aufgetaucht.

                                  1 Reply Last reply Reply Quote 0
                                  • rantanplan
                                    rantanplan @thewhobox last edited by

                                    @thewhobox sagte in Variable in ID-Namen verwenden?:

                                    Wenn ich das richtig verstanden habe, dann bräuchtet Ihr einen Block so wie hier?
                                    164b5008-4b6e-4cd9-a0f6-caa48324806d-grafik.png
                                    (Hab ich mal manuell hinzugefügt, noch ohne Funktion)

                                    Jepp.

                                    1 Reply Last reply Reply Quote 0
                                    • thewhobox
                                      thewhobox last edited by thewhobox

                                      Okay, falls ich es zum laufen bringe soll ich dann ein Pull Request auf Github für ioBroker.javascript machen?
                                      @apollon77

                                      Oder lieber den Code hier posten damit es jeder selbst hinzufügen kann?

                                      @paul53 Ist die funktion getIdByName() global oder von dir selbst erstellt. Ansonsten könnte man dafür auch ein eigenes Block-Element erstellen.

                                      rantanplan paul53 2 Replies Last reply Reply Quote 0
                                      • rantanplan
                                        rantanplan @thewhobox last edited by

                                        @thewhobox sagte in Variable in ID-Namen verwenden?:

                                        Okay, falls ich es zum laufen bringe

                                        Ein bisschen mehr Optimismus☺

                                        soll ich dann ein Pull Request auf Github für ioBroker.javascript machen?

                                        Wäre, glaub ich, der richtige Weg

                                        Kann man auch noch andere Baustein-Wünsche an Dich richten?
                                        (Vooorsicht mit der Antwort☺ ☺ ☺ )

                                        thewhobox 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @thewhobox last edited by

                                          @thewhobox sagte:

                                          Ist die funktion getIdByName() global oder von dir selbst erstellt.

                                          Die Blockly-Funktion ist eine von mir erstellte Funktion, die die Funktion getIdByName(name) des Javascript-Adapters verwendet.

                                          1 Reply Last reply Reply Quote 0
                                          • thewhobox
                                            thewhobox @rantanplan last edited by

                                            @rantanplan sagte in Variable in ID-Namen verwenden?:

                                            Kann man auch noch andere Baustein-Wünsche an Dich richten?

                                            😄 jetzt erstmal schauen ob und wie gut der jetzt geht. Danach bin ich offen für alles.
                                            Zum laufen gebracht habe ich ihn schonmal, nur ersetzt er jetzt den alten. Möchte aber beide haben, da per Auswahl oft doch bequemer ist.

                                            paul53 rantanplan 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            951
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            6
                                            62
                                            5152
                                            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