NEWS
Chinaheizung halbwegs smart gemacht
-
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.
-
@gmt94 super projekt!
-
@gmt94 Dein Projekt erscheint ja höchst interessant. Ich habe eine ähnliche Konstellation im Einsatz und ärgere mich immer wieder, dass ich das Gerät eigentlich nur am oder in der Nähe des Geräts bedienen kann. Von daher wäre ich an einem Nachbau deines Projekts interessiert. Welche Platine von Shelly hast du denn dabei genutzt? Ich fand auf die Schnelle nichts, was nach der von dir genutzten Platine aussieht.
-
@radi musste auch suchen. Noch nie gesehen.
https://www.shelly.com/de/products/db2024r-xsm
Da gibt's noch was
https://www.shelly.com/de/products/db2024t-xsm -
Hey Radi,
Hier ist der Link:
https://www.shelly.com/de/products/db2024r-xsm
Falls du weitere Unterstützung benötigst einfach melden.
Vg
-
@gmt94 Danke dir und auch da_Woody. Die Platine kannte ich auch noch nicht. Vielleicht kannst du mal, wenn genug Zeit ist, eine Materialaufstellung machen. Das würde den Nachbau erleichtern. Die .stl-Files für den 3D-Druck wären natürlich auch willkommen. So, jetzt habe ich aber genug gewünscht. Es ist auf jeden Fall ein sehr interessantes Projekt, das mich zum Nachbau anstachelt.
-
Bist du der woody aus dem shelly forum der da nicht mehr aktiv ist?
Wenn ja hab ich dir damals ja die shelly in Box druckdatei extra für dich erstellt.
-
Werde ich heute abend alles zusammen stellen.
-
@gmt94 oioi, wie die Zeit vergeht...
Jup, das war meinereiner. Wurde damals vom selbsternannten godadmin gesperrt.
Thnx noch mal für die Box!
Biste da noch dran für die neuen Shelly? -
So wie versprochen anbei die Stückliste. Ich werde nachher auch noch einen Schaltplan malen.
1x Shelly X MOD1 – DevKit with 4 relays
1x Shelly Uni
1x Temperatursensor ds18b20
4x Wago 221 5 Fach
1x Wago 221 3 Fach
2x Zugentlastung M12
1x kOhm Widerstand
12x M3 Einpressmuttern
8x M3x10 Senkkopf
4x M3x6 Flachkopf
3x Steckverbindungskabel (optional, erleichtert jedoch Montage von Display und Shelly)
1x 125mm Pegelmesser
2x1,5qm Kabel
0,5qm Signalkabel
einige kleine Aderendhülsen
Schrumpfschlauch
LötkolbenDas müsste es erstmal gewesen sein. Am Wochenende hab ich dann noch für die Ausströmerseite ein kleines Rohr mit Bogen gedruckt, dieser kann dann den Temperatursensor aufnehmen. Das habe ich jedoch aus ASA aufgrund der Temperaturbeständigkeit gedruckt,
-
Wie angekündigt hier noch der Schaltplan:
Ich hoffe, dass man damit was anfangen kann.
-
@gmt94 sagte in Chinaheizung halbwegs smart gemacht:
0,5qm Signalkabel
ganz schön dick...
ne, auch wenn ich sowas nicht brauche, thnx fürs teilen! -
@gmt94 Danke für die Aufstellung. Ist sehr detailliert geworden. Was für ein Display hast du da verbaut?
Ich habe es bei mir so realisiert, das ich am Ausgang der Heizung einen temperaturbeständigen Rohrlüfter angeschlossen habe, der über die Stromaufnahme der Standheizung gesteuert eingeschaltet wird und die warme Luft über ein Rohrsystem mit mehreren Luftauslässen im Gebäude verteilt. -
Na das ist das Display direkt von der Heizung. Das habe ich aus dem originalen Gehäuse ausgebaut. Ohne dem funktioniert ja die ganze Heizung nicht.
-
@gmt94 Manchmal ist man einfach nur blind. Habe mir das Bild gerade noch mal richtig angeschaut und mir erstmal vor den Kopf geschlagen
-
Hast du ein Display mit schwarzem oder weißen Stecker? Die sind nämlich etwas unterschiedlich.
-
@gmt94 Habs noch nicht auseinander gebaut. Würde mich melden, wenn ich mal wieder Muse habe, mich mit dem Thema zu beschäftigen. Momentan haben leider noch andere Dinge Priorität.