NEWS
Bier maischen Script mit Blockly
-
OK, ich habe das Script jetzt wie folgt am Laufen:
Allerdings ist es jetzt so, dass das Script bis zu der letzten Textstelle in einem durchläuft und die Temperatur nicht gesteuert wird. Die Temperatur heizt in einem durch ohne zu stoppen, zu halten oder ähnliches.
Hast du ne Idee, woran es liegen könnte?
-
Also läuft Aufheizen ja.
Prima.
Der intervall halten wird überlaufen.
Bild später.
Nachtrag, Bild,
ob Intervall im Intervall geht weiss ich nicht , probiere es.
Ralla
5230_erkl_rb_r.jpg
5230_4.jpg -
Hmmm, Script habe ich wie folgt angepasst:
Leider nicht der erwünschte Erfolg. Es heizt weiter auf ohne zu halten oder zu stoppen. Aber anscheinend läuft das Script nicht mehr bis zum Ende durch, da der Endtext jetzt nicht mehr angezeigt wird…grübel
-
Schau im Beitrag davor.
Heizung halten wird überlaufen weil eine Pause fehlt bis der Kessel aufheizt.
Ralla
-
Fehler gefunden.
siehe Bild.
5230_6.jpg -
Ok, hatte ich übersehen. Script wie folgt angepasst:
Script läuft iinerhalb Sekundenbruchteilen bis ende durch und macht ansonsten nix.
Scheint also der falsche Weg zu sein.
Ich geh nochmal einen Schritt zurück…
-
Baue dir aktualisiere Test ein egal wo um zu sehen wie weit das Programm durch läuft.
Zurück setzen mußt du nach Programm Ende nichts.
Da sind noch zwei große Fehler bei dir drin.
Du mußt nach Kessel aufheizen Heizung ein warten bis der Kessel aufgeheizt ist.
Also fehlt die Pause nach aufheizen in der du immer wieder abfragst ob die Kesseltemp erreicht ist.
Simulieren kannst du das Prrogramm nur wenn sich die Kesselfühlertemperatur ändert.
Entweder mit einem realen Kesselfühlerwert oder in dem du im Programm den Wert vorgibst.
Teste doch real mit Kesseltemp und Funke.
Spricht ja nichts dagegen.
Das ist schon der richtige Weg, deine Methode zur Analyse und Simulation ist eher merkwürdig.
Versuche mal zu verstehen was das Programm eigentlich macht.
Das mit dem warten nach Kessel aufheizen hast du noch nicht verstanden.
Ist doch aber logisch oder ?
Das Programm rennt ja durch weil Kesseltemp nie größer oder gleich einmaische Grad ist.
Dann kann die Regelung nie greifen.
Also logisch.
Ralla
5230_7.jpg -
Das läuft jetzt in der Simu.
Beachte das die Regelung im Programm vorgegeben ist.
-
Schließe die Anlage an mit Fühler und Funke.
Programm Livetest siehe Bild.
Ralla
5230_livetest_03.02.jpg
5230_livetest_03.02_2.jpg
5230_livetest_03.02_1.jpg -
Läuft aus der Vis heraus.
Runterzähler und Temperaturregelung geht.
Falscher Weg :lol:
Programm für dich vom 03.02 22:32 sollte bei dir laufen.
Ralla :mrgreen:
5230_04_02_r2.jpg
5230_04_02_r1.jpg
5230_04_02_vis.jpg -
Hi Ralla,
es tut mir leid, aber ich hatte die letzten Tage ne Menge Stress um die Ohren. Darum melde ich mich erst jetzt.
Das Script habe ich 1 zu 1 übernommen:
Es läuft genau bis hierhin:
wie man sieht, heizt er ab dem Punkt wieder einfach weiter durch.
Woran könnte es liegen???
-
Kein Problem,
dauert eben.
Slider ist zur Simulation bei mir gewesen.
Bild 1 ersetze Slider mit deinem Datenpunkt Kesseltemperatur ist.
Ist glaube ich bei dir Sensor1.
Bild 2 auch.
!!!!! Die Regelung gehört innerhalb des Intervalls 3 !!!!!
Ralla
5230_s2.jpg
5230_s1.jpg -
Intervall_3
5230_s3.jpg
Runterzähler2 muß Kesseltemp rein ( Variable )
-
Hi Ralla,
erstmal vielen Dank für die Tipps. Leider läuft es noch immer nicht ganz rund. Das Script an sich läuft bis zu diesem Punkt:Mein Script sieht nun wie folgt aus:
Wenn ich mir das so ansehe, scheint es ein Problem mit dem Ausführen der Intervalle zu tun zu haben. Könnte man das nicht irgendwie anders regeln?
Ich bin mittlerweile so weit, dass ich das Script vielleicht in mehrere einzelne kleine Scripte aufteilen würde, wenn dass das Problem eingrenzen könnte... -
@hanzwurzt
Boah diese Board Umstellung nervt.
Nur noch alles in Englisch
Gibt auch Leute über 50 zig.
Der Datenpunkt Sensor1 ist 30.937 C versuch mal den als Value oder so gerade darzustellen.
30 Grad ohne Punkt.
Vermute sehr stark das das script nur 30,31,32 Grad usw erkennt.
Also ohne Komma.
Den Sensor1 Wert lege mal unter Javascript.0 ab.
Weiss nicht ob parser.0 richtig ist.
Script schaue ich mir morgen in Ruhe an.
Sieht aber gut aus auf die schnelle .Bleib jetzt am Ball, Ziel ist nahe
Ralla
-
Tja, ich habe den Sensor jetzt mal auf Valule gesetzt, hat keine Auswirkung. Ich muss den Sensor (Temperaturfühler Ds18b20) über den Parser anbinden, weil ich ihn als 1Wire-Sensor an den Raspi angeklemmt habe. Der hängt nativ an den GPIOs.
Wenn ich die Kommastellen verändere, versetzt es diese lediglich nach hinten oder vorne. Die Stellen an sich bleiben bestehen.Und ja, das neue Board ist ziemlich kacke...
-
@hanzwurzt
Ja ok, dann Trickkiste.
Im Programm hast du drei mal " Wert von Objekt ID Sensor 1".
Ändere das in " 40 " oder " 20"
Dann sollte das Programm reagieren.
Hier gibst du dann einen festen Wert vor.
Nur als Test ob es am Komma Wert liegt.Das neue Board, ist doch schön Kreis bunt.
Mehr als schlecht.
Findest nix mehr direkt.
Soll se machen, wird alles nur schwerer.
Progger mit langeweile die einen Beginner nicht verstehen. -
Hi Ralla,
danke für den Tipp. Leider ist es auch mit dem Setzen einer Zahl als Temperatur nicht viel besser.
Es läuft jetzt zwar bis hierhin durch:
Also schon etwas weiter, aber es bleibt dann dort hängen und heizt auch hier wieder in einem weiter durch. Ich frage mich auch, wo im Script das Auslesen der Temperatur durch den Sensor (also das im Topf hängende Thermometer) überhaupt erfolgt.
Oder verstehe ich mal wieder Bahnhof?
Ich bin und bleibe halt ein Noob. Irgendwelche anderen Ideen?[edit]: Nicht wundern. Sensor 1 ist momentan ausgeschaltet. Habe mir ein paar Steckklemmen für das Breadboard gekauft. Da hat nur noch ein DS18b20 Platz...
[edit²]: Ich habe jetzt mal folgendes getauscht:
Also die Temperatur von Hand angepasst. Bingt aber auch nix.
Ich habe mal so lange gewartet, bis der Runterzähler auf 0 war.
Allerdings tut sich da auch nix. Die Temperatur heizt weiter auf...
Mann o Mann, ich will doch nur Bier brauen... -
@hanzwurzt said in Bier maischen Script mit Blockly:
Mann o Mann, ich will doch nur Bier brauen...
Will auch nur ein Pils
Ändere mal nix am Program.
Das rennt ja bei mir.
Schick mal dein Blocky.
Die Temperatur hier 19.25 ist zu tief.
Dann muß Heizung Ein.Was ein Dreck, Forum 2 ist Note 6, sehr schlecht gemacht.
Alles schön Bunt hier, User freundlich nix.
Helfe dir noch dann bin ich Weg.
So einen Scheiß brauche ich nicht.Ralla
-
Schick mal dein Blockly
Hmm, ich kann das Script höchstens exportieren. Ich habe es wieder auf den Stand des letzten Bildes zurückgesetzt. Ich hoffe, du kannst damit was anfangen:<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="on" id="r9pY(cc55lc)4_xp2W%" x="-1362" y="-387">
<field name="OID">javascript.0.Bierbrauen</field>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="variables_set" id="C8FvFWQDmf2)+zkAJYOk">
<field name="VAR">Temperatur Kessel</field>
<value name="VALUE">
<block type="get_value" id="/X-p,0|kdBt9G@{jPq"> <field name="ATTR">val</field> <field name="OID">parser.0.Sensor2</field> </block> </value> <next> <block type="controls_if" id="Q.l^xa)Eb#Xj%:=:TBu["> <value name="IF0"> <block type="logic_compare" id="-=~9{9[^hNLk=jPMKPaD"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="VS
SPSj.;l0)%R;2#8+@">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Bierbrauen</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="jf7Cu(9dXj.cD0GS2Qz[">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="update" id="#(U40yVvKI,Q#v~8A-g7">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Runterzähler</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="fnCPCcTB6_8IICbY(M*.">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="update" id="LRnPgEv{~qHKOm7fD~0M">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Runterzähler2</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="[0/28G/3OF)rIgx:{O*">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="update" id="-{|76eaG7/8Npy#cEKX"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Heizung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="ac;lS!7~-f-jw0cbwRB0"> <field name="TEXT">Brauen ein</field> </block> </value> <next> <block type="update" id="?LrXrLJ=T^F!mM[P}lK7"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Test</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="NO%8xOI^uk^EkIdL=_Hv"> <field name="TEXT">prg läuft</field> </block> </value> <next> <block type="variables_set" id="mRO@Wb..-9BEK9XfL;Rr"> <field name="VAR">Lager</field> <value name="VALUE"> <block type="math_number" id="m;msh3:nK@3R[5|;u.FM"> <field name="NUM">1</field> </block> </value> <next> <block type="controls_if" id="#a@v*b7WXIr==p!sn=^_"> <value name="IF0"> <block type="logic_compare" id="F-.P|a7)K,%L/wbW)}B*"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="aT?^va~n/3e(xh}27+04"> <field name="VAR">Lager</field> </block> </value> <value name="B"> <block type="math_number" id="~sQZL~aJ,j(2m6Y#knAK"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="c1}(L:*?(_:PFBqzUa(
">
<field name="VAR">Einmaischen Zeit</field>
<value name="VALUE">
<block type="math_number" id="Ug5Pi@ihtY){]RBhT#wm">
<field name="NUM">5</field>
</block>
</value>
<next>
<block type="variables_set" id="[Tr(b:Q7+X)Dt7ph%LMP">
<field name="VAR">Einmaischen Grad</field>
<value name="VALUE">
<block type="math_number" id="xqg/8L@y/hf!2F@}p(E"> <field name="NUM">40</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="^:I-h]Au~vQ7IDp,4x:p"> <field name="COMMENT">aufheizen</field> <next> <block type="controls_if" id="Ao.g{4(8lVO*W3~AM?yc"> <value name="IF0"> <block type="logic_compare" id="t:z.2y0@}qk{hXdZWZ!C"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="4|UndFTrI[Y_
hGj^bJ=">
<field name="VAR">Temperatur Kessel</field>
</block>
</value>
<value name="B">
<block type="math_number" id="DJWBX^nzD)}.GX{0XG6">
<field name="NUM">40</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="JTatYkX=?iR|U-0bBHi"> <mutation delay_input="false"></mutation> <field name="OID">hs100.0.192_168_100_20.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="Gh5edp.^YNf9CHO%{XA7"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="update" id="M(m^#Z3[LQ{O5[k}/nHe"> <mutation delay_input="true"></mutation> <field name="OID">javascript.0.Heizung</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text" id="dEu~qT%8id[ohT7[_c.p"> <field name="TEXT">Heizung ein</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="2C;66bak]yTb=X[hyQ@@"> <field name="COMMENT">runterzählen</field> <next> <block type="variables_set" id="DOjLCNB0k.z)O(ZmjLKu"> <field name="VAR">Runterzähler</field> <value name="VALUE"> <block type="math_number" id=".R_r3[.8KICd/8;H
2F.">
<field name="NUM">10</field>
</block>
</value>
<next>
<block type="update" id="/,D9DXSoOAcU/,U_J!3y">
<mutation delay_input="true"></mutation>
<field name="OID">javascript.0.Runterzähler</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">10</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="#^!9fQtX{^*Bpr]gy+"> <field name="VAR">Runterzähler</field> </block> </value> <next> <block type="timeouts_setinterval" id="GwLlG[^)T,EQ]8_?BzZl"> <field name="NAME">Intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="variables_set" id=".ii@v%#HE
,Qll7(zLP?">
<field name="VAR">Runterzähler</field>
<value name="VALUE">
<block type="math_arithmetic" id="z?;JXaSqn)!xHx#I2nsj">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="[;x:XV![=Ae4TawgC2c"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="tJ1j4)d#VzXeE7h,){q9"> <field name="VAR">Runterzähler</field> </block> </value> <value name="B"> <shadow type="math_number" id=")}]u^VDegFTJzh4dI?ei"> <field name="NUM">1</field> </shadow> </value> </block> </value> <next> <block type="update" id="Kh/w.MSe@GFXIukQ#rm)"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Runterzähler</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="5je94{dAZtuTLLlRG38m"> <field name="VAR">Runterzähler</field> </block> </value> <next> <block type="variables_set" id="oR7cNcksH}Iwd[{5}PIk"> <field name="VAR">Runterzähler2</field> <value name="VALUE"> <block type="variables_get" id="B(a2Gpo6eY
Cv.JyO(YW">
<field name="VAR">Einmaischen Zeit</field>
</block>
</value>
<next>
<block type="update" id="+q=-/)RndL(?JBh,E~+M">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Runterzähler2</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="/,MC2?@}RGUx+)z1P873">
<field name="VAR">Runterzähler2</field>
</block>
</value>
<next>
<block type="variables_set" id="~iqnEBF66chlD-,[Icyx">
<field name="VAR">Temperatur Kessel</field>
<value name="VALUE">
<block type="get_value" id="e{LC~vWNd^9ZwGSLbUyy">
<field name="ATTR">val</field>
<field name="OID">parser.0.Sensor1</field>
</block>
</value>
<next>
<block type="controls_if" id="52#+hW15j[#{Uh,A(@/">
<value name="IF0">
<block type="logic_compare" id="6Z:,yEnY1x2peDVdsrR"> <field name="OP">GTE</field> <value name="A"> <block type="variables_get" id=")#GOMiC2|j
j~;@92=i8">
<field name="VAR">Temperatur Kessel</field>
</block>
</value>
<value name="B">
<block type="math_number" id="xz[u;iTs^.M9@V3pYe%c">
<field name="NUM">40</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="comment" id="g6[+di[w|sk[2_B20]D"> <field name="COMMENT">Regelung</field> <next> <block type="timeouts_setinterval" id="!aS7@|MEtOeYWcK2M8#4"> <field name="NAME">Intervall2</field> <field name="INTERVAL">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="timeouts_clearinterval" id="}*?aKnQkGX]Pf4Hj4Jn*"> <field name="NAME">Intervall</field> </block> </statement> <next> <block type="variables_set" id="Tx;yt
M;-SsYMlqPCYLd">
<field name="VAR">Runterzähler2</field>
<value name="VALUE">
<block type="math_arithmetic" id=")g7^=W8t*J^CFN6Dum.H">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="[;x:XV![=Ae4TawgC2c"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="9Q?^q@0DT}UOAM[|;z9D"> <field name="VAR">Runterzähler2</field> </block> </value> <value name="B"> <shadow type="math_number" id="}9::pZ4nQSEFeR6z#QUh"> <field name="NUM">1</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="3tMF]P9~HcDO53Jw2kaF"> <field name="VAR">Temperatur Kessel</field> <value name="VALUE"> <block type="get_value" id="~-dDli!yFBR,t!p!Xtzg"> <field name="ATTR">val</field> <field name="OID">parser.0.Sensor1</field> </block> </value> <next> <block type="update" id="j^y7)GWjHLx%a
?vJF7@">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Runterzähler</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="stb=7Js~J)he,Hs_!XK;">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="update" id="Nc1}w7N{+@h@7xBvOoJW">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Runterzähler2</field>
<field