NEWS
Berechnung der Liter in der Zisterne
-
Hallo Liebe iObroker Gemeinde,
ich würde gerne die Liter in meiner Zisterne Berechnen.
Der Homematic HM-Sen-Wa-Od Zeigt nur die % an, in der Web Oberfläche vom der CCU wird auch die Liter angezeigt.
Leider weis ich nicht wie ich an diesen Wert dran komme, also wollte ich es aus Rechnen.
Ihrgend was mache ich aber noch Falsch
Mein Errechneter Wert ist 100l bei 100% glaube da stimmt was nicht, 2000l Zisterne....Vielleicht sind ja noch ein paar mehr Leute daran interessiert.
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="%Uq5Ax[r/t,)3]fd-Z}q">FüllstandRechnen</variable> </variables> <block type="on_ext" id="sX3dvX;d5IBF}aD{Ckir" x="-262" y="188"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_Kq3@0ZHkP@`1mt/TuQx"> <field name="oid">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="12nbU}U93s)JH(HgC}vP"> <field name="VAR" id="%Uq5Ax[r/t,)3]fd-Z}q" variabletype="">FüllstandRechnen</field> <value name="VALUE"> <block type="math_arithmetic" id="_-P..:vIuH[_5KFJWVOL"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="eiu8z)}P5e?5EbTz`+.*"> <field name="NUM">2042</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="Z/t@gA(#a0:y1QTGw/DS"> <field name="NUM">2042</field> </shadow> <block type="get_value" id="V7B.u1}aXHA-~_pl}]Fy"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> </block> </value> <next> <block type="control" id="uPOmsadx{V_/0hs$@Tp?"> <mutation delay_input="false"></mutation> <field name="OID">Schalter.0.Garten.Füllstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="eArBci*jtBD35*3tOEvU"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id=".O;Nlluw|}7+C8aM6-(X"> <field name="NUM">2042</field> </shadow> <block type="variables_get" id="e]8WC[/PSND?1lBufupf"> <field name="VAR" id="%Uq5Ax[r/t,)3]fd-Z}q" variabletype="">FüllstandRechnen</field> </block> </value> <value name="B"> <shadow type="math_number" id="Z/t@gA(#a0:y1QTGw/DS"> <field name="NUM">2042</field> </shadow> <block type="get_value" id="S@%V`//TSU9KV2bf-Z!)"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> <block type="math_arithmetic" id="*pBe$b=5^cWL@F^jNIoi" disabled="true" x="613" y="588"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="CH,=mu:d`U1||]kT=jV)"> <field name="NUM">2042</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="Z/t@gA(#a0:y1QTGw/DS"> <field name="NUM">2042</field> </shadow> <block type="get_value" id="|4_+=|FhhOV_WBLlVh{q"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> </block> </xml>
Gruß
Amnesia -
Aktuelle % mal Fassungsvermögen/100
oder
aktuelle % mal 20
-
ich würde den "füllstand" mit einer kleinen verzögerung berechnen lassen, damit du sicher sein kannst, dass "füllstandrechnen" ausgeführt worden ist und den wert bereitstellt
-
Oki super danke werde beides umsetzen testen und dann noch mal schreiben wenn es geklappt hat denke
-
Es ist doch nur eine Zeile notwendig, dann braucht man keine Zeitverzögerung.
steuere Füllstand: [Formel von oben]
und: besser wäre aktualisiere anstatt steuere, denn es handelt sich ja nicht um einen Aktor, der geschaltet werden soll, sondern eine Liter-Angabe zwischen 0 und 2000, oder ?
-
@umbm stimmt auch wieder
-
Keine Ahnung warum aber bei mir steht immer nur 100l
Was mache ich Falsch ?<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="%Uq5Ax[r/t,)3]fd-Z}q">FüllstandRechnen</variable> </variables> <block type="on_ext" id="sX3dvX;d5IBF}aD{Ckir" x="-312" y="138"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_Kq3@0ZHkP@`1mt/TuQx"> <field name="oid">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="og}!7jZ2T%G_GX2]]:x="> <mutation delay_input="false"></mutation> <field name="OID">Schalter.0.Garten.Füllstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="*pBe$b=5^cWL@F^jNIoi"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="CH,=mu:d`U1||]kT=jV)"> <field name="NUM">0</field> </shadow> <block type="get_value" id="|4_+=|FhhOV_WBLlVh{q"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> <value name="B"> <shadow type="math_number" id="oF~)w#,ED/Dn=*@O9m-$"> <field name="NUM">20</field> </shadow> <block type="math_number" id="3=ixf}+o}{$yklNo5/!#"> <field name="NUM">20</field> </block> </value> </block> </value> </block> </statement> </block> <block type="variables_set" id="12nbU}U93s)JH(HgC}vP" disabled="true" x="-262" y="388"> <field name="VAR" id="%Uq5Ax[r/t,)3]fd-Z}q" variabletype="">FüllstandRechnen</field> <value name="VALUE"> <block type="math_arithmetic" id="_-P..:vIuH[_5KFJWVOL"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="eiu8z)}P5e?5EbTz`+.*"> <field name="NUM">2042</field> </shadow> <block type="get_value" id="V7B.u1}aXHA-~_pl}]Fy"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> <value name="B"> <shadow type="math_number" id="Z/t@gA(#a0:y1QTGw/DS"> <field name="NUM">2042</field> </shadow> </value> </block> </value> <next> <block type="control" id="uPOmsadx{V_/0hs$@Tp?" disabled="true"> <mutation delay_input="true"></mutation> <field name="OID">Schalter.0.Garten.Füllstand</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="eArBci*jtBD35*3tOEvU"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id=".O;Nlluw|}7+C8aM6-(X"> <field name="NUM">2042</field> </shadow> <block type="variables_get" id="e]8WC[/PSND?1lBufupf"> <field name="VAR" id="%Uq5Ax[r/t,)3]fd-Z}q" variabletype="">FüllstandRechnen</field> </block> </value> <value name="B"> <shadow type="math_number" id="wtN@v=!0#|F/4Wl2o{9+"> <field name="NUM">100</field> </shadow> </value> </block> </value> </block> </next> </block> <block type="control" id="`TP-xTQe93CL|T^`Uj?H" disabled="true" x="488" y="363"> <mutation delay_input="true"></mutation> <field name="OID">Schalter.0.Garten.Füllstand</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> </block> <block type="get_value" id="S@%V`//TSU9KV2bf-Z!)" disabled="true" x="463" y="513"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> <block type="field_oid" id=";9+f_SHT2.H|xetAx$lT" disabled="true" x="-237" y="563"> <field name="oid">Schalter.0.Garten.Füllstand_Akualisieren</field> </block> </xml>
-
Was steht denn im Datenpunkt "Erdtank_Filling_Level" genau drin?
Zahl oder Zahl mit %... oder? -
@liv-in-sky du hast das script auch aktiviert ? sorry für diese frage
-
-
Dann musst du die Zeichenkette erst um das % (und ggf Leerzeichen) bereinigen, so dass nur eine Zahl übrig bleibt.
Erst dann mit 20 multiplizieren.Die Blockly-Befehle findest du im Text-Bereich... (habe ich nicht im Kopf und bin nicht am PC)
Korrektur, jetzt wo ich deine Screenshots sehe:
Ist nicht nötig, denn der Datenpunkt ist als Zahl definiert. -
Bist du sicher, dass eine Aktualisierung der 100 % stattfindet, damit dein Trigger auslöst?
Setze mal den % Wert in den Objekten manuell auf 90 und schau, ob sich was ändert.
-
@umbm
Habe das mal beides getestet. Es bleibt bei 100 L egal was ich mache. Wenn ich die 100 L raus lösche
und von zB 100% auf 80% den Füllstand setze kommen die 100L bei dem Füllstand wieder. Die Aktualisierung der % (Füllhöhe Tank) wird von der CCU aktualisiert im Zyklus glaube ich aber sicher bin ich mir da nicht, als ich die Sensorleitung Kalibriert habe hat sich der Wert auf jeden Fall schön verändert.Die Konvertierung von % nach Zahl habe ich auch getestet aber es hat leider nichts gebracht.
-
Ändere mal den Namen des Ziel-Datenpunktes
Schalter.0.Garten.Füllstand
auf
Schalter.0.Garten.Fuellstand
also den Umlaut entfernen, ich glaube in der ID der Objekte dürfen keine Sonderzeichen vorkommen, nur im Namen.
Wenn das nichts bringt erstmal ein
debug output
vor aktualisiere, um im Log zu prüfen, ob der Trigger überhaut auslöst.
-
@umbm
Also glaube ich habe es gelöst, mit dem Sonderzeichen war eine super Idee aber leider kein erfolg gehabt.
Habe ein Objekt angelegt was gemischt ist, warum es jetzt geht keine Ahnung aber wenn ich den Prozent wert änder
Rechnet er die Liter Richtig aus "Juppi "
Die Sonderzeichen habe ich vorsichtshalber auch weg gelassen.Herzlichen Dank für die tolle Hilfe !!!!!!!
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="%Uq5Ax[r/t,)3]fd-Z}q">FüllstandRechnen</variable> </variables> <block type="on_ext" id="sX3dvX;d5IBF}aD{Ckir" x="-312" y="113"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_Kq3@0ZHkP@`1mt/TuQx"> <field name="oid">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="0CrUZF#mi5sy@3x*4CAX"> <value name="IF0"> <block type="logic_operation" id="=*?(#q-crM!E`,$@/-ZN" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="get_value" id="oefjwsl`@Z@!wccDC0aS"> <field name="ATTR">val</field> <field name="OID">Schalter.0.Garten.Füllstand_Akualisieren</field> </block> </value> <value name="B"> <block type="get_value" id="S@%V`//TSU9KV2bf-Z!)"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="og}!7jZ2T%G_GX2]]:x="> <mutation delay_input="false"></mutation> <field name="OID">Schalter.0.Garten.FuellstandTank</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="*pBe$b=5^cWL@F^jNIoi"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="CH,=mu:d`U1||]kT=jV)"> <field name="NUM">0</field> </shadow> <block type="get_value" id="|4_+=|FhhOV_WBLlVh{q"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> <value name="B"> <shadow type="math_number" id="oF~)w#,ED/Dn=*@O9m-$"> <field name="NUM">20</field> </shadow> <block type="math_number" id="3=ixf}+o}{$yklNo5/!#"> <field name="NUM">20</field> </block> </value> </block> </value> </block> </statement> </block> </statement> </block> <block type="variables_set" id="12nbU}U93s)JH(HgC}vP" disabled="true" x="-262" y="389"> <field name="VAR" id="%Uq5Ax[r/t,)3]fd-Z}q" variabletype="">FüllstandRechnen</field> <value name="VALUE"> <block type="math_arithmetic" id="_-P..:vIuH[_5KFJWVOL"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="eiu8z)}P5e?5EbTz`+.*"> <field name="NUM">2042</field> </shadow> <block type="get_value" id="V7B.u1}aXHA-~_pl}]Fy"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1012859.1.FILLING_LEVEL</field> </block> </value> <value name="B"> <shadow type="math_number" id="Z/t@gA(#a0:y1QTGw/DS"> <field name="NUM">2042</field> </shadow> </value> </block> </value> <next> <block type="control" id="uPOmsadx{V_/0hs$@Tp?" disabled="true"> <mutation delay_input="true"></mutation> <field name="OID">Schalter.0.Garten.Füllstand</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="eArBci*jtBD35*3tOEvU"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id=".O;Nlluw|}7+C8aM6-(X"> <field name="NUM">2042</field> </shadow> <block type="variables_get" id="e]8WC[/PSND?1lBufupf"> <field name="VAR" id="%Uq5Ax[r/t,)3]fd-Z}q" variabletype="">FüllstandRechnen</field> </block> </value> <value name="B"> <shadow type="math_number" id="wtN@v=!0#|F/4Wl2o{9+"> <field name="NUM">100</field> </shadow> </value> </block> </value> </block> </next> </block> <block type="field_oid" id=";9+f_SHT2.H|xetAx$lT" disabled="true" x="-237" y="563"> <field name="oid">Schalter.0.Garten.Füllstand_Akualisieren</field> </block> <block type="control" id="`TP-xTQe93CL|T^`Uj?H" disabled="true" x="263" y="538"> <mutation delay_input="true"></mutation> <field name="OID">Schalter.0.Garten.Füllstand</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> </block> </xml>
Vorgehensweise:
Unter Objects in iobroker ein neues Objekt anlegen.
Unter Javascript das Blockly Javascript einfügen
und die Objekte auswählen, FILLING_LEVEL und FuellstandTank
das ODER kann raus gelöscht werden war nur ein TEST. -
Du kannst neue Datenpunkte auch direkt aus Blockly heraus anlegen lassen, das damit vereinfachen und Fehler vermeiden.
Ich hatte dazu mal vor längerer Zeit einen Tipp hier im Forum erhalten (Ich glaube von @paul53) , finden das Thema nach der Forumumstellung aber nicht mehr (Link ist tot).
Deshalb hier kurz der Code und die Erläuterung.
Wenn du den Code in ein Blockly importierst, hast du 3 Funktionen, damit unter "Funktionen" auch 3 neue Blöcke, die du nutzen kannst, um bei Bedarf neue Datenpunkte (Typ Number,String oder Bool) anzulegen.Wenn du den Block gleich zu Beginn einfügst, wird der neue DP direkt nach dem Start des Scripts angelegt.
Hier der Code:
-
@umbm
Sehr geil, danke dafür werde ich gleich mal testen !!! -
@umbm Warum nicht der "Datenpunkt erzeugen" Block?
-
@thewhobox sagte in Berechnung der Liter in der Zisterne:
@umbm Warum nicht der "Datenpunkt erzeugen" Block?
Weil dieser Block nur im javascript Adapters latest Repo verfügbar ist?
-
@FredF Nein den gibt es schon ewig. Ich habe ihn nur um "InitWert" und "Common" ergänzt.