NEWS
Wasserzähler - Selfmade
-
Ich hatte mir ein 3d-Gehäuse erstellt und dort ein kleines Loch vorgesehen, wodurch die LED dann beleuchten kann. Das Loch war aber nur so groß wie die LED selbst, so dass die Ausleuchtung schlecht war, da nur in einem kleinen Winkel ausgeleuchtet wurde. Habe das Loch jetzt größer gemacht, so dass die LED in einem größeren Winkel strahlen kann.
Der Abstand von dem Objektiv bis zur Wasseruhr ist ziemlich genau 10cm. -
PS nur als Tipp, falls das Glas spiegelt.
Ich habe kein schwarzes Isolierband genommen, da dieses auch spiegelt.
Ich habe einen schwarzen Filz-Untersetzer genommen (die kleinen Filz Füßchen die man unter Gegenstände kleben kann).
Da dieses Matt ist kann nix spiegeln und eine klebende Unterfläche ist auch mit dabei, so dass es nicht so leicht verrutschen kannHabe jetzt alles fertig installiert. Habe die Kamera richtig fixiert und die 5V Stromversorgung hingelegt und fertig installiert.
Musst nochmal die Marker leicht anpassen, da sich dadurch die Kameraposition wieder minimal geändert hatte, war aber kein Problem.
Man sollte die Kamera auf jeden die Fall möglichst so installieren, damit man die gleiche Position leicht wieder einstellen kann.
Ich habe mir dazu ein 3d Gehäuse ausgedruckt mit dem ich die Linse exakt über dem Mittelpunkt der Wasseruhr positionieren kann.
Das ist natürlich bei jedem etwas anders.Bin jedenfalls froh jetzt den Wasserzähler fertig zu haben, ging schneller und einfacher als ich dachte.
Das Ergebnis kann sich sehen lassenDanke an alle Helfer und vorallem an @jomjol für das tolle Projekt
-
Was mir gerade einfällt, was mir aber noch fehlt ist die Automatisierung und Integration in IoBroker.
Wie wird das realisiert?Automatisierung meine ich, damit z.B. jeden Tag 1x ein Bild gemacht wird und damit die Daten aufbereitet und zur Verfügung gestellt werden über http://192.168.178.115:3000/wasserzaehler.html
Und dann halt die Frage wie bekomme ich den Wert von der HTML-Seite dann in den IoBroker als Datenpunkt? -
@Atifan Würdest du dein Gehäuse einmal teilen?
Für das Auswerten gibt es den Parser Adapter.
UNter RegEx gibst du folgendes ein: [N|0-9][N|0-9][N0-9][N|0-9][N|0-9]\D\d\d\d\d
Das Intervall kannst du hinten selbst in ms einstellen. Am Ende hast du ein Objekt welches er ausgewertet hat. -
Ah super, Danke!
Ja hier ist mein Gehäuse inkl. Halterung.
Besteht aus 2 Teilen und kann z.B. mit doppelseitigem Montageband zusammengeklebt werden.
Die Linse der CAM hat genau einen Abstand von 8cm von der Wand, wo der Halter befestigt ist.
Der Abstand kann aber auch noch einige cm vergrößert werden.
Ist halt auf meine Örtlichkeiten abgestimmt, sollte aber bei den meisten nutzbar sein.
Ich habe die CAM dann einfach mit Isolierband am Halter fixiert.
Es ist eigentlich noch ein Prototyp, aber er erfüllt so auch seinen Zweck, daher habe ich es einfach so gelassen
Man muss den Halter eigentlich nur so einstellen, dass die Linse möglichst genau über der Mitte des Zählers sitzt.
Dann den Halter in der Höhe über der Wasseruhr im optimalen Abstand befestigen.
Bei mir waren das genau 10cm von der Linse der CAM zur Glasoberfläche der Wasseruhr.
Dafür muss ggf. die Linse justiert werden, damit das Bild scharf wird.Hier die 3D-Dateien zum Drucken:
Kamerahalter.stl
Wandhalter.stl
Werkzeug_Focus_Linse_einstellen.stl -
So habe den Parser installiert und jetzt auch einen Datenpunkt im IoBroker
Allerdings alle Ziffern aneinander gereiht ohne Trennung der Nachkommastellen durch ein Komma.
Wie kann ich das konvertieren in eine Zahl mit Komma?
Muss man das irgendwie über ein Script machen, oder geht das mit dem Parser selbst irgendwie? -
@Atifan ja, mit Blockly z.B.:
BlocklyJavascriptTypeScript Protokoll Ausgewählte Blöcke exportieren <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout">timeout</variable> <variable type="" id="jD*[#Zlic1jmyurL%.%b">Wasser</variable> <variable type="" id="~k/J85:%xN;|@?V$RZcW">Wasser2</variable> </variables> <block type="comment" id="{)~[qYJwM%HmTqZC[Dme" x="-1712" y="-337"> <field name="COMMENT">Werte von Url Ausgabe aufbereiten und als Zahl in neuen DB</field> <next> <block type="on_ext" id="O@t;)N+2$SFNG$?Gf{h2"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="9K|x1o#+%6GQb*;p%3O#"> <field name="oid">parser.0.Wasserzähler</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="W]bzQri^_8bvqpKQOrEV"> <field name="NAME">timeout</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="5w0B^2Jki=M**PAtqc+u"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> <value name="VALUE"> <block type="get_value" id=";?U(`UWCL4fsnK8#0#*["> <field name="ATTR">val</field> <field name="OID">parser.0.Wasserzähler</field> </block> </value> <next> <block type="variables_set" id="ixFd@J8)L1oE}OCVbtYq"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> <value name="VALUE"> <block type="text_join" id="/fqyB}E;PHmjBsJJ`0Fh"> <mutation items="10"></mutation> <value name="ADD0"> <block type="text_charAt" id="c^Wp3sQYKpQm*,auXf|d"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="ZS^Aqg]EMO47s.%5Cci="> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="S/t?G1M,9B!i}FB8%H^U"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_charAt" id="n8Z8R06]mBKtjqxyd/dC"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="[f+Iv#3h5{Q#ZJU-i2Da"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="Nl5$?TbSG3ENylE6b+K,"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text_charAt" id="$)Z@wOl%r9=!ZKX.e3=t"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="5%b=Jfu)q8+xH%o!iyKv"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="C^4v;3LRpf[9$`Qmgf$R"> <field name="NUM">3</field> </block> </value> </block> </value> <value name="ADD3"> <block type="text_charAt" id=")kR!i)u|Q@c`InlI,CR7"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="2A8HOWwO7*xwq#o;?V%~"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="n]Lr=8Nab,nm{(j#I_)R"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="ADD4"> <block type="text_charAt" id="^9^~rSmH!/^lg1/NA0-C"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="Af%qM3b3ywEBoWGE*P8V"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="F4t@9e.{|~aH[lP_n`W5"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="ADD5"> <block type="text" id="jG9:2)cUJILX/H-Lwy~t"> <field name="TEXT">.</field> </block> </value> <value name="ADD6"> <block type="text_charAt" id="kJ_eC,oa_KKeEhwykd:J"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="-y({kI6sfR,nQAjVkA]A"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="hr%jA*b+T]5*Ca|K9m+4"> <field name="NUM">7</field> </block> </value> </block> </value> <value name="ADD7"> <block type="text_charAt" id="5.{HXUkih?pbuhQ3mL)E"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="H=fwgeU*yM2BO1So/@rJ"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="Up65|^q^LW$4[4{Q2Kvh"> <field name="NUM">8</field> </block> </value> </block> </value> <value name="ADD8"> <block type="text_charAt" id="ds.0fi_$#ZlQ+?RhAo,4"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="O|qHH_xUhqy?KE+,cKX2"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="bLvs%(U/*rs$Ld9Al1[+"> <field name="NUM">9</field> </block> </value> </block> </value> <value name="ADD9"> <block type="text_charAt" id="6OR:#lbqI-PRhCHNec9^"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id=":H4e}P$k[XW1ul.ATEA5"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="X4xw.sN^lzaqf}IPF.jh"> <field name="NUM">10</field> </block> </value> </block> </value> </block> </value> <next> <block type="controls_if" id="$P:fhhnwqk@4SvH6q=5^"> <value name="IF0"> <block type="logic_compare" id="*=z?K_m51EIoRSSK/w}U"> <field name="OP">GT</field> <value name="A"> <block type="convert_tonumber" id="5^.QRcEwUL$Lg,T0_oph"> <value name="VALUE"> <block type="variables_get" id="3;%P}e4!!Bi#A0aYPWzW"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> </block> </value> </block> </value> <value name="B"> <block type="get_value" id="F36%k@nOKHW[xF}vzuN["> <field name="ATTR">val</field> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.aktuell</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="}H:tvHd.Um_A0=1n(#H`"> <mutation delay_input="false"></mutation> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.alt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="4yQLmrM#}),JeR0`I31~"> <field name="ATTR">val</field> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.aktuell</field> </block> </value> <next> <block type="update" id="C+OTgRq*HWw;Zu#*fDhE"> <mutation delay_input="false"></mutation> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.aktuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="0`|;Y~sT)dBbK`1D3S)V"> <value name="VALUE"> <block type="variables_get" id="vAxwr8UK-qi#!psdG%Bc"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml> <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout">timeout</variable> <variable type="" id="jD*[#Zlic1jmyurL%.%b">Wasser</variable> <variable type="" id="~k/J85:%xN;|@?V$RZcW">Wasser2</variable> </variables> <block type="comment" id="{)~[qYJwM%HmTqZC[Dme" x="-1712" y="-337"> <field name="COMMENT">Werte von Url Ausgabe aufbereiten und als Zahl in neuen DB</field> <next> <block type="on_ext" id="O@t;)N+2$SFNG$?Gf{h2"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="9K|x1o#+%6GQb*;p%3O#"> <field name="oid">parser.0.Wasserzähler</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="W]bzQri^_8bvqpKQOrEV"> <field name="NAME">timeout</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="5w0B^2Jki=M**PAtqc+u"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> <value name="VALUE"> <block type="get_value" id=";?U(`UWCL4fsnK8#0#*["> <field name="ATTR">val</field> <field name="OID">parser.0.Wasserzähler</field> </block> </value> <next> <block type="variables_set" id="ixFd@J8)L1oE}OCVbtYq"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> <value name="VALUE"> <block type="text_join" id="/fqyB}E;PHmjBsJJ`0Fh"> <mutation items="10"></mutation> <value name="ADD0"> <block type="text_charAt" id="c^Wp3sQYKpQm*,auXf|d"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="ZS^Aqg]EMO47s.%5Cci="> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="S/t?G1M,9B!i}FB8%H^U"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_charAt" id="n8Z8R06]mBKtjqxyd/dC"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="[f+Iv#3h5{Q#ZJU-i2Da"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="Nl5$?TbSG3ENylE6b+K,"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text_charAt" id="$)Z@wOl%r9=!ZKX.e3=t"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="5%b=Jfu)q8+xH%o!iyKv"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="C^4v;3LRpf[9$`Qmgf$R"> <field name="NUM">3</field> </block> </value> </block> </value> <value name="ADD3"> <block type="text_charAt" id=")kR!i)u|Q@c`InlI,CR7"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="2A8HOWwO7*xwq#o;?V%~"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="n]Lr=8Nab,nm{(j#I_)R"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="ADD4"> <block type="text_charAt" id="^9^~rSmH!/^lg1/NA0-C"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="Af%qM3b3ywEBoWGE*P8V"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="F4t@9e.{|~aH[lP_n`W5"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="ADD5"> <block type="text" id="jG9:2)cUJILX/H-Lwy~t"> <field name="TEXT">.</field> </block> </value> <value name="ADD6"> <block type="text_charAt" id="kJ_eC,oa_KKeEhwykd:J"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="-y({kI6sfR,nQAjVkA]A"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="hr%jA*b+T]5*Ca|K9m+4"> <field name="NUM">7</field> </block> </value> </block> </value> <value name="ADD7"> <block type="text_charAt" id="5.{HXUkih?pbuhQ3mL)E"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="H=fwgeU*yM2BO1So/@rJ"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="Up65|^q^LW$4[4{Q2Kvh"> <field name="NUM">8</field> </block> </value> </block> </value> <value name="ADD8"> <block type="text_charAt" id="ds.0fi_$#ZlQ+?RhAo,4"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="O|qHH_xUhqy?KE+,cKX2"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="bLvs%(U/*rs$Ld9Al1[+"> <field name="NUM">9</field> </block> </value> </block> </value> <value name="ADD9"> <block type="text_charAt" id="6OR:#lbqI-PRhCHNec9^"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id=":H4e}P$k[XW1ul.ATEA5"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="X4xw.sN^lzaqf}IPF.jh"> <field name="NUM">10</field> </block> </value> </block> </value> </block> </value> <next> <block type="controls_if" id="$P:fhhnwqk@4SvH6q=5^"> <value name="IF0"> <block type="logic_compare" id="*=z?K_m51EIoRSSK/w}U"> <field name="OP">GT</field> <value name="A"> <block type="convert_tonumber" id="5^.QRcEwUL$Lg,T0_oph"> <value name="VALUE"> <block type="variables_get" id="3;%P}e4!!Bi#A0aYPWzW"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> </block> </value> </block> </value> <value name="B"> <block type="get_value" id="F36%k@nOKHW[xF}vzuN["> <field name="ATTR">val</field> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.aktuell</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="}H:tvHd.Um_A0=1n(#H`"> <mutation delay_input="false"></mutation> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.alt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="4yQLmrM#}),JeR0`I31~"> <field name="ATTR">val</field> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.aktuell</field> </block> </value> <next> <block type="update" id="C+OTgRq*HWw;Zu#*fDhE"> <mutation delay_input="false"></mutation> <field name="OID">admin.0.Datenpunkte.Energie.Wasserzähler.aktuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="0`|;Y~sT)dBbK`1D3S)V"> <value name="VALUE"> <block type="variables_get" id="vAxwr8UK-qi#!psdG%Bc"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
-
Hi thx für das Script.
Es geht aber auch einfacher direkt über den Parser selbst.
Einfach als TYP "number" einstellen mit dem FAKTOR "0.0001" -
@watcherkb Hi watcherkb, bei der dritten Stelle beim Parser RegEX fehlt ein Querstrich [N|0-9][N|0-9][N0-9][N|0-9][N|0-9]\D\d\d\d\d richtig:
[N|0-9][N|0-9][N|0-9][N|0-9][N|0-9]\D\d\d\d\d -
@pfried sagte in Wasserzähler - Selfmade:
@watcherkb Hi watcherkb, bei der dritten Stelle beim Parser RegEX fehlt ein Querstrich [N|0-9][N|0-9][N0-9][N|0-9][N|0-9]\D\d\d\d\d richtig:
[N|0-9][N|0-9][N|0-9][N|0-9][N|0-9]\D\d\d\d\dHm du hast recht. Es funktioniert aber komischerweise auch ohne den Strich
-
@Atifan Hi Atifan, hast Du eine HomeMatic hinter dem IOBroker, wenn ja kann ich Dir ein Script schicken wie Du auf:
Wasserzähler_5_Minuten
Wasserzähler_heute
Wasserzähler_gestern
Wasserzähler_Woche
Wasserzähler_letzte_Woche
Wasserzähler_Monat
Wasserzähler_letztes_Monat
Wasserzähler_Jahr
Wasserzähler_letztes_Jahrkommst. Geht natürlich auch nach Anpassung mit Datenpunkte im IOBrocker.
-
Hi, nein hab ich nicht.
Aber sowas wäre evtl. nice.
Kannst es aber mal schicken, wenn ich Lust und Zeit habe baue ich mir da auf jeden Fall was damit ich sowas schauen kann.
Wollte das gleiche auch noch für den Stromverbrauch machen. Das wäre ja das gleiche Prozedere -
@Atifan Hi Atifan, ist ein Blocky Script. Brauchst nur die Datenpunkte von Homematic Rega auf javascript.0. ändern.
Nachtrag: Ich bin kein Meister im Programmieren wie die meisten hier. Da sind auch noch Korrekturen drinnen falls eine Stelle einmal N zeigt, braucht man aber nicht mehr, da das @jomjol bereits mit PreValue abfängt. Ist schon alt das Script, funktioniert aber immer noch.<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout2">timeout2</variable> <variable type="" id="zfu,1UqZOyai!fg:_U4p">N_im_Text</variable> <variable type="undefined" id="timeout4">timeout4</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="timeout3">timeout3</variable> <variable type="" id="jD*[#Zlic1jmyurL%.%b">Wasser</variable> <variable type="" id="fb%^b%(.P(De7B%I+^fp">Wasserverbrauch_alt_speichern</variable> <variable type="" id="~k/J85:%xN;|@?V$RZcW">Wasser2</variable> <variable type="" id="S~g:}fW6Tm:Aw?GxUkaZ">Wasser gerechnet</variable> </variables> <block type="comment" id="nZLIgu,pmh4[2*$0MI%?" x="-1713" y="-1387"> <field name="COMMENT">Prüfen ob eine Ziffer nicht erkannt wurde</field> <next> <block type="on_ext" id="4Psx1wuqrX65nv_lkDB}"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="3Q)hsz!uvKk?{unC*,0E"> <field name="oid">parser.0.Wasserzähler</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="l78P,L,|)=TmuSTJXA9E"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> <value name="VALUE"> <block type="logic_boolean" id="]]zQ?kG1yVgGd;H$$;Ys"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_settimeout" id="VbU2`#`Hd5Kc]ZBmhG1M"> <field name="NAME">timeout3</field> <field name="DELAY">0</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="uWWkh~VkcQQIsuD*NR9V"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> <value name="VALUE"> <block type="get_value" id="-0mM3|A(|$)E;b3,1X]J"> <field name="ATTR">val</field> <field name="OID">parser.0.Wasserzähler</field> </block> </value> <next> <block type="controls_if" id="I=GaZ!Nrc@[K8:N9Sm,D"> <value name="IF0"> <block type="logic_compare" id="EwFaq9y|5782[BWJaH^#"> <field name="OP">EQ</field> <value name="A"> <block type="text_charAt" id="3*@(POlgE#wjssZKLjSA"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="b[Zz?/jAL}J_]+/Uk0:)"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="MIeM1:YfeF}qMi+!nSt%"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="y)[:[1m0P;xT{PjKHF!*"> <field name="TEXT">N</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="jh(drW1E|[7D5vwUdv*`"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> <value name="VALUE"> <block type="logic_boolean" id="2djgkz}mxDM-M93`:~`f"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="TWTI{QK2eX8#VAW8ij`@"> <value name="IF0"> <block type="logic_compare" id="f3iSYOA2uW6}sbUEQJ1d"> <field name="OP">EQ</field> <value name="A"> <block type="text_charAt" id="ztr]f-V:Ut,,5JHY.0$E"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="F;7k=Y3iSLnVVe|5O!57"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="G,gb1p3rND4GR+y{|_qR"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="f+3Cd1pz8w^pM)8T/|*J"> <field name="TEXT">N</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id=";Kx$z$Dj8aUrdEs4|=%`"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> <value name="VALUE"> <block type="logic_boolean" id="bH%Vbyv0W,l)*KftU[%S"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="K$=Kv6vy!F0rsf#ma%FW"> <value name="IF0"> <block type="logic_compare" id="3}.UU0![y_B]?k2Gp(cu"> <field name="OP">EQ</field> <value name="A"> <block type="text_charAt" id=";[BKka|7Z6RW5VdATLu2"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id=".lA4b]Bta9]}WM5z;]uV"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id=")Qrq%1u+]FBFY:/s^C*y"> <field name="NUM">3</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="+ZICLVFRp3UrO}hrMGkS"> <field name="TEXT">N</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="XMhVUQcbzJ7h5[{[J+Rk"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> <value name="VALUE"> <block type="logic_boolean" id="xU(vKJpyP=Iw7m5r6=M{"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="HE}JD5@jOH1kiNLmSJ:;"> <value name="IF0"> <block type="logic_compare" id="pf6,;IJcxi_(I[ImZ;%k"> <field name="OP">EQ</field> <value name="A"> <block type="text_charAt" id="mI%l]lGK@}z#V_u2{Ps/"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id=")ljL(L]lnK6tX1q[WS!u"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="RZSIu#kLp7W3#Z2se%J`"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="+672=khzSucvunzzOkA("> <field name="TEXT">N</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="HIb1QBJi|.9iRy85kDi{"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> <value name="VALUE"> <block type="logic_boolean" id="._E0`:B/h4S4TM`o;;JD"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="yO;83xmtqcovzb-XE{Yq"> <value name="IF0"> <block type="logic_compare" id="lD53c(tC83lf9@Mh,@*t"> <field name="OP">EQ</field> <value name="A"> <block type="text_charAt" id="74U6Na,4^*HvdSB0_7_7"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="p[;^iJ2M)uYVqLu.!VeS"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="~SZJjV@-w9Gt~wir5Y;u"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="Vm~;!mTb0a+}IX(I.NkH"> <field name="TEXT">N</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="3GLUD;3nkL#Rp}Hq,rPg"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> <value name="VALUE"> <block type="logic_boolean" id="HS6:ny3]LBhELSe1$nUe"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="sX==%Xr,vf/nfU@mF#iZ" x="-1712" y="-688"> <field name="COMMENT">Sichern der alten Werte des Wasserzählers</field> <next> <block type="on_ext" id="@zG4;]iYO[gk6PE9A8Bd"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="bo2gx?dIMh?:HL#A@*J["> <field name="oid">parser.0.Wasserzähler</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="MwjIy*6UD(bdeg8QIf8K"> <field name="NAME">timeout4</field> <field name="DELAY">250</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="Vu5M,h^D6M]9)dVerK4%"> <value name="IF0"> <block type="logic_negate" id="/4/x_C_VaOWU,JmoRiik"> <value name="BOOL"> <block type="variables_get" id="E,yGnK7~7A]2_/dWvY*u"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="wR=JtsBFCJou1i6LdCw~"> <field name="VAR" id="fb%^b%(.P(De7B%I+^fp" variabletype="">Wasserverbrauch_alt_speichern</field> <value name="VALUE"> <block type="get_value" id="pL9_YEK1IWWA6.!#W)bd"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_alt</field> </block> </value> <next> <block type="control" id="6DzKEv?-~d]3U=;Btcop"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_alt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="o5`@Rv8Ul:#hrNuvl,2|"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_aktuell</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> <block type="comment" id="{)~[qYJwM%HmTqZC[Dme" x="-1712" y="-387"> <field name="COMMENT">Werte von Url Ausgabe aufbereiten und als Zahl speichern</field> <next> <block type="on_ext" id="O@t;)N+2$SFNG$?Gf{h2"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="9K|x1o#+%6GQb*;p%3O#"> <field name="oid">parser.0.Wasserzähler</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="W]bzQri^_8bvqpKQOrEV"> <field name="NAME">timeout</field> <field name="DELAY">500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id=":rm8C$hO?yH8mM%Kx6bx"> <value name="IF0"> <block type="logic_negate" id="=N[2[gl[^Ebh85PI12?Z"> <value name="BOOL"> <block type="variables_get" id="dCBwWLl.K]_};D%I0@fz"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="ixFd@J8)L1oE}OCVbtYq"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> <value name="VALUE"> <block type="text_join" id="/fqyB}E;PHmjBsJJ`0Fh"> <mutation items="10"></mutation> <value name="ADD0"> <block type="text_charAt" id="c^Wp3sQYKpQm*,auXf|d"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="ZS^Aqg]EMO47s.%5Cci="> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="S/t?G1M,9B!i}FB8%H^U"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_charAt" id="n8Z8R06]mBKtjqxyd/dC"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="[f+Iv#3h5{Q#ZJU-i2Da"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="Nl5$?TbSG3ENylE6b+K,"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text_charAt" id="$)Z@wOl%r9=!ZKX.e3=t"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="5%b=Jfu)q8+xH%o!iyKv"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="C^4v;3LRpf[9$`Qmgf$R"> <field name="NUM">3</field> </block> </value> </block> </value> <value name="ADD3"> <block type="text_charAt" id=")kR!i)u|Q@c`InlI,CR7"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="2A8HOWwO7*xwq#o;?V%~"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="n]Lr=8Nab,nm{(j#I_)R"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="ADD4"> <block type="text_charAt" id="^9^~rSmH!/^lg1/NA0-C"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="Af%qM3b3ywEBoWGE*P8V"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="F4t@9e.{|~aH[lP_n`W5"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="ADD5"> <block type="text" id="jG9:2)cUJILX/H-Lwy~t"> <field name="TEXT">.</field> </block> </value> <value name="ADD6"> <block type="text_charAt" id="kJ_eC,oa_KKeEhwykd:J"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="-y({kI6sfR,nQAjVkA]A"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="hr%jA*b+T]5*Ca|K9m+4"> <field name="NUM">7</field> </block> </value> </block> </value> <value name="ADD7"> <block type="text_charAt" id="5.{HXUkih?pbuhQ3mL)E"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="H=fwgeU*yM2BO1So/@rJ"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="Up65|^q^LW$4[4{Q2Kvh"> <field name="NUM">8</field> </block> </value> </block> </value> <value name="ADD8"> <block type="text_charAt" id="ds.0fi_$#ZlQ+?RhAo,4"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="O|qHH_xUhqy?KE+,cKX2"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="bLvs%(U/*rs$Ld9Al1[+"> <field name="NUM">9</field> </block> </value> </block> </value> <value name="ADD9"> <block type="text_charAt" id="6OR:#lbqI-PRhCHNec9^"> <mutation at="true"></mutation> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id=":H4e}P$k[XW1ul.ATEA5"> <field name="VAR" id="jD*[#Zlic1jmyurL%.%b" variabletype="">Wasser</field> </block> </value> <value name="AT"> <block type="math_number" id="X4xw.sN^lzaqf}IPF.jh"> <field name="NUM">10</field> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="K2vn9_SQgwL|)u!!gl1|"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_aktuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="0`|;Y~sT)dBbK`1D3S)V"> <value name="VALUE"> <block type="variables_get" id="vAxwr8UK-qi#!psdG%Bc"> <field name="VAR" id="~k/J85:%xN;|@?V$RZcW" variabletype="">Wasser2</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> <block type="on_ext" id="g0!@tN:hJ5,@IC03]C(R" x="-1688" y="238"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="i*|8`Z*]C1Z-aKXfx4qF"> <field name="oid">javascript.0.Wasserverbrauch.Wasserverbrauch_aktuell</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="9)silgejCBBBlJ^K5*h."> <field name="NAME">timeout2</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="GG1Odf{~p%XYL,K[o1Q8"> <value name="IF0"> <block type="logic_negate" id=":fsE:_dtR_p:Udf+gj.h"> <value name="BOOL"> <block type="variables_get" id="b(}df.E_Ka%ElAuzjlqi"> <field name="VAR" id="zfu,1UqZOyai!fg:_U4p" variabletype="">N_im_Text</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="$_^*U)oNg;J39mNWX7iv"> <value name="IF0"> <block type="logic_compare" id="R+]z+~$9PRX.!`-n2j$_"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="1Q.u,.7hmJgpxgTS!yJJ"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_aktuell</field> </block> </value> <value name="B"> <block type="get_value" id="*^w0O6:fgj}}S|y_?89S"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_alt</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="[)h5!Wt?#u]$;DJ*fSen"> <value name="IF0"> <block type="logic_compare" id="}I^P3N/ka`dJ[#)ravN7"> <field name="OP">NEQ</field> <value name="A"> <block type="variables_get" id="yiT6k|}2%QxC5Ip2;7;^"> <field name="VAR" id="fb%^b%(.P(De7B%I+^fp" variabletype="">Wasserverbrauch_alt_speichern</field> </block> </value> <value name="B"> <block type="get_value" id="UX+:bzMd8g/f6b{dN+lx"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_aktuell</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="z)/Gd*s9,-W6[D752=D?"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> <value name="VALUE"> <block type="math_arithmetic" id="xt-H^j-:43Irbg7Fhml("> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="X_rWlPD~o/J^KhVZi%6o"> <field name="NUM">1</field> </shadow> <block type="get_value" id="A4Sx?OtCp2T?h#I(031U"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_aktuell</field> </block> </value> <value name="B"> <shadow type="math_number" id="+qND:7;^kTj.azwuZHHi"> <field name="NUM">1</field> </shadow> <block type="get_value" id="@R6Vro4Waf_mK|.+!]^0"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_alt</field> </block> </value> </block> </value> <next> <block type="controls_if" id="8K}#}[Fk:%g~F#3)+NAF"> <value name="IF0"> <block type="logic_operation" id="lR$k8X3;ySVntotf-vFz"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="q0zW=|U!.1,jkAy[X!b$"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="Hnk,pbHq`B?Nb}~w$=$H"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <block type="math_number" id="7E.:+JU.a]LF)/p!,#;*"> <field name="NUM">0.15</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="6Ig?RU}s(dFcicEuhcm0"> <field name="OP">GTE</field> <value name="A"> <block type="variables_get" id="jcdb+L_Z#8kmj7e(cq:1"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <block type="math_number" id="9=%(A.)%}-%Ym9CUISV^"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="CDT0?0zH4r9GW/H*Y2$f"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch.Wasserverbrauch_gerechnet</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="*aA/fh;#]Di_eXq6nL,^"> <field name="n">4</field> <value name="x"> <shadow type="math_number" id="a?I?-VQtRV1uduc!*;@I"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="XGWua76GS6aHpO3imk]l"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Tq{Zc)v77pwV^ctJd{|J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="|~8@Y)]z.lKE{$Sr]Phs"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <shadow type="math_number" id="@6AZ4Y}v+0qS8p%_qu{H"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="control" id="0(_/h8O2,M[gEb`Ic4=2"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30965</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="A_V2Dl3Tco*!@[~Lr1n~"> <field name="n">4</field> <value name="x"> <shadow type="math_number" id="a?I?-VQtRV1uduc!*;@I"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="XY5vn6~5Da?Zt0namcfQ"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="Il/T*4`06v:{m@*OFmkc"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30965</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="lKu:^o1-H]d/0,7P%Ipo"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Tq{Zc)v77pwV^ctJd{|J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="XB}ackBd~?1d)cTC#bwV"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <shadow type="math_number" id="RP9x3%P{}.7k42Qpi5y;"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="5fng!*j2(M,$$,YwlLHx"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30969</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="-3@,nGkZ]@$FU1Ry}%PA"> <field name="n">4</field> <value name="x"> <shadow type="math_number" id="a?I?-VQtRV1uduc!*;@I"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="(E?id-LI#NfEL|Jt:.vZ"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="0E2;EjD-PBt:GCDwPU~H"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30969</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="G9U[WP2t4_f8T+_0LGXB"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Tq{Zc)v77pwV^ctJd{|J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="34;qZzQ3Z+JnD{P-NYW:"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <shadow type="math_number" id="G:AdLWj}|(?]]ENs(!55"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="oBT%X]5xBNnY,5AICE3X"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30966</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id=",P%Ylnd^*u1LkcG9X]:W"> <field name="n">4</field> <value name="x"> <shadow type="math_number" id="a?I?-VQtRV1uduc!*;@I"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="|(*+rA~Ej?$2*?ityV)U"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="]ziDJBvg89Wq:.R;J:!,"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30966</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="e.p_|Smt|,NX(RunG)gt"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Tq{Zc)v77pwV^ctJd{|J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="P5_c8#OAPy=l^ASZ;$es"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <shadow type="math_number" id="YDm1,jv1{.k2e(?8V)(|"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="R5$.Na4^BAFjW2ARqTxN"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30967</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="e{,b!INUIeaJ}fkB8}m@"> <field name="n">4</field> <value name="x"> <shadow type="math_number" id="a?I?-VQtRV1uduc!*;@I"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="!-w04:ct]D5r!DJQmLSW"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="HgghGzkzow#w{s|+|+a:"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30967</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="nllQn,{7d8IO(@Lg3M:B"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Tq{Zc)v77pwV^ctJd{|J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="MJ/ZuL+#^.3AQq~epH3J"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <shadow type="math_number" id="J^_v%Hn7gX*W7f[-+mgU"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="=E[:Y4;({rV9PgxM??W#"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30968</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="pIPk0X$;_7l#cS6]J[a)"> <field name="n">4</field> <value name="x"> <shadow type="math_number" id="a?I?-VQtRV1uduc!*;@I"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="`:+j8dW)6S#f{T%Ai9u5"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="vuDO5{C4d)Z4!.?z)/v."> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30968</field> </block> </value> <value name="B"> <shadow type="math_number" id="P!TIMt7*.bBC#4%Idw8j"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="`,M`KPfi72=ir~XGyo;+"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Tq{Zc)v77pwV^ctJd{|J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="^v@w@K@=*~ET7Z1v-oO@"> <field name="VAR" id="S~g:}fW6Tm:Aw?GxUkaZ" variabletype="">Wasser gerechnet</field> </block> </value> <value name="B"> <shadow type="math_number" id="@~]Yp/KY$~_P8PTXoQKy"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> <block type="comment" id="$f;2YJblP5aT5TAGfFMx" x="-712" y="487"> <field name="COMMENT">Maximaler Durchfluss pro Sekunde x 30 Sekunden Abtastrate, 120 Liter Ziffernwechsel</field> </block> <block type="comment" id="qSxx=;Q,jlnWfNVxu*TC" x="-1688" y="1062"> <field name="COMMENT">reset heute</field> <next> <block type="schedule" id="v;%?AXWh:txx%4R+2:U,"> <field name="SCHEDULE">0 0 * * *</field> <statement name="STATEMENT"> <block type="control" id="+%wEpsL(Ww[z8Tfc-X$0"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.31100</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="2D{+Qa%pnz-R43!M3Fr0"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30965</field> </block> </value> <next> <block type="control" id="o03K_LgrizESb@J0r`gL"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30965</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="+|Dv5/%]/%.QIWBB+**C"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="ox+@jzn`KXVwX.fOTB$," x="-538" y="1063"> <field name="COMMENT">Wasserverbrauch letzte 5 min zurücksetzen</field> <next> <block type="on_ext" id="j=c,w9.$Xq;DsB5^}pBB"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}z+=RenMSy8(B@XhK@0K"> <field name="oid">hm-rega.0.30969</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="%|yEAWaJ*FP|KJ!T/+Y$"> <value name="IF0"> <block type="logic_compare" id="_EAAa*G$MT%4=Rg?[~bP"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="tZQSY0`YcA7JL[M$Ws@g"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30969</field> </block> </value> <value name="B"> <block type="math_number" id="Pd*)$#q#9Ay-w#:cv1+7"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="lU:dL+CfL4WMPIg8M38w"> <mutation delay_input="true"></mutation> <field name="OID">hm-rega.0.30969</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="sH;+ugos5JXLrj_4BfDg"> <field name="NUM">0</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> <block type="comment" id="f}lW@jf:=d$f0yptTr$b" x="-1687" y="1288"> <field name="COMMENT">reset Woche</field> <next> <block type="schedule" id="CS=RSPfa:iN5AMzgx~+$"> <field name="SCHEDULE">0 0 * * 1</field> <statement name="STATEMENT"> <block type="control" id="t0cN(g{+b8)OJ-/00/~|"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.31101</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="):/cfCdq~Md|vN,`/o0|"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30966</field> </block> </value> <next> <block type="control" id=".l7{U_lCbkh?eh[J76.L"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30966</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="NQ{Xt.0IXvoF}I^AtomT"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="L0xCte;w,mCtr5``[I6d" x="-537" y="1338"> <field name="COMMENT">reset Monatserster um 0:00</field> <next> <block type="schedule" id="ZJuIT}CXu@.%G_,asO#;"> <field name="SCHEDULE">0 0 1 * *</field> <statement name="STATEMENT"> <block type="control" id="e4CSH~@KH=*]lpuxtu=H"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.31102</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="vd_9A0Lx!_;e=Z^9V))G"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30967</field> </block> </value> <next> <block type="control" id="Q+iLqKVdxopT4]nO6QAy"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30967</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="WcF0pJahHrFD!v-d+zv("> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="oHR,JG*z8K2lOHmdJgUI" x="-1687" y="1488"> <field name="COMMENT">reset Jahr</field> <next> <block type="schedule" id="#CJ#r$^ohJ=^7![RC?r["> <field name="SCHEDULE">0 0 1 1 *</field> <statement name="STATEMENT"> <block type="control" id="Yd{OxT;_R~B9P,Psmp5V"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.31103</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="UYH]mq6ma|o#0tn5lU*9"> <field name="ATTR">val</field> <field name="OID">hm-rega.0.30968</field> </block> </value> <next> <block type="control" id="RjxS0F1e!{}R=?k0u5hu"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.30968</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="Gv+;Fb{zqvo$M?Mv;DML"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
Jo super, vielen Dank! Wie gesagt wenn ich Zeit und Lust habe baue ich mir das alles zusammen Bin auch kein Programmierer
-
@Atifan danke für das Feedback - freut mich, wenn es so gut klappt.
Ein kleiner Hinweis noch: die beiden Referenzen oben links sind recht eng beeinander. Rein mathematisch ist es stabiler, wenn du eine Referenz auf die linke Seite verlagerst, quasi in ein möglichst gleichschenkliges Dreieck. Aber solange es so klappt ist alles gut.
Beste Grüße,
jomjol -
@Atifan Hi Atifan, du kannst auch das "w" am linken Bildrand und das 2015 am rechten Bildrand als Referenz nehmen
-
Hi, ja Danke, bei Gelegenheit ändere ich es evtl. aber im Moment sehe ich eigentlich keinen Grund, da alles ja funktioniert
-
Hier mal noch ein Bild von der Installation am Wasserzähler, für alle die sich sowas neu Installieren wollen.
Habe die ESP32 CAM einfach mit Panzerband am 3D-Halter fixiert
Sieht nicht schön aus, sieht aber auch keiner
Der Halter wird mit 1x Schraube an der Wand fixiert, mit der Linse mittig über der Wasseruhr, ca. 10cm Entfernung.
Der Sicherungskasten mit einem 5V Netzteil befindet sich ca. in 1m Entfernung.
Habe einfach über 2 Drähte die 5V zur ESP32 CAM gebracht und dort angeschlossen.Das Intervall vom Parser habe ich bei mir auf 3600000ms erhöht, das entspricht einer Stunde, d.h. jede Stunde wird 1x geparst.
Ich denke auf Dauer ist es besser, wenn man die LED der ESP32 CAM nicht unnötig oft aktiviert, oder hat da jemand Langzeiterfahrung? -
@Atifan Hallo Atifan,
sieht so aus, als ob auch die Aufsteckversion bei dir funktionieren könnte:
https://www.thingiverse.com/thing:3860911
Ich habe bei mir den Deckel abgebaut, dann geht es echt gut. -
Hallo zusammen,
ich hatte ja schonmal angedeutet, an einem WYSIWYG Editor für die Config.ini zu arbeiten. Insbesondere auch, um die Erstellung von Reference-Images und ROIs für die Ziffern und Zeiger zu vereinfachen. Ich habe es jetzt einen ersten Prototyp als Alpha-Version auf meinem Server am laufen.
Es ist graphisch weder schön, noch 100% selbsterklärend. Deshalb veröffentliche ich den Link erstmal nur hier in diesem Post an erfahrene User . Hier die Adresse:http://wasserzaehler.ignorelist.com
Probiert es einfach aus und gebt mir Feedback. Dafür habe ich ein GitHub eingerichtet, wo ihr Issues starten könnt: https://github.com/jomjol/water-meter-config-creator-web-application
Bitte seid etwas geduldig mit der Performance. Es läuft bei mir auf einer Synology, leider bekomme ich bei mir kein High-Speed DSL.
Bin gespannt auf euer Feedback!
Beste Grüße,
jomjol