Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly Variable mit Wert erzeugen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly Variable mit Wert erzeugen

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

      Zu was hat Blockly kein Objekt?

      Ich bekomme das irgendwie nicht hin, es wird kein Wert geschrieben. Erst wenn ich ein anderes Blockly starte und in die Variable schreibe…

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Hmm dann ist die Verzögerung zu kurz oder der neuer Wert erst nach Script Neustart sichtbar.

        Ich kenne keinen Block der einen Wert mit value erstellen kann könnte man aber per JavaScript Funktion lösen !

        Sent from my iPhone using Tapatalk

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

          @lutzer:

          Die Variable wird erzeugt, aber leider ohne Wert. Wie macht man das? `
          Du kannst https://forum.iobroker.net/viewtopic.php?f=21&t=9359&p=157770#p157770 in Blockly importieren.

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Genau das hatte ich gemeint wusste garnicht das Paul dazu bereits eine Funktion erstellt hatte nice, die übernehme ich dann jetzt auch ^^

            Sent from my iPhone using Tapatalk

            Sent from my iPhone using Tapatalk

            1 Reply Last reply Reply Quote 0
            • L
              lutzer last edited by

              Vielen Dank an euch!

              Ich habe es nach langem probieren nun für mich so erschlossen, dass die zwei Blöcke die gewünschte Variable erzeugen.

              Warum die beiden zusammen sein müssen verstehe ich nicht so ganz. Also einer alleine macht gar nichts…

              8604_blockly_createstate1.png

              createState('#Variablen.garage_countdown', 90, {
                  type: 'number',
                  unit: 'Sekunden',
                  name: 'garage_countdown'
              
              });
              

              ! ````
              <xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_callcustomnoreturn" id="O45R/5Gw(j@)2M*_xdcB" x="63" y="338"><mutation name="Variablen anlegen"><arg name="Name"></arg>
              <arg name="Initialisierung"></arg>
              <arg name="Beschreibung"></arg>
              <arg name="Type"></arg></mutation></block>
              <block type="procedures_defcustomnoreturn" id="49kvg:%69IF}@lKJq@(J" x="63" y="488"><mutation statements="false"><arg name="Name"></arg>
              <arg name="Initialisierung"></arg>
              <arg name="Beschreibung"></arg>
              <arg name="Type"></arg></mutation>
              <field name="NAME">Variablen anlegen</field>
              <field name="SCRIPT">Y3JlYXRlU3RhdGUoJyNWYXJpYWJsZW4uZ2FyYWdlX2NvdW50ZG93bicsIDkyLCB7CiAgICB0eXBlOiAnbnVtYmVyJywKICAgIHVuaXQ6ICdTZWt1bmRlbicsCiAgICBuYW1lOiAnZ2FyYWdlX2NvdW50ZG93bicKICAgIAp9KTs=</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment></block></xml>

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

                Mit der Funktion newNumberDP würde es etwa so aussehen:
                493_blockly_create_garage_countdown.jpg

                1 Reply Last reply Reply Quote 0
                • L
                  lutzer last edited by

                  Ok, aber man braucht hier auch zwei Blöcke.

                  Ist an sich ok, nur extra Pflegeaufwand.

                  Und in den Textzipfel muss auch nicht mal was drin stehen, dass hatte mich noch verwirrt.

                  Aber schön das es doch in einem Blocky geht, da kann man diese auch besser sortieren.

                  Sonst weiß ich in einem halben Jahr nicht mehr was da alles dazu gehört hatte.

                  Irgendwann muss ich mich an Javascript ranwagen. Denn genau hier zeigt es sich wo die Grenze des Sinnhaften ist. Wenn man das in einer Zeile schreiben könnte. 😄

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

                    @lutzer:

                    Ok, aber man braucht hier auch zwei Blöcke.

                    Ist an sich ok, nur extra Pflegeaufwand. `

                    Der 1. Block (Einzeiler) ist eine Funktion, die frei definiert ist und durch den wird erst der 2. Block innerhalb Blockly erzeugt und zur Verfügung gestellt.

                    Wenn der erste Block innnerhalb Blockly in Global liegt, sollte der in allen Scripten zu Verfügung stehen, wenn nicht, dann muss er in jedem Script vorhanden sein.

                    Du kannst den ersten Block auch direkt als Javascript bearbeiten, ganz rechts sind unscheinbar 3 Punkte.

                    Damit kannst du z.B. zusätzliche Variablen festlegen, die übergeben werden sollen… oder auch generell welche entfernen

                    z.B.
                    7554_sc1.png
                    enthält Javascript:

                    createState(ID, Init, {
                        type: 'number',
                        name: Name
                    });
                    

                    Und stellt dann ohne weitere Bearbeitung diesen Block zur Verfügung:

                    7554_sc2.png

                    Natürlich wäre es auch möglich, im 1. Block (der Funktion) die Werte statisch festzulegen, dann brauchst du den 2. Block gar nicht in dein Script aufnehmen. Macht aus meiner Sicht aber wenig Sinn, die Funktion ist als Block ja auch "freischwebend" und dockt nirgendwo an.

                    1 Reply Last reply Reply Quote 0
                    • L
                      lutzer last edited by

                      Hm, also ich muss den zweiten Block selbst rausziehen. Der heißt dann halt genauso.

                      Aber ohne den zweiten Block geht es eben nicht. Und wenn du mal versuchst Werte rein zu schreiben, wirst du merken das die aus dem ersten Block "Vorrang" haben. Egal was man im Zweiten macht…

                      Genau das verwirrt mich ja.

                      Ich dachte man nimmt den ersten Block, packt da seine Funktion rein und gut. Auch verstanden hätte ich es wenn man im ersten nur die Zustände und im zweiten die "Inhalte" pflegt. Weil das zweite ja zum Einhängen ist, wäre das eben besser lesbar.

                      Ist irgendwie eine unerklärliche Redundanz.

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

                        @lutzer:

                        Auch verstanden hätte ich es wenn man im ersten nur die Zustände und im zweiten die "Inhalte" pflegt. Weil das zweite ja zum Einhängen ist, wäre das eben besser lesbar. `
                        So sind meine Funktionen gedacht: Fest ist in der Funktionen nur der Datenpunkt-Typ (common.type). Die Werte der anderen Eigenschaften müssen beim Aufruf der Funktion angegeben werden.

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

                          HI,

                          eine Frage, da ich schon seit einer Stunde nicht darauf komme.

                          Wie erstelle ich in Blockly eine Funktion mit Parametern/Argumenten?

                          Ich kann nur eine Funktion erstellen ohne Parametern. Ich finde keine Möglichkeit diese zu erweitern.

                          Gibt es ein Hotkey oder sowas um Parameter anzugeben?

                          danke

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

                            Die eigentliche Funktion ist der Einzeiler-Block und über das Zahnrad links kannst du Parameter hinzufügen und benennen.

                            Die Funktion selbst erstellst du dann über die 3 Punkte rechts im Block direkt als Javascript.

                            Der große zusätzliche Block, der (erst) dann entsteht und im Blockly-Script eingefügt werden kann ist dann der Aufruf der eigentlichen Funktion mit Übergabe der Parameter.

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

                              Danke,

                              das Wissen hat mir gefehlt!

                              @umbm:

                              Die eigentliche Funktion ist der Einzeiler-Block und über das Zahnrad links kannst du Parameter hinzufügen und benennen.

                              Die Funktion selbst erstellst du dann über die 3 Punkte rechts im Block direkt als Javascript.

                              Der große zusätzliche Block, der (erst) dann entsteht und im Blockly-Script eingefügt werden kann ist dann der Aufruf der eigentlichen Funktion mit Übergabe der Parameter. `

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              912
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              5
                              15
                              11141
                              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