Hallo Zusammen,
nun möchte ich euch mein kleines Projekt der letzten Tage vorstellen. Es ist jedoch noch nicht komplett abgeschlossen.
Ich habe mir vor einiger Zeit in meiner Werkstatt so eine Chinastandheizung für knapp 100€ installiert. Leider ist dort die Bedienung nur per Fernbedienung und Tasten am Display möglich.
Anfangs wollte ich die Tasten mit einem 4 Fach Aktor (Relaisplatine) von homematic ansteuern. Kurzzeitig muss ich jedoch Mr. 3000V gewesen sein und habe die Platine und die Fernbedienung zerschossen :-).
Als nächstes habe ich eine Platine von Shelly entdeckt, die quasi das gleich kann nur noch viel mehr zum 1/3 des Preises der Homematic Platine. Leider ist die Shelly Platine noch nicht im Adapter integriert (Git Request habe ich bereits bestellt), jedoch kann ich alles per html request steuern.
Da die Fernbedienung nun kaputt ist, bin ich jetzt direkt an die Tasten des Displays gegangen. Hier bediene ich dann nur die Tasten ON/OFF sowie Heizstufe hoch und runter.
Damit das ganze auch halbwegs schick und gewollt aussieht habe ich noch eine kleine Box gedruckt, die die Shlleyplatine, das Display sowie einen Shelly Uni aufnimmt.
Der Shelly Uni wird benutzt um die Pegelstand im Tank zu messen um es in der Vis auch darzustellen. Später wird der Pegelstand noch benutzt, um eine automatische Betankung des kleinen 5,5l Tanks mittels Pumpe aus einem großen Kanister zu bewerkstelligen.
Das ist die Shelly Platine. die ersten 3 Relais von oben sind für die Steuerung des Displays. Für eine einfachere Montage hab ich dort einen Zwischenstecker installiert.
Das unterste Relais wird später für die Ansteuerung des Krafstoffpumpe verwendet.
Hier ist das Display mit den angelöteten Gegensteckern.
Da ich sehr gerne Ordnung mag hab ich gleich Steckplätze für Wagoklemmen in die Box integriert. Und damit bei der Montage nichts schief geht gleich mehrfarbig gedruckt. Die unteren Wagos dienen zur Spannungsversorgung der Heizung, Shellyplatine und der Kraftstoffpumpe.
Auf der rechten Seite der Box befindet sich die Aufname für den Shelly Uni.
Des Weiteren hab ich noch eine Aufnahme für das eigentliche Display gedruckt. Unten in der Box liegt die Shellyplatine, darauf kommt die Aufnahme und darauf wird dann das Display befestigt.
Angeschlossen sieht das ganze dann so aus.
Als Pegelerfassung nutze ich eine 125mm Pegelsonde.
Diese hat einen veränderlichen Widerstand von 0-190ohm. Leider ist dieser nicht kontinuierlich. Jedoch sind es insgesamt 6 Stufen wo sich der Widerstand ändert. Ist für mich ausreichend genau. Um jedoch das Signal zu messen, habe ich einen Spannungsteiler mit 1kOhm als Widerstand gebaut. Mit der Eingangsspannung von 12V ergeben sich dann knapp 0-2 Volt als Messbereich. Ausreichend groß um die Stufen dann mittels Shelly Uni zu messen und per Script dann in den jeweilgen Füllstand umzurechnen.
An der Shellyplatine hab ich dann noch einen Temperaturfühler angebracht um die Ausströmertemperatur zu messen.
Nun gibt es noch die bisher erstellten BlocklyScripte:
Startscript: Startet die Heizung und sperrt zunächst 8min die Steuerung. Die Heizung fährt sich alleine erstmal hoch, dort reagiert sie auch nicht auf eine Änderung am Display.
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="$tU996o~hQ[gu+Rp]ZzL" x="138" y="88">
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_On</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="-kvipVRHx8bQ=BYHNv*|">
<value name="IF0">
<block type="logic_compare" id="%z+e+i0x7-#GA)9#3[5F">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="?1RP)!8R(~0^N,3i{}hQ">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_On</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="9P]dho?Dg)Ol5EY~$Utq">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="`E9{]wV#ZzVvYxa-[qIi">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="8KWV8^?KTJK~1/,FxL0x">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="request" id="=#~U|~ufO;;RIFT51z*Z">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="Dv-gz/AEM.O*pf8=9d=e">
<field name="TEXT">http://192.168.178.140/relay/2?turn=on</field>
</shadow>
</value>
<next>
<block type="timeouts_wait" id="Ut#@_]7_Ocl!qwh0+9ZH">
<field name="DELAY">2500</field>
<field name="UNIT">ms</field>
<next>
<block type="request" id="b)IGmCnP(mkg+HpY3ZJu">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="$|(F/4!az1S+8D?w!i0%">
<field name="TEXT">http://192.168.178.140/relay/2?turn=off</field>
</shadow>
</value>
<next>
<block type="control" id="Q(KElrPDwU#?`05agb:$">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="N}TV|F%J;H/d1ma,~lnu">
<field name="TEXT">Heizung startet! Bedienung für 8min gesperrt.</field>
</block>
</value>
<next>
<block type="control" id="8@rsdx{|5Ny-mRp77$;l">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Freigabe</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">8</field>
<field name="UNIT">min</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="k(F9$uy7Kop+oGm9MCp6">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="control" id="EK9bbEhGIZpD_5w{n[EG">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">8</field>
<field name="UNIT">min</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="text" id="q-ZIoo@6^==/AcRP=oT~">
<field name="TEXT">Hochlauf abgeschlossen und Freigabe erteilt</field>
</block>
</value>
<next>
<block type="control" id="#0laTSHaL(M~X6PfBM~:">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">500</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="text" id="j|Y@e5V{,B|-d*#BGwAV">
<field name="TEXT"></field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Wenn die 8 min vorbei sind, wird die Freigabe für Heizstufe hoch und runter erteilt. Die Heizung startet immer in Heizstufe 3 von 6.
Die Scripte zählen dann automatisch die Heizstufen mit hoch und runter und sperren sich wenn die kleinste oder höchste Stufe erreicht ist.
Heizstufe runter:
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="YQ6XX(]NsmxZEN-^$jHM" x="238" y="62">
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Down</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="9!khcKWsA5;ZZ[t+/@8O">
<value name="IF0">
<block type="logic_multi_and" id="mKL^S/vITNpfMyhKtfdC">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<value name="AND0">
<block type="logic_compare" id="9B0O//g^EB2tA0~l+uii">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="v(i5r#h[]ul``DFZ$z|d">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Down</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="@OVi1+pG[|$)4W6#/_Tl">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="logic_multi_and" id="-#;92aA#@bv`%Y*!`@]2">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<value name="AND0">
<block type="logic_compare" id="kWeOb0!:)Y+G]g,9OKT?">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="+wFLQW9[|04f=t$W+Dw`">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
</block>
</value>
<value name="B">
<block type="math_number" id=".AH`b}8=?AZAXihpYrl!">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="logic_compare" id="xiOi|fX8*AL*alPUm5W_">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="%9qa^R(SGh4?Ogz5w;R]">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Freigabe</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="!B*L#|AGyB;#$DG}S%C^">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="request" id="=#~U|~ufO;;RIFT51z*Z">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="Dv-gz/AEM.O*pf8=9d=e">
<field name="TEXT">http://192.168.178.140/relay/1?turn=on</field>
</shadow>
</value>
<next>
<block type="timeouts_wait" id="c-p;x5/E.2j{i$2C0B4`">
<field name="DELAY">750</field>
<field name="UNIT">ms</field>
<next>
<block type="request" id="J@{%uh|E@DB3a0+I~RLX">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="6g21V#a+@_cTOom}bs,g">
<field name="TEXT">http://192.168.178.140/relay/1?turn=off</field>
</shadow>
</value>
<next>
<block type="control" id="@jihPVZsZeHBBIhzK!-)">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Down</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="uK$Axj2l8o.TOts@JbPE">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="e.`Cm)ApP934MxaV?/C@">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_arithmetic" id="U,mmQ7v^5B/!I+{8U#rq">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="n:x}*D9/xx+fELeF2P*u">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="gB+dc%F/$obpW%Bu6.`u">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="u1@ALAb#3^nhm-uif/x@">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="1}AvgoEZ%O+o}/?:w=#^">
<value name="IF0">
<block type="logic_multi_and" id="wFt5Q,D3A%CH*`~!]IPa">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<value name="AND0">
<block type="logic_compare" id="+mdg%j:=G,Fj$D9J3iN+">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="jpGn_bnsar54`/)+F.+]">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Down</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="=nNU?H?v/.hw65[EdvQh">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="logic_compare" id="i9Qe(:z|.+I0GPs+j:ql">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="kh!ozti.:f*W5zFiq`kF">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
</block>
</value>
<value name="B">
<block type="math_number" id="b$7:,(xUS_!/EX*;#CYM">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="hi8QC05VCtuMPc@MZ3/W">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Down</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="6~J=fBw_ZF9%(j,KLaPI">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="Q(KElrPDwU#?`05agb:$">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="N}TV|F%J;H/d1ma,~lnu">
<field name="TEXT">Kleinste Stufe erreicht</field>
</block>
</value>
<next>
<block type="control" id="3=jGY}5;qwu=G-flCg0^">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</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=")_gK@lrF#Zq$G@_@V=LQ">
<field name="TEXT"></field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>
Heizstufe hoch:
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="YQ6XX(]NsmxZEN-^$jHM" x="238" y="62">
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Up</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="9!khcKWsA5;ZZ[t+/@8O">
<value name="IF0">
<block type="logic_multi_and" id="mKL^S/vITNpfMyhKtfdC">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<value name="AND0">
<block type="logic_compare" id="9B0O//g^EB2tA0~l+uii">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="v(i5r#h[]ul``DFZ$z|d">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Up</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="@OVi1+pG[|$)4W6#/_Tl">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="logic_multi_and" id="-#;92aA#@bv`%Y*!`@]2">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<value name="AND0">
<block type="logic_compare" id="kWeOb0!:)Y+G]g,9OKT?">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="+wFLQW9[|04f=t$W+Dw`">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
</block>
</value>
<value name="B">
<block type="math_number" id=".AH`b}8=?AZAXihpYrl!">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="logic_compare" id="xiOi|fX8*AL*alPUm5W_">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="%9qa^R(SGh4?Ogz5w;R]">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Freigabe</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="!B*L#|AGyB;#$DG}S%C^">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="request" id="=#~U|~ufO;;RIFT51z*Z">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="Dv-gz/AEM.O*pf8=9d=e">
<field name="TEXT">http://192.168.178.140/relay/3?turn=on</field>
</shadow>
</value>
<next>
<block type="timeouts_wait" id="c-p;x5/E.2j{i$2C0B4`">
<field name="DELAY">750</field>
<field name="UNIT">ms</field>
<next>
<block type="request" id="J@{%uh|E@DB3a0+I~RLX">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="6g21V#a+@_cTOom}bs,g">
<field name="TEXT">http://192.168.178.140/relay/3?turn=off</field>
</shadow>
</value>
<next>
<block type="control" id="@jihPVZsZeHBBIhzK!-)">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Up</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="uK$Axj2l8o.TOts@JbPE">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="e.`Cm)ApP934MxaV?/C@">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_arithmetic" id="U,mmQ7v^5B/!I+{8U#rq">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number" id="n:x}*D9/xx+fELeF2P*u">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="gB+dc%F/$obpW%Bu6.`u">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="u1@ALAb#3^nhm-uif/x@">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="1}AvgoEZ%O+o}/?:w=#^">
<value name="IF0">
<block type="logic_multi_and" id="wFt5Q,D3A%CH*`~!]IPa">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<value name="AND0">
<block type="logic_compare" id="+mdg%j:=G,Fj$D9J3iN+">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="jpGn_bnsar54`/)+F.+]">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Up</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="=nNU?H?v/.hw65[EdvQh">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="logic_compare" id="i9Qe(:z|.+I0GPs+j:ql">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="kh!ozti.:f*W5zFiq`kF">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Heizstufe</field>
</block>
</value>
<value name="B">
<block type="math_number" id="b$7:,(xUS_!/EX*;#CYM">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="hi8QC05VCtuMPc@MZ3/W">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Up</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="6~J=fBw_ZF9%(j,KLaPI">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="Q(KElrPDwU#?`05agb:$">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="N}TV|F%J;H/d1ma,~lnu">
<field name="TEXT">Höchste Stufe erreicht</field>
</block>
</value>
<next>
<block type="control" id="3=jGY}5;qwu=G-flCg0^">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</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=")_gK@lrF#Zq$G@_@V=LQ">
<field name="TEXT"></field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>
Abschalten:
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="$tU996o~hQ[gu+Rp]ZzL" x="138" y="88">
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_On</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="-kvipVRHx8bQ=BYHNv*|">
<value name="IF0">
<block type="logic_compare" id="%z+e+i0x7-#GA)9#3[5F">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="?1RP)!8R(~0^N,3i{}hQ">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_On</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="9P]dho?Dg)Ol5EY~$Utq">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="request" id="=#~U|~ufO;;RIFT51z*Z">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="Dv-gz/AEM.O*pf8=9d=e">
<field name="TEXT">http://192.168.178.140/relay/2?turn=on</field>
</shadow>
</value>
<next>
<block type="timeouts_wait" id="Ut#@_]7_Ocl!qwh0+9ZH">
<field name="DELAY">2500</field>
<field name="UNIT">ms</field>
<next>
<block type="request" id="b)IGmCnP(mkg+HpY3ZJu">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="$|(F/4!az1S+8D?w!i0%">
<field name="TEXT">http://192.168.178.140/relay/2?turn=off</field>
</shadow>
</value>
<next>
<block type="control" id="Q(KElrPDwU#?`05agb:$">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="N}TV|F%J;H/d1ma,~lnu">
<field name="TEXT">Heizung fährt herunter, Freigabe entzogen</field>
</block>
</value>
<next>
<block type="control" id="8@rsdx{|5Ny-mRp77$;l">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.B_Werkstattheizung_Freigabe</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="k(F9$uy7Kop+oGm9MCp6">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="/f@iSqb-Z)tvu!A5A*+r">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Text</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2</field>
<field name="UNIT">min</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="text" id="WKFRSa1mm=Vc?V|%}U?(">
<field name="TEXT"></field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Analog zum selbständigen Hochfahren der Heizung führt diese auch eine Selbstständige Abkühlphase durch. Zur Zeit wird das jedoch noch nicht vom Script erschlagen. Daher bitte mit vorsicht zu genießen.
Nun folgen noch die Abfrage der Temperatur und Spannung der jeweiligen Shelly:
Temperatur
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="!);hs;9{=,[~A8o5{=Hv">x</variable>
<variable id="vKh/VeTs4fFJuM1~{sL^">result</variable>
</variables>
<block type="schedule" id="S5y/ctFHiI7:WlW-,Dfh" x="112" y="63">
<field name="SCHEDULE">* * * * * *</field>
<statement name="STATEMENT">
<block type="request" id="UTG6!ewVuNx|/w}T^dBz">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
<field name="WITH_STATEMENT">TRUE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="0KpZxvNEi=c6f!Np2x*U">
<field name="TEXT">http://192.168.178.140/rpc/Temperature.GetStatus?id=100</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="variables_set" id="bfIINS`.pTEu+cC3%qg[">
<field name="VAR" id="!);hs;9{=,[~A8o5{=Hv">x</field>
<value name="VALUE">
<block type="get_attr" id="6l|u$1Ux]=:T::Zok93~">
<value name="PATH">
<shadow type="text" id="QR9!,Cad!IG[S06MPl|z">
<field name="TEXT">tC</field>
</shadow>
</value>
<value name="OBJECT">
<shadow type="get_object" id="aq)Rdy.u8%`LFx0K+o@!">
<field name="OID">Object ID</field>
</shadow>
<block type="convert_json2object" id=";Ll?WdS,2,vA-zX:V]9M">
<value name="VALUE">
<block type="variables_get" id="tY3hxMoz/LX!f_go.c.N">
<field name="VAR" id="vKh/VeTs4fFJuM1~{sL^">result</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="update" id="=q.UG4o;V#*~Md#`H$o9">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Ausstroemertemperatur</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="f_l+(|oUEI0^){.#3A;-">
<field name="VAR" id="!);hs;9{=,[~A8o5{=Hv">x</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Spannung:
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="!);hs;9{=,[~A8o5{=Hv">x</variable>
<variable id="vKh/VeTs4fFJuM1~{sL^">result</variable>
</variables>
<block type="schedule" id="S5y/ctFHiI7:WlW-,Dfh" x="112" y="63">
<field name="SCHEDULE">* * * * * *</field>
<statement name="STATEMENT">
<block type="request" id="UTG6!ewVuNx|/w}T^dBz">
<mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
<field name="WITH_STATEMENT">TRUE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="0KpZxvNEi=c6f!Np2x*U">
<field name="TEXT">http://192.168.178.141/rpc/Voltmeter.GetStatus?id=100</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="variables_set" id="bfIINS`.pTEu+cC3%qg[">
<field name="VAR" id="!);hs;9{=,[~A8o5{=Hv">x</field>
<value name="VALUE">
<block type="get_attr" id="6l|u$1Ux]=:T::Zok93~">
<value name="PATH">
<shadow type="text" id="QR9!,Cad!IG[S06MPl|z">
<field name="TEXT">voltage</field>
</shadow>
</value>
<value name="OBJECT">
<shadow type="get_object" id="aq)Rdy.u8%`LFx0K+o@!">
<field name="OID">Object ID</field>
</shadow>
<block type="convert_json2object" id=";Ll?WdS,2,vA-zX:V]9M">
<value name="VALUE">
<block type="variables_get" id="tY3hxMoz/LX!f_go.c.N">
<field name="VAR" id="vKh/VeTs4fFJuM1~{sL^">result</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="update" id="=q.UG4o;V#*~Md#`H$o9">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="f_l+(|oUEI0^){.#3A;-">
<field name="VAR" id="!);hs;9{=,[~A8o5{=Hv">x</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Und abschließend noch die Umrechnung von Volt in prozentualen Stufen:
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="xJ[|`FS|n8IM09ZoRk]`" x="88" y="-137">
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="#nK)yu%Qt.JT=6)rwfQ/">
<mutation elseif="5"></mutation>
<value name="IF0">
<block type="logic_between" id="}5fmcYO^vc{Rd7thL#:F">
<field name="MIN_OPERATOR">LE</field>
<field name="MAX_OPERATOR">LT</field>
<value name="MIN">
<block type="math_number" id="x`b46TWbLjMn4NxzqINX">
<field name="NUM">0</field>
</block>
</value>
<value name="VALUE">
<shadow type="math_number" id="P2@qS~JU~R?O#Al@zu=I">
<field name="NUM">42</field>
</shadow>
<block type="get_value" id="ZoHikS+~ewT]pdjbH$r0">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
</block>
</value>
<value name="MAX">
<block type="math_number" id="AGgj!,MY9I9*y,,`rX^f">
<field name="NUM">0.3</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="1,~#!4#0T0[[{lSh8(+q">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Tankfüllstand</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="8b[`?[g3R`luMN,^|nJ|">
<field name="NUM">0</field>
</block>
</value>
</block>
</statement>
<value name="IF1">
<block type="logic_between" id="EwqHluPmKIS/a-s+d|$$">
<field name="MIN_OPERATOR">LE</field>
<field name="MAX_OPERATOR">LT</field>
<value name="MIN">
<block type="math_number" id="PVq4yno;HUGZZc01^h}T">
<field name="NUM">0.3</field>
</block>
</value>
<value name="VALUE">
<shadow type="math_number" id="P2@qS~JU~R?O#Al@zu=I">
<field name="NUM">42</field>
</shadow>
<block type="get_value" id="lC?5E,AwvS8h=4h.3C)T">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
</block>
</value>
<value name="MAX">
<block type="math_number" id="UOhMfk2/A)IzWup_4JNJ">
<field name="NUM">0.6</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="control" id="-i[.mk.8{?P9K|`9+e4,">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Tankfüllstand</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="T#kIquVF);B]oOu~hy9m">
<field name="NUM">20</field>
</block>
</value>
</block>
</statement>
<value name="IF2">
<block type="logic_between" id=".J+Ij9*Ghf}y3O@1S-cy">
<field name="MIN_OPERATOR">LE</field>
<field name="MAX_OPERATOR">LT</field>
<value name="MIN">
<block type="math_number" id="kZmPc[c(vU6FtFhbNc43">
<field name="NUM">0.6</field>
</block>
</value>
<value name="VALUE">
<shadow type="math_number" id="P2@qS~JU~R?O#Al@zu=I">
<field name="NUM">42</field>
</shadow>
<block type="get_value" id="cL4zpYl-~-^Oxj+tH3s5">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
</block>
</value>
<value name="MAX">
<block type="math_number" id="H|+{+t(D|EDSt(2.T}Zg">
<field name="NUM">1.2</field>
</block>
</value>
</block>
</value>
<statement name="DO2">
<block type="control" id="=e|m.lKD)hZ^WI0e_t3k">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Tankfüllstand</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="M(Y*TBKe%,-yW$8#[ArG">
<field name="NUM">40</field>
</block>
</value>
</block>
</statement>
<value name="IF3">
<block type="logic_between" id="[k)#~YK5`AWZfC7+}YUY">
<field name="MIN_OPERATOR">LE</field>
<field name="MAX_OPERATOR">LT</field>
<value name="MIN">
<block type="math_number" id="czsmVFCZ^O,ERz*j)fWz">
<field name="NUM">1.2</field>
</block>
</value>
<value name="VALUE">
<shadow type="math_number" id="P2@qS~JU~R?O#Al@zu=I">
<field name="NUM">42</field>
</shadow>
<block type="get_value" id="HSkz0?fd:#KnwqY62`eR">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
</block>
</value>
<value name="MAX">
<block type="math_number" id="4@h`zh|v7]bN]rG7zgJL">
<field name="NUM">1.45</field>
</block>
</value>
</block>
</value>
<statement name="DO3">
<block type="control" id="6DNPjF{a_6pipj1PT2,a">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Tankfüllstand</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="wF.o.Bl@x$/jh#BwD}Gh">
<field name="NUM">60</field>
</block>
</value>
</block>
</statement>
<value name="IF4">
<block type="logic_between" id="_HkC0ZK~c4P|)VuPp[7C">
<field name="MIN_OPERATOR">LE</field>
<field name="MAX_OPERATOR">LT</field>
<value name="MIN">
<block type="math_number" id="6x!sjnvwh0JgPuwzkiF9">
<field name="NUM">1.45</field>
</block>
</value>
<value name="VALUE">
<shadow type="math_number" id="P2@qS~JU~R?O#Al@zu=I">
<field name="NUM">42</field>
</shadow>
<block type="get_value" id="8q8H1b?Iek`o(jKtnY:m">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
</block>
</value>
<value name="MAX">
<block type="math_number" id="lG4ISgP1FYEz#xap9(NB">
<field name="NUM">1.7</field>
</block>
</value>
</block>
</value>
<statement name="DO4">
<block type="control" id="}aGMHDP]R/gRz0#C]fe]">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Tankfüllstand</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id=".Y:Abs0.lO_;;AL+GG}`">
<field name="NUM">80</field>
</block>
</value>
</block>
</statement>
<value name="IF5">
<block type="logic_between" id=".~VsBY_):n-HG$p=d]O/">
<field name="MIN_OPERATOR">LE</field>
<field name="MAX_OPERATOR">LT</field>
<value name="MIN">
<block type="math_number" id="emPN?M|ULRTqN5pa0eZE">
<field name="NUM">1.7</field>
</block>
</value>
<value name="VALUE">
<shadow type="math_number" id="P2@qS~JU~R?O#Al@zu=I">
<field name="NUM">42</field>
</shadow>
<block type="get_value" id="D0W-M6!,eUa,%R?!iJA1">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Pegelstand_Spannung</field>
</block>
</value>
<value name="MAX">
<block type="math_number" id="MdQ_?q*S`9!sfib![;3H">
<field name="NUM">2.1</field>
</block>
</value>
</block>
</value>
<statement name="DO5">
<block type="control" id="NoM/k3ug%pt~33EXJp+_">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Werkstattheizung.Var_Werkstattheizung_Tankfüllstand</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_number" id="xUVm,_mTZUu,W~SKn@%*">
<field name="NUM">100</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</xml>
In der Vis hab ich das bisher nur erstmal quick and dirty integriert und sieht so aus.
Für die Zukunft sind die angesprochene automatische Betankung und weitere Scripte z.B. einen Automatikmodus geplant.
Sowie die Gestaltung des Deckels mit den Druckknöpfen für die Tasten am Display. Aktuell sieht es nämlich so aus.
Über ein Feedback von euch würde ich mich sehr freuen.