NEWS
Photovoltaik Einspeisebegrenzung messen
-
@semmy sagte: Zeit erfassen, in der dieser Datenpunkt weniger als 100% hat
Im ersten Beitrag hast Du etwas von 70% Begrenzung geschrieben?
-
@haus-automatisierung Mit Alias habe ich noch nichts gemacht. Wie macht man das denn genau?
-
@semmy Du legst unter alias.0 einen neuen Datenpunkt vom Typ boolean an, wählst im Tab "Alias" auf dem Objekt dann den State mit dem %-Wert als Quelle aus, aktivierst die Konvertierungsfunktionen, fügst
val < 100
als Lese-Funktion ein und fertig.Hier habe ich ein bisschen was dazu geschrieben: https://iobroker.readthedocs.io/de/latest/basics/aliases.html
Und ansonsten gibt es im ioBroker-Master-Kurs etliche Beispiele.
-
@semmy Alternativ:
Du musst einen Datenpunkt anlegen wo du dir den letzten Wert merken willst (Typ Nummer) und die beiden Stellen im Text ersetzen.
Ist der Wert unter 100 so sichert er die aktuelle Zeit als Objekt. Das Objekt ist in Wirklichkeit die aktuelle Zeit seit dem 1.1.1970 in Millisekunden. Da kann mal also prima mit Rechnen. Damit wir die Zeit nur dann nehmen wenn der Wert das erste mal unter 100 ist nutzen wir die HilfsvariableZeitMessungAktiv
- wenn die aufWahr
steht aktualisiert er die Startzeit nicht!ist der Wert wieder 100 so nehmen wir die aktuelle Zeit und ziehen die gemerkte Zeit davon ab. Das dann noch mal durch 1.000 damit wir Sekunden statt Millisekunden haben.
Den Wert sichern wir noch mal in den Datenpunkt damit er das bei einem Neustart nicht verliert.
Und die Hilfsvariable setzten wir wieder aufFalsch
damit das ganze für den nächsten Einsatz bereit ist.Damit hast du einen Datenpunkt in welchen die "unter 100%" Zeiten in Sekunden addiert werden.
Hier als Export:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="Ma/Ro2n~BI)hE2rEAxLv">ZeitSumme</variable> <variable id="TIAs6OhbV0NbE.P%;s#Q">ZeitMessungAktiv</variable> <variable id="]T052Is$z]+ju(24ZYeX">ZeitStart</variable> <variable id="8CQj.w,BtgmgXW}/mk6-">ZeitZwischensumme</variable> </variables> <block type="comment" id="#r:x@[J0t~qjDwit7f,5" x="88" y="63"> <field name="COMMENT">Den letzten Wert speichern wir in einem Datenpunkt</field> <next> <block type="variables_set" id="Ix$8ke;TQOF*YUiD~x^4"> <field name="VAR" id="Ma/Ro2n~BI)hE2rEAxLv">ZeitSumme</field> <value name="VALUE"> <block type="get_value_var" id="p,0L8p/wXxvhmJh7e]2V"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="RP7$iky#)aPPZDXeYU}@"> <field name="TEXT"></field> </shadow> <block type="text" id="p|q-5;xC@1-Tr9(pS43="> <field name="TEXT">0_userdata.0.Datenpunkt.zum.speichern.der.Summe</field> </block> </value> </block> </value> <next> <block type="variables_set" id=":0hsl(E-+{KUOEFpzR~f"> <field name="VAR" id="TIAs6OhbV0NbE.P%;s#Q">ZeitMessungAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="Pmc3xdbe[wObRave9^_S"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="on_ext" id="+U[If7CoUL(Qp_Go%^hr"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="#xRO)[Qj`bD.TN{MI#LC"> <field name="oid">default</field> </shadow> <block type="text" id="M#L:0f]nkH#B%2tUCR6~"> <field name="TEXT">adapter.0.datenpunkt.mit.prozentangabe</field> </block> </value> <statement name="STATEMENT"> <block type="comment" id="J-6P60IP0{dH{Hf:bQMc"> <field name="COMMENT">Zeitpunkt merken wenn unter 100 - einmal!</field> <next> <block type="controls_if" id=";nbwHSNU8Awn(=,e.WJ@"> <value name="IF0"> <block type="logic_operation" id="P@?MN[,hw{%e{thO{XN." inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=":|(b+/_e:eJ*.JS/:VrF"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="94kWi`RhCKJ#gie0R,BI"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="_70_Y.4(*J?kSh1id7?="> <field name="NUM">100</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="HD}8g[_)CzVc)2H==vfL"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="phnGY$Kb6Sab!nPJhRrd"> <field name="VAR" id="TIAs6OhbV0NbE.P%;s#Q">ZeitMessungAktiv</field> </block> </value> <value name="B"> <block type="logic_boolean" id=";EWml3pX,r[pW6?=-@#W"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="66pv[lub=//f_D0A?|DP"> <field name="VAR" id="TIAs6OhbV0NbE.P%;s#Q">ZeitMessungAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="H);jHjE}7kFQM:mdX*[j"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="]w7UzUIdl=Go9[=V0BID"> <field name="VAR" id="]T052Is$z]+ju(24ZYeX">ZeitStart</field> <value name="VALUE"> <block type="time_get" id="H9v3;VK|zj:/q+0bGa#m"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="MfU3vlfJld:bzpMeC}:b"> <field name="COMMENT">Wieder 100, also rechnen!</field> <next> <block type="controls_if" id="6_,Z]RY]*S=*(cl1Duq8"> <value name="IF0"> <block type="logic_operation" id="9BzX0abg3F4VK=|mJw3I" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="g7XA)=Kl`=CpG5Q.%0h^"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="LmL)A#3~!N4s]}cV+ST;"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="VHrkeatNenu2~Dhbnodh"> <field name="NUM">100</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="RiJV)4Qal6]-Wh32./Jl"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="UN8ZxB!%.F.t,0Rl9]$k"> <field name="VAR" id="TIAs6OhbV0NbE.P%;s#Q">ZeitMessungAktiv</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Q{^.-k0R5nbjesF#Xlc0"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="4:@2Y%es35Zs%UM/8a.q"> <field name="VAR" id="TIAs6OhbV0NbE.P%;s#Q">ZeitMessungAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="t:coKFZLCTZ!w}9H^s^e"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="!HoZec?`Xa~r=_zh.r7N"> <field name="VAR" id="8CQj.w,BtgmgXW}/mk6-">ZeitZwischensumme</field> <value name="VALUE"> <block type="math_arithmetic" id="5WY2x2g!bJ34F*TUMRMV"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="[1gy.qXm_VATi4wZV`$."> <field name="NUM">1</field> </shadow> <block type="time_get" id="~vFoA)}wW-x1v7C|%(MG"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> <value name="B"> <shadow type="math_number" id=":Q}=hVh3WK1cDM58VkLA"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="qPZJ`h=y3y_rG^x#GVT6"> <field name="VAR" id="]T052Is$z]+ju(24ZYeX">ZeitStart</field> </block> </value> </block> </value> <next> <block type="variables_set" id="X3uW*]K3^V8EMCquyI_s"> <field name="VAR" id="8CQj.w,BtgmgXW}/mk6-">ZeitZwischensumme</field> <value name="VALUE"> <block type="math_arithmetic" id="tgmT9%|:=e$;cq$(:J~z"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="+}LL,4Vaw57U!0ub3GbW"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="OC^bCA5qPC_#1crovbfa"> <field name="VAR" id="8CQj.w,BtgmgXW}/mk6-">ZeitZwischensumme</field> </block> </value> <value name="B"> <shadow type="math_number" id="}RnxQWVtrf:A9h%khDJv"> <field name="NUM">1000</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="T;5L~4?$K:$^)Qw#IIdq"> <field name="VAR" id="Ma/Ro2n~BI)hE2rEAxLv">ZeitSumme</field> <value name="VALUE"> <block type="math_arithmetic" id="wPqd2F*?@7YO=encjc.["> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="~?r#4@MKOWQ^eWQ/)^?]"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="VBTH@iFgifA?$52L^l/O"> <field name="VAR" id="Ma/Ro2n~BI)hE2rEAxLv">ZeitSumme</field> </block> </value> <value name="B"> <shadow type="math_number" id="K7)@fR643vBuSgt303ed"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="J]MP:uT/xo1]:ps.yw%F"> <field name="VAR" id="8CQj.w,BtgmgXW}/mk6-">ZeitZwischensumme</field> </block> </value> </block> </value> <next> <block type="control_ex" id="]|n[nC*ug,X`qa~u4P^k"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="1z^Vh,(Zt(;0/1or?%})"> <field name="oid">Object ID</field> </shadow> <block type="text" id="=n_kkl)yK[WW+]bxKJ^y"> <field name="TEXT">0_userdata.0.Datenpunkt.zum.speichern.der.Summe</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="E-,D)oS3#8K{}4RdOay("> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="PGe!)]!sp,KVpP{hz1uv"> <field name="VAR" id="Ma/Ro2n~BI)hE2rEAxLv">ZeitSumme</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="FeRSX`.xJl}?57A*eD;$"> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </xml>
-
Hallo
Funktioniert soweit, denke ich, aber es werden nur Millisekunden angezeigt anstatt Sekunden.Gruß
Semmy -
@bananajoe Musste da nicht geteilt durch 1000 geschrieben werden um auf Sekunden zu kommen?
-
@nordischerjung @Semmy genau, geteilt, Flüchtigkeitsfehler!
Den Wert im Datenpunkt muss man nun einmal von Hand korrigieren und das Skript dann einmal neu starten (mit dem geteilt statt dem Plus) -
@bananajoe Es werden jetzt Sekunden angezeigt, jedoch auch 3 Nachkommastellen. Kann man die irgendwie entfernen?
-
@semmy
?
runde
kann man auch auf Ab oder aufrunden setzten, bei mir ist es dann eine Ganzzahl
Beim 2. geht nicht auf 0 stellen, 1 ist Minimum. Ggf. beides zusammenBeispiele wie man aus den Sekunden in Blockly wieder Tage / Stunden / Minuten / Sekunden macht findest du hier im Forum
-
@haus-automatisierung sagte in Photovoltaik Einspeisebegrenzung messen:
@semmy Alias vom Typ
boolean
anlegen mitval < 100
als Lese-Funktion - darauf dann Statistics aktivieren. FertigIch würde mir da irgendwelche Blockly-Scripts sparen. Warum das Rad neu erfinden?
Hallo
Ich habe das jetzt mal so probiert. In der Statistik werden aber nur Daten in Offday geschrieben und nicht in Onday.Viele Grüße
Semmy