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
  5. [Frage] grundsätzliche Frage zu timeout Block

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    927

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Frage] grundsätzliche Frage zu timeout Block

Geplant Angeheftet Gesperrt Verschoben Blockly
19 Beiträge 4 Kommentatoren 1.7k Aufrufe 5 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.
  • W Offline
    W Offline
    weimaraner
    schrieb am zuletzt editiert von
    #1

    Ich habe mal eine Verständnisfrage zu dem timeout blockly. Wenn ich es richtig verstehe, wird alles innerhalb des timeout blockly erst ausgeführt, wenn der timeout abgelaufen ist. Wie sieht es aber nun aus, wenn das Skript innerhalb des laufenden timeoutes mehrfach getriggert wird und die Bedingung immernoch zutrifft? Stehen dann mehrere timeouts in einer "Warteschlange" und werden ggf. nacheinander abgearbeitet oder gibt es dann nur DIESEN EINEN timeout, weil dieser schon läuft?
    Als Beispiel mal folgendes blockly:
    Wenn die Temperartur über 26°C ist, soll der Text "Es ist warm" nach 5 Minuten Verzögerung ausgegeben werden. Innerhalb dieser 5 Minuten wird aber der Temperatursensor noch mehrfach triggern, da er alle 30 Sekunden sendet. Wennn es nun die ganze Zeit wärmer als 26°C ist, was passiert dann mit dem timeout? Laufen mehrere oder nur einer und zwar der Erste?
    Danke für Eure Aufklärung
    Andreas

    FrageTimeout.JPG

    1 Antwort Letzte Antwort
    0
    • W Online
      W Online
      Wildbill
      schrieb am zuletzt editiert von
      #2

      Hi,

      es werden dann mehrere getriggert und nacheinander nach Ablauf die Akionen ausgeführt. Deshalb sollte man vor dem Timeout-Block einen stop-Timeout-Block einbauen. Dann wird ein bereits laufender beendet und ein neuer gestartet.

      Gruss, Jürgen

      W 1 Antwort Letzte Antwort
      0
      • W Wildbill

        Hi,

        es werden dann mehrere getriggert und nacheinander nach Ablauf die Akionen ausgeführt. Deshalb sollte man vor dem Timeout-Block einen stop-Timeout-Block einbauen. Dann wird ein bereits laufender beendet und ein neuer gestartet.

        Gruss, Jürgen

        W Offline
        W Offline
        weimaraner
        schrieb am zuletzt editiert von
        #3

        @Wildbill sagte in [Frage] grundsätzliche Frage zu timeout Block:

        Deshalb sollte man vor dem Timeout-Block einen stop-Timeout-Block einbauen. Dann wird ein bereits laufender beendet und ein neuer gestartet.

        Aber das würde ja bedeuten, daß der Timer -da ja das Skript alle 30 Sekunden wieder getriggert wird- immer wieder wieder gestoppt wird und der Timer neu anfängt zu laufen. Das kann ja auch nicht die Lösung sein.

        FrageTimeout2.JPG

        rantanplanR 1 Antwort Letzte Antwort
        0
        • W weimaraner

          @Wildbill sagte in [Frage] grundsätzliche Frage zu timeout Block:

          Deshalb sollte man vor dem Timeout-Block einen stop-Timeout-Block einbauen. Dann wird ein bereits laufender beendet und ein neuer gestartet.

          Aber das würde ja bedeuten, daß der Timer -da ja das Skript alle 30 Sekunden wieder getriggert wird- immer wieder wieder gestoppt wird und der Timer neu anfängt zu laufen. Das kann ja auch nicht die Lösung sein.

          FrageTimeout2.JPG

          rantanplanR Offline
          rantanplanR Offline
          rantanplan
          schrieb am zuletzt editiert von
          #4

          @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

          Aber das würde ja bedeuten, daß der Timer -da ja das Skript alle 30 Sekunden wieder getriggert wird- immer wieder wieder gestoppt wird und der Timer neu anfängt zu laufen. Das kann ja auch nicht die Lösung sein.

          Warum nicht?
          Ich finde es eher merkwürdig die Außentemperatur alle 30 Sek. zu triggern.
          In meiner Region, verhält sich die Außentemperatur seeehhhhr träge.:relaxed:

          Doch nun zu Deiner Frage.
          Einen Timer stoppen und wieder starten, "frist kein Brot". Schlimmer ist es, den selben Timer x mal zu starten.
          Wenn man da nicht aufpasst, kann da ein Timer mehrere zig 1000x gestartet werden und dann bricht der ioBroker Host zusammen.

          Rantanplan

          CCU3 / MS Server 2019(VM) / Scripten mit Blockly

          paul53P W 2 Antworten Letzte Antwort
          0
          • W Online
            W Online
            Wildbill
            schrieb am zuletzt editiert von Wildbill
            #5

            Du könntest ja auch noch mit einer Variable arbeiten, die true gesetzt wird, wenn es warm ist und dann beim ersten falls als weitere Bedingung nehmen die das abfragt. Dann startet der Timer nur, wenn es mehr als 26° erreicht und die Variable noch nicht gesetzt war...

            Gruss, Jürgen

            1 Antwort Letzte Antwort
            0
            • rantanplanR rantanplan

              @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

              Aber das würde ja bedeuten, daß der Timer -da ja das Skript alle 30 Sekunden wieder getriggert wird- immer wieder wieder gestoppt wird und der Timer neu anfängt zu laufen. Das kann ja auch nicht die Lösung sein.

              Warum nicht?
              Ich finde es eher merkwürdig die Außentemperatur alle 30 Sek. zu triggern.
              In meiner Region, verhält sich die Außentemperatur seeehhhhr träge.:relaxed:

              Doch nun zu Deiner Frage.
              Einen Timer stoppen und wieder starten, "frist kein Brot". Schlimmer ist es, den selben Timer x mal zu starten.
              Wenn man da nicht aufpasst, kann da ein Timer mehrere zig 1000x gestartet werden und dann bricht der ioBroker Host zusammen.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @rantanplan sagte:

              Einen Timer stoppen und wieder starten, "frist kein Brot".

              Wenn sich die Temperatur innerhalb der 5 Minuten immer wieder ändert, wird "Es ist warm" evtl. erst nach Stunden erreicht. Deshalb besser die Bedingung ändern in

              Falls Wert > 28 und vorheriger Wert <= 28

              Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes (unter Trigger).

              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

              W 1 Antwort Letzte Antwort
              1
              • W Online
                W Online
                Wildbill
                schrieb am zuletzt editiert von
                #7

                Ja, das erspart die zusätzliche Variable. Danke. :+1:

                Gruss, Jürgen

                1 Antwort Letzte Antwort
                0
                • rantanplanR rantanplan

                  @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

                  Aber das würde ja bedeuten, daß der Timer -da ja das Skript alle 30 Sekunden wieder getriggert wird- immer wieder wieder gestoppt wird und der Timer neu anfängt zu laufen. Das kann ja auch nicht die Lösung sein.

                  Warum nicht?
                  Ich finde es eher merkwürdig die Außentemperatur alle 30 Sek. zu triggern.
                  In meiner Region, verhält sich die Außentemperatur seeehhhhr träge.:relaxed:

                  Doch nun zu Deiner Frage.
                  Einen Timer stoppen und wieder starten, "frist kein Brot". Schlimmer ist es, den selben Timer x mal zu starten.
                  Wenn man da nicht aufpasst, kann da ein Timer mehrere zig 1000x gestartet werden und dann bricht der ioBroker Host zusammen.

                  W Offline
                  W Offline
                  weimaraner
                  schrieb am zuletzt editiert von
                  #8

                  @rantanplan sagte in [Frage] grundsätzliche Frage zu timeout Block:

                  Ich finde es eher merkwürdig die Außentemperatur alle 30 Sek. zu triggern.
                  In meiner Region, verhält sich die Außentemperatur seeehhhhr träge.

                  :relaxed: Vielleicht ist das schon mein Denkfehler.
                  Ursprungsproblem ist bei mir (immer noch), daß ich einen Datenpunkt "RolloSchattenModus" auf wahr schalten will sobald:
                  die Aussentemperatur größer als 26°C ist, verzögert um 20 Minuten
                  oder
                  die Aussentemperatur größer als 22°C und ein anderer Meßwert größer als 18°C ist, verzögert um 20 Minuten

                  Wenn der zweite Meßwert kleiner als 13°C ist, dann soll der Datenpunkt "RolloSchattenModus" sofort auf unwahr gehen.

                  Mein Problem war nun -und daher die Ausgangsfrage- ob der timeout immer wieder startet, wenn das Thermometer sich aktualisiert. Wie ich nun gelernt habe, tut er das und ich habe im Zweifel eine große Anzahl von laufenden Timeouts.

                  Ich müßte also villeicht auf was anderes triggern oder die timeouts anders gestalten... :thinking_face:

                  Schattenmodus.JPG

                  W 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @rantanplan sagte:

                    Einen Timer stoppen und wieder starten, "frist kein Brot".

                    Wenn sich die Temperatur innerhalb der 5 Minuten immer wieder ändert, wird "Es ist warm" evtl. erst nach Stunden erreicht. Deshalb besser die Bedingung ändern in

                    Falls Wert > 28 und vorheriger Wert <= 28

                    Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes (unter Trigger).

                    W Offline
                    W Offline
                    weimaraner
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 sagte in [Frage] grundsätzliche Frage zu timeout Block:

                    Falls Wert > 28 und vorheriger Wert <= 28
                    Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes (unter Trigger).

                    Hallo Paul, funktioniert das auch, wenn ich auf zwei verschiedene DP triggere? Überprüft blockly dann beide trigger Punkte mit Hilfe des Blockes "Wert"?
                    Grüße Andreas

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • W weimaraner

                      @paul53 sagte in [Frage] grundsätzliche Frage zu timeout Block:

                      Falls Wert > 28 und vorheriger Wert <= 28
                      Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes (unter Trigger).

                      Hallo Paul, funktioniert das auch, wenn ich auf zwei verschiedene DP triggere? Überprüft blockly dann beide trigger Punkte mit Hilfe des Blockes "Wert"?
                      Grüße Andreas

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      @weimaraner sagte:

                      funktioniert das auch, wenn ich auf zwei verschiedene DP triggere?

                      In der Regel funktioniert es nicht, es sei denn, es wird geprüft (anhand der ID), welcher Datenpunkt getriggert hat. Es ist also meist einfacher, zwei getrennte Trigger zu verwenden.

                      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

                      W 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @weimaraner sagte:

                        funktioniert das auch, wenn ich auf zwei verschiedene DP triggere?

                        In der Regel funktioniert es nicht, es sei denn, es wird geprüft (anhand der ID), welcher Datenpunkt getriggert hat. Es ist also meist einfacher, zwei getrennte Trigger zu verwenden.

                        W Offline
                        W Offline
                        weimaraner
                        schrieb am zuletzt editiert von
                        #11

                        @paul53

                        Ich habe es befürchtet... :anguished:
                        Sollte ich dann daraus zwei getrennte Blocklys machen?

                        zwei Trigger.JPG

                        oder kann man zwei trigger hier clever "verschachteln"?
                        Grüße Andreas

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • W weimaraner

                          @paul53

                          Ich habe es befürchtet... :anguished:
                          Sollte ich dann daraus zwei getrennte Blocklys machen?

                          zwei Trigger.JPG

                          oder kann man zwei trigger hier clever "verschachteln"?
                          Grüße Andreas

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #12

                          @weimaraner sagte:

                          kann man zwei trigger hier clever "verschachteln"?

                          Ja, zwei Trigger in einem Blockly und den gemeinsamen Teil in eine Funktion packen.
                          Was soll das Skript machen ?

                          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
                          • W weimaraner

                            @rantanplan sagte in [Frage] grundsätzliche Frage zu timeout Block:

                            Ich finde es eher merkwürdig die Außentemperatur alle 30 Sek. zu triggern.
                            In meiner Region, verhält sich die Außentemperatur seeehhhhr träge.

                            :relaxed: Vielleicht ist das schon mein Denkfehler.
                            Ursprungsproblem ist bei mir (immer noch), daß ich einen Datenpunkt "RolloSchattenModus" auf wahr schalten will sobald:
                            die Aussentemperatur größer als 26°C ist, verzögert um 20 Minuten
                            oder
                            die Aussentemperatur größer als 22°C und ein anderer Meßwert größer als 18°C ist, verzögert um 20 Minuten

                            Wenn der zweite Meßwert kleiner als 13°C ist, dann soll der Datenpunkt "RolloSchattenModus" sofort auf unwahr gehen.

                            Mein Problem war nun -und daher die Ausgangsfrage- ob der timeout immer wieder startet, wenn das Thermometer sich aktualisiert. Wie ich nun gelernt habe, tut er das und ich habe im Zweifel eine große Anzahl von laufenden Timeouts.

                            Ich müßte also villeicht auf was anderes triggern oder die timeouts anders gestalten... :thinking_face:

                            Schattenmodus.JPG

                            W Offline
                            W Offline
                            weimaraner
                            schrieb am zuletzt editiert von
                            #13

                            Das soll das Skript machen.

                            @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

                            Ursprungsproblem ist bei mir (immer noch), daß ich einen Datenpunkt "RolloSchattenModus" auf wahr schalten will sobald:
                            die Aussentemperatur größer als 26°C ist, verzögert um 20 Minuten
                            oder
                            die Aussentemperatur größer als 22°C und ein anderer Meßwert größer als 18°C ist, verzögert um 20 Minuten
                            Wenn der zweite Meßwert kleiner als 13°C ist, dann soll der Datenpunkt "RolloSchattenModus" sofort auf unwahr gehen.

                            Bei meinen bisherigen Ansätzen wäre es aber zu einer Vielzahl von laufenden timouts gekommen, da der Temperatursensor relativ häufig (glaube so alle 30 Sekunden) Daten schickt und damit das Skript getriggert wird. Deshalb wollte ich nun deinem Ratschlag

                            @paul53 sagte in [Frage] grundsätzliche Frage zu timeout Block:

                            Falls Wert > 28 und vorheriger Wert <= 28
                            Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes (unter Trigger).

                            folgen und eine weitere Bedingung des trigger Punktes prüfen.
                            Da ich aber zwei Punkte triggere stand ich nun vor der Frage des heutigen Tages, ob das noch funktioniert. :thinking_face:

                            @paul53 sagte in [Frage] grundsätzliche Frage zu timeout Block:

                            und den gemeinsamen Teil in eine Funktion packen.

                            Kannst du mir dabei bitte helfen? Mit einer Funktion habe ich noch nicht gearbeitet und weiß ehrlich gesagt gar nicht, was diese macht oder wofür die gut ist. Ich würde es aber gerne lernen.
                            Danke und Grüße Andreas

                            hier das bisherige Skript:

                            ```
                            <xml xmlns="http://www.w3.org/1999/xhtml">
                            <block type="on_ext" id="RS(N)r(l(7ZZyL_U{d%y" x="88" y="13">
                            <mutation items="2"></mutation>
                            <field name="CONDITION">ne</field>
                            <field name="ACK_CONDITION"></field>
                            <value name="OID0">
                            <shadow type="field_oid" id="3b.^MG34yg=M.?]J{bes">
                            <field name="oid">hm-rpc.0.LEQ0773494.2.TEMPERATURE</field>
                            </shadow>
                            </value>
                            <value name="OID1">
                            <shadow type="field_oid" id="Ou=/;A*;R(mTnb%k}oW(">
                            <field name="oid">hm-rpc.0.LEQ0773494.3.TEMPERATURE</field>
                            </shadow>
                            </value>
                            <statement name="STATEMENT">
                            <block type="controls_if" id="Y37^O7oUbZj.oI)~/Nn">
                            <mutation elseif="2"></mutation>
                            <value name="IF0">
                            <block type="logic_operation" id="V;/~F0mTw~8)P4([r!@f" inline="false">
                            <field name="OP">AND</field>
                            <value name="A">
                            <block type="logic_compare" id="a+S^ftq}87_,Lm
                            4hX}D">
                            <field name="OP">GT</field>
                            <value name="A">
                            <block type="on_source" id="?7[!eT7f^!72zSZWD#O"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="B?pjR8Jrf2vcGm0,v{vr"> <field name="NUM">26</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="G]Gb9n:?aDX]?Eo4a?M/" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="h6]FGvc5Vx#=Jh1GatN!"> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="3l]c.z6#3Mn^E{llpkx7"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="v3H)d_@c~OHdM3+(6A-1"> <field name="NUM">26</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Ua+u}N)X{BWl8F(mqB.c"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=",kix7SDgkxSBBOn6(SwC"> <field name="ATTR">val</field> <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field> </block> </value> <value name="B"> <block type="logic_boolean" id="5@hzVKoCeLL^,QbDM8.K"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="fmKX+Dy~-+gWmj8BCT]e"> <field name="NAME">timeout</field> <field name="DELAY">20</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="A]*4~EiAHJr5]wfw?X">
                            <value name="IF0">
                            <block type="logic_compare" id="8nTy;t~5KrQ5}6SfGHoH">
                            <field name="OP">GTE</field>
                            <value name="A">
                            <block type="get_value" id="@aL0b2c7qVT03SI(Y;rJ">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.LEQ0773494.2.TEMPERATURE</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="math_number" id="L!qH%+Ax(58pRyn@
                            @Rs">
                            <field name="NUM">26</field>
                            </block>
                            </value>
                            </block>
                            </value>
                            <statement name="DO0">
                            <block type="control" id="-QKI^BUi]{%E3n]kY;wi">
                            <mutation delay_input="false"></mutation>
                            <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                            <block type="logic_boolean" id="UqF}-=Akk{8mP+Kv[E_U">
                            <field name="BOOL">TRUE</field>
                            </block>
                            </value>
                            </block>
                            </statement>
                            </block>
                            </statement>
                            </block>
                            </statement>
                            <value name="IF1">
                            <block type="logic_operation" id="LI.%eo0jLNu5ozPjxteH" inline="false">
                            <field name="OP">AND</field>
                            <value name="A">
                            <block type="logic_compare" id="{9,.1K6URR)KByoT^K5.">
                            <field name="OP">EQ</field>
                            <value name="A">
                            <block type="get_value" id="Uj5hw!WRlHmjBBU=Mo3?">
                            <field name="ATTR">val</field>
                            <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="logic_boolean" id="M{FPb7Y#s#7LN|4JSFmr">
                            <field name="BOOL">FALSE</field>
                            </block>
                            </value>
                            </block>
                            </value>
                            <value name="B">
                            <block type="logic_operation" id="=[dI?-LFV;S/:iWEqJS" inline="false">
                            <field name="OP">OR</field>
                            <value name="A">
                            <block type="logic_operation" id="bk!TRa}B3!y?9{gz,S" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="wfors15k^7M7_,5Q.|TH"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="z62^#I|jNB{h=u,gOH1v"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="ON,_Qk+e)8K?qd}[!lBy"> <field name="NUM">18</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=";pe+TCyN!mnaC4?tBc@."> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="%Ih9r=!.k#/HVD;fID}H"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="j5J%_C97+v~}D}QDqzr@"> <field name="NUM">18</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="O3ARCyf,x}*:UQNQHj~A" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="X8t@lZDyN8x?6oJb3Ec/"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="j|~Qci.H@A|UM8^LAID">
                            <field name="ATTR">state.val</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="math_number" id="PxFmQq]FwjTZ+ox
                            R+1Q">
                            <field name="NUM">22</field>
                            </block>
                            </value>
                            </block>
                            </value>
                            <value name="B">
                            <block type="logic_compare" id="I^:Cx
                            @;,T_?oobZWDjc">
                            <field name="OP">LTE</field>
                            <value name="A">
                            <block type="on_source" id="j5XKgf:nM6^zzB_lCR@"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="@.iN^b;RIl.NeX02|T2I"> <field name="NUM">22</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="fn?%2f,LgiF|tWcR(eSr"> <field name="NAME">timeout2</field> <field name="DELAY">20</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="}PaFE(dQx}()D,vwaxb">
                            <value name="IF0">
                            <block type="logic_operation" id="P+-:]c~t+vYVj}({)fO," inline="false">
                            <field name="OP">AND</field>
                            <value name="A">
                            <block type="logic_compare" id="ARn.Ry!O/+@wj#zPN!F">
                            <field name="OP">GTE</field>
                            <value name="A">
                            <block type="get_value" id="!:=z:LnoQ1L}!OGck5g">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.LEQ0773494.2.TEMPERATURE</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="math_number" id="GjO(8Ek?s89FC,eKZre:">
                            <field name="NUM">22</field>
                            </block>
                            </value>
                            </block>
                            </value>
                            <value name="B">
                            <block type="logic_compare" id="6d
                            [L@aqoLT^j#-5;!9X">
                            <field name="OP">GTE</field>
                            <value name="A">
                            <block type="get_value" id="?+m?TYgAE#l?BE7OH5W?">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.LEQ0773494.3.TEMPERATURE</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="math_number" id="pD;?DA-;pkE,%p8kf5e"> <field name="NUM">18</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="t6+2}yLQ0)=swQ8_s?"> <mutation delay_input="false"></mutation> <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="W28FSGhLpUMk/{cpR~A">
                            <field name="BOOL">TRUE</field>
                            </block>
                            </value>
                            </block>
                            </statement>
                            </block>
                            </statement>
                            </block>
                            </statement>
                            <value name="IF2">
                            <block type="logic_operation" id="}2JsrR#Kkpilita.K0.F" inline="false">
                            <field name="OP">AND</field>
                            <value name="A">
                            <block type="logic_compare" id="kZ@;nWVfs.dR_2vsp/F
                            ">
                            <field name="OP">LT</field>
                            <value name="A">
                            <block type="get_value" id="sQ8d]Cy#n59nq({#Yrh#">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.LEQ0773494.3.TEMPERATURE</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="math_number" id="+N(fJ5S_E2qHO/Wddw%5">
                            <field name="NUM">13</field>
                            </block>
                            </value>
                            </block>
                            </value>
                            <value name="B">
                            <block type="logic_compare" id="|RDUK;{{9CPc?Xo@eGd-">
                            <field name="OP">EQ</field>
                            <value name="A">
                            <block type="get_value" id="E!%{Q2N~8w([J]||%?G.">
                            <field name="ATTR">val</field>
                            <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                            </block>
                            </value>
                            <value name="B">
                            <block type="logic_boolean" id="Glf.::v;0;A8-=N2w2i"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO2"> <block type="timeouts_cleartimeout" id="cyC2#=m!LpWZx!.I]lCq"> <field name="NAME">timeout</field> <next> <block type="control" id="i^h[y9_r1;_3iKpLhL0">
                            <mutation delay_input="false"></mutation>
                            <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                            <block type="logic_boolean" id="n_(P4qGgmdxqRj4ycev4">
                            <field name="BOOL">FALSE</field>
                            </block>
                            </value>
                            </block>
                            </next>
                            </block>
                            </statement>
                            </block>
                            </statement>
                            </block>
                            </xml>

                            paul53P 1 Antwort Letzte Antwort
                            0
                            • W weimaraner

                              Das soll das Skript machen.

                              @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

                              Ursprungsproblem ist bei mir (immer noch), daß ich einen Datenpunkt "RolloSchattenModus" auf wahr schalten will sobald:
                              die Aussentemperatur größer als 26°C ist, verzögert um 20 Minuten
                              oder
                              die Aussentemperatur größer als 22°C und ein anderer Meßwert größer als 18°C ist, verzögert um 20 Minuten
                              Wenn der zweite Meßwert kleiner als 13°C ist, dann soll der Datenpunkt "RolloSchattenModus" sofort auf unwahr gehen.

                              Bei meinen bisherigen Ansätzen wäre es aber zu einer Vielzahl von laufenden timouts gekommen, da der Temperatursensor relativ häufig (glaube so alle 30 Sekunden) Daten schickt und damit das Skript getriggert wird. Deshalb wollte ich nun deinem Ratschlag

                              @paul53 sagte in [Frage] grundsätzliche Frage zu timeout Block:

                              Falls Wert > 28 und vorheriger Wert <= 28
                              Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes (unter Trigger).

                              folgen und eine weitere Bedingung des trigger Punktes prüfen.
                              Da ich aber zwei Punkte triggere stand ich nun vor der Frage des heutigen Tages, ob das noch funktioniert. :thinking_face:

                              @paul53 sagte in [Frage] grundsätzliche Frage zu timeout Block:

                              und den gemeinsamen Teil in eine Funktion packen.

                              Kannst du mir dabei bitte helfen? Mit einer Funktion habe ich noch nicht gearbeitet und weiß ehrlich gesagt gar nicht, was diese macht oder wofür die gut ist. Ich würde es aber gerne lernen.
                              Danke und Grüße Andreas

                              hier das bisherige Skript:

                              ```
                              <xml xmlns="http://www.w3.org/1999/xhtml">
                              <block type="on_ext" id="RS(N)r(l(7ZZyL_U{d%y" x="88" y="13">
                              <mutation items="2"></mutation>
                              <field name="CONDITION">ne</field>
                              <field name="ACK_CONDITION"></field>
                              <value name="OID0">
                              <shadow type="field_oid" id="3b.^MG34yg=M.?]J{bes">
                              <field name="oid">hm-rpc.0.LEQ0773494.2.TEMPERATURE</field>
                              </shadow>
                              </value>
                              <value name="OID1">
                              <shadow type="field_oid" id="Ou=/;A*;R(mTnb%k}oW(">
                              <field name="oid">hm-rpc.0.LEQ0773494.3.TEMPERATURE</field>
                              </shadow>
                              </value>
                              <statement name="STATEMENT">
                              <block type="controls_if" id="Y37^O7oUbZj.oI)~/Nn">
                              <mutation elseif="2"></mutation>
                              <value name="IF0">
                              <block type="logic_operation" id="V;/~F0mTw~8)P4([r!@f" inline="false">
                              <field name="OP">AND</field>
                              <value name="A">
                              <block type="logic_compare" id="a+S^ftq}87_,Lm
                              4hX}D">
                              <field name="OP">GT</field>
                              <value name="A">
                              <block type="on_source" id="?7[!eT7f^!72zSZWD#O"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="B?pjR8Jrf2vcGm0,v{vr"> <field name="NUM">26</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="G]Gb9n:?aDX]?Eo4a?M/" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="h6]FGvc5Vx#=Jh1GatN!"> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="3l]c.z6#3Mn^E{llpkx7"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="v3H)d_@c~OHdM3+(6A-1"> <field name="NUM">26</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Ua+u}N)X{BWl8F(mqB.c"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=",kix7SDgkxSBBOn6(SwC"> <field name="ATTR">val</field> <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field> </block> </value> <value name="B"> <block type="logic_boolean" id="5@hzVKoCeLL^,QbDM8.K"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="fmKX+Dy~-+gWmj8BCT]e"> <field name="NAME">timeout</field> <field name="DELAY">20</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="A]*4~EiAHJr5]wfw?X">
                              <value name="IF0">
                              <block type="logic_compare" id="8nTy;t~5KrQ5}6SfGHoH">
                              <field name="OP">GTE</field>
                              <value name="A">
                              <block type="get_value" id="@aL0b2c7qVT03SI(Y;rJ">
                              <field name="ATTR">val</field>
                              <field name="OID">hm-rpc.0.LEQ0773494.2.TEMPERATURE</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="math_number" id="L!qH%+Ax(58pRyn@
                              @Rs">
                              <field name="NUM">26</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <statement name="DO0">
                              <block type="control" id="-QKI^BUi]{%E3n]kY;wi">
                              <mutation delay_input="false"></mutation>
                              <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                              <block type="logic_boolean" id="UqF}-=Akk{8mP+Kv[E_U">
                              <field name="BOOL">TRUE</field>
                              </block>
                              </value>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              <value name="IF1">
                              <block type="logic_operation" id="LI.%eo0jLNu5ozPjxteH" inline="false">
                              <field name="OP">AND</field>
                              <value name="A">
                              <block type="logic_compare" id="{9,.1K6URR)KByoT^K5.">
                              <field name="OP">EQ</field>
                              <value name="A">
                              <block type="get_value" id="Uj5hw!WRlHmjBBU=Mo3?">
                              <field name="ATTR">val</field>
                              <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_boolean" id="M{FPb7Y#s#7LN|4JSFmr">
                              <field name="BOOL">FALSE</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_operation" id="=[dI?-LFV;S/:iWEqJS" inline="false">
                              <field name="OP">OR</field>
                              <value name="A">
                              <block type="logic_operation" id="bk!TRa}B3!y?9{gz,S" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="wfors15k^7M7_,5Q.|TH"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="z62^#I|jNB{h=u,gOH1v"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="ON,_Qk+e)8K?qd}[!lBy"> <field name="NUM">18</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=";pe+TCyN!mnaC4?tBc@."> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="%Ih9r=!.k#/HVD;fID}H"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="j5J%_C97+v~}D}QDqzr@"> <field name="NUM">18</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="O3ARCyf,x}*:UQNQHj~A" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="X8t@lZDyN8x?6oJb3Ec/"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="j|~Qci.H@A|UM8^LAID">
                              <field name="ATTR">state.val</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="math_number" id="PxFmQq]FwjTZ+ox
                              R+1Q">
                              <field name="NUM">22</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_compare" id="I^:Cx
                              @;,T_?oobZWDjc">
                              <field name="OP">LTE</field>
                              <value name="A">
                              <block type="on_source" id="j5XKgf:nM6^zzB_lCR@"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="@.iN^b;RIl.NeX02|T2I"> <field name="NUM">22</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="fn?%2f,LgiF|tWcR(eSr"> <field name="NAME">timeout2</field> <field name="DELAY">20</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="}PaFE(dQx}()D,vwaxb">
                              <value name="IF0">
                              <block type="logic_operation" id="P+-:]c~t+vYVj}({)fO," inline="false">
                              <field name="OP">AND</field>
                              <value name="A">
                              <block type="logic_compare" id="ARn.Ry!O/+@wj#zPN!F">
                              <field name="OP">GTE</field>
                              <value name="A">
                              <block type="get_value" id="!:=z:LnoQ1L}!OGck5g">
                              <field name="ATTR">val</field>
                              <field name="OID">hm-rpc.0.LEQ0773494.2.TEMPERATURE</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="math_number" id="GjO(8Ek?s89FC,eKZre:">
                              <field name="NUM">22</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_compare" id="6d
                              [L@aqoLT^j#-5;!9X">
                              <field name="OP">GTE</field>
                              <value name="A">
                              <block type="get_value" id="?+m?TYgAE#l?BE7OH5W?">
                              <field name="ATTR">val</field>
                              <field name="OID">hm-rpc.0.LEQ0773494.3.TEMPERATURE</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="math_number" id="pD;?DA-;pkE,%p8kf5e"> <field name="NUM">18</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="t6+2}yLQ0)=swQ8_s?"> <mutation delay_input="false"></mutation> <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="W28FSGhLpUMk/{cpR~A">
                              <field name="BOOL">TRUE</field>
                              </block>
                              </value>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              <value name="IF2">
                              <block type="logic_operation" id="}2JsrR#Kkpilita.K0.F" inline="false">
                              <field name="OP">AND</field>
                              <value name="A">
                              <block type="logic_compare" id="kZ@;nWVfs.dR_2vsp/F
                              ">
                              <field name="OP">LT</field>
                              <value name="A">
                              <block type="get_value" id="sQ8d]Cy#n59nq({#Yrh#">
                              <field name="ATTR">val</field>
                              <field name="OID">hm-rpc.0.LEQ0773494.3.TEMPERATURE</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="math_number" id="+N(fJ5S_E2qHO/Wddw%5">
                              <field name="NUM">13</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_compare" id="|RDUK;{{9CPc?Xo@eGd-">
                              <field name="OP">EQ</field>
                              <value name="A">
                              <block type="get_value" id="E!%{Q2N~8w([J]||%?G.">
                              <field name="ATTR">val</field>
                              <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_boolean" id="Glf.::v;0;A8-=N2w2i"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO2"> <block type="timeouts_cleartimeout" id="cyC2#=m!LpWZx!.I]lCq"> <field name="NAME">timeout</field> <next> <block type="control" id="i^h[y9_r1;_3iKpLhL0">
                              <mutation delay_input="false"></mutation>
                              <field name="OID">eigene_Variablen.0.Rollo_Variablen.RolloSchattenmodus</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                              <block type="logic_boolean" id="n_(P4qGgmdxqRj4ycev4">
                              <field name="BOOL">FALSE</field>
                              </block>
                              </value>
                              </block>
                              </next>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              </block>
                              </xml>

                              paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von paul53
                              #14

                              @weimaraner Vorschlag:

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

                              W 1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @weimaraner Vorschlag:

                                Blockly_Verschattung_at_diff.JPG

                                W Offline
                                W Offline
                                weimaraner
                                schrieb am zuletzt editiert von
                                #15

                                @paul53
                                Super! Vielen Dank!
                                Jetzt will ich es auch noch vestehen. :relaxed:
                                Die Funktion darf so neben dem eigentlichen Skript "schweben"? Ist quasi innerhalb des blockly, aber ausgelagert?

                                Auf der linken Seite werden die Variablen auf wahr und falsch gesetzt, dann "springt" man in die Funktion, die für alle Varianten da ist. Richtig?

                                Funktion Fragen.JPG

                                Was genau wird an Punkt 1 geprüft? Ob die Variable diff und temp22 oder temp26 angelegt wurden? Es wird ja scheinbar nicht abgefragt, ob wahr oder falsch?

                                Was bedeutet bei Punkt 2 "nicht timeout"? Prüft man hier, ob der timeout schon läuft?

                                Was heißt bei Punkt 3 "falls nicht Wert von Objekt ID"? Ich verstehe diese Abfrage leider gar nicht.

                                Danke für Deine Mühe
                                Grüße Andreas

                                paul53P 2 Antworten Letzte Antwort
                                0
                                • W weimaraner

                                  @paul53
                                  Super! Vielen Dank!
                                  Jetzt will ich es auch noch vestehen. :relaxed:
                                  Die Funktion darf so neben dem eigentlichen Skript "schweben"? Ist quasi innerhalb des blockly, aber ausgelagert?

                                  Auf der linken Seite werden die Variablen auf wahr und falsch gesetzt, dann "springt" man in die Funktion, die für alle Varianten da ist. Richtig?

                                  Funktion Fragen.JPG

                                  Was genau wird an Punkt 1 geprüft? Ob die Variable diff und temp22 oder temp26 angelegt wurden? Es wird ja scheinbar nicht abgefragt, ob wahr oder falsch?

                                  Was bedeutet bei Punkt 2 "nicht timeout"? Prüft man hier, ob der timeout schon läuft?

                                  Was heißt bei Punkt 3 "falls nicht Wert von Objekt ID"? Ich verstehe diese Abfrage leider gar nicht.

                                  Danke für Deine Mühe
                                  Grüße Andreas

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #16

                                  @weimaraner sagte:

                                  Auf der linken Seite werden die Variablen auf wahr und falsch gesetzt, dann "springt" man in die Funktion, die für alle Varianten da ist. Richtig?

                                  Richtig.

                                  @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

                                  Was genau wird an Punkt 1 geprüft? Ob die Variable diff und temp22 oder temp26 angelegt wurden? Es wird ja scheinbar nicht abgefragt, ob wahr oder falsch?

                                  Doch, beide Variablen müssen wahr sein.

                                  @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:alls

                                  Was bedeutet bei Punkt 2 "nicht timeout"? Prüft man hier, ob der timeout schon läuft?

                                  Ja.

                                  @weimaraner sagte in [Frage] grundsätzliche Frage zu timeout Block:

                                  Was heißt bei Punkt 3 "falls nicht Wert von Objekt ID"?

                                  Das entspricht: "falls Wert vom Objekt ID RolloSchattenmodus == falsch". Wenn nicht ein Rollo direkt gesteuert wird, sondern es sich um einen virtuellen Datenpunkt handelt, kann auf die Abfrage verzichtet werden. In dem Fall sollte man nicht den Block steuere, sondern den Block aktualisiere verwenden.

                                  Durch die Abfrage "falls nicht timeout" kann man auf die Abfrage der vorherigen Werte links verzichten, was den linken Block vereinfacht:

                                  Blockly_Verschattung_at_diff.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
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #17

                                    Variante mit einem virtuellen Datenpunkt "RolloSchattenmodus".

                                    Blockly_Verschattung_at_diff.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
                                    • W weimaraner

                                      @paul53
                                      Super! Vielen Dank!
                                      Jetzt will ich es auch noch vestehen. :relaxed:
                                      Die Funktion darf so neben dem eigentlichen Skript "schweben"? Ist quasi innerhalb des blockly, aber ausgelagert?

                                      Auf der linken Seite werden die Variablen auf wahr und falsch gesetzt, dann "springt" man in die Funktion, die für alle Varianten da ist. Richtig?

                                      Funktion Fragen.JPG

                                      Was genau wird an Punkt 1 geprüft? Ob die Variable diff und temp22 oder temp26 angelegt wurden? Es wird ja scheinbar nicht abgefragt, ob wahr oder falsch?

                                      Was bedeutet bei Punkt 2 "nicht timeout"? Prüft man hier, ob der timeout schon läuft?

                                      Was heißt bei Punkt 3 "falls nicht Wert von Objekt ID"? Ich verstehe diese Abfrage leider gar nicht.

                                      Danke für Deine Mühe
                                      Grüße Andreas

                                      paul53P Offline
                                      paul53P Offline
                                      paul53
                                      schrieb am zuletzt editiert von paul53
                                      #18

                                      @weimaraner:

                                      Es wird ja scheinbar nicht abgefragt, ob wahr oder falsch?

                                      Das Ergebnis einer Abfrage ist false oder true. Da die Variable schon diese Werte enthält, ist ein Vergleich nicht nötig.

                                      Anmerkung: Die verkürzte Abfrage if(Wert) kann man auch mit anderen Werten machen, wobei zu beachten ist, dass nur folgende Werte false ergeben:

                                      • false
                                      • 0 (Zahl)
                                      • "" (Leerstring)
                                      • null (Objekt)
                                      • undefined
                                      • NaN (Not a Number)

                                      Alle anderen Werte ergeben true.

                                      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
                                      • W Offline
                                        W Offline
                                        weimaraner
                                        schrieb am zuletzt editiert von
                                        #19

                                        Alles verstanden! (Denke ich zumindest :joy: )
                                        Vielen, vielen Dank! Die Erklärungen waren mal wieder Spitze und meine Lust auf die bunten Blöcke steigt immer weiter.
                                        Ich werde das die Woche mal nachbauen, vielleicht kommen da noch Fragen auf...
                                        Grüße Andreas

                                        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

                                        663

                                        Online

                                        32.6k

                                        Benutzer

                                        82.2k

                                        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