NEWS
Wasserzähler - Selfmade
-
@mcchickents sagte in Wasserzähler - Selfmade:
kommt heute Abend
So hier mein Programm.
Programm mcchickents 191017.txtDu brauchst zwei DB Steine meine beiden heißen.

Und dann habe ich SV auf meiner CCU gefühlt hier kannst du aber auch DB im Iobroker füllen.
Gruß Julian
Wie ich schon angemerkt hatte, werden bei mir die "Digitalen" Zahlem (m³) nicht immer richtig erkannt. Das führte bei mir zu Verbrauchswerten, die nicht besonders aussagekräftig waren.
Dagegen habe ich beobachtet, das die Erkennung der Zeiger (analog) sehr zuverlässig funktioniert.
Ich habe mir erlaubt, dass Script von @mcchickents so umzubauen, dass nur noch diese Analogen Werte verwendet werden. die Digitalen (m³) werden nur noch im Script hochgezählt.
Ausgangspunkt sind die Parser Werte mit den Einstellungen von @mcchickents

mit Intervall von 300000 (5min)Ich habe des Script so umgebaut, das mit Anfangszählerständen gearbeitet wird (Tag; Woche; Monat; Jahr) Die dazugehörigen Objekte müssen (wo immer Ihr sie hin haben wollt) angelegt werden.
WICHTIG: Die Plausibilitätsprüfung muss ausgeschaltet sein, so das immer der gerade erkannte Wert im Parser mitgegeben wird.
Bei mir funktioniert das seit 1er Woche ohne Auffälligkeiten.
Ich würde mich über Tester freuen. Auch Verbesserungsvorschläge sind sehr willkommen.
Ich bin wahrlich kein Profi, was das Scripten betrifft.Hier das Blockly Script:
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="+{wu7EACDqh[jz.w|UJ_">Digital</variable> <variable type="" id="CrQs0Fj4!jTiB_=7Z{H#">Analog alt</variable> <variable type="undefined" id="timeout2">timeout2</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="" id="Y%2waVBVJfgC:UsZNg9^">Analog</variable> <variable type="" id="jD*[#Zlic1jmyurL%.%b">Wasser</variable> <variable type="" id="S~g:}fW6Tm:Aw?GxUkaZ">Wasser gerechnet</variable> <variable type="undefined" id="timeout3">timeout3</variable> </variables> <block type="variables_set" id="GE[E%kt%s0mH*y[T,]`|" x="-1813" y="-637"> <field name="VAR" id="+{wu7EACDqh[jz.w|UJ_" variabletype="">Digital</field> <value name="VALUE"> <block type="get_value" id="f#L%AXrk=Ex$lR)!ag{6"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Digital</field> </block> </value> </block> <block type="on_ext" id="hW,coeg6nL[_/oRIW8`_" x="-1288" y="-612"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="#1+|n}n82E%YcW~~(OAJ"> <field name="oid">javascript.0.Wasserverbrauch1.Anfangszaehlerstand</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="[3s08X/c2]b+g09k=MS2"> <field name="VAR" id="+{wu7EACDqh[jz.w|UJ_" variabletype="">Digital</field> <value name="VALUE"> <block type="get_value" id="~ZWWb=S%vhPDv}PO8g-~"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand</field> </block> </value> </block> </statement> </block> <block type="comment" id="{)~[qYJwM%HmTqZC[Dme" x="-1787" y="-537"> <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">any</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="Y%2waVBVJfgC:UsZNg9^" variabletype="">Analog</field> <value name="VALUE"> <block type="text_join" id="/fqyB}E;PHmjBsJJ`0Fh"> <mutation items="6"></mutation> <value name="ADD0"> <block type="math_number" id="SMJBX;~T(pjV^d0~+S)y"> <field name="NUM">0</field> </block> </value> <value name="ADD1"> <block type="text" id="u[@%#8#fi4C^yX.r%d!I"> <field name="TEXT">.</field> </block> </value> <value name="ADD2"> <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="ADD3"> <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="ADD4"> <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="ADD5"> <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="timeouts_settimeout" id=".SMM.AW-`BYfdQ}ya?b1"> <field name="NAME">timeout3</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="ju/a2i7Frg:jTfpH!r}c"> <value name="IF0"> <block type="logic_compare" id="iF^jZ2ra(+[,1@C9!+=|"> <field name="OP">GT</field> <value name="A"> <block type="math_arithmetic" id="_GG[w[-[]ELfHI1|/,TP"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="Olf6S3dwBydhTC59hi/:"> <field name="NUM">1</field> </shadow> <block type="convert_tonumber" id="BL,kMdDU#u3!rMwPJmR*"> <value name="VALUE"> <block type="variables_get" id="PhuKa|3GsTTN8QxR{%AZ"> <field name="VAR" id="CrQs0Fj4!jTiB_=7Z{H#" variabletype="">Analog alt</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="u!#Qj:zrQsUXSN8{%.g1"> <field name="NUM">1</field> </shadow> <block type="convert_tonumber" id="OEPXck6@PFIlEp.OYnhd"> <value name="VALUE"> <block type="variables_get" id="7,s5XP+o{Z?X[7ll.+0Q"> <field name="VAR" id="Y%2waVBVJfgC:UsZNg9^" variabletype="">Analog</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="%At]Iu`?WR5ZfT:VCL#z"> <field name="NUM">0.5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="DAIA1CzWMpcy853_!RS!"> <field name="VAR" id="+{wu7EACDqh[jz.w|UJ_" variabletype="">Digital</field> <value name="DELTA"> <shadow type="math_number" id="~^qVXIp-f$qYSGT|k(p*"> <field name="NUM">1</field> </shadow> </value> </block> </statement> <next> <block type="control" id="9n0als[H])_JXK;wZ;Rj"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.Digital</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="(V-dzVo;qF_Ad-#3qQ{U"> <value name="VALUE"> <block type="variables_get" id="YRQ;vYYHy!{m@:dXStQf"> <field name="VAR" id="+{wu7EACDqh[jz.w|UJ_" variabletype="">Digital</field> </block> </value> </block> </value> <next> <block type="control" id="y/fZ]IDy`tMrbrJLSaCC"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.Analog</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="duI29L)?T~xuD,TORa9@"> <value name="VALUE"> <block type="variables_get" id="+Y@Az*Mey}}NRlITw$Xi"> <field name="VAR" id="Y%2waVBVJfgC:UsZNg9^" variabletype="">Analog</field> </block> </value> </block> </value> <next> <block type="control" id="K2vn9_SQgwL|)u!!gl1|"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="MM+jsw4UfO(.Hx.u/s:`"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="7Oaw?3HKyclxaVy@qE~p"> <field name="NUM">1</field> </shadow> <block type="convert_tonumber" id="XJ=s_p6$TZ)-avlBa((;"> <value name="VALUE"> <block type="variables_get" id="W0w=_,X/ejFNyHT1XV{R"> <field name="VAR" id="+{wu7EACDqh[jz.w|UJ_" variabletype="">Digital</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="|=f,]Pr,T6HC8laX|R;o"> <field name="NUM">1</field> </shadow> <block type="convert_tonumber" id="552=i|r`DG0,-Fa.z5km"> <value name="VALUE"> <block type="variables_get" id="9`[$K-.pLdS/93Sr7u]M"> <field name="VAR" id="Y%2waVBVJfgC:UsZNg9^" variabletype="">Analog</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> <block type="on_ext" id="@zG4;]iYO[gk6PE9A8Bd" x="-1788" y="137"> <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="variables_set" id="$^5i[4.V)UQ$0,R53n%|"> <field name="VAR" id="CrQs0Fj4!jTiB_=7Z{H#" variabletype="">Analog alt</field> <value name="VALUE"> <block type="variables_get" id="auf4Vpl?.5xl,2EQDC}x"> <field name="VAR" id="Y%2waVBVJfgC:UsZNg9^" variabletype="">Analog</field> </block> </value> <next> <block type="control" id="6DzKEv?-~d]3U=;Btcop"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.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.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> </block> </next> </block> </statement> </block> <block type="on_ext" id="g0!@tN:hJ5,@IC03]C(R" x="-1787" y="337"> <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.Wasserverbrauch1.Wasserverbrauch_aktualisiert</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="$_^*U)oNg;J39mNWX7iv"> <value name="IF0"> <block type="logic_compare" id="R+]z+~$9PRX.!`-n2j$_"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="1Q.u,.7hmJgpxgTS!yJJ"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</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.Wasserverbrauch1.Wasserverbrauch_alt</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.Wasserverbrauch1.Wasserverbrauch_aktualisiert</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.Wasserverbrauch1.Wasserverbrauch_alt</field> </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.8533</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="s)PN7Vw`prv!A?hv2mLf"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="E#zB^cvPPx!3cYPr+Pu{"> <field name="NUM">1</field> </shadow> <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">MINUS</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">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="get_value" id="=TjWO/63[rWCTbDj7JUs"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_heute</field> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="tn*R.05(D.%K3Cq(}nvg"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <next> <block type="control" id="5fng!*j2(M,$$,YwlLHx"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8568</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="j!|XN6hin]+7`7e88l18"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="!%YGCtSmGv.!]KU$#6Nw"> <field name="NUM">1</field> </shadow> <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">MINUS</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">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="get_value" id="YDY5~1aA-=^]//;i6MJ+"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_alt</field> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="NUZlH-[?T]-}p@iCL{Au"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <next> <block type="control" id="oBT%X]5xBNnY,5AICE3X"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8566</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="[nv%@@BX,N#hLq#S-k`+"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="CL~9xg^p8_Kzc5n_ImjG"> <field name="NUM">1</field> </shadow> <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">MINUS</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">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="get_value" id="nd_9af.ZMA1/K1,S#U@Q"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_Woche</field> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="s#NIPHF{^u=-UljnNO$r"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <next> <block type="control" id="#z,-nejW?jGgjF|6|.H}"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8648</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="y39]M!U/%X9b%6jp*4#}"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="CL~9xg^p8_Kzc5n_ImjG"> <field name="NUM">1</field> </shadow> <block type="math_rndfixed" id="2#^Z6@xqJOMGnvvjT6%?"> <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="UN.1V5+(r@))%J,=@gqY"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="$mrk)426X5fx_+e!J_gK"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="get_value" id="/Z@4#mZokQ,L-w^bH.Tg"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_Monat</field> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="Ha=O,ekrr9a?z]eu4Xs+"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <next> <block type="control" id="=E[:Y4;({rV9PgxM??W#"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8567</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="N~pEF;p}RibZHL@Jj%]8"> <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="(ypJq^YjyV_r2Tja[JzG"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="TlPoMg6n6S:en?y89?T4"> <field name="NUM">1</field> </shadow> <block type="get_value" id="-MMgXsvKFd?[}m13v}9o"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> <value name="B"> <shadow type="math_number" id="%8A!l4mo_0a=h,ezfnVP"> <field name="NUM">1</field> </shadow> <block type="get_value" id="iD:Yn+mvm5eH]y:k88K+"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_Jahr</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> <block type="comment" id="ox+@jzn`KXVwX.fOTB$," x="-937" y="888"> <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.8568</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.8568</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.8568</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="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">59 23 * * *</field> <statement name="STATEMENT"> <block type="control" id="o03K_LgrizESb@J0r`gL"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8533</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> <next> <block type="control" id="8DJ|hXs^UV[]]q|j@$/@"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_heute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="q#8NRrtE|p##-plw;KZ9"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="f}lW@jf:=d$f0yptTr$b" x="-1687" y="1262"> <field name="COMMENT">reset Woche</field> <next> <block type="schedule" id="CS=RSPfa:iN5AMzgx~+$"> <field name="SCHEDULE">59 23 * * 0</field> <statement name="STATEMENT"> <block type="control" id=".l7{U_lCbkh?eh[J76.L"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8566</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> <next> <block type="control" id="lf}%4*+o^Q{FU:7fxp|;"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_Woche</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="nh{y8TyWjpjiIEhFd/tl"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="K/RigU5g)ITrS$Z5%z%$" x="-1687" y="1462"> <field name="COMMENT">reset Monat</field> <next> <block type="schedule" id="I+d[tdGa*#NplJWq)l:D"> <field name="SCHEDULE">2 0 1 * *</field> <statement name="STATEMENT"> <block type="control" id="Xs0Vn%@[Z3LhUgSZi.{E"> <mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.8648</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="!8%xuHUE*S.4byz]?#eV"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="$izuc,5%%3Gb_Y!X,+vb"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wasserverbrauch1.Anfangszaehlerstand_Monat</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="~}P$;7JTwiREk|;4H:.i"> <field name="ATTR">val</field> <field name="OID">javascript.0.Wasserverbrauch1.Wasserverbrauch_aktualisiert</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="oHR,JG*z8K2lOHmdJgUI" x="-1687" y="1662"> <field name="COMMENT">reset Jahr</field> <next> <block type="schedule" id="#CJ#r$^ohJ=^7
Nachher:

Jeweils nach 20 Aufrufen.Probier mal das aus und melde ich. Bei mir installiere ich es auch, sobald der Build fertig ist.
LG, jomjol -
Servus
Ich hatte gestern die Idee das roi Bild mit in die VIS aufzunehemen.
Schaut sehr gut aus.
Aber leider wird es anscheinend nur aktualisiert, wenn ich die ip:3000/roi.html aufrufe.
Ich hab aber das direkte Bild verlinkt.Kann ich das auch automatisch irgendwie generieren lassen?
Ideal wäre natürlich wenn es nur erstellt wir wenn die VIS aktiv ist und auch wirklich eine Änderung vorliegt.Ist vermutlich eher eine VIS frage aber da es nur mit dem Wasserzähler zu tun hat frag ich hier.
Ich verwende noch die letzte Version die direkt auf dem PI ohner Docker läuft.
Gruß Peer
-
@C1500 Hast Du schon probiert, das mit dem Parser zu machen, würde mich interessieren ob das geht. Wie läuft das mit Deiner Erkennungsrate, ist diese stabil?
-
Servus @pfried
Ich hatte mit dem Parser immer das Problem, dass er pünklich um 0:03 Uhr aufgehört hat und sich auch die CAM weggehängt hat.Ich probier jetzt gerade das Script von weiter oben.
Letzte Nacht lief es schon mal durch.Die Erkennungsrate ist sehr gut, solange ich "usePreValue" verwende.
Sobald die Zahlen anfangen sich wegzudrehen wird es sonst schwierig.Gruß Peer
-
@C1500 Korrekt, das roi-Bild wird nur bei roi.html aktualisiert. Der Aufwand, es jedesmal zu aktualisieren ist nicht sehr groß, kann ich bei nächster Gelegenheit mal machen.
-
Hat einer von Euch diess Projekt erfolgreich in einer VM unter Proxmox am laufen?
-
@jomjol Habe die neue Docker Version getestet. Es dauert nun nicht mehr 4 Stunden bis der Memory überläuft sondern 15 Stunden:

-
@pfried Hallo Paul,
der Memory-Leak liegt intern in Tensorflow. Da kann ich an meiner Software nichts machen. Nicht mal das Löschen und Neuladen der Tensorflowobjekte hilft nicht, da offenbar ein interner Tensor im Speicher bleibt. Habe mehrere Threads dazu gefunden.
Die Tensorflow-Community arbeitet daran und es gibt Hinweise, dass es in der Nightly besser wird, aber anscheinend nicht bei allen.
Bleibt nur das Beobachten und Update, sobald es eine neue Version gibt, testen. Ich beobachte es weiter.
Eventuell kannst du deinen Container regelmäßig nach ein paar Stunden per Script neu starten als Zwischenlösung?
Gruß, jomjol -
Hallo, hat jemand eine Lösung für die Beschlagung des Wasserzählers gefunden?

Wie man sieht sinkt dadurch die Erkennungsrate gegen null:

-
@pfried das Beschlagen hat nur einen Grund: Wasser ist kalt, Umgebung warm. Dadurch beschlägt es. Also entweder dämmt man den Wasserzähler gegen Wärme, oder alternativ probieren eine anti-Beschlagfolie oder Spray verwenden. Alles nur Theorie...hab ich auch noch vor mir.
-
@watcherkb Das mit dem Spray werde ich versuchen. Werde berichten. Außerdem werde ich nun an einem freien Tag einen Ventilator in das Gehäuse einbauen, Vielleicht hilft das ja was.....
-
@jomjol Guten Morgen jomjol: Wie machst Du das, dass in Deinem Docker Container der Phyton Task nicht überläuft durch den Tensorflow Memory Leak? Hättest Du vielleicht ein Script für mich um den Docker container zu stoppen und gleich wieder zu starten um den Memory Leak zu umschiffen?
Liebe Grüße
PaulPS.: Ich habe einen Post gelesen, dass das Memory Leak Problem mit 2.1.0-dev20191125 gelöst wurde?!
-
@pfried Mein Docker läuft auf einem Server mit 12GB RAM, bei mir taucht dieser Fehler nicht auf und falls der Container abschmiert, startet er über "Portainer" wieder neu.
Das mit Tensorflow 2.1 habe ich auch gelesen und schon mal probiert. Leider lief damit mein Code selbst in der normalen Anaconda-Umgebung noch nicht. Ich warte mal, bis es einen Release gibt. Dann muss ich ihn aber auch noch selbst für meine Synology kompilieren und für einen Raspi armv7-Version hat es erfahrungsgemäß noch etwas Delay. Ich bleibe dran, habe aber erst nach den Weihnachtsfeiertagen etwas Zeit dafür.P.S.: Zwischenlösung im Container wäre eine Implementierung innerhalb des Containers mit dem pm2-Modul. Das könnte das Python einfach neu starten, wenn es mit einem Speicherfehler abbricht. Wie gesagt, nach den Feiertagen habe ich etwas Zeit dafür, vorher steht Family an
