NEWS
[GELÖST] Zyklische Belüftung des Kellers
-
Hallo,
ich bin neu in der ioBroker Welt und beschäftige mich erst seit zwei Tagen damit.
Ich wollte eine automatisierte Belüftung und Entfeuchtung meines Kellers umsetzen und hatte vor einer Woche mit OpenHab begonnen. Leider hatte ich egal mit welcher Version von OpenHab (2.4.x oder 2.5.x) massive Probleme in Bezug auf Stabilität.
Somit bin ich dann auf ioBroker gewechselt und das System läuft ohne Probleme stabil mit meinen Sonoff und Xiaomi Devices auf Synology als Docker (mit macvlan).
Ich habe auch gleich ein Skript von Paul53 gefunden, welches ich angepasst habe um die Taupunkttemperatur innen und außen berechnen zu lassen (die Werte werden von zwei Sonoff TH16 mit SI7021 geliefert) als Indikator zur Belüftung. Dieses Skript läuft ohne Probleme und liefert zyklisch alle notwendigen Wert als Ausgangspunkt für die Steuerung der Entlüftung durch 3x Sonoff Basic (steuern Lüfter für Be- und Entlüftung).
Jetzt habe ich Anfänger versucht mit Blockly die Logik zu bauen das wenn die Differenz der Taupunkttemperatur innen und außen > 5 (Ergebnis der Berechnung wird in die Variable I geschrieben) ist die Belüftung anspringt 10 Minuten läuft und dann 30 Minuten pausiert und dann wieder anläuft und dies so lange ausführt bis die Taupunkttemperaturdifferenz zwischen innen und außen <= 5 ist.
Ich habe es auch schon mit Schleifen etc. probiert und komme leider nicht wirklich weiter.
Entweder schiesse ich die Javascript Instanz ab oder es funktionier einfach nicht
Ich würde mich über Hinweise/Ratschläge freuen, danke.Anbei der Export des Skriptes aus Blockly als Blöcke.
BelüftungWeiterhin noch als Screenshot.
Hier noch im Text:
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="Y~;Ahk1bvkYnG+=S|c{F">i</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="Intervall">Intervall</variable> </variables> <block type="on_ext" id=")t/Y{xMr2`Z{{Ax_~+Qd" x="38" y="38"> <mutation items="4"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="y_,mU|OssH0.w1{cD`b|"> <field name="oid">javascript.0.Raumklima.Raum.Aussen.Taupunkt</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="Rb40mVdg:]j|m=VpeEYQ"> <field name="oid">javascript.0.Raumklima.Raum.Aussen.relative_Luftfeuchtigkeit</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="ZL/n)moY(3RW_p:3iI5/"> <field name="oid">javascript.0.Raumklima.Raum.Keller.Taupunkt</field> </shadow> </value> <value name="OID3"> <shadow type="field_oid" id="HrUJq:u##;mKVs*Wp2Gs"> <field name="oid">javascript.0.Raumklima.Raum.Keller.relative_Luftfeuchtigkeit</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="#Kmyy_*Po9l:zU@Lzqn["> <field name="VAR" id="Y~;Ahk1bvkYnG+=S|c{F" variabletype="">i</field> <value name="VALUE"> <block type="math_arithmetic" id="TOZuMjbe%h`-$1pO}5E)"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="WRdr-g9b~9k]H}sTWDlp"> <field name="NUM">1</field> </shadow> <block type="get_value" id="QO%f[:mtJn7W+[k_2HS]"> <field name="ATTR">val</field> <field name="OID">javascript.0.Raumklima.Raum.Keller.Taupunkt</field> </block> </value> <value name="B"> <shadow type="math_number" id="k?uZR(se@(7m%/p}gPnM"> <field name="NUM">1</field> </shadow> <block type="get_value" id="`~)teK:*jlsL+31NyvW9"> <field name="ATTR">val</field> <field name="OID">javascript.0.Raumklima.Raum.Aussen.Taupunkt</field> </block> </value> </block> </value> <next> <block type="controls_if" id="*yJ~Y~U@0II:TK?=VS`c"> <value name="IF0"> <block type="logic_compare" id="1FoyYcCjv+OwFJEP;xv-"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="1q,kWpiNV:uWR/Mc3XY@"> <field name="VAR" id="Y~;Ahk1bvkYnG+=S|c{F" variabletype="">i</field> </block> </value> <value name="B"> <block type="math_number" id="doPXNjf8|rF?3_p1NAt`"> <field name="NUM">5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="f|R3:fF?,:b1NK(r,_qz"> <field name="NAME">timeout</field> <field name="DELAY">10</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="DSJm~ebZB=d?}[M6DR61"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.SonoffBasicAbluft.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="W_u%eyZaFcmO:@l)D+xw"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="X,R/2|xByQ(sYSsma0Tm"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Zuluft1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="ltA_dA6K}cr_h:j^qBVT"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="P%SYqhA;F_Aa=7[biXxd"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Zuluft2.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="fy$/C2$K?eN|aAI!*8br"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_setinterval" id="b;|Iy*TrE+hPEN,65V*g"> <field name="NAME">Intervall</field> <field name="INTERVAL">30</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="debug" id="%}uWBG:i;(]z4[w@#rk4"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="]+(kg!24IA~~:IY=m4[+"> <field name="TEXT">Beginn Intervall Lüftung</field> </shadow> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> <next> <block type="controls_if" id="E|V9_`*EE/_QTmfjiGkL"> <value name="IF0"> <block type="logic_compare" id="I4RSIlAn|RHoB.vwO7WK"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="J|JHn@B9`rOs}BBScKx}"> <field name="VAR" id="Y~;Ahk1bvkYnG+=S|c{F" variabletype="">i</field> </block> </value> <value name="B"> <block type="math_number" id="nzB0TGnIiZg3Wl;h:%}Y"> <field name="NUM">5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id=";C[;f)@.O}WQ29Lhh!P)"> <field name="NAME">Intervall</field> <next> <block type="timeouts_cleartimeout" id=",@_J){|$ve[=?EMY?Gta"> <field name="NAME">timeout</field> <next> <block type="debug" id="xo(Wo_W#xM7lTJehc$@;"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="f/L[7U|g8lJ-%,(]r;m!"> <field name="TEXT">Ende Intervall Lüftung</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </xml>
Danke @BBTown für den Hinweis.
Danke
-
@madmp
Bitte packe das exportierte Blockly-xml in "code-Tags"Was für eine Art Datenpunkte sind "Taupunkt" und "gemessene relative Feuchtigkeit"?
Zahlen, Temperatur (°C), Humidity (%) ??
Welche Werte (min/max) können diese haben?
Weshalb fragst Du die Luftfeuchtigkeit ab, wenn diese im Anschluss nicht weitere im Script verarbeitet werden? -
Hallo @BBTown ,
die Datenpunkte "Taupunkt" etc. werden von dem angepassten Paul53 Skript berechnet und bei Objekte als Value ausgeben und stetig aktualisiert.
Min/Max. ist hier aus meiner Sicht initial an der Differenz zwischen den Taupunkten innen und aussen fest machen will.
Wie geschrieben sobald die Differenz von innen zu außen >5 ist soll die Belüftung zyklisch laufen.Was die Luftfeuchtigkeit angeht so überlege ich diese hier mit als Entscheidungskriterium für das Laufen der Belüftung mit einzubeziehen. Bin mir aber nicht schlüssig.
Danke
-
@madmp
zeige bitte mal das "RAW" von einem "Taupunkt" und einer "Luftfeuchtigkeit"
-
Hallo @BBTown ,
hier das RAW von einem Taupunkt und einer Luftfeuchtigkeit.
Taupunkt:
{ "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1573927104508, "common": { "name": "Taupunkt", "desc": "Taupunkt. Temperatur von Wänden, Fenstern, usw. ab der sich die Feuchtigkeit niederschlägt.", "type": "number", "role": "value", "unit": "°C" }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "javascript.0.Raumklima.Raum.Aussen.Taupunkt", "type": "state" }
Relatvie Luftfeuchtigkeit:
{ "common": { "name": "gemessene relative Luftfeuchtigkeit (inkl. Offset)", "desc": "relative Luftfeuchtigkeit, vom Sensor + Offset zum Ausgleich von Messungenauigkeiten des Geräts", "type": "number", "role": "value", "unit": "%" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1573927104526, "_id": "javascript.0.Raumklima.Raum.Keller.relative_Luftfeuchtigkeit", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Danke
@BBTown jetzt korrigiert
-
@madmp Du hast 2 x den gleichen RAW reingestellt
-
@madmp
Wenn ich die Logik korrekt verstehe, dann könnte dies hier passen:
[Nachtrag:]
Du könntest es noch ein wenig kürzen, in dem Du anstelle des zweiten "falls -> mache" einfach ein "sonst" anfügst
-
@BBTown danke werde ich gleich mal ausprobieren
Einen schönen Sonntag noch. -
Hallo,
ich habe das Skript jetzt nur minimal angepasst so das der Trigger jetzt ein stündlicher CRON ist welcher die Berechnung von I auslöst.
Das Skript grundsätzlich jedoch "löst es nicht aus".
Alles anderen Parameter welche als Input für das Skript verwendet werden sind unverändert und stehen zur Verfügung.<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="Y~;Ahk1bvkYnG+=S|c{F">i</variable> <variable type="undefined" id="Intervall">Intervall</variable> <variable type="undefined" id="Intervall2">Intervall2</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="timeout2">timeout2</variable> </variables> <block type="schedule" id="#RI%*aj$z2^w_K,%b#]I" x="-238" y="-88"> <field name="SCHEDULE">*/60 * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="#Kmyy_*Po9l:zU@Lzqn["> <field name="VAR" id="Y~;Ahk1bvkYnG+=S|c{F" variabletype="">i</field> <value name="VALUE"> <block type="math_arithmetic" id="TOZuMjbe%h`-$1pO}5E)" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="WRdr-g9b~9k]H}sTWDlp"> <field name="NUM">1</field> </shadow> <block type="get_value" id="QO%f[:mtJn7W+[k_2HS]"> <field name="ATTR">val</field> <field name="OID">javascript.0.Raumklima.Raum.Keller.Taupunkt</field> </block> </value> <value name="B"> <shadow type="math_number" id="k?uZR(se@(7m%/p}gPnM"> <field name="NUM">1</field> </shadow> <block type="get_value" id="`~)teK:*jlsL+31NyvW9"> <field name="ATTR">val</field> <field name="OID">javascript.0.Raumklima.Raum.Aussen.Taupunkt</field> </block> </value> </block> </value> <next> <block type="controls_if" id="*yJ~Y~U@0II:TK?=VS`c"> <value name="IF0"> <block type="logic_compare" id="1FoyYcCjv+OwFJEP;xv-"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="1q,kWpiNV:uWR/Mc3XY@"> <field name="VAR" id="Y~;Ahk1bvkYnG+=S|c{F" variabletype="">i</field> </block> </value> <value name="B"> <block type="math_number" id="doPXNjf8|rF?3_p1NAt`"> <field name="NUM">5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_setinterval" id="b;|Iy*TrE+hPEN,65V*g"> <field name="NAME">Intervall</field> <field name="INTERVAL">30</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="(7,XecRst!{DE#pT=|Ev"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Zuluft1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="a0^+n1|:m8rKndag9XqW"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="a6{CuXIXG2,Hzs}L/_f2"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Zuluft2.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="W7N9{H2kX+3=En(!Hx?="> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="%}uWBG:i;(]z4[w@#rk4"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="]+(kg!24IA~~:IY=m4[+"> <field name="TEXT">Beginn Intervall Lüftung</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="f|R3:fF?,:b1NK(r,_qz"> <field name="NAME">timeout</field> <field name="DELAY">10</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="X,R/2|xByQ(sYSsma0Tm"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Zuluft1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="ltA_dA6K}cr_h:j^qBVT"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="P%SYqhA;F_Aa=7[biXxd"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Zuluft2.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="fy$/C2$K?eN|aAI!*8br"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_setinterval" id="Kv(?oOhW+XSh3L1gBQ2T"> <field name="NAME">Intervall2</field> <field name="INTERVAL">50</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="1`=%~$k{]i6uwU9yjheV"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.SonoffBasicAbluft.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="6wW[4vC@4e)VttOYbYlB"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="p}m!/d1XFlTo39-:]NEs"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.SonoffS20Keller.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="[XUy7azEw](BTy;%x4fl"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="V~y!UX1a_tTWqRXi|vSi"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="t_W,BwwN9|UHk+z{=27D"> <field name="TEXT">Beginn Intervall Entlüftung</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="C.go3`=i]xl`*=v?^0Vx"> <field name="NAME">timeout2</field> <field name="DELAY">10</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="DSJm~ebZB=d?}[M6DR61"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.SonoffBasicAbluft.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="W_u%eyZaFcmO:@l)D+xw"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="WpG.hEvdA(OtJf(eBvMd"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.SonoffS20Keller.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="5IQ%)q?y:v:VXW,pqsaq"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> <next> <block type="controls_if" id="E|V9_`*EE/_QTmfjiGkL"> <value name="IF0"> <block type="logic_compare" id="I4RSIlAn|RHoB.vwO7WK"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="J|JHn@B9`rOs}BBScKx}"> <field name="VAR" id="Y~;Ahk1bvkYnG+=S|c{F" variabletype="">i</field> </block> </value> <value name="B"> <block type="math_number" id="nzB0TGnIiZg3Wl;h:%}Y"> <field name="NUM">5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id=";C[;f)@.O}WQ29Lhh!P)"> <field name="NAME">Intervall</field> <next> <block type="timeouts_cleartimeout" id=",@_J){|$ve[=?EMY?Gta"> <field name="NAME">timeout</field> <next> <block type="timeouts_clearinterval" id="SV.hjV);K|.^{]O6*cXT"> <field name="NAME">Intervall2</field> <next> <block type="timeouts_cleartimeout" id="|6g[L-l+_$ppQ;%x*Ywa"> <field name="NAME">timeout2</field> <next> <block type="debug" id="xo(Wo_W#xM7lTJehc$@;"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="f/L[7U|g8lJ-%,(]r;m!"> <field name="TEXT">Ende Intervall Lüftung</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </xml>
Was ist hier falsch?
Danke für eure Hilfe
-
Thema ist gelöst war nur ein Denkfehler
-
Hi, habe gerade den Thread hier gefunden. Ich möchte mir auch gerne eine automatische Belüftung für den Keller einbauen um diesen zu entfeuchten.
@madmaax was für Lüfter hast du denn bei dir eingebaut?
Die fertigen Systeme dich ich bisher gefunden habe sind alle sehr teuer.