Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. VORLAGE: Batterieüberwachung HomematicIP mit Blockly

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    VORLAGE: Batterieüberwachung HomematicIP mit Blockly

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

      Hallo,

      ich habe mir dank der Hilfe im Forum ein Blockly zur Batterieüberwachung meiner HomaticIP-Geräte zusammengeklickt.
      (Ich weiß, dass es schon ein Universalskript gibt.)
      Es werden automatisch alle Geräte gefunden und mit Ihrem Namen in einer HTML Tabelle formatiert.

      Die Tabelle wird jede Minute neu generiert.

      Das Skript kann für alles verwendet werden, was mit wahr und falsch abgebildet werden kann.
      Erreichbarkeit von Geräten, Batterie, Fensterstatus etc. ......

      Im Script ist denke ich alles soweit erklärt.
      Bin nicht soo fit in Blockly, keine Ahnung ob manches Überflüssig oder falsch ist .....
      Scheint aber alles zu klappen.

      Screenshot_20210105-094306_Fully Kiosk Browser.jpg

      Die Formatierung der Tabelle und der Texte kann mit ein wenig HTML angepasst werden.

      Unbenannt.JPG

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="q=Q/4S_nykMJv,R-%5SK">id</variable>
          <variable id="SKh+R[G%ptX]9uv^hB,!">wahr</variable>
          <variable id=";O,|I4cqK/q|U6dt.?NN">falsch</variable>
          <variable id="%62`(Q[9y{,UvP3o}T|/">i</variable>
          <variable id="GI^dumJfw0)4Nzi2HVw`">ParentID</variable>
        </variables>
        <block type="schedule" id="=M?}+$74/A|+fu)hob?*" x="1188" y="463">
          <field name="SCHEDULE">* * * * *</field>
          <statement name="STATEMENT">
            <block type="variables_set" id="dZ;P0S=A~Ue9U{sxWFjF">
              <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field>
              <value name="VALUE">
                <block type="text" id="1Rdn%LJ,UsyiTo}^fQyi">
                  <field name="TEXT"></field>
                </block>
              </value>
              <next>
                <block type="variables_set" id="JoJ{Z)?hFmCa3B.z1B~;">
                  <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field>
                  <value name="VALUE">
                    <block type="text" id="I)B703c6WPKo}@_L8ai^">
                      <field name="TEXT"></field>
                    </block>
                  </value>
                  <next>
                    <block type="controls_forEach" id="VXic[*WK}rqr0-!U:EFy">
                      <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
                      <value name="LIST">
                        <block type="selector" id="vI2MD73D2c=a4z1nh`=`">
                          <field name="TEXT">hm-rpc.0.*.0.LOW_BAT</field>
                        </block>
                      </value>
                      <statement name="DO">
                        <block type="variables_set" id="5%|F-TdcQ{4t*4:+v!]w">
                          <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field>
                          <value name="VALUE">
                            <block type="text_getSubstring" id="`QFsslqwXJcDRwUQ_z;$" inline="false">
                              <mutation at1="true" at2="true"></mutation>
                              <field name="WHERE1">FROM_START</field>
                              <field name="WHERE2">FROM_START</field>
                              <value name="STRING">
                                <block type="variables_get" id="2K5mqiyK-@A,u?+%_r-I">
                                  <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
                                </block>
                              </value>
                              <value name="AT1">
                                <block type="math_number" id="_q*GktBrg4YS~$oc@#.$">
                                  <field name="NUM">1</field>
                                </block>
                              </value>
                              <value name="AT2">
                                <block type="math_arithmetic" id="BHxb,^*vvK^,t3OWIp~N" inline="false">
                                  <field name="OP">MINUS</field>
                                  <value name="A">
                                    <shadow type="math_number" id="V4^8g/Fq~(QA(Gn,=_g9">
                                      <field name="NUM">1</field>
                                    </shadow>
                                    <block type="text_indexOf" id=";@~lMPhmFt@}zblOq8}z" inline="false">
                                      <field name="END">LAST</field>
                                      <value name="VALUE">
                                        <block type="variables_get" id="ZxgO1Qq@jpN)?*](o;s%">
                                          <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
                                        </block>
                                      </value>
                                      <value name="FIND">
                                        <shadow type="text" id="xWkYFdwM0dR_rBOFM|zY">
                                          <field name="TEXT">.0.LOW_BAT</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <shadow type="math_number" id="h-25vZ[WT=N4?QJ3saG%">
                                      <field name="NUM">1</field>
                                    </shadow>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <next>
                            <block type="controls_if" id="[t4#.[R7stu?S`@$u3BW">
                              <mutation else="1"></mutation>
                              <value name="IF0">
                                <block type="get_value_var" id="Iq+@rH{{dyJ9HWgoI~T4">
                                  <field name="ATTR">val</field>
                                  <value name="OID">
                                    <shadow type="text">
                                      <field name="TEXT"></field>
                                    </shadow>
                                    <block type="variables_get" id="B)n%:}PX%zZGvt#JtbR(">
                                      <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="variables_set" id="S+Gd]Tap?Ej$]1P.V.(_">
                                  <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field>
                                  <value name="VALUE">
                                    <block type="text_join" id="5?soV=/V!gT:YP;%=C7*">
                                      <mutation items="4"></mutation>
                                      <value name="ADD0">
                                        <block type="variables_get" id="t5Hgf|mSwoVqQ}(:~9Y7">
                                          <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field>
                                        </block>
                                      </value>
                                      <value name="ADD1">
                                        <block type="text" id="xa}qmEJ|8{^pBcPkIB|C">
                                          <field name="TEXT">&lt;tr&gt;&lt;td&gt;</field>
                                        </block>
                                      </value>
                                      <value name="ADD2">
                                        <block type="get_attr" id="N%K=-ar/nF2t;vp68{4;" inline="false">
                                          <value name="PATH">
                                            <shadow type="text" id="NEKfB0mKYNB9yf[p[(LM">
                                              <field name="TEXT">common.name</field>
                                            </shadow>
                                          </value>
                                          <value name="OBJECT">
                                            <block type="procedures_callcustomreturn" id="mBvJ_WhP|}o*z}@Nf9Gx">
                                              <mutation name="GetObjectByID">
                                                <arg name="id"></arg>
                                              </mutation>
                                              <value name="ARG0">
                                                <block type="variables_get" id="D:=8pGehBP5ZOKH2LV2?">
                                                  <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="ADD3">
                                        <block type="text" id="2WmqZ^-K89eQ9Z!T.Sg!">
                                          <field name="TEXT">&lt;/td&gt; &lt;td ALIGN="CENTER"&gt;&lt;font size="3"&gt;&lt;b&gt;&lt;font color=red&gt;●&lt;/font&gt; &lt;/td&gt; &lt;/tr&gt;</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </statement>
                              <statement name="ELSE">
                                <block type="variables_set" id="sh;fX7NWP+]`^FcnbVjU">
                                  <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field>
                                  <value name="VALUE">
                                    <block type="text_join" id="|Xz[CQA5p*BCe{uu*,ir">
                                      <mutation items="4"></mutation>
                                      <value name="ADD0">
                                        <block type="variables_get" id="F4J0jDpn[Na[1p8Ruf=%">
                                          <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field>
                                        </block>
                                      </value>
                                      <value name="ADD1">
                                        <block type="text" id="C+UnHlb%GLN.|tA3o,`C">
                                          <field name="TEXT">&lt;tr&gt;&lt;td&gt;</field>
                                        </block>
                                      </value>
                                      <value name="ADD2">
                                        <block type="get_attr" id="=z[7ycSqfif0h~4Sz*|=" inline="false">
                                          <value name="PATH">
                                            <shadow type="text" id="C*^0Xt3cP0zy%F4#veYO">
                                              <field name="TEXT">common.name</field>
                                            </shadow>
                                          </value>
                                          <value name="OBJECT">
                                            <block type="procedures_callcustomreturn" id=",{*p|W,%6Npy^h.,(XSP">
                                              <mutation name="GetObjectByID">
                                                <arg name="id"></arg>
                                              </mutation>
                                              <value name="ARG0">
                                                <block type="variables_get" id="dgPrr_H^_1Z}0!cS+Iw{">
                                                  <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="ADD3">
                                        <block type="text" id="yNUk#G;)wLb1Xq!/%A[M">
                                          <field name="TEXT">&lt;/td&gt; &lt;td ALIGN="CENTER"&gt;&lt;font size="3"&gt;&lt;b&gt;&lt;font color=green&gt;●&lt;/font&gt; &lt;/td&gt; &lt;/tr&gt;</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </statement>
                      <next>
                        <block type="update" id="|*Wyl;F2(g0J1J^:!x68">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                          <field name="OID">0_userdata.0.VIS.Akkumeldungen.hmip_akku_tabelle</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="text_join" id="CF52S*}*)[vTA|Y~w+@1">
                              <mutation items="5"></mutation>
                              <value name="ADD0">
                                <block type="text" id="yxd%qU_@2Bv39AdiqwQ*">
                                  <field name="TEXT">&lt;table style="width: 100%;"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td width=100%&gt;&lt;b&gt;&lt;font size="3"&gt;Gerät&lt;/b&gt;&lt;/td&gt;&lt;/font&gt; &lt;td ALIGN="CENTER"&gt;&lt;b&gt;&lt;font size="3"&gt;Batteriestatus&lt;/b&gt;&lt;/td&gt;&lt;/font&gt; &lt;/tr&gt;</field>
                                </block>
                              </value>
                              <value name="ADD1">
                                <block type="text" id="`hArP:}QO5fa:5w(*q*y">
                                  <field name="TEXT">&lt;tr&gt; &lt;td colspan="2"&gt; &lt;hr&gt; &lt;/dt&gt; &lt;/tr&gt;</field>
                                </block>
                              </value>
                              <value name="ADD2">
                                <block type="variables_get" id="!NM$6J~B9mGR:#`~#8V_">
                                  <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field>
                                </block>
                              </value>
                              <value name="ADD3">
                                <block type="variables_get" id="JwXRwyMGnb)]ut6eTQc-">
                                  <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field>
                                </block>
                              </value>
                              <value name="ADD4">
                                <block type="text" id="#E/@/Eiu!x|i4nvHP^wR">
                                  <field name="TEXT">&lt;/tbody&gt; &lt;/table&gt;</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="procedures_defcustomreturn" id="z1v5P%=uhnATnl`x*fMU" x="1287" y="462">
          <mutation statements="false">
            <arg name="id" varid="q=Q/4S_nykMJv,R-%5SK"></arg>
          </mutation>
          <field name="NAME">GetObjectByID</field>
          <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZCk7</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="comment" id="7b)G*.(ks+o+9/KF?==d" x="1737" y="462">
          <field name="COMMENT">Zum generieren des Namens nötig</field>
        </block>
        <block type="comment" id=",nhkIOk5!S-bl(WQ%W2," x="1763" y="562">
          <field name="COMMENT">Pfad zum überwachten Status. Überall wo sich der Pfad ändern kann ein "*" setzen</field>
        </block>
        <block type="comment" id="E+[,5)F;s:Baq^:PP%:]" x="1388" y="737">
          <field name="COMMENT">Generierung Name</field>
        </block>
        <block type="comment" id="^}0=ESmiwoVU9u;$fX0$" x="2063" y="712">
          <field name="COMMENT">Hier den den ende des Pfades eintragen</field>
        </block>
        <block type="comment" id="7[:rRJVBk6Rksi_#t88m" x="1788" y="863">
          <field name="COMMENT">Für Tabelle nötig</field>
        </block>
        <block type="comment" id="19ql9!tQemk6O^f:c#-L" x="1938" y="913">
          <field name="COMMENT">Erzeugung des Namess des Objektes in der Tabelle</field>
        </block>
        <block type="comment" id="0i38/qZ%GIMlxFe)xf/#" x="2087" y="988">
          <field name="COMMENT">Für Tabelle nötig, hier kann die Farbe des Punktes angepasst werden</field>
        </block>
        <block type="comment" id="ywl:gJJfGwXIx+y1.dD{" x="2088" y="1088">
          <field name="COMMENT">Alles nochmal für "false"</field>
        </block>
        <block type="comment" id="BUtvX0Od,/2F^?SiC^^R" x="1987" y="1238">
          <field name="COMMENT">Für Tabelle nötig</field>
        </block>
        <block type="comment" id=".aipRCl^|NRuCa:O#P-y" x="1188" y="1287">
          <field name="COMMENT">Hier einen selber angelegten Datenpunkt angeben</field>
        </block>
        <block type="comment" id="yI+58LiZf6zrWcujT:fK" x="1937" y="1288">
          <field name="COMMENT">Trennlinie, bei Bedarf entfernen</field>
        </block>
        <block type="comment" id="K9Wwg*_,UJZ|3J{1`}Ry" x="1813" y="1363">
          <field name="COMMENT">Für Tabelle nötig</field>
        </block>
      </xml>
      
      Dr. Bakterius dslraser 3 Replies Last reply Reply Quote 1
      • Dr. Bakterius
        Dr. Bakterius Most Active @David G. last edited by

        @David-G Danke! Aber ich denke, es hätte auch eine Variable (statt 'falsch' und 'wahr') gereicht.

        David G. 1 Reply Last reply Reply Quote 0
        • dslraser
          dslraser Forum Testing Most Active @David G. last edited by dslraser

          @David-G
          Ich mache das hier so ähnlich, nur das ich alias verwende (weil man dann "schöne Namen" vergeben kann) und keinen Zeitplan (oder jede Minute) verwende, dafür könntest Du einen Selektor verwenden, dann wird nur getriggert wenn sich was ändert bzw. eine Batterie leer ausgibt.

          Edit: sieht dann bei mir z.B. so aus (die HTML Ausgabe ist über die Datenpunkte veränderbar)


          Screenshot_20210105-134159_Chrome.jpg

          oder so

          Screenshot_20210105-134219_Chrome.jpg

          1 Reply Last reply Reply Quote 0
          • David G.
            David G. @Dr. Bakterius last edited by David G.

            @Dr-Bakterius

            Das habe ich gemacht, da ich so leichter den grünen und roten Punkt zuweisen kann.
            Und ich habe volle und leere Batterien nicht gemischt angezeigt.
            Keine Ahnung, ob das beides mit einer Variablen klappt.

            Ist wenig eigenes Können bei ^^, wirklich viel kombiniert was ich gelesen habe.

            @dslraser

            Den Trigger könnte ich wirklich noch ändern, da hast du recht.
            Mit den Namen stimmt.
            Das gute ist, dass in meinem Skript wenigsten der Name genommen wird und nicht die ID.
            Im Rega-Adapter kann man ja auch ausstellen, dass der Name synchronisiert wird. So kann man den auch unter rpc.0 ordentliche Namen vergeben.
            Habe nicht für alles ein Alias, da grade bei den Heizungen viel in einer Gruppe ist, wo ich nur ein Alias für die Gruppe anlege anstatt für zig Thermostate..

            dslraser 2 Replies Last reply Reply Quote 0
            • dslraser
              dslraser Forum Testing Most Active @David G. last edited by dslraser

              @David-G sagte in VORLAGE: Batterieüberwachung HomematicIP mit Blockly:

              Das gute ist, dass in meinem Skript wenigsten der Name genommen wird und nicht die ID.

              Das hat auch wieder Vor und Nachteile. Ich habe es auch mal so gemacht, aber es gibt viele User, die ganz komische Namen vergeben haben...(in der CCU z.B. oder auch anderen Anwendungen die eigene Namen verwenden). Bei mir werden diese Namen auch zur Sprachansage über Alexa benutzt, die sollten sich dann auch aussprechen lassen und sich vernünftig anhören.

              1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @David G. last edited by dslraser

                @David-G sagte in VORLAGE: Batterieüberwachung HomematicIP mit Blockly:

                Im Rega-Adapter kann man ja auch ausstellen, dass der Name synchronisiert wird. So kann man den auch unter rpc.0 ordentliche Namen vergeben.

                das stimmt, aber es gibt noch viele andere Adapter in denen Batterien sind.

                Habe nicht für alles ein Alias, da grade bei den Heizungen viel in einer Gruppe ist, wo ich nur ein Alias für die Gruppe anlege anstatt für zig Thermostate..

                Ich auch nicht, ist ja auch nicht notwendig. Ich möchte ja nur bestimmte Werte auswerten, für die lege ich halt einen alias an.

                Aber, nicht falsch verstehen, alles keine Kritik. Wir können schließlich alle voneinander lernen.
                Und, jeder kann mach was er möchte.

                David G. 1 Reply Last reply Reply Quote 0
                • David G.
                  David G. @dslraser last edited by David G.

                  @dslraser

                  Kein Ding, verstehe es nicht falsch.
                  Erstens hat jeder andere Anforderungen wo und wie es ins Konzept passen muss.
                  Zweitens hat jeder einen anderen Wissensstand wie Dinge umgesetzt werden können.
                  Da ist es ja Hilfreich auf andere Vorgehensweisen erfahrenen Usern weitergegeben werden.

                  Habe hier im Forum bisher sehr viel Hilfe erfahren dürfen, da probiere ich das, was ich mir erarbeitet habe weiterzugeben für andere.

                  1 Reply Last reply Reply Quote 1
                  • dslraser
                    dslraser Forum Testing Most Active @David G. last edited by

                    @David-G

                    kannst Du bitte Deinen Blockly Export nochmal überprüfen ? (ich wollte mir das gerade mal importieren)

                    Bildschirmfoto 2021-01-05 um 14.33.05.png

                    David G. 1 Reply Last reply Reply Quote 0
                    • David G.
                      David G. @dslraser last edited by David G.

                      @dslraser

                      Hab es oben nochmal neu reinkopiert.
                      Hab grad nur gesehen, dass es noch einen doofen Namen hat. Wenn man sein Testskript dann doch bis zum Ende verwendet ^^.

                      Ich selber bekomme es importiert, gerade mal getestet.

                      David G. 1 Reply Last reply Reply Quote 0
                      • David G.
                        David G. @David G. last edited by

                        Ich stelle jetzt mal zu meinem eigenen Script eine Frage.....

                        Weiß jemand, ob ich über eine zweite Liste noch die Erreichbarkeit meiner Geräte anzeigen kann?
                        Man könnte den mittleren Teil des Scripts ja quasi kopieren und auf unreach prüfen.

                        Hab nur Sorge, dass die Reihenfolgen der beiden Listen ggf unterschiedlich sind, da ja nicht jedes Gerät was einen unreach State hat auch einen low_bat State hat.

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @David G. last edited by

                          @david-g sagte: nicht jedes Gerät was einen unreach State hat auch einen low_bat State hat.

                          So ist es. Wie soll die Liste aussehen? Wie bisher, nur zusätzliche Anzeige von "UNREACH"? Oder alle Geräte und keine Anzeige bei "LOW_BAT", wenn kein "LOW_BAT" vorhanden?

                          David G. 1 Reply Last reply Reply Quote 0
                          • David G.
                            David G. @paul53 last edited by David G.

                            @paul53

                            Am coolsten wäre einfach noch eine zweite Spalte mit grünen Punkten.
                            Die Tabelle bekomme ich la leicht erweitert, nur der Inhalt ^^.

                            Gerät I Batterie I Empfang

                            Falls das nicht machbar ist, binde ich einfach 2 Tabellen ein.

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @David G. last edited by

                              @david-g sagte: Am coolsten wäre einfach noch eine zweite Spalte mit grünen Punkten.

                              Das beantwortet meine Frage nicht: Tabelle mit allen Geräten oder nur mit Batterie betriebenen Geräten?

                              Da ohnehin schon die Geräte-ID ermittelt wurde, muss man nur noch den restlichen Teil dranhängen (".0.UNREACH" bzw. ".0.LOW_BAT") und zusätzlich abfragen.

                              David G. 1 Reply Last reply Reply Quote 0
                              • David G.
                                David G. @paul53 last edited by David G.

                                @paul53

                                Mit allen Geräten.
                                Dann könnte man zB bei Geräten ohne Batterie einen grauen Punkt anzeigen anstatt einen grünen oder roten (oder keinen, falls es leichter ist).

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @David G. last edited by

                                  @david-g sagte: Mit allen Geräten.

                                  Dann nimm als Selektor "hm-rpc.0.*.0.UNREACH" und frage zusätzlich

                                  parentID + ".0.LOW_BAT"
                                  

                                  ab, wobei erst mit existstState(id) geprüft werden müsste, ob vorhanden.

                                  David G. 1 Reply Last reply Reply Quote 0
                                  • David G.
                                    David G. @paul53 last edited by David G.

                                    Selektor ändern bekomme ich noch hin ^^.
                                    Danach hört es aber auf. Das mit der parentID verstehe ich eh nicht ganz. Steht da nur Dank deiner Hilfe aus dem Thread wo wir es erarbeitet haben. Genau wie beim existstState(id).
                                    2 neue Variablen bräuchte ich doch bestimmt auch oder?

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @David G. last edited by paul53

                                      @david-g sagte:

                                      2 neue Variablen bräuchte ich doch bestimmt auch oder?

                                      Wenn ich mir das Blockly so ansehe, dann eher 3:

                                      @david-g sagte in VORLAGE: Batterieüberwachung HomematicIP mit Blockly:

                                      bei Geräten ohne Batterie einen grauen Punkt anzeigen anstatt einen grünen oder roten

                                      Die HTML-Geschichten muss ich komplett Dir überlassen, denn damit kenne ich mich gar nicht aus.

                                      Eine JS-Funktion checkBatt(id) mit Ergebnis könnte so aussehen

                                      if(existsState(id)) return getState(id).val; // false / true
                                      return -1
                                      

                                      Prinzip der Auswertung:

                                      Bild_2021-01-23_190310.png

                                      David G. 2 Replies Last reply Reply Quote 1
                                      • David G.
                                        David G. @paul53 last edited by David G.

                                        @paul53

                                        Danke, werde ich morgen einbauen.

                                        Hoffe die Kids lassen es zu.
                                        Im Moment sind die nicht so ausgelastet (Hoffentlich macht der Kindergarten bald wieder auf....).

                                        1 Reply Last reply Reply Quote 0
                                        • David G.
                                          David G. @paul53 last edited by

                                          @paul53

                                          Die Auswertung packe ich dann "einfach" mit in die Schleife rein, unter das erste "Falls" (nur eben mit getauschten Selektor im oberen Bereich)?

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @David G. last edited by

                                            @david-g sagte: Die Auswertung packe ich dann "einfach" mit in die Schleife rein, unter das erste "Falls" (nur eben mit getauschten Selektor im oberen Bereich)?

                                            Ja, so sehe ich das.

                                            David G. 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            762
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript template
                                            5
                                            27
                                            2197
                                            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