Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg

    This topic has been deleted. Only users with topic management privileges can see it.
    • TH G
      TH G @fastfoot last edited by

      @fastfoot

      Sorry ich weiß jetzt nicht was unklar ist aber der Wert im DP Heizen ist "true" oder ein leeres Feld.

      Was willst du mir bitte sagen?

      F 1 Reply Last reply Reply Quote 0
      • F
        fastfoot @TH G last edited by

        @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

        @fastfoot

        Sorry ich weiß jetzt nicht was unklar ist aber der Wert im DP Heizen ist "true" oder ein leeres Feld.

        Was willst du mir bitte sagen?

        ich rede von deinem Blockly, wieviele Werte genau fragst du da ab? Von genau diesem einen Wert rede ich und habe eine Alternative genannt es besser zu machen

        TH G 1 Reply Last reply Reply Quote 0
        • TH G
          TH G @fastfoot last edited by TH G

          @fastfoot

          Im Blockly siehst du das ich einen Wert abfrage und zwar den DP Heizen.

          Für dich mag es normal sein mit dem was du mir schreibst aber ich verstehe nicht was du meinst. Was soll ich denn in meinem Blockly ändern?

          Würde mich freuen, wenn du es mir für einen Anfänger erklären würdest.

          Die Aufgabe ist:

          Wenn im DP Heizen -true- steht soll im Datenpunkt Status_WP der Text -Heizen- stehen und wenn nicht dann der Text -nicht aktiv-.

          Das alles funktioniert ja auch aber wenn halt im DP nichts steht, läuft mein Log voll und das muss geändert werden.

          F 1 Reply Last reply Reply Quote 0
          • F
            fastfoot @TH G last edited by

            @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

            @fastfoot

            Im Blockly siehst du das ich einen Wert abfrage und zwar den DP Heizen.

            Für dich mag es normal sein mit dem was du mir schreibst aber ich verstehe nicht was du meinst. Was soll ich denn in meinem Blockly ändern?

            Aber du siehst doch den Unterschied in meinem Bild. Wo du dieses Wert herbekommst habe ich auch geschrieben.

            TH G 1 Reply Last reply Reply Quote 0
            • TH G
              TH G @fastfoot last edited by TH G

              @fastfoot

              Danke für den Versuch mir zu helfen aber ich scheine dich nicht zu verstehen und aus deinen kurzen Antworten, kann ich für mich leider keine Informationen ableiten.

              Eventuell kann jemand anders helfen, den ich besser verstehe.

              Wenn ich das Skript starte ist alles ok.
              Dann läuft die Wärmepumpe an und der Status im DP Heizen der Wärmepumpe ändert sich der Wert von -leer- (also kein Wert im DP) auf -true-.
              Im Vis wird dann im auch der Text im DP Status_WP richtig angzeigt mit -Heizen-
              Ist Heizen dann vorbei steht im DP Heizen wieder kein Wert und auch hier wird dann im DP Status_WP -nicht aktiv- richtig angezeigt.
              Danach fangen aber die ständigen Warnungen im Log um Rhythmus des Intervalls an.

              F 1 Reply Last reply Reply Quote 0
              • F
                fastfoot @TH G last edited by

                @th-g Ändere diesen Teil
                b1.PNG
                so ab
                B2.PNG

                das verhindert das (nochmalige) Lesen eines nicht vorhandenen Status(DP = leer). Soweit die Theorie, ob es funktioniert sehen wir dann. Dachte nicht dass das irgendwie unklar sein könnte

                TH G 1 Reply Last reply Reply Quote 0
                • T
                  tobi19 @TH G last edited by tobi19

                  @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                  javascript.0 2021-01-15 11:53:02.845 warn (2355) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)

                  Hallo, bin zwar auch Anfänger und dabei zu lernen - versuche aber mal meine Sicht aufzuzeigen.

                  Die zitierte Logmeldung bedeutet für mich, dass der DP des Adapters hier nicht mehr existiert.
                  Es scheint also, dass der Adapter in den DP entweder true einträgt oder ihn "löscht" (wie immer das aussieht)
                  Eigentlich sollte ein DP vom Typ boolean genau zwei Werte annehmen können: true (wahr) odere false (falsch). Wenn der DP anstelle den Wert false zu bekommen "gelöscht wird" löst er keinen Trigger aus, daher kommt es nie zu der Aussage "nicht aktiv", da der Trigger fehlt. Kein Problem von Blockly sondern des Adapters.
                  Ersatzweise ist ein rein Zyklische Abfrage des Datenpunkts möglich (wie du gezeigt hast - ich würde dann aber die äussere Schleife des Triggers ganz weglassen). Die Fehlermeldung des nicht existierenden DP wird es dann aber immer geben. (Vielleicht nach diesem Beispiel vermeidbar https://forum.iobroker.net/topic/27985/prüfen-ob-datenpunkt-existiert)

                  In einer Zeitintervall-Schleife auf einen alten Wert zuzugreifen wird nicht funktionieren, da er sich ja dann nie mehr ändert.

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    fastfoot @tobi19 last edited by

                    @tobi19 said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                    @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                    javascript.0 2021-01-15 11:53:02.845 warn (2355) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)

                    Hallo, bin zwar auch Anfänger und dabei zu lernen - versuche aber mal meine Sicht aufzuzeigen.

                    Die zitierte Logmeldung bedeutet für mich, dass der DP des Adapters hier nicht mehr existiert.
                    Es scheint also, dass der Adapter in den DP entweder true einträgt oder ihn "löscht" (wie immer das aussieht)

                    Das sehe ich auch so

                    ... Wenn der DP anstelle den Wert false zu bekommen "gelöscht wird" löst er keinen Trigger aus, daher kommt es nie zu der Aussage "nicht aktiv", da der Trigger fehlt. Kein Problem von Blockly sondern des Adapters.

                    Das ist nicht richtig, denn:

                    Ist Heizen dann vorbei steht im DP Heizen wieder kein Wert und auch hier wird dann im DP Status_WP -nicht aktiv- richtig angezeigt.
                    Danach fangen aber die ständigen Warnungen im Log um Rhythmus des Intervalls an.>

                    Das liegt m.E. daran, dass der Wert, welcher triggert, unmittelbar nach dem Triggern noch einmal eingelesen wird mit Wert vom Objekt Heizen. Das sollte man grundsätzlich nicht machen, da der Trigger bereits den Wert liefert und der neu eingelesene durchaus anders sein kann. In diesem speziellen Fall wird dann aber versucht, einen nicht (mehr) existenten DP zu lesen, was zu den LOG Einträgen führt. Die Verwendung des Triggerwertes anstelle von neuem Einlesen sollte das wohl verhindern

                    Ob das tatsächlich hilft, kann nur der TE bestätigen

                    1 Reply Last reply Reply Quote 0
                    • TH G
                      TH G @fastfoot last edited by TH G

                      @fastfoot

                      Wie kann denn das gehen, wenn es keine Frage mehr gibt, ob der Status true ist? Was bedeute das nun nur mit der Wert?

                      Bildschirmfoto 2021-01-15 um 22.45.58.png

                      Das das ein Problem vom Adapter ist ist bekannt aber laut Entwickler nicht zu ändern, da einfach kein Wert von der Anlage ausgegeben wird.

                      F 1 Reply Last reply Reply Quote 0
                      • F
                        fastfoot @TH G last edited by

                        @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                        @fastfoot

                        Wie kann denn das gehen, wenn es keine Frage mehr gibt, ob der Status true ist? Was bedeute das nun nur mit der Wert?

                        Bildschirmfoto 2021-01-15 um 22.45.58.png

                        Das das ein Problem vom Adapter ist ist bekannt aber laut Entwickler nicht zu ändern, da einfach kein Wert von der Anlage ausgegeben wird.

                        Der Wert (keine angelegte Variable!!!) ist der Wert zum Zeitpunkt des Triggerns, im Prinzip genau was du gemacht hast, jedoch halt der Originalwert. Ein danach gelesener Wert könnte bereits ein anderer sein. Falls prüft immer auf Wahr, weshalb es die verkürzte Version von Falls Wert = Wahr ist.

                        Funktioniert es denn jetzt oder kommen die LOG Einträge immer noch?

                        TH G 1 Reply Last reply Reply Quote 0
                        • TH G
                          TH G @fastfoot last edited by

                          @fastfoot

                          Ah aber das musst du doch auch erklären, jetzt verstehe ich das erst. Ich muss warten bis die Wärmepumpe wieder anspringt

                          F 1 Reply Last reply Reply Quote 0
                          • F
                            fastfoot @TH G last edited by

                            @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                            @fastfoot

                            Ah aber das musst du doch auch erklären, jetzt verstehe ich das erst. Ich muss warten bis die Wärmepumpe wieder anspringt

                            Du hättest es meiner Meinung nach auch umsetzen können, ohne es erstmal zu verstehen. 😀 Man(n) ist ja nicht immer in der Laune/Lage für explizite Erklärungen, wobei meine Auführungen, speziell für Anfänger, normalerweise recht ausführlich sind. Du hattest heute halt erstmal Pech damit 🙂

                            TH G 1 Reply Last reply Reply Quote 0
                            • TH G
                              TH G @fastfoot last edited by

                              @fastfoot

                              Die Warnung im Log ist nicht mehr da ABER nach dem Heizen wird nun auch nicht mehr im DP Status_WP -nicht aktiv- gesetzt. Es steht nun immer Heizen im DP.

                              T F 2 Replies Last reply Reply Quote 0
                              • T
                                tobi19 @TH G last edited by

                                @th-g
                                Da die Variable "Wert" nur einmalig beim Trigger eingelesen wird ändert sie sich innerhalb der durch "Ausführen Intervall alle 1 Sek" aufgespannten Schleife nie und somit kann der 'sonst' Fall der Abfrage nie eintreten.

                                Habe die Erklärung von fastfoot so verstanden, dass der Trigger beim Ausschalten genau ein mal kommt und hier die Variable "Wert" richtig eingelesen wird . Somit sollte es ja gehen, wenn du in deinem letzten Blockly die Intervall-Schleife mit Stop Befehl weglässt. Der Trigger kommt ein mal, wenn Heizen eingeschaltet wird und ein mal beim Ausschalten. Der DP wird dann dementsprechende gesetzt .
                                Dann auch probieren ob beim Trigger "wurde geändert" oder "wurde aktualisiert" funktioniert.

                                TH G 1 Reply Last reply Reply Quote 0
                                • TH G
                                  TH G @tobi19 last edited by TH G

                                  @tobi19

                                  Auch wenn ich den Intervall rausnehmen geht es nicht.

                                  Das Problem ist immer noch, dass ein leeres Feld kein Trigger ist.

                                  @alcalzone said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                                  @TH-G Du solltest zusätzlich vor dem Ausführen des Intervalls einen Stop erzwingen. Sonst kann es sein, dass Kopien des Intervalls laufen, die sich mit der Zeit anhäufen.

                                  @AlCalzone Kannst du bitte helfen und deine Anmerkung vertiefen? Wie meintest du das mit dem Stop?

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    fastfoot @TH G last edited by

                                    @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                                    @fastfoot

                                    Die Warnung im Log ist nicht mehr da ABER nach dem Heizen wird nun auch nicht mehr im DP Status_WP -nicht aktiv- gesetzt. Es steht nun immer Heizen im DP.

                                    Gestern war wohl nicht mein Tag 😞 Ich habe das Intervall total übersehen und bin deshalb davon ausgegangen, dass auch getriggert wird wenn von True auf Nichts geändert wird. Ich denke dass das ein Fehler im JS-Adapter ist. Es ist richtig, dass Wert sich innerhalb des Intervalls nicht ändert, da er an den Trigger gekoppelt ist.

                                    Ich würde es jetzt so wie ursprünglich belassen und mit den Fehlern leben bis sie gefixt sind. Ich kann versuchen, später eine JS-Funktion zu schreiben, die du als Workaround verwenden könntest

                                    TH G 1 Reply Last reply Reply Quote 0
                                    • TH G
                                      TH G @fastfoot last edited by

                                      @fastfoot

                                      Das wäre sehr gut und würde mich freuen, wenn du eine Übergangslösung hast.

                                      F 1 Reply Last reply Reply Quote 0
                                      • F
                                        fastfoot @TH G last edited by

                                        @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                                        @fastfoot

                                        Das wäre sehr gut und würde mich freuen, wenn du eine Übergangslösung hast.

                                        So, neuer Versuch, die JS-Funktion prüft ob der Status existiert, falls nicht wird Falsch zurückgegeben, falls er existiert wird der tatsächliche Wert geliefert(der in diesem Fall eigentlich immer Wahr sein sollte), insofern ist die Funktion aufgebauscht.
                                        HM.PNG
                                        Die Datenpunkte und die Variable id im Skript musst du natürlich noch anpassen

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                          <variables>
                                            <variable id="X%@`%Fwh:N!{3?wFePrX">id</variable>
                                            <variable type="interval" id="Intervall">Intervall</variable>
                                            <variable id="a_[i#?T$qE6pO]a+|;|t">statusHeizung</variable>
                                          </variables>
                                          <block type="procedures_defcustomreturn" id="en56nesdIDI1w2p3?g4o" x="-613" y="37">
                                            <mutation statements="false">
                                              <arg name="id" varid="X%@`%Fwh:N!{3?wFePrX"></arg>
                                            </mutation>
                                            <field name="NAME">status</field>
                                            <field name="SCRIPT">bGV0IHN0YXQ7DQppZighZXhpc3RzU3RhdGUoaWQpKSB7DQogICAgc3RhdCA9ICBmYWxzZTsNCn0gZWxzZSB7DQogICAgc3RhdCA9IChhd2FpdCBnZXRTdGF0ZUFzeW5jKGlkKSkudmFsOw0KfQ0KcmV0dXJuIHN0YXQ7</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="variables_set" id="*8.nqG@Jv]T}v.KRZ{@0" x="-613" y="62">
                                            <field name="VAR" id="X%@`%Fwh:N!{3?wFePrX">id</field>
                                            <value name="VALUE">
                                              <block type="text" id="PLa$]*nn#aVr.5!bBn@?">
                                                <field name="TEXT">0_userdata.0.Heizung.Heizen</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="timeouts_clearinterval" id="-X.,*u/]42py`#]|-t:z">
                                                <field name="NAME">Intervall</field>
                                                <next>
                                                  <block type="timeouts_setinterval" id="?aEn+kt6PmFGE[p~XA1e">
                                                    <field name="NAME">Intervall</field>
                                                    <field name="INTERVAL">1000</field>
                                                    <field name="UNIT">ms</field>
                                                    <statement name="STATEMENT">
                                                      <block type="variables_set" id="w_dtgT{;Ok-WHNn^87$t">
                                                        <field name="VAR" id="a_[i#?T$qE6pO]a+|;|t">statusHeizung</field>
                                                        <value name="VALUE">
                                                          <block type="procedures_callcustomreturn" id="v_lqnLU}7B#A0%/chCT0" inline="true">
                                                            <mutation name="status">
                                                              <arg name="id"></arg>
                                                            </mutation>
                                                            <value name="ARG0">
                                                              <block type="variables_get" id="1B.vjc2JNw^M)p|t]5sv">
                                                                <field name="VAR" id="X%@`%Fwh:N!{3?wFePrX">id</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="controls_if" id="~(bE[%vsILoN/Ek:_`m6">
                                                            <mutation else="1"></mutation>
                                                            <value name="IF0">
                                                              <block type="variables_get" id="0uW@6:JiLwo,RCzY#esL">
                                                                <field name="VAR" id="a_[i#?T$qE6pO]a+|;|t">statusHeizung</field>
                                                              </block>
                                                            </value>
                                                            <statement name="DO0">
                                                              <block type="update" id="cZxPS)X@V0wnwD|mwVX1">
                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                <field name="OID">0_userdata.0.Heizung.Status_WP</field>
                                                                <field name="WITH_DELAY">FALSE</field>
                                                                <value name="VALUE">
                                                                  <block type="text" id="52oB)g/-a?+Z~O=so-9H">
                                                                    <field name="TEXT">Heizung läuft</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </statement>
                                                            <statement name="ELSE">
                                                              <block type="update" id="~$Cc9,M^,0_60=+abb,`">
                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                <field name="OID">0_userdata.0.Heizung.Status_WP</field>
                                                                <field name="WITH_DELAY">FALSE</field>
                                                                <value name="VALUE">
                                                                  <block type="text" id="H=b1z!W@8M}UyedaAVPb">
                                                                    <field name="TEXT">Heizung nicht aktiv</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </statement>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </xml>
                                        

                                        TH G 1 Reply Last reply Reply Quote 0
                                        • TH G
                                          TH G @fastfoot last edited by TH G

                                          @fastfoot

                                          Danke aber wie bekomme ich das importiert?

                                          F 1 Reply Last reply Reply Quote 0
                                          • F
                                            fastfoot @TH G last edited by

                                            @th-g said in Triggern DP ohne Wert nicht möglich (true/leer)-stiebel-isg:

                                            @fastfoot

                                            Danke aber wie bekomme ich das importiert?

                                            • Hier den Import anklicken und kopieren
                                            • Blockly erzeugen
                                            • oben rechts linkes Icon importieren mit CTRL-V
                                            TH G 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            962
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            vis
                                            16
                                            119
                                            7631
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo