Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Bitte um Kurzcheck Blockly und Datentypen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Bitte um Kurzcheck Blockly und Datentypen

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by A Former User

      Hi
      ich habe ein Blockly um auf Helligkeit basierend Rolladen zu schließen.
      Die Helligkeit wird mir per MQTT (String) in IOBroker übermittelt. Ich hatte dort mit "Wert von Objekt ID" gearbeitet um den String in eine Number zu konvertieren. Dies geht wohl mit Admin 5 und JS3.3 nicht mehr.
      Deswegen habe ich nun einen Alias angelegt (type: number) und prüfe diesen im Blockly gegen die Eingabe Strings/values vom VIS.

      Ist dies so korrekt gelöst?

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on" id="qx}[y=CfL_j+sAQTW;.L" x="-187" y="-262">
          <field name="OID">mqtt.0.HeizKellerTank2.Lux.Helligkeit</field>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <statement name="STATEMENT">
            <block type="controls_if" id="4g1=r#,3O9FcGD!f-iMW">
              <value name="IF0">
                <block type="time_compare_ex" id="*i9xu-g(k]NQUAifGVtf">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation>
                  <field name="USE_ACTUAL_TIME">TRUE</field>
                  <field name="OPTION">between</field>
                  <value name="START_TIME">
                    <shadow type="text">
                      <field name="TEXT">12:00</field>
                    </shadow>
                    <block type="time_astro" id="|GVA2fmugCA@{*!MyayN">
                      <field name="TYPE">sunset</field>
                      <field name="OFFSET">-45</field>
                    </block>
                  </value>
                  <value name="END_TIME">
                    <shadow type="text">
                      <field name="TEXT">18:00</field>
                    </shadow>
                    <block type="time_astro" id="hUSu:npx`+HVcvJlpADV">
                      <field name="TYPE">sunset</field>
                      <field name="OFFSET">45</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="comment" id="Ly0v.9^[?YE{z]bBKCc^">
                  <field name="COMMENT">Rollade Küche Lux Schließen</field>
                  <next>
                    <block type="controls_if" id="aVeRm0uQ.G3`_DkDBzuL">
                      <value name="IF0">
                        <block type="logic_operation" id="i3UJ{C(EJ{s-qjt#T#L9" inline="false">
                          <field name="OP">AND</field>
                          <value name="A">
                            <block type="logic_compare" id="7iCz}?N7N|h|OL]8ajMC">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="get_value" id="vJCPWjrh0,k3vb)kIE!n">
                                  <field name="ATTR">val</field>
                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerKuecheSchließen</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="logic_boolean" id="4a0Ot_}]t+}=_x@+V~5k">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_compare" id="qm+1R4kR?5[iW$x:mbW=">
                              <field name="OP">LTE</field>
                              <value name="A">
                                <block type="field_oid" id="5A/:al[=+67^8=TF.w*B">
                                  <field name="oid">alias.0.HeizKellerTank2/Lux/Helligkeit.Helligkeit</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="get_value" id="e*=D)p%KKL~HHKo0N(hA">
                                  <field name="ATTR">val</field>
                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.KuecheLuxSchließen</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="control" id="]+(~y}77yOG(2aa4r]3o">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                          <field name="OID">shelly.0.SHSW-25#73F734#1.Shutter.Position</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="math_number" id="Ya~tog^H+M,gSn,xnqte">
                              <field name="NUM">0</field>
                            </block>
                          </value>
                          <next>
                            <block type="request" id="^X7Hys0ek/k;gB);G~`f">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                              <field name="WITH_STATEMENT">FALSE</field>
                              <field name="LOG">log</field>
                              <value name="URL">
                                <shadow type="text" id="Q|/1O4yZa7[8G}:94`${">
                                  <field name="TEXT">http://192.168.7.163/light/0?turn=on&amp;brightness=60&amp;white=25</field>
                                </shadow>
                              </value>
                              <next>
                                <block type="control" id="nG=%:VW{RB7.v1kmsWh(">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerKuecheSchließen</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="(PK_E@3ft}x.^*)qj2CC">
                                      <field name="BOOL">TRUE</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="debug" id="YL+a!o^uUcac10zzE.a)">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="q4b;;}fcaxcQDtKuae^k">
                                          <field name="TEXT">Dunkel: Rollade Küche schließen</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </statement>
                      <next>
                        <block type="comment" id="KH*g1=wsqiDel-[7WOY/">
                          <field name="COMMENT">Rollade Arbeitszimmer Lux Schließen</field>
                          <next>
                            <block type="controls_if" id="jnZj})L=@(?jAlB*k/rr">
                              <value name="IF0">
                                <block type="logic_operation" id="TflMkg+^;6!xX6*y6N2z" inline="false">
                                  <field name="OP">AND</field>
                                  <value name="A">
                                    <block type="logic_compare" id="ypCddC!]CsQbi:9s~#qw">
                                      <field name="OP">EQ</field>
                                      <value name="A">
                                        <block type="get_value" id="!:q%:B}k$/xzJ(LLO%CQ">
                                          <field name="ATTR">val</field>
                                          <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerArbeitszimmerSchließen</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="logic_boolean" id="YfJ:-/7wrZ8*[!Yxaj@{">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="logic_compare" id="]{$6xh*u-8e3g|(8%7rp">
                                      <field name="OP">LTE</field>
                                      <value name="A">
                                        <block type="field_oid" id="bO5-|nscovSS;I)~cH_b">
                                          <field name="oid">alias.0.HeizKellerTank2/Lux/Helligkeit.Helligkeit</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="get_value" id="o%m;BzpLOi2PEn^PN33n">
                                          <field name="ATTR">val</field>
                                          <field name="OID">javascript.0.scriptEnabled.Rolladen.ArbeitszimmerLuxSchließen</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="control" id="*G:Nub)o_2p{|~rZJy_+">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">shelly.0.SHSW-25#745D08#1.Shutter.Position</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="math_number" id="9|D#~V0b1xm6PO}j?Y]v">
                                      <field name="NUM">0</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control" id="qC]$L2@ez5p6qqpflHrL">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerArbeitszimmerSchließen</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="U@/Khiy[o:jKTw50yc?K">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id="WSJ[VMKw!.;sup5Nizvd">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="D~cBP%w1V=wZ:qTJ-#G6">
                                              <field name="TEXT">Dunkel: Rollade Arbeitszimmer schließen</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <next>
                                <block type="comment" id="{(]D%uLRbSw^xKDKRUy[">
                                  <field name="COMMENT">Rollade Esszzimmer Lux Schließen</field>
                                  <next>
                                    <block type="controls_if" id="GGkF!WPAAnsE)V]O_wzI">
                                      <value name="IF0">
                                        <block type="logic_operation" id="_,Ip3;`ca4!7h@~$=H5G" inline="false">
                                          <field name="OP">AND</field>
                                          <value name="A">
                                            <block type="logic_compare" id="y--2eFSTVI=e~`^6Hvq5">
                                              <field name="OP">EQ</field>
                                              <value name="A">
                                                <block type="get_value" id="_Ez[zA#iJWaSn*Su@El5">
                                                  <field name="ATTR">val</field>
                                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerEsszimmerSchließen</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <block type="logic_boolean" id="e*6y6U8_nc3}P?r6v)+G">
                                                  <field name="BOOL">FALSE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="logic_compare" id="Wh;weC9FAiAF];p-kQ+8">
                                              <field name="OP">LTE</field>
                                              <value name="A">
                                                <block type="field_oid" id="*$QIpsYkgrGEKv0/f6ax">
                                                  <field name="oid">alias.0.HeizKellerTank2/Lux/Helligkeit.Helligkeit</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <block type="get_value" id="`#x_YW4rJLWYHg^*CngH">
                                                  <field name="ATTR">val</field>
                                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.EsszimmerLuxSchließen</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="control" id="BF}/9`Dle-7Po7mDv#U4">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">shelly.0.SHSW-25#740A41#1.Shutter.Position</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="math_number" id="k4i4wS@yD3Rpm@l#QhH]">
                                              <field name="NUM">0</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="control" id="E^{+N!^#Y1GPk]TBcTd)">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                              <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerEsszimmerSchließen</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="@r0_p02#]o2}Lvrwofp9">
                                                  <field name="BOOL">TRUE</field>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="debug" id="C6*Qd)i/FM1+x!IKCZV}">
                                                  <field name="Severity">log</field>
                                                  <value name="TEXT">
                                                    <shadow type="text" id="oU_?,.I0Fh0a4F*XcHE%">
                                                      <field name="TEXT">Dunkel: Rollade Esszimmer schließen</field>
                                                    </shadow>
                                                  </value>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
        <block type="comment" id="0)ReTvOhNc0fU2$U;hOK" x="-163" y="887">
          <field name="COMMENT">Merker Schließen zurücksetzen</field>
          <next>
            <block type="schedule" id="-ok}bCi_A5Q]=uTR1pm6">
              <field name="SCHEDULE">*/5 * * * *</field>
              <statement name="STATEMENT">
                <block type="controls_if" id="8g^B+6bA6#R@5*Y*?S=M">
                  <value name="IF0">
                    <block type="logic_operation" id="/:Vp[.`Pm-4?PPs~*7V;" inline="false">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="time_compare_ex" id="0,+z+c@v)Mb40jc]rFJm">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                          <field name="USE_ACTUAL_TIME">TRUE</field>
                          <field name="OPTION">&lt;</field>
                          <value name="START_TIME">
                            <shadow type="text" id="/=BI}QH|!c|:g0uFXCpp">
                              <field name="TEXT">12:00</field>
                            </shadow>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="time_compare_ex" id="ZQVz`=bXSwNRKG3lgluk">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                          <field name="USE_ACTUAL_TIME">TRUE</field>
                          <field name="OPTION">&lt;</field>
                          <value name="START_TIME">
                            <shadow type="text" id="z-Ulw~-!X:33^CxjF1f.">
                              <field name="TEXT">15:00</field>
                            </shadow>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="controls_if" id="F[kfxhv?K3Z~R~6rsdr9">
                      <value name="IF0">
                        <block type="logic_compare" id="2=.by4:`_y4P!o=By`3Q">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="logic_boolean" id="}w(R,0}#,}Wyl8O]:Wv1">
                              <field name="BOOL">TRUE</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="get_value" id="HdIb36*g-AgbSO?b~T6K">
                              <field name="ATTR">val</field>
                              <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerArbeitszimmerSchließen</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="control" id="W4c-oz?8jgFRpN/.q1=N">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                          <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerArbeitszimmerSchließen</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="g5^qC=_9cwT9XKCcRqNq">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </statement>
                      <next>
                        <block type="controls_if" id="k+/}v(NHS7*`C)`|vmI;">
                          <value name="IF0">
                            <block type="logic_compare" id="WM=*?gX[7PXjwIYppJ?E">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="logic_boolean" id="4lK~YxOrkC~@-~S+a%8-">
                                  <field name="BOOL">TRUE</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="get_value" id="nVf=48m~M=MK=WAbhC2Y">
                                  <field name="ATTR">val</field>
                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerKuecheSchließen</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="control" id="2oH[@9~P|3f}mZB0bF9|">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerKuecheSchließen</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="!GQ,I:1]Rx26[JVdG{D%">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                            </block>
                          </statement>
                          <next>
                            <block type="controls_if" id="K_d:s8sUz!z0qBtl?Axs">
                              <value name="IF0">
                                <block type="logic_compare" id="0ypq[a4Bxv9C|yU)qDgm">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="logic_boolean" id="^8CrNU$Bu?4v#[i3!P8R">
                                      <field name="BOOL">TRUE</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="get_value" id="PWE7ohWJ,m.H]Vkx)OGj">
                                      <field name="ATTR">val</field>
                                      <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerEsszimmerSchließen</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="control" id="5l]0#T~q:F2@Uw}Ipw)H">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">javascript.0.scriptEnabled.Rolladen.MerkerEsszimmerSchließen</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="=65VY:kS+F2n`[/Ai~e,">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
            </block>
          </next>
        </block>
      </xml>
      

      ea7e211b-3a6c-42cd-a9e1-d86ba4369dbe-grafik.png

      Vielen Dank vorab!

      A paul53 2 Replies Last reply Reply Quote 0
      • A
        Ahnungsbefreit @Guest last edited by Ahnungsbefreit

        @pete0815 Nein, mit oder ohne Alias (und das sollte eigentlich den gleichen Datentyp haben wie die Quelle). Den Inhalt eines Datenpunkts bekommst Du nur mit "Wert von ..."

        Das hier

        54686f09-2668-465b-b746-3feced3dbcab-image.png

        kann nicht funktionieren. Wenn es an den Datentypen hängt, dann kannst Du die ja auch in Blockly konvertieren.

        ? 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Guest last edited by paul53

          @pete0815 sagte in Bitte um Kurzcheck Blockly und Datentypen:

          Ist dies so korrekt gelöst?

          Nein, die Objekt-ID (Helligkeit) enthält nicht den Wert. Besser so:

          Bild_2021-08-18_175223.png

          Wert:

          Blockly_DP_Props.JPG

          Keine eigenen Datenpunkte unter "javascript.0.scriptEnabled" erstellen!

          Ist der Alias vom Typ Zahl und der MQTT-Datenpunkt vom Typ Zeichenkette? Dann nimm den Alias auch zum Triggern.

          ? 2 Replies Last reply Reply Quote 0
          • ?
            A Former User @paul53 last edited by

            @paul53 said in Bitte um Kurzcheck Blockly und Datentypen:

            @pete0815 sagte in Bitte um Kurzcheck Blockly und Datentypen:

            Ist dies so korrekt gelöst?

            Nein, die Objekt-ID (Helligkeit) enthält nicht den Wert. Besser so:

            Bild_2021-08-18_175223.png

            Wert:

            Blockly_DP_Props.JPG

            ok, vielen Dank! Dann kann ich mir den Alias sparen? Sinn war ja den Mqtt DP vom Standardtyp string in number über einen Alias zu konvertieren. Da ich den Mqtt DP öfters verwende, wäre das dann nur 1mal konviert an Stelle von x-fach bei jeder Verwendung. Macht das Sinn?

            Keine eigenen Datenpunkte unter "javascript.0.scriptEnabled" erstellen!

            Oooh Oooh, da habe ich nahezu 99,9% der selbst erstellten DPs.

            Ist der Alias vom Typ Zahl und der MQTT-Datenpunkt vom Typ Zeichenkette? Dann nimm den Alias auch zum Triggern.

            Ja, habe ihn per Skript erstellt, dass Du hier im Forum zur Verfügung gestellt hast. Habe aber eben auch gesehen, dass es inzwischen einen Alias Manager gibt.

            1 Reply Last reply Reply Quote 0
            • ?
              A Former User @Ahnungsbefreit last edited by

              @ahnungsbefreit said in Bitte um Kurzcheck Blockly und Datentypen:

              @pete0815 Nein, mit oder ohne Alias (und das sollte eigentlich den gleichen Datentyp haben wie die Quelle). Den Inhalt eines Datenpunkts bekommst Du nur mit "Wert von ..."

              Das hier

              54686f09-2668-465b-b746-3feced3dbcab-image.png

              kann nicht funktionieren. Wenn es an den Datentypen hängt, dann kannst Du die ja auch in Blockly konvertieren.

              Danke, nochmal gut und verständlich erklärt. Irgendwann muß ich das mal länger raffen.

              1 Reply Last reply Reply Quote 0
              • ?
                A Former User @paul53 last edited by

                @paul53

                Darf ich nochmal dumm zum Verständnis fragen. Hatte es vorher auf "Wert von" und dann direkt auf den Mqtt DP laufen:
                6553769c-a8e9-406a-8f00-01d9913c1a2d-grafik.png

                Das hat bis Admin5/JS3.3 funktioniert. Warum funktioniert das ohne Konvertierung wenn der MQTT DP immer vom Typ String ist. Der sollte doch dann keinen Wert haben oder?

                mickym paul53 2 Replies Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Guest last edited by mickym

                  @pete0815 Weil Du grundsätzlich auch Strings vergleichen kannst - das nennt man dann sortieren:

                  A ist kleiner als B. 😉

                  und auch

                  1 ist keiner als 2

                  allerdings wird

                  2 größer als 12 sein. 😉

                  ? 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @mickym last edited by

                    @mickym said in Bitte um Kurzcheck Blockly und Datentypen:

                    @pete0815 Weil Du grundsätzlich auch Strings vergleichen kannst - das nennt man dann sortieren:

                    A ist kleiner als B. 😉

                    und auch

                    1 ist keiner als 2

                    allerdings wird

                    2 größer als 12 sein. 😉

                    Aaah ok. Vielen Dank! da wäre ich nie drauf gekommen 🤦‍♂️

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

                      @pete0815 sagte: Das hat bis Admin5/JS3.3 funktioniert.

                      Jetzt nicht mehr?

                      @pete0815 sagte in Bitte um Kurzcheck Blockly und Datentypen:

                      Warum funktioniert das ohne Konvertierung wenn der MQTT DP immer vom Typ String ist

                      Wenn eine Seite eines Vergleichs eine Zahl enthält, macht Javascript eine implizite Typwandlung des Strings auf der anderen Seite in eine Zahl.

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @paul53 last edited by

                        @paul53 said in Bitte um Kurzcheck Blockly und Datentypen:

                        @pete0815 sagte: Das hat bis Admin5/JS3.3 funktioniert.

                        Jetzt nicht mehr?

                        Nuja, die Schaltung funktioniert noch, aber der Log lief auf einmal bei mir voll. Ein paar Tage habe ich nichts bemerkt und heute hatte ich einen 16MB Log.

                        2021-08-17 23:55:45.896 - info: mqtt.0 (843) State value to set for "mqtt.0.HeizKellerTank2.Lux.Helligkeit" has to be type "number" but received type "string" 
                        

                        Hieraus die Intention dies zu Verbessern und richtig umzusetzen.

                        @pete0815 sagte in Bitte um Kurzcheck Blockly und Datentypen:

                        Warum funktioniert das ohne Konvertierung wenn der MQTT DP immer vom Typ String ist

                        Wenn eine Seite eines Vergleichs eine Zahl enthält, macht Javascript eine implizite Typwandlung des Strings auf der anderen Seite in eine Zahl.

                        danke.Widerspricht sich das zur Auskunft von @mickym ?
                        Alleine kann ich Beides nachvollziehen, aber zusammen tue ich mich schwer.

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Guest last edited by mickym

                          @pete0815 Na ja mein Beispiel mit den Zahlen war nicht ganz richtig und die implizite Typumwandlung in Zahlen findet halt statt, wenn die Strings beides in 2 Zahlen gewandelt werden kann. Ist jedoch eines der beiden Typen ein String und das andere eine Zahl, wird auch das andere ein String. (siehe Beispiel unten 52)

                          https://www.w3schools.com/js/js_type_conversion.asp

                          9a3b8677-d20b-4ccb-a1f6-3a3f7d13e805-image.png

                          Im Endeffekt hat @paul53 natürlich mal wieder Recht, wenn beide Strings in Zahlen gewandelt werden kann. Allerdings weiß ich nicht, ob diese implizierte Konvertierung tatsächlich bei Vergleichsoperationen stattfindet - oder nur wenn damit gerechnet wird. 😉 - Aber das kann @paul53 sicher auch klären.

                          ? paul53 2 Replies Last reply Reply Quote 0
                          • ?
                            A Former User @mickym last edited by

                            @mickym
                            Danke, jetzt habe ich es wohl verstanden und die Helligkeit ist in der Zwischenzeit zur Dunkelheit geworden und die Rollos haben sich ohne Meldung im Log wie gewünscht geschlossen. Besten Dank!

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

                              @mickym sagte: wenn beide Strings in Zahlen gewandelt werden kann.

                              Wenn beide Seiten eines Vergleichs Strings enthalten, erfolgt keine Typwandlung, sondern ein String-Vergleich wie Du ihn beschrieben hast.

                              @mickym sagte in Bitte um Kurzcheck Blockly und Datentypen:

                              ob diese implizierte Konvertierung tatsächlich bei Vergleichsoperationen stattfindet - oder nur wenn damit gerechnet wird.

                              Auch, wenn gerechnet wird, außer bei + (Addition): Wenn bei + nur an einer Stelle ein String vorkommt, erfolgt immer eine String-Verkettung. Beispiel: "4" + 1 + 2 = 4 + "1" + 2 = "412".

                              ? 1 Reply Last reply Reply Quote 0
                              • ?
                                A Former User @paul53 last edited by

                                @paul53

                                Ich glaube, ich habe eine Idee woher die Log Einträge kommen. Die kamen nur zwischen 20:45h und 06:30h. Das dürfte grob eine Zeit sein, wo der Mqtt String 0 gewesen ist (Dunkel).

                                Ist das dann ein besonderer Fall für die Umwandlung (ggf Division durch 0 oder sowas) und läuft deswegen ins Log?

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

                                  @pete0815 sagte: Mqtt String 0 gewesen ist (Dunkel).

                                  Ist das dann ein besonderer Fall für die Umwandlung (ggf Division durch 0 oder sowas) und läuft deswegen ins Log?

                                  Wo machst Du eine Division? "0" ist nichts besonderes.

                                   "mqtt.0.HeizKellerTank2.Lux.Helligkeit" has to be type "number" but received type "string"
                                  

                                  Das ist ein Fehler im MQTT-Adapter, da der Datenpunkt den falschen Typ "number" hat. Dieser Fehler ist früher nicht aufgefallen, da nicht angemeckert.

                                  ? 1 Reply Last reply Reply Quote 0
                                  • ?
                                    A Former User @paul53 last edited by A Former User

                                    @paul53 said in Bitte um Kurzcheck Blockly und Datentypen:

                                    @pete0815 sagte: Mqtt String 0 gewesen ist (Dunkel).

                                    Ist das dann ein besonderer Fall für die Umwandlung (ggf Division durch 0 oder sowas) und läuft deswegen ins Log?

                                    Wo machst Du eine Division? "0" ist nichts besonderes.

                                    Bei dem DP handelt es sich um die Helligkeit in Lux. Da die Meldung nur im Log zwischen ca. 20:45h und 6:30h alle 20 Sekunden auftaucht war dies für mich ein Ansatz/Frage da die Helligkeit in der Zeit 0 Lux ist.
                                    Da aber nicht anwendbar, ok und verworfen.

                                     "mqtt.0.HeizKellerTank2.Lux.Helligkeit" has to be type "number" but received type "string"
                                    

                                    Das ist ein Fehler im MQTT-Adapter, da der Datenpunkt den falschen Typ "number" hat. Dieser Fehler ist früher nicht aufgefallen, da nicht angemeckert.

                                    Edit: Aah, habe es gefunden. Adapter gestopt, Datenpunkte gelöscht und Adapter gestartet. Die alten DPs waren "number". Die neuen sind "string".
                                    Das dürfte es gewesen sein 🙂

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    819
                                    Online

                                    32.0k
                                    Users

                                    80.5k
                                    Topics

                                    1.3m
                                    Posts

                                    4
                                    16
                                    576
                                    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