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

NEWS

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

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

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

Blockly Logik verstehen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blockly
21 Beiträge 5 Kommentatoren 2.1k Aufrufe 3 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.
  • O Abwesend
    O Abwesend
    oFbEQnpoLKKl6mbY5e13
    schrieb am zuletzt editiert von
    #6

    Das hast du missverstanden. Du darfst an den "Falls Objekt"-Flansch nur ein Objekt-ID anhängen.

    T 1 Antwort Letzte Antwort
    0
    • BBTownB BBTown

      @tcfigge
      Zum Nachbilden deines HomeMatic Programmes würde ich folgendes Vorschlagen
      dc1f2f68-5067-458d-880d-7895d0025fbc-grafik.png

      Wenn deine Beschattung bei 30% liegt könnte das ggf. so mit berücksichtigt werden
      9ab3235b-6ef1-4170-820d-253ed7be4c5f-grafik.png

      <xml xmlns="http://www.w3.org/1999/xhtml">
       <block type="on_ext" id="obbkvR7Jau#O.YpSbHC}" x="26" y="30">
         <mutation items="1"></mutation>
         <field name="CONDITION">ne</field>
         <field name="ACK_CONDITION"></field>
         <value name="OID0">
           <shadow type="field_oid" id="5bi^^aaJ:}R}0z%HWxXI">
             <field name="oid">Test.0.Lichtsensor</field>
           </shadow>
         </value>
         <statement name="STATEMENT">
           <block type="controls_if" id="Rp{YLo^%o#6S$hO_jJ]=">
             <value name="IF0">
               <block type="logic_operation" id="WavvC@ol3puffWimMIaK" inline="false">
                 <field name="OP">AND</field>
                 <value name="A">
                   <block type="logic_compare" id="w0o}=^/,(S9XR|LJ|b]c">
                     <field name="OP">GT</field>
                     <value name="A">
                       <block type="get_value" id="Z{GMEnU7rX]0O8mdWRRU">
                         <field name="ATTR">val</field>
                         <field name="OID">Test.0.Lichtsensor</field>
                       </block>
                     </value>
                     <value name="B">
                       <block type="math_number" id="g:v/6kRn6k]#IZD#I-I8">
                         <field name="NUM">500</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <value name="B">
                   <block type="logic_compare" id="x{#)E^ZuVTudA1KwVEb#">
                     <field name="OP">LTE</field>
                     <value name="A">
                       <block type="on_source" id="~n!^b0||-!,k!%4.hQIa">
                         <field name="ATTR">oldState.val</field>
                       </block>
                     </value>
                     <value name="B">
                       <block type="math_number" id="4?s-ka=#-J;Y[8/?W;+y">
                         <field name="NUM">500</field>
                       </block>
                     </value>
                   </block>
                 </value>
               </block>
             </value>
             <statement name="DO0">
               <block type="controls_if" id="`jw~`H=+@JExWnm-tk|}">
                 <value name="IF0">
                   <block type="logic_compare" id="QRI4iR;cx8$l%-#t$$Zo">
                     <field name="OP">LT</field>
                     <value name="A">
                       <block type="get_value" id="lrN%TGF=C}j_m.!%WTvP">
                         <field name="ATTR">val</field>
                         <field name="OID">Test.0.Rolladen-1</field>
                       </block>
                     </value>
                     <value name="B">
                       <block type="math_number" id="Es^Lrw^L]]_P/H11-BF/">
                         <field name="NUM">30</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <statement name="DO0">
                   <block type="control" id="jRY{^8jlj@y~HZ[%R1Do">
                     <mutation delay_input="false"></mutation>
                     <field name="OID">Test.0.Rolladen-1</field>
                     <field name="WITH_DELAY">FALSE</field>
                     <value name="VALUE">
                       <block type="math_number" id="(IWcuFtW`O/gFilb1Nmv">
                         <field name="NUM">100</field>
                       </block>
                     </value>
                   </block>
                 </statement>
               </block>
             </statement>
           </block>
         </statement>
       </block>
      </xml>
      

      T Offline
      T Offline
      tcfigge
      schrieb am zuletzt editiert von
      #7

      @BBTown
      Danke für die Ideen. Das werde ich mal probieren!
      Beschattung ist manuell, die Automatik hat denn WAF gefährdet. ;-)
      Heißt, ich gehe einfach hin und fahre den Rollladen auf 50%.
      In meiner 2. Variante fährt er dann aber, wenn der Lichtsensor wieder gemeldet hat, dann aber wieder hoch...

      Warum funktioniert das in der ersten, der kurzen Variante nicht?
      Kann man da immer nur auf Änderung eines Wertes an sich triggern?
      Das ist mir noch etwas suspekt!

      1 Antwort Letzte Antwort
      0
      • O oFbEQnpoLKKl6mbY5e13

        Das hast du missverstanden. Du darfst an den "Falls Objekt"-Flansch nur ein Objekt-ID anhängen.

        T Offline
        T Offline
        tcfigge
        schrieb am zuletzt editiert von
        #8

        @oFbEQnpoLKKl6mbY5e13
        Aha, danke für die Info!
        Das schränkt einen aber schon ziemlich ein..:hankey:

        O J 2 Antworten Letzte Antwort
        0
        • T tcfigge

          @oFbEQnpoLKKl6mbY5e13
          Aha, danke für die Info!
          Das schränkt einen aber schon ziemlich ein..:hankey:

          O Abwesend
          O Abwesend
          oFbEQnpoLKKl6mbY5e13
          schrieb am zuletzt editiert von
          #9

          @tcfigge
          Kein bisschen!

          1 Antwort Letzte Antwort
          0
          • T tcfigge

            @oFbEQnpoLKKl6mbY5e13
            Aha, danke für die Info!
            Das schränkt einen aber schon ziemlich ein..:hankey:

            J Offline
            J Offline
            Jan1
            schrieb am zuletzt editiert von
            #10

            @tcfigge sagte in Blockly Logik verstehen:

            @oFbEQnpoLKKl6mbY5e13
            Aha, danke für die Info!
            Das schränkt einen aber schon ziemlich ein..:hankey:

            Am Trigger im ersten Blockly hast eine Funktion gleich mit eingebaut und das geht nicht, was mit der FALLS darunter überhaupt nichts zu tun hat. Bei der FALLS kannst so viel dranhängen wie Du willst.

            Das zweite Blockly ist von Aufbau richtig, da wird sich nur die Logik etwas beißen, da es sonst wie gewünscht funktionieren sollte. Spiel das einfach mal durch und pass die Werte gegebenenfalls an.

            T 1 Antwort Letzte Antwort
            0
            • BBTownB BBTown

              @tcfigge
              Zum Nachbilden deines HomeMatic Programmes würde ich folgendes Vorschlagen
              dc1f2f68-5067-458d-880d-7895d0025fbc-grafik.png

              Wenn deine Beschattung bei 30% liegt könnte das ggf. so mit berücksichtigt werden
              9ab3235b-6ef1-4170-820d-253ed7be4c5f-grafik.png

              <xml xmlns="http://www.w3.org/1999/xhtml">
               <block type="on_ext" id="obbkvR7Jau#O.YpSbHC}" x="26" y="30">
                 <mutation items="1"></mutation>
                 <field name="CONDITION">ne</field>
                 <field name="ACK_CONDITION"></field>
                 <value name="OID0">
                   <shadow type="field_oid" id="5bi^^aaJ:}R}0z%HWxXI">
                     <field name="oid">Test.0.Lichtsensor</field>
                   </shadow>
                 </value>
                 <statement name="STATEMENT">
                   <block type="controls_if" id="Rp{YLo^%o#6S$hO_jJ]=">
                     <value name="IF0">
                       <block type="logic_operation" id="WavvC@ol3puffWimMIaK" inline="false">
                         <field name="OP">AND</field>
                         <value name="A">
                           <block type="logic_compare" id="w0o}=^/,(S9XR|LJ|b]c">
                             <field name="OP">GT</field>
                             <value name="A">
                               <block type="get_value" id="Z{GMEnU7rX]0O8mdWRRU">
                                 <field name="ATTR">val</field>
                                 <field name="OID">Test.0.Lichtsensor</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="math_number" id="g:v/6kRn6k]#IZD#I-I8">
                                 <field name="NUM">500</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <value name="B">
                           <block type="logic_compare" id="x{#)E^ZuVTudA1KwVEb#">
                             <field name="OP">LTE</field>
                             <value name="A">
                               <block type="on_source" id="~n!^b0||-!,k!%4.hQIa">
                                 <field name="ATTR">oldState.val</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="math_number" id="4?s-ka=#-J;Y[8/?W;+y">
                                 <field name="NUM">500</field>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </value>
                     <statement name="DO0">
                       <block type="controls_if" id="`jw~`H=+@JExWnm-tk|}">
                         <value name="IF0">
                           <block type="logic_compare" id="QRI4iR;cx8$l%-#t$$Zo">
                             <field name="OP">LT</field>
                             <value name="A">
                               <block type="get_value" id="lrN%TGF=C}j_m.!%WTvP">
                                 <field name="ATTR">val</field>
                                 <field name="OID">Test.0.Rolladen-1</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="math_number" id="Es^Lrw^L]]_P/H11-BF/">
                                 <field name="NUM">30</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="control" id="jRY{^8jlj@y~HZ[%R1Do">
                             <mutation delay_input="false"></mutation>
                             <field name="OID">Test.0.Rolladen-1</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="math_number" id="(IWcuFtW`O/gFilb1Nmv">
                                 <field name="NUM">100</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                 </statement>
               </block>
              </xml>
              

              T Offline
              T Offline
              tcfigge
              schrieb am zuletzt editiert von
              #11

              @BBTown
              Ausprobiert:
              87d899a4-3a54-4996-a7ea-60fc72ccfa33-image.png
              Funktioniert!
              Danke!

              ThomasBahnT 1 Antwort Letzte Antwort
              0
              • J Jan1

                @tcfigge sagte in Blockly Logik verstehen:

                @oFbEQnpoLKKl6mbY5e13
                Aha, danke für die Info!
                Das schränkt einen aber schon ziemlich ein..:hankey:

                Am Trigger im ersten Blockly hast eine Funktion gleich mit eingebaut und das geht nicht, was mit der FALLS darunter überhaupt nichts zu tun hat. Bei der FALLS kannst so viel dranhängen wie Du willst.

                Das zweite Blockly ist von Aufbau richtig, da wird sich nur die Logik etwas beißen, da es sonst wie gewünscht funktionieren sollte. Spiel das einfach mal durch und pass die Werte gegebenenfalls an.

                T Offline
                T Offline
                tcfigge
                schrieb am zuletzt editiert von
                #12

                @Jan1
                Danke!
                Habe ich verstanden, auch wenn direkt auf einen Wert zu triggern charmanter wäre...
                So ist das Programm in der Homematic einfacher...

                J 1 Antwort Letzte Antwort
                0
                • T tcfigge

                  @Jan1
                  Danke!
                  Habe ich verstanden, auch wenn direkt auf einen Wert zu triggern charmanter wäre...
                  So ist das Programm in der Homematic einfacher...

                  J Offline
                  J Offline
                  Jan1
                  schrieb am zuletzt editiert von
                  #13

                  @tcfigge
                  Mit Blockly ist das auch recht einfach und im Trigger sind ja Objekte erlaubt, nur eben keine weitere Logik als Trigger.
                  Die eigentliche Logik in Blockly ist auch nicht so schwer und man kann sich da sehr schnell und einfach ran tasten. Mit dem Debug Block kann man dann auch schön sehen wo es klemmt, einfach dem Block ein Namen verpassen und dort einbauen wo was passieren soll, so taucht dann dieser Name im Log auf und man sieht ob es funktioniert, oder eben nicht.

                  1 Antwort Letzte Antwort
                  0
                  • T tcfigge

                    @BBTown
                    Ausprobiert:
                    87d899a4-3a54-4996-a7ea-60fc72ccfa33-image.png
                    Funktioniert!
                    Danke!

                    ThomasBahnT Offline
                    ThomasBahnT Offline
                    ThomasBahn
                    schrieb am zuletzt editiert von
                    #14

                    @tcfigge Vielleicht solltest du die Variable "vorheriger Wert" am Ende - also noch im Falls Objekt-Block, nach dem falls/mache-Block - auf den aktuellen Wert setzen.

                    Und wenn das Skript startet, könntest du "vorheriger Wert" noch mit dem aktuellen Helligkeitswert initialisieren.

                    J BBTownB 2 Antworten Letzte Antwort
                    0
                    • ThomasBahnT ThomasBahn

                      @tcfigge Vielleicht solltest du die Variable "vorheriger Wert" am Ende - also noch im Falls Objekt-Block, nach dem falls/mache-Block - auf den aktuellen Wert setzen.

                      Und wenn das Skript startet, könntest du "vorheriger Wert" noch mit dem aktuellen Helligkeitswert initialisieren.

                      J Offline
                      J Offline
                      Jan1
                      schrieb am zuletzt editiert von
                      #15

                      @ThomasBahn
                      Das ist keine Variable in dem Sinn, sondern bezieht sich auf das Objekt im Trigger und ist somit immer definiert.

                      1 Antwort Letzte Antwort
                      0
                      • ThomasBahnT ThomasBahn

                        @tcfigge Vielleicht solltest du die Variable "vorheriger Wert" am Ende - also noch im Falls Objekt-Block, nach dem falls/mache-Block - auf den aktuellen Wert setzen.

                        Und wenn das Skript startet, könntest du "vorheriger Wert" noch mit dem aktuellen Helligkeitswert initialisieren.

                        BBTownB Offline
                        BBTownB Offline
                        BBTown
                        schrieb am zuletzt editiert von BBTown
                        #16

                        @ThomasBahn
                        den Baustein findest Du an folgender Stelle und kannst dann über das Dropdown aussuchen was dieser beinhalten soll.
                        triggerWert.gif 26cdc03d-81a8-4b24-9b07-67962de172f3-grafik.png

                        ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                        T 1 Antwort Letzte Antwort
                        0
                        • BBTownB BBTown

                          @ThomasBahn
                          den Baustein findest Du an folgender Stelle und kannst dann über das Dropdown aussuchen was dieser beinhalten soll.
                          triggerWert.gif 26cdc03d-81a8-4b24-9b07-67962de172f3-grafik.png

                          T Offline
                          T Offline
                          tcfigge
                          schrieb am zuletzt editiert von
                          #17

                          @BBTown
                          Hi!
                          Habe jetzt ein paar Skripte gebaut.
                          Läuft auch soweit!
                          Jetzt hae ich ein neues gebaut( noch nicht getestet, ob es funktioniert)
                          Aber da kam folgende Frage:
                          Wenn ich mehrere Objekte als Trigger einbaue, kann ich dann das Trigger Modul noch nutzen?
                          Beispiel.JPG
                          Woher weißt das Modul, welcher WERT gemeint ist?
                          Ich hoffe man versteht mich :-)

                          Danke!!!
                          Thorsten

                          BBTownB 1 Antwort Letzte Antwort
                          0
                          • T tcfigge

                            @BBTown
                            Hi!
                            Habe jetzt ein paar Skripte gebaut.
                            Läuft auch soweit!
                            Jetzt hae ich ein neues gebaut( noch nicht getestet, ob es funktioniert)
                            Aber da kam folgende Frage:
                            Wenn ich mehrere Objekte als Trigger einbaue, kann ich dann das Trigger Modul noch nutzen?
                            Beispiel.JPG
                            Woher weißt das Modul, welcher WERT gemeint ist?
                            Ich hoffe man versteht mich :-)

                            Danke!!!
                            Thorsten

                            BBTownB Offline
                            BBTownB Offline
                            BBTown
                            schrieb am zuletzt editiert von
                            #18

                            @tcfigge

                            Der Trigger übernimmt den Auslöser.

                            So wie ich das verstehe, handelt es sich bei den von dir verwendeten Triggerpunkten um unterscheidliche Typen (mal ist es ein boolscher Wert (true/false) und mal ein Zahl), wie soll das dann in deinem Script gehen?
                            Wie soll denn "true" zum Beispiel mit "> 200" vergliechen werden?

                            Schreibe doch einmal EXAKT auf was Du umsetzen willst.
                            Was soll denn nun wann geschen oder auch nicht?
                            So wie ich es bisher sehe wird es so oder auf eine "Funktion" hinauslaufen, was kein Problem ist sofern völlig klar ist auf was reagiert werden soll ud wie das Ergebnis ausschauen soll.

                            ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                            T 1 Antwort Letzte Antwort
                            0
                            • BBTownB BBTown

                              @tcfigge

                              Der Trigger übernimmt den Auslöser.

                              So wie ich das verstehe, handelt es sich bei den von dir verwendeten Triggerpunkten um unterscheidliche Typen (mal ist es ein boolscher Wert (true/false) und mal ein Zahl), wie soll das dann in deinem Script gehen?
                              Wie soll denn "true" zum Beispiel mit "> 200" vergliechen werden?

                              Schreibe doch einmal EXAKT auf was Du umsetzen willst.
                              Was soll denn nun wann geschen oder auch nicht?
                              So wie ich es bisher sehe wird es so oder auf eine "Funktion" hinauslaufen, was kein Problem ist sofern völlig klar ist auf was reagiert werden soll ud wie das Ergebnis ausschauen soll.

                              T Offline
                              T Offline
                              tcfigge
                              schrieb am zuletzt editiert von tcfigge
                              #19

                              @BBTown
                              Hi!
                              Das ist wieder eine Rollladensteuerung.
                              Trigger soll die Helligkeit, ein Systemvariable, die ich setzte ob ich im "imBett" Modus bin, oder nicht, und eine Zweite, die erkennt, ob ich im Bett angekommen bin, oder noch auf dem Weg dahin...
                              Das ist nicht so einfach ;-)

                              Mir ginge es jetzt primär um den Block, den Du mir gezeigt hast, weil der "vorheriger Wert" ist praktisch! Man kann ihm aber nicht sagen, auf welchen Trigger er reagiert?

                              1 Antwort Letzte Antwort
                              0
                              • T Offline
                                T Offline
                                tcfigge
                                schrieb am zuletzt editiert von
                                #20

                                Mist, den Screenshot kann man nicht erkennen...und nicht mehr löschen :-(

                                Es ist wieder eine Rollladensteuerung.

                                Trigger soll sein: Helligkeit und 2 Systemvariablen.

                                Die Logik ist nicht so einfach erklärt ;-)

                                Mir ging es darum, ob es einen Weg gibt, den Block, welchen Du mir die Tage geziegt hast, quasi zu sagen, welchem Trigger er zugeordnet ist?
                                Die Funktion "vorheriger Wert" ist nämlich recht praktisch...

                                1 Antwort Letzte Antwort
                                0
                                • T Offline
                                  T Offline
                                  tcfigge
                                  schrieb am zuletzt editiert von
                                  #21

                                  e7a4b2a1-db24-4f21-9998-225f2e8f394f-image.png
                                  9c3eae3d-8922-4c84-8af0-93ccefc8b871-image.png
                                  Hallo!
                                  So, komme erst jetzt wieder dazu, mich um Blockly zu kümmern... Sorry!
                                  Kann man das mit 2 Shots erkennen?
                                  Schön wäre wenn man mehrere Trigger verwenden könnte, und trotzdem den "vorheriger Wert" Block nutzen könnte.
                                  Da habe ich aber keinen Weg gefunden...

                                  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

                                  672

                                  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