NEWS
Seltsames Verhalten von Berechnungen NaN
-
Hallo
ich hab eine Steuerung von einer Lüftung und habe das Problem das ioBroker meine Berechnungen mit NaN ausgibt. Allerdings nicht immer...deswegen frag ich mal in die Runde ob mir jemand sagen kann was das Problem ist.
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="5POTvY=-juHOA|7KiQr)">tp aussen</variable> <variable type="" id="]C@k|5-zrgj#k*APA|bN">tp innen</variable> <variable type="" id="[8FVGmlBF@N?v$xwfL#r">temperatur</variable> <variable type="" id="Lv/#?]#gfWreC?fS%m4d">taupunkt</variable> <variable type="" id="(B*.i$?=:Z/@zm9h(ab)">trockner</variable> <variable type="" id="rj%T9d[hzdisrqMBMs~c">lüften</variable> </variables> <block type="on_ext" id="A8^ai?hR%4U$=ufQ`+GF" x="-1463" y="-887"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}DYy],8@=uM=H^721oyU"> <field name="oid">homee.0.TemperatureAndHumiditySensor-172.RelativeHumidity-1014</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="aZo~qo5YceV)Sd(*}YWD"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="=lGn:6AV9{_%@vGDBqJL"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="|)sup;-}Xo=*nZ!qtdbT"> <field name="ATTR">val</field> <field name="OID">node-red.0.Einspeisung</field> </block> </value> <value name="B"> <block type="math_number" id="fDM5t3!.$:s8P;v_GOIe"> <field name="NUM">150</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="poY540!PU2/+Qx.iZG}B"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="p]`zfq8e?8D$G.]_$C|("> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="oi0Fnc(eqg?=-Hv7T)L,"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="@zd-1C*OVJoFPbMQi:a:"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="})wwr[d#h;;btdk|m@Rj"> <field name="NUM">65</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="XW+!6Yj?=lYnOdl^gh(H"> <value name="BOOL"> <block type="variables_get" id="{^l}7_iySk(hVctAQ(84"> <field name="VAR" id="rj%T9d[hzdisrqMBMs~c" variabletype="">lüften</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="[5^lL}G0P4*3zzlf@Ux4"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">trockner</field> <value name="VALUE"> <block type="math_number" id="WW#Smj[7GefnY0=27k~o"> <field name="NUM">1</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="dZB#1SWmo1az%ScBAT^n"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="4C{[^|jo}pj0=F4zt1SZ"> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="A2ycNo%L.:g=-G/h]K]%"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="I@;fWFPV8=`mUq}k,*k|"> <field name="NUM">63</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="hN+=DOSfo[=O$@zJc/NH"> <field name="VAR" id="rj%T9d[hzdisrqMBMs~c" variabletype="">lüften</field> </block> </value> </block> </value> <statement name="DO1"> <block type="variables_set" id=")!]hRgT$.C$:O(1Ey!tN"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">trockner</field> <value name="VALUE"> <block type="math_number" id="E?,J]0H~@~Co~7H^3fI7"> <field name="NUM">0</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="6U9,vJ=2Zo=1ig,qa?IG"> <value name="IF0"> <block type="logic_compare" id="yeAMc)qb-K[l1w8!wSdz"> <field name="OP">NEQ</field> <value name="A"> <block type="variables_get" id="~]*L/K.IaO59VpU@M,xb"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">trockner</field> </block> </value> <value name="B"> <block type="get_value" id="HpFfcaS~`r0-Xl9.RP)["> <field name="ATTR">val</field> <field name="OID">homee.0.DoubleOnOffSwitch-174.OnOff-1018</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="mM$KO6bDgtr5:)Id$ofs"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.DoubleOnOffSwitch-174.OnOff-1018</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="I:3ZlTcA|BPG1~-hV7La"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">trockner</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <statement name="ELSE"> <block type="control" id="xxx|mtWL]M0(JQU[EtTE"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.DoubleOnOffSwitch-174.OnOff-1018</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="|x1?$$]qLYl;zZ[NF*t,"> <field name="NUM">0</field> </block> </value> </block> </statement> </block> </statement> </block> <block type="on_ext" id="(57P08c=o{Hy:yk%{@)t" x="-762" y="-888"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="U_=FtFd:|*5FXLzSk}BG"> <field name="oid">homee.0.TemperatureAndHumiditySensor-168.Temperature-1002</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="t+UdDouks(mnH/,|5z[S"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="Ft=v6i;W.]RZ807sCI2o" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="CEc3+VQFHR]o}z/MN4qD"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="ejH@cQ%Cq87]GLiXi?%9"> <field name="ATTR">val</field> <field name="OID">homee.0.TemperatureAndHumiditySensor-168.Temperature-1002</field> </block> </value> <value name="B"> <block type="math_number" id="dF5N8C{#s]lcG(r~R+)e"> <field name="NUM">12</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="|;yz1kp|syCZd^A^6/ta"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="fo+}IL)GLO#07~#NG?0~"> <field name="ATTR">val</field> <field name="OID">homee.0.TemperatureAndHumiditySensor-168.Temperature-1002</field> </block> </value> <value name="B"> <block type="math_number" id="6z:AdEYB0m]3cy(YImY^"> <field name="NUM">22</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id=".l;d;vt0y91=gJ[?.Gta"> <field name="VAR" id="[8FVGmlBF@N?v$xwfL#r" variabletype="">temperatur</field> <value name="VALUE"> <block type="logic_boolean" id="5RSo{T5:Zl.yfk^0M8W@"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id=":)5nCSp9cnVzWKTEugU2"> <field name="VAR" id="[8FVGmlBF@N?v$xwfL#r" variabletype="">temperatur</field> <value name="VALUE"> <block type="logic_boolean" id="QDMfIC@3sWG{,!P(Ai,)"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="procedures_callnoreturn" id="vTVKk?2.I70dED=s01r?"> <mutation name="fenster"></mutation> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="~b)D{PD27_%[RUAYQr(-" x="-1462" y="-387"> <field name="NAME">fenster</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="controls_if" id=":@5|m#mR~#xLK-%.#6ks"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="OHcQfZMf~Pl7te=E|~uu"> <field name="OP">EQ</field> <value name="A"> <block type="logic_operation" id="i_BbMnEvbW$[V5/i`7r]"> <field name="OP">AND</field> <value name="A"> <block type="variables_get" id="=XFnTl/dY!FrwAPj4KPw"> <field name="VAR" id="[8FVGmlBF@N?v$xwfL#r" variabletype="">temperatur</field> </block> </value> <value name="B"> <block type="variables_get" id="xQR(vGj{r.Bj~)Xz63RP"> <field name="VAR" id="Lv/#?]#gfWreC?fS%m4d" variabletype="">taupunkt</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="R0j@e}/AQCJIgK}j6$eT"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="|w$@De#i*p@$^ywmw0d@"> <value name="IF0"> <block type="logic_compare" id="7UCCV_bBP(PLIjx..]-f"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="=,!Gdkb!X!KeLOJV6,Co"> <field name="ATTR">val</field> <field name="OID">homee.0.ElectricMotorMeteringSwitch-61.Position-508</field> </block> </value> <value name="B"> <block type="math_number" id="2LG#V;c(5^1Jd`fq0w96"> <field name="NUM">20</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="eH3G8~=$p{R-6Y5P7Msx"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.ElectricMotorMeteringSwitch-61.Position-508</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="@ZhVcqO$H3JFWV?ny3!I"> <field name="NUM">20</field> </block> </value> </block> </statement> <next> <block type="variables_set" id="t]iR2V:mh(Ua-[OD8bt|"> <field name="VAR" id="rj%T9d[hzdisrqMBMs~c" variabletype="">lüften</field> <value name="VALUE"> <block type="logic_boolean" id="SrjMz$b5PjlvtR#v){hX"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="controls_if" id="T^sL7/9HGM8U,ul~-rQ:"> <value name="IF0"> <block type="logic_compare" id="I/w+S{bLdwf@neca=jno"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="#+OcSrd~?PFcb!j@LMR."> <field name="ATTR">val</field> <field name="OID">homee.0.ElectricMotorMeteringSwitch-61.Position-508</field> </block> </value> <value name="B"> <block type="math_number" id="T6**lwOUh4l]U.EiLR=z"> <field name="NUM">97</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="vTJnh6e/V:{v`Un%|oKb"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.ElectricMotorMeteringSwitch-61.Position-508</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=".h_BWxl2qu-T~HV9Q`No"> <field name="NUM">97</field> </block> </value> </block> </statement> <next> <block type="variables_set" id="io$`$lBzehwXxrPn]DvK"> <field name="VAR" id="rj%T9d[hzdisrqMBMs~c" variabletype="">lüften</field> <value name="VALUE"> <block type="logic_boolean" id="N6yKt.X0pM]EP!W~s{8["> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> <block type="on_ext" id="LU?-LE$5/A%{Rp1nvPz$" x="-737" y="-387"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="oh-vMiHqJ#25/WA?.qHx"> <field name="oid">javascript.0.Datenpunkte.Taupunkt_aussen</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="-LFC6%hby8N#fx8OnOaC"> <field name="VAR" id="5POTvY=-juHOA|7KiQr)" variabletype="">tp aussen</field> <value name="VALUE"> <block type="get_value" id="$K:5*yLSi)uLB=tq}L_c"> <field name="ATTR">val</field> <field name="OID">javascript.0.Datenpunkte.Taupunkt_aussen</field> </block> </value> <next> <block type="procedures_callnoreturn" id="iR|wdA!yBp0}UbqCa0@F"> <mutation name="Hysterese"></mutation> </block> </next> </block> </statement> </block> <block type="on_ext" id="(-n!f)hvoZoMgmus$0e$" x="-738" y="-137"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="xp7To.fbATjEnhW{|^WQ"> <field name="oid">javascript.0.Datenpunkte.Taupunkt_innen</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="Q7g_!%,b3Ns+vMYmxF.["> <field name="VAR" id="]C@k|5-zrgj#k*APA|bN" variabletype="">tp innen</field> <value name="VALUE"> <block type="get_value" id="x^FGqvU4LHh1V6W!JmBE"> <field name="ATTR">val</field> <field name="OID">javascript.0.Datenpunkte.Taupunkt_innen</field> </block> </value> <next> <block type="procedures_callnoreturn" id="hrRz)o1S+[g$@RC#yGkD"> <mutation name="Hysterese"></mutation> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="km+TX33iz.jmu|tzM2sX" x="-1463" y="12"> <field name="NAME">Hysterese</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="controls_if" id=",]X8n{]$%iE(X/|!rY*+"> <mutation elseif="1" else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="!tqV^qhccI@@ly:}dK`d"> <field name="OP">GTE</field> <value name="A"> <block type="math_arithmetic" id="K)@.;6h}O%-AuJTN`cII" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="sa6+tu]@_/JNae.+_Xjv"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="}=5-H-)!5osC$[o5?F]2"> <field name="VAR" id="]C@k|5-zrgj#k*APA|bN" variabletype="">tp innen</field> </block> </value> <value name="B"> <shadow type="math_number" id="5GXI~/RP%jL1u^b3`6/A"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="qx3]+cU,-k5-y=W1C7US"> <field name="VAR" id="5POTvY=-juHOA|7KiQr)" variabletype="">tp aussen</field> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="S`a@].0**0jxP}%D+5+I"> <field name="NUM">4</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="NKpt*u+9jUHKrhGj|;)#"> <field name="VAR" id="Lv/#?]#gfWreC?fS%m4d" variabletype="">taupunkt</field> <value name="VALUE"> <block type="logic_boolean" id="0?u[vHgys+/YB([K~}E^"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="EvR#lQB2wi(9QlGsyW}K"> <field name="OP">LTE</field> <value name="A"> <block type="math_arithmetic" id="zXy-P8k?CegNZIL.-k3F" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="O#XZBrf7mB@E0e?eHg;H"> <field name="NUM">1</field> </shadow> <block type="variables_get" id=";h`e6@`ihftbu=#[_BjI"> <field name="VAR" id="]C@k|5-zrgj#k*APA|bN" variabletype="">tp innen</field> </block> </value> <value name="B"> <shadow type="math_number" id="JCp7JQHVZANJzb!s$(.x"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="hO5:E4xV@uFifCmVwk6R"> <field name="VAR" id="5POTvY=-juHOA|7KiQr)" variabletype="">tp aussen</field> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="U%%S2e!9]@.hCSD-=2uN"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO1"> <block type="variables_set" id="H%Op*=zYsC0:b!Glc$%,"> <field name="VAR" id="Lv/#?]#gfWreC?fS%m4d" variabletype="">taupunkt</field> <value name="VALUE"> <block type="logic_boolean" id="JN}=GE.;3v+ZO!)VOkxZ"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="debug" id="dR3VA4-M%Jk}7H3hNPO$"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="`sBF`/{u9sLT1kcX5rRh"> <field name="TEXT">Dazwischen </field> </shadow> <block type="text_join" id="(as;RzTfmo9*B*ulEnak"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="fQgW~gK-Uud|6$@8P-7%"> <field name="TEXT">Differenz ist </field> </block> </value> <value name="ADD1"> <block type="math_rndfixed" id="oXa|:|B3ht^)F8s?%;Gd"> <field name="n">2</field> <value name="x"> <shadow type="math_number" id="|r*YphS]OM~2:J}*xji@"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="{cz|%LcT@GYKxJ}l`QMB" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="O#XZBrf7mB@E0e?eHg;H"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="RKtB{yw1TK;tRM@skQ]7"> <field name="VAR" id="]C@k|5-zrgj#k*APA|bN" variabletype="">tp innen</field> </block> </value> <value name="B"> <shadow type="math_number" id="JCp7JQHVZANJzb!s$(.x"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="$7{K32uWQQ`y%xh[=fDA"> <field name="VAR" id="5POTvY=-juHOA|7KiQr)" variabletype="">tp aussen</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </statement> <next> <block type="procedures_callnoreturn" id="BhH+$GS6+uAw0g,tD`.V"> <mutation name="fenster"></mutation> </block> </next> </block> </statement> </block> </xml>
-
Dass "NaN" "Not a Number" bedeutet, hast du ja sicher bereits ergoogelt.
Häufig liegt das daran, dass ein Wert z.B. per String übermittelt wird und das falsche Format hat (also z.B. "0,5" statt "0.5").
Es ist schwierig mehr dazu zu sagen, solange du deine Frage/Beschreibung nicht etwas konkretisierst. Ich hab mir jetzt aber nicht die Mühe gemacht, das gesammte Script genau durchzusehen... -
@Hamudulu sagte:
Berechnungen mit NaN ausgibt.
Berechnungen erfolgen mit tp_innen und tp_aussen. Wandle beim Einlesen der Datenpunkte "nach Zahl", z.B.
setze tp_innen auf nach Zahl Wert -
Danke für die Tips. Ich hab es inzwischen umgebaut und die Berechnungen outgesourct...;-)
Jetzt klappt es wie es soll.Gefragt hatte ich deswegen weil es manchmal gerechnet hat, also mit Ergebnis im Log und Minuten später wieder NaN drin stand...
-
@Hamudulu said in Seltsames Verhalten von Berechnungen NaN:
Gefragt hatte ich deswegen weil es manchmal gerechnet hat, also mit Ergebnis im Log und Minuten später wieder NaN drin stand
Deshalb hatte ich ja die Komma Thematik vermutet. Solange ganze Zahlen kommen, kann automatisch konvertiert werden, kommt dann mal eine 5,1 gibts ein NaN als Ergebnis.