@zimbl Ja, du musst ja nur 4 Wörter einschreiben, der Rest legt sich an. Dann mit Blockly die Geräte auf die Werte binden. Fertig. Die Geräte-Verbindungen sind meist mit dem Block "Binde Objekt" für Fenster und Thermostate zu machen. Du musst nur mit den Richtungen der Bindungen aufpassen... also Isttemperatur -> an gemessene Raumtemperatur, Sollwert -> einzustellende Thermostateinstellung, Fenstersensor -> an Fenster usw. Alles andere macht das Script selbstständig. Probier es einfach mal aus, dann steigst auch mit eigenen Ideen dahinter.
Hier das Script für die Relaiskarte: Einschalten bei Soll-Temperatur -1°
Ausschalten bei Solltemperatur +1°.
FBH sind aber in der Regel sehr träge, das kann schon sein das du die Spanne von 2° als zu kalt oder zu warm empfindest. Eine Spanne sollte aber sein, sonst schalten die Relais schneller als die Ventile auf oder zu gehen, die brauchen etwa 5 Minuten bis eine Veränderung eintritt. Versuch dich mal.
Geraeteanbindung.png
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="direct" id="122Luh|cac@GOd#aNfK3" x="138" y="38">
<field name="ONLY_CHANGES">TRUE</field>
<value name="OID_SRC">
<shadow type="field_oid" id="t84gg.ksdb(zm;esd6dq">
<field name="oid">Object ID 1</field>
</shadow>
<block type="text" id="t#CwO6d[~+.YJuEI0gp+">
<field name="TEXT">Soll-Temp (aus dem Script)</field>
</block>
</value>
<value name="OID_DST">
<shadow type="field_oid" id="W(;zcydv6u@CbDKe7QP:">
<field name="oid">Object ID 2</field>
</shadow>
<block type="text" id="wWg{#pE]505vGx,N-C#6">
<field name="TEXT">Sollwert des Thermostat</field>
</block>
</value>
</block>
<block type="on_ext" id="Tab1X!)Sz(n5A{wud?+J" x="13" y="113">
<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="IbPII#T-7+QgNz9=;bQT">
<field name="oid">default</field>
</shadow>
<block type="text" id="hS;8]+OD)K*1784S2d!4">
<field name="TEXT">gemessene Raumtemperatur</field>
</block>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="?O110@seG6%YHx,0@_`-">
<value name="IF0">
<block type="logic_compare" id="y0e5E4Gg#+s:bEL/eVKD" inline="false">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value_var" id="ennRG{l!qPm:jt#es.aw">
<field name="ATTR">val</field>
<value name="OID">
<shadow type="text" id="B}TK;?,M6Cmi48C3qv!g">
<field name="TEXT"></field>
</shadow>
<block type="text" id="y3p7Mx5r$HP!R)m`D;[J">
<field name="TEXT">gemessene Raumtemperatur</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="{VEdDB7t$(F.^r[7HSJf">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number" id="A}ny(21Mao@JhlvC6pn@">
<field name="NUM">1</field>
</shadow>
<block type="get_value_var" id="ga~USMwuPP;K^KwGi4lR">
<field name="ATTR">val</field>
<value name="OID">
<shadow type="text">
<field name="TEXT"></field>
</shadow>
<block type="text" id="!mm6Q1GR_qBBu)iCtPs;">
<field name="TEXT">Soll-Wert aus dem Script</field>
</block>
</value>
</block>
</value>
<value name="B">
<shadow type="math_number" id="Tn:WS.Gq#!1=N~6AW54Q">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control_ex" id="_i4mYmx~hn_QGvL}J~0E" inline="true">
<field name="TYPE">false</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="OID">
<shadow type="field_oid" id="3kbq:Jn$?UibK0VYnsYQ">
<field name="oid">Object ID</field>
</shadow>
<block type="text" id="a}_^QJODZ0qS1egw#0~H">
<field name="TEXT">Ausgang1 von Relaiskarte</field>
</block>
</value>
<value name="VALUE">
<shadow type="logic_boolean" id="0ds!#Fd?$[uI{6j3sYFe">
<field name="BOOL">FALSE</field>
</shadow>
</value>
<value name="DELAY_MS">
<shadow type="math_number" id="3PEM6%M!8hB[wo?^u._%">
<field name="NUM">1000</field>
</shadow>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="Js4C:T,=*mB|.6g@UKpg">
<value name="IF0">
<block type="logic_compare" id="=Yb8B)JZAN+|;Tk7(KD[" inline="false">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value_var" id="t/3*jqK~1]evE^6bhWDJ">
<field name="ATTR">val</field>
<value name="OID">
<shadow type="text">
<field name="TEXT"></field>
</shadow>
<block type="text" id="i?5}jEoee!^wO}7U`lzj">
<field name="TEXT">gemessene Raumtemperatur</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="oLn~KfD=S_juOD?,z:,7">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="WrpTbRf!GGhK!wEmVO5h">
<field name="NUM">1</field>
</shadow>
<block type="get_value_var" id="8qTw,2H_!vAN,T3FGmDZ">
<field name="ATTR">val</field>
<value name="OID">
<shadow type="text">
<field name="TEXT"></field>
</shadow>
<block type="text" id="]FJIkYj;D4oLQ;?yH/sV">
<field name="TEXT">Soll-Wert aus dem Script</field>
</block>
</value>
</block>
</value>
<value name="B">
<shadow type="math_number" id="vl0rG-Xl^kXv@5YO^d,M">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control_ex" id="A9w]dc).}np7!kHk_!il" inline="true">
<field name="TYPE">false</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="OID">
<shadow type="field_oid">
<field name="oid">Object ID</field>
</shadow>
<block type="text" id="3Y81X;b|fJ(_+eSW_p}!">
<field name="TEXT">Ausgang1 von Relaiskarte</field>
</block>
</value>
<value name="VALUE">
<shadow type="logic_boolean" id="/k!p~uX+zCkDOm.`6t^1">
<field name="BOOL">TRUE</field>
</shadow>
</value>
<value name="DELAY_MS">
<shadow type="math_number" id=".BJD:luAR6Tju2GJMdZk">
<field name="NUM">1000</field>
</shadow>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>
Teste es mal und baue die Geräte dazu an die richtigen Stellen.