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. Skripten / Logik
  4. Blockly Variable mit Wert erzeugen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Blockly Variable mit Wert erzeugen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 5 Kommentatoren 11.5k Aufrufe
  • Ä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
    lutzer
    schrieb am zuletzt editiert von
    #1

    Hallo ich möchte vor einem eigentlichen Blockly ersteinmal sicherstellen das es die JS Variablen gibt und eben anlegen.

    Dazu habe ich mir den Teil aus der offiziellen Anleitung genommen.

    Die Variable wird erzeugt, aber leider ohne Wert. Wie macht man das?

    Im Javascript geht es ja auch, kann ich aber hier nicht nutzen…

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

    8604_blockly_createstate.png

    ! ````
    <block xmlns="http://www.w3.org/1999/xhtml" type="create" id="D%[{T~!b9^V#Z.7bI+3y" x="63" y="-136"><field name="NAME">javascript.0.#Variablen.garage_countdown</field>
    <statement name="STATEMENT"><block type="on_ext" id="H@F~z_,FpvXo8BptmAtL"><mutation items="1"></mutation>
    <field name="CONDITION">ne</field>

      <value name="OID0"><shadow type="field_oid" id="hn{OMH9y7AP_dns;KO6*"><field name="oid">javascript.0.#Variablen.garage_countdown</field></shadow></value> 
      <statement name="STATEMENT"><block type="debug" id="DjP1pU?v=))`V;styIRR"><field name="Severity">log</field>
          <value name="TEXT"><shadow type="text" id="de?mCXefl4v#XrO])~7y"><field name="TEXT">test</field></shadow> 
            <block type="text_join" id="^33}.]#ov(vUAEEn8Hdp"><mutation items="2"></mutation>
              <value name="ADD0"><block type="text" id="_-p%CZq4%)v1EYvh)lf@"><field name="TEXT">90</field></block></value> 
              <value name="ADD1"><block type="variables_get" id="6r!TtpfrfQ@5Nf[4#[6l"><field name="VAR">value</field></block></value></block></value></block></statement></block></statement></block> 
    
    1 Antwort Letzte Antwort
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      Blockly hat dazu kein object.

      Ich würde den state erstellen und dann mit einer Verzögerung von eins/zwei Sekunden den Wert mit dem "setze Wert" Block ausführen damit fängt man es ab

      Sent from my iPhone using Tapatalk

      1 Antwort Letzte Antwort
      0
      • L Offline
        L Offline
        lutzer
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #4

          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 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

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

            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
            • DutchmanD Offline
              DutchmanD Offline
              Dutchman
              Developer Most Active Administrators
              schrieb am zuletzt editiert von
              #6

              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 Antwort Letzte Antwort
              0
              • L Offline
                L Offline
                lutzer
                schrieb am zuletzt editiert von
                #7

                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 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  Mit der Funktion newNumberDP würde es etwa so aussehen:
                  493_blockly_create_garage_countdown.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

                  1 Antwort Letzte Antwort
                  0
                  • L Offline
                    L Offline
                    lutzer
                    schrieb am zuletzt editiert von
                    #9

                    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. :D

                    1 Antwort Letzte Antwort
                    0
                    • umbmU Offline
                      umbmU Offline
                      umbm
                      schrieb am zuletzt editiert von
                      #10

                      @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 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        lutzer
                        schrieb am zuletzt editiert von
                        #11

                        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 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #12

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

                          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
                          • strikegunS Offline
                            strikegunS Offline
                            strikegun
                            schrieb am zuletzt editiert von
                            #13

                            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 Antwort Letzte Antwort
                            0
                            • umbmU Offline
                              umbmU Offline
                              umbm
                              schrieb am zuletzt editiert von
                              #14

                              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 Antwort Letzte Antwort
                              0
                              • strikegunS Offline
                                strikegunS Offline
                                strikegun
                                schrieb am zuletzt editiert von
                                #15

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

                                613

                                Online

                                32.4k

                                Benutzer

                                81.5k

                                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