NEWS
[gelöst] simples addieren mehrerer Datenpunkte
-
Für dich @paul53 vermutlich mal wieder ein klax!? Vielleicht kannst du mir bei meiner Blocklyschwäche etwas nachhelfen !?
Ich werde noch verrückt!
Ich bekomme es einfach nihct hin mehrere Datenpunkte in einem Blockly zu addieren und dann in einen neuen Datenpunkt zu schreiben.Ich habe 6 Datenpunkte die zusammen addiert werden sollen.
Die dann in einen neuen Datenpunkt geschrieben werden sollen.
Ich weiß nicht was ich falsch mache.
Der Wert soll alle 60 min. aktualisiert werden. ( zum testen auf 10 sek. gestellt)
monentan steht in den sechs zu addierenden Datenpunkten jeweils 2 ml drin
sind bei mir 2 x 6 = 12 ml
wenn ich das per rechnung addiere kommen da 30 ml raus. wenn ich die variablen raus nehme kommt noch mehr raus.
Das habe ich bis jetzt:<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="cgnnxxh)eT1o%44nx(Hx">rechner_1</variable> <variable type="" id="6qmn$%%%nx;j/vlpVc1m">rechner_2</variable> <variable type="" id="[qSJi8.6hwEUNWl58lKH">rechner_3</variable> <variable type="" id="W17HGS=NncL3W}~%xQ/}">zusammen</variable> </variables> <block type="schedule" id="Lh%Gf6_E*)9oP!kwx^86" x="-37" y="89"> <field name="SCHEDULE">*/10 * * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="4OGA+?g@^P[@/Q-^RIM;"> <field name="VAR" id="cgnnxxh)eT1o%44nx(Hx" variabletype="">rechner_1</field> <value name="VALUE"> <block type="convert_tonumber" id="wVo`eP^h.i+kCy,xeb0M"> <value name="VALUE"> <block type="math_arithmetic" id="!g$[Ka65;eC(YRy+o0pA"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="P7SynfFPa!%j(K:|oiD;"> <field name="NUM">1</field> </shadow> <block type="get_value" id="ar|Q(vDQ$*Z)$uxM2$BX"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_1</field> </block> </value> <value name="B"> <shadow type="math_number" id="g,{dP+z_dpXxv5US?LPL"> <field name="NUM">1</field> </shadow> <block type="get_value" id="+g:Ydl3tnRRw7l^/4TWJ"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_2</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="|o[TFLT2N|YF?_9pqL9g"> <field name="VAR" id="6qmn$%%%nx;j/vlpVc1m" variabletype="">rechner_2</field> <value name="VALUE"> <block type="convert_tonumber" id="P5Wi3`z?|psjzu)%IgyU"> <value name="VALUE"> <block type="math_arithmetic" id="|%~CM^FH?bz+6S=(rcw|"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id=";`bAGo4T+bo:QWhS9%rp"> <field name="NUM">1</field> </shadow> <block type="get_value" id="yE~+M~V9eE#HA4pFIKq("> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_3</field> </block> </value> <value name="B"> <shadow type="math_number" id="KRap?Hm4?82OZqbNbtPB"> <field name="NUM">1</field> </shadow> <block type="get_value" id="^7C|3Q3DvOf!P#}K|d`."> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_4</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="@N}ui0_%Ysg(hydZAZc|"> <field name="VAR" id="[qSJi8.6hwEUNWl58lKH" variabletype="">rechner_3</field> <value name="VALUE"> <block type="convert_tonumber" id="6MPcA-$|(8cd*6@NC%}O"> <value name="VALUE"> <block type="math_arithmetic" id="KbRWwL|KXCvTWbfiYyK1"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="L4;~cQW-T.@h@E3|G@2n"> <field name="NUM">1</field> </shadow> <block type="get_value" id="1Ge$-/%ud}@pUE6j_Yo9"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_6</field> </block> </value> <value name="B"> <shadow type="math_number" id="I%buBwG)|dN=LU2A+2xp"> <field name="NUM">1</field> </shadow> <block type="get_value" id="p*or~S_}E!7?$gzZ=$H|"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_5</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="tIJ@^I.UKv3fdK{lIV`,"> <field name="VAR" id="W17HGS=NncL3W}~%xQ/}" variabletype="">zusammen</field> <value name="VALUE"> <block type="convert_tonumber" id="?s?w/M9kOyPeJf(3p*6["> <value name="VALUE"> <block type="math_arithmetic" id="6^EU?2g#_M/J9oQl#,CK"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Tp5ul$8qj,F=9CoRRAWm"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="~$7yX3?rs]glx]vlU[`~"> <field name="VAR" id="cgnnxxh)eT1o%44nx(Hx" variabletype="">rechner_1</field> </block> </value> <value name="B"> <shadow type="math_number" id="/urx=D2%,$A.a;W|AGL^"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="_|]=A2PcC~!4u!e_*)D:"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="/bCOcRpKb3I@J1,LwVDo"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="frq,^c.6M]p~zV|Ray/|"> <field name="VAR" id="6qmn$%%%nx;j/vlpVc1m" variabletype="">rechner_2</field> </block> </value> <value name="B"> <shadow type="math_number" id="I;;mR)K((kO@Exkifyz["> <field name="NUM">1</field> </shadow> <block type="variables_get" id="h#lgBSo[8g,X]ncEmLs_"> <field name="VAR" id="[qSJi8.6hwEUNWl58lKH" variabletype="">rechner_3</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="update" id="NIY}7$eJhTCdlbmj~Z?R"> <mutation delay_input="false"></mutation> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Verbrauch.Tagesdosierung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="HS}Qa#PJ4fOz$ri=hTS@"> <field name="VAR" id="W17HGS=NncL3W}~%xQ/}" variabletype="">zusammen</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@Aphofis
Wenn die Datenpunkte keine Zahlen enthalten, muss die Wandlung nach Zahl für jeden Wert erfolgen. Du verkettest erst 2 Strings und wandelst dann das Ergebnis in eine Zahl, was keine Addition ist. -
@paul53
Dei Datenpunkte sind als Zahl deklariert.
wie werden denn dann die datenpunkte zusammengerechnet wenn nicht addieren?Da macht die steuerung dann 822 ml draus.
-
@Aphofis sagte in:
Dei Datenpunkte sind als Zahl deklariert.
Das bedeutet nicht, dass sie auch wirklich eine Zahl enthalten. Prüfe es durch
debug output Typ von Wert von Objekt ...
-
@paul53
So ??? -
-
Dann kommt eine Ausgabe von:
javascript.0 2020-01-02 12:20:50.008 info (865) script.js.Dosierpumpen.Lösung_1.Tagesdosierung_Lösung_1: number
-
@Aphofis sagte:
javascript.0 2020-01-02 12:20:50.008 info (865) script.js.Dosierpumpen.Lösung_1.Tagesdosierung_Lösung_1: number
Bei allen 6 Werten ist die Ausgabe: number ? Dann ist die Wandlung nach Zahl überflüssig und die Berechnung muss stimmen.
-
@paul53
OK! dann nehme ich nach Zahl raus!
nunr bekomme ich jetzt im LOG eine Fehlermeldung:javascript.0 2020-01-02 12:29:20.015 warn (865) at Timer.processTimers (timers.js:223:10) javascript.0 2020-01-02 12:29:20.014 warn (865) at listOnTimeout (timers.js:263:5) javascript.0 2020-01-02 12:29:20.013 warn (865) at tryOnTimeout (timers.js:300:5) javascript.0 2020-01-02 12:29:20.011 warn (865) at ontimeout (timers.js:436:11) javascript.0 2020-01-02 12:29:20.010 warn (865) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) javascript.0 2020-01-02 12:29:20.009 warn (865) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 javascript.0 2020-01-02 12:29:20.008 warn (865) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) javascript.0 2020-01-02 12:29:20.007 warn (865) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1279:34) javascript.0 2020-01-02 12:29:20.005 warn (865) at Object.<anonymous> (script.js.Dosierpumpen.Lösung_1.Tagesdosierung_Lösung_1:9:3) javascript.0 2020-01-02 12:29:20.004 warn (865) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1364:20) javascript.0 2020-01-02 12:29:20.002 warn (865) You are assigning a string to the state "Aqua_Control.0.Triton.Lösung_1.Verbrauch.Tagesdosierung" which expects a number. Please fix your code to use a number or change the state type to string. javascript.0 2020-01-02 12:29:10.027 warn (865) at Timer.processTimers (timers.js:223:10) javascript.0 2020-01-02 12:29:10.024 warn (865) at listOnTimeout (timers.js:263:5) javascript.0 2020-01-02 12:29:10.022 warn (865) at tryOnTimeout (timers.js:300:5) javascript.0 2020-01-02 12:29:10.020 warn (865) at ontimeout (timers.js:436:11) javascript.0 2020-01-02 12:29:10.018 warn (865) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) javascript.0 2020-01-02 12:29:10.016 warn (865) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 javascript.0 2020-01-02 12:29:10.014 warn (865) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) javascript.0 2020-01-02 12:29:10.012 warn (865) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1279:34) javascript.0 2020-01-02 12:29:10.010 warn (865) at Object.<anonymous> (script.js.Dosierpumpen.Lösung_1.Tagesdosierung_Lösung_1:9:3) javascript.0 2020-01-02 12:29:10.007 warn (865) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1364:20) javascript.0 2020-01-02 12:29:10.004 warn (865) You are assigning a string to the state "Aqua_Control.0.Triton.Lösung_1.Verbrauch.Tagesdosierung" which expects a number. Please fix your code to use a number or change the state type to string.
-
@Aphofis sagte:
im LOG eine Fehlermeldung:
Dann ist mind. ein Ursprungswert keine Zahl, sondern ein String. Hast Du alle 6 Werte mit "Typ von" geprüft ?
-
@paul53
in einem Datenpunkt war noch ein Standardwert drin von 3 ml der da nix verloren hat! hab ich raus gelöscht.
Doch die Steuerung rechnet immer noch 822 ml aus.
Alle Datenpunkte geprüft, sind alle als Zahl erstellt und auch nix drin was da nix zu suchen hat.
Bis auf die Datenpunkt Namen ist im RAW auch nix auffällig! Sehen auch alle gleich aus.{ "from": "system.adapter.admin.1", "user": "system.user.admin", "ts": 1567993302050, "common": { "name": "Lösung_1_Faktor_1", "role": "value", "type": "number", "desc": "Manuell erzeugt", "unit": "ml", "read": true, "write": true, "def": false }, "native": {}, "acl": { "object": 1632, "owner": "system.user.admin", "ownerGroup": "system.group.admins", "state": 1632 }, "_id": "Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_1", "type": "state" }
-
@Aphofis sagte in simples addieren mehrerer Datenpunkte:
Sehen auch alle gleich aus.
Das hat nichts zu bedeuten, da man so nicht sieht, ob der Wert als Zahl oder als String enthalten ist. Nur die Prüfung mit "Typ von" zeigt, was tatsächlich enthalten ist. Zur Sicherheit solltes Du auf alle 6 Werte die Wandlung "nach Zahl" ausführen.
-
@paul53
ok i will try -
@paul53
Also das einsetzen bei allen 6 Datenpunkten ergab das erwünschte Ergebnis.!
Vielen Dank