NEWS
[gelöst] Blockly Abfrage: existiert Datenpunkt?
-
Habe hier mehrere Thermometer.
Die meisten davon zeigen/speichern Temperatur und rel. Luftfeuchtigkeit, einige allerdings nur die Temperatur.
Nun möchte ich bei denen mit Luftfeuchtigkeit die absolute Luftfeuchtigkeit bzw. den Taupunkt berechnen und vor allem in einen Datenpunkt schreiben - schreiben aber nur, wenn der DP auch existiert.Nun habe ich mir das gebastelt:
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="shq+Wt{q%X3odMQ%0=2[" x="63" y="62"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="3*B26:4R+2/h89Y4,!x%"> <field name="oid">default</field> </shadow> <block type="regex" id="AO?}CUv{s52`JcolaRg2"> <field name="TEXT">(rflink.0.channels.*.HUM|rflink.0.channels.*.TEMP)</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="Y,rzft$kpm%r]JMjed}Q"> <mutation else="1"></mutation> <value name="IF0"> <block type="get_value_var" id="nrnD]Jiq7=DK^S`e%646"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="Z@gvmHPRw27H{-r5h+d@"> <field name="TEXT"></field> </shadow> <block type="text_join" id="S0z*cVBLUyKG=q7iDY1("> <mutation items="2"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="iN^!6F@{s}34]%exxz2^" inline="false"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="4AzkD`klAEL/JgQH}DY@"> <field name="ATTR">id</field> </block> </value> <value name="AT2"> <block type="text_indexOf" id="_J2BkP|$7jiD_n`QeJlP"> <field name="END">LAST</field> <value name="VALUE"> <block type="on_source" id="CJwh!;2gUoZ}P8kzH:D#"> <field name="ATTR">id</field> </block> </value> <value name="FIND"> <shadow type="text" id="cu$sFK[^2@sIG8,Z.#8a"> <field name="TEXT">.</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="bi9Z!;p^yo{Db[P[EQOX"> <field name="TEXT">DPT</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="sN%52;O(N2{Hhtdfh,^Y"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="M(.mlUkW6[xrY{f(zZ[`"> <field name="TEXT">ist da</field> </shadow> <block type="text_join" id="7K0_q?4}FXH5ltkKWGs}"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="@gxXm;9*1d1Fd=uR+X0H" inline="false"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="aNWru3!QD$WysU1Uj[sS"> <field name="ATTR">id</field> </block> </value> <value name="AT2"> <block type="text_indexOf" id="o`WJ*1B1uo`9Q,!OJxvG"> <field name="END">LAST</field> <value name="VALUE"> <block type="on_source" id="DnQyu:b]tOxcBa38m/w8"> <field name="ATTR">id</field> </block> </value> <value name="FIND"> <shadow type="text" id="[.paZh{C9pwMbeR$`9ui"> <field name="TEXT">.</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="FE4zbWb.#iS-KJBkpr,j"> <field name="TEXT">DPT</field> </block> </value> <value name="ADD2"> <block type="text" id="A1-w|x`cT?NfPI$91[vW"> <field name="TEXT"> existiert.</field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="debug" id="U4;V%}UAV0BSS2bt$J{g"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="0hcwtlY_TjHW)l;!p0D+"> <field name="TEXT">NICHT da</field> </shadow> <block type="text_join" id="eZgc8S=:tj2;]{c;`F]4"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="jlJcSgWI0.7$Co83]gQx" inline="false"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="v5zhVjSH^|`oO5A$tuRN"> <field name="ATTR">id</field> </block> </value> <value name="AT2"> <block type="text_indexOf" id="aRMPgGSr?}+I7v%~h$eu"> <field name="END">LAST</field> <value name="VALUE"> <block type="on_source" id="nU~5zlE?^1XlAoFL(0}O"> <field name="ATTR">id</field> </block> </value> <value name="FIND"> <shadow type="text" id=":1Dq=#[N.(fZ1^J{jq6}"> <field name="TEXT">.</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="l-4h5Ch{yAM]l]WQivRR"> <field name="TEXT">DPT</field> </block> </value> <value name="ADD2"> <block type="text" id="y_~by@N%P~W4YtO+6jV`"> <field name="TEXT"> existiert nicht.</field> </block> </value> </block> </value> </block> </statement> </block> </statement> </block> </xml> Um zu erkennen, ob ein Datenpunkt existiert. Natürlich :relieved: bringt "Falls" eine Warnung, wenn der DP nicht existiert, erfüllt über für mich seinen zweck, da ich so ein "false" und sonst ein "true" erhalte. Nun frage ich mich, sauber ist das ja wohl nicht, aber kann man das so lassen - wenn man mit Ausgaben im Log klar kommt. =)
"Geprüft" wird also, ob beim "Pfad" "xxx.HUM" (bzw. "xxx.TEMP") auch "xxx.DPT" existiert.
-
@padrino
Vielleicht besser so (nur für Deinen Zweck umbauen)
Siehe auch den Hinweis von Paul, zwei Beiträge darunter -
@dslraser
Cool, funktioniert und sieht sauber aus.
Vielen Dank (auch an paul53 =))! -
Und dank "Kanal ID" kann ich mir auch das selber zurecht schneiden sparen.