NEWS
Test Adaper Tado v0.1.x
-
@hilde0407 ich mache es genauso in einem Script.
on({id: 'scene.FensterBüroZu', change: "ne"}, function (obj) { if (getState("scene.FensterBüroZu").val == false) { setState("tado.0.96374.Rooms.11.setting.power"/*Power*/, 'off'); clearInterval(checkBuero); checkBuero = null; var checkBuero = setInterval(function () { if (getState('scene.FensterBüroZu'/*FensterBüroZu*/).val == false) { if (getState('mihome.0.devices.weather_v1_158d00027466c7.temperature'/*Temperatur Klima Buero*/).val <= 18 && getState('mihome.0.devices.weather_v1_158d000274655a.temperature'/*Temperatur Klima Outdoor*/).val <= 15) { let BueroTemp = getState('mihome.0.devices.weather_v1_158d000274655a.temperature').val; sendTo('telegram.0', { text: 'Das Bürofenster ist noch geöffnet. Im Raum sind es '+BueroTemp+' °C. Der Raum droht auszukühlen!' }); } } else { clearInterval(checkBuero); checkBuero = null; } },600000); } else { setState("tado.0.96374.Rooms.11.setting.power"/*Power*/, 'on'); setStateDelayed('tado.0.96374.Rooms.11.overlay.clearZoneOverlay'/*Clear Zone Overlay*/, true, 5000, false); clearInterval(checkBuero); checkBuero = null; } });
-
@hilde0407 Habe es gerade mit Blockly versucht. Funktioniert auch.
-
@CKMartens Stimmt! Funktioniert... habe wohl noch Fehler in meiner Logik!
-
@hilde0407 du must auf jeden Fall steuern nehmen. Dann sollte es funktionieren.
-
@CKMartens Dank Deines Skripts bin ich auf die Lösung gekommen. Wenn man zuvor den ...setting.power State auf Off gesetzt hat und dann wieder einschaltet, muss man zwingend bei Auslösen des clearZoneOverlay Datenpunktes eine Verzögerung einbauen. Ich habe Deinen 5 Sekunden benutzt, was dann den gewünschten Erfolg brachte! Vielen Dank
-
@hilde0407 stimmt da muss ein paar Sekunden verzögert werden sonst wird der Befehl von der API "geschluckt"
-
@CKMartens Dennoch benötigt der Datenpunkt clearZoneOverlay eigentlich eine Zahl, so ist er definiert...
Im Log kommt auch eine Warnung:
javascript.0 2019-11-07 21:07:33.474 warn (17300) You are assigning a boolean to the state "tado.0.371509.Rooms.2.overlay.clearZoneOverlay" which expects a number. Please fix your code to use a number or change the state type to boolean. This
Vieleicht sollte der Datenpunkt in einer weiteren Version des Adapters lieber als Logikwert definiert werden. (Geht ja auch händisch).
-
@hilde0407 tatsächlich, habe gerade mal geschaut.
@Dutchman kann das State von clearOverlayZone von der API her als Logikwert definiert werden?
-
@CKMartens sagte in Test Adaper Tado v0.1.x:
@Dutchman kann das State von clearOverlayZone von der API her als Logikwert definiert werden?
euh moment unnötig den den hast du als Button... steht bei dir im overleg reset kein knöpf im iobroker admin den du drücken kannst ?
-
@Dutchman doch bei mir funktioniert es ja... Ein paar Nachrichten weiter hatte da wohl jemand Probleme
-
@CKMartens sagte in Test Adaper Tado v0.1.x:
@Dutchman doch bei mir funktioniert es ja... Ein paar Nachrichten weiter hatte da wohl jemand Probleme
ah ok, dan muss das ne frustre version sein die letzte online hat das alles drin
-
@Dutchman sagte in Test Adaper Tado v0.1.x:
@CKMartens sagte in Test Adaper Tado v0.1.x:
@Dutchman doch bei mir funktioniert es ja... Ein paar Nachrichten weiter hatte da wohl jemand Probleme
ah ok, dan muss das ne frustre version sein die letzte online hat das alles drin
Und falls jemand den Taster per Node Red ansprechen will: command (nicht value) senden. Daran hing ich die Tage.
-
@hilde0407 Ich habe gerade herausgefunden, dass man den setting.power State gar nicht manuell wieder auf On setzen muss. Wenn power State Off ist, kann man direkt einmal clearZoneOverlay ohne Delay ansteuern und zack er schaltet wieder zurück auf normalen Zeitplan Betrieb.
-
So erledige ich es auch in meinem Skript. Das funktioniert auch soweit gut. Ich habe einen Xiaomi Button, den ich dazu benutze, ein Art Boost Modus auszulösen. Ich schalte damit die Zieltemperatur auf 25 Grad, die Heizung läuft dann mit 100 %. Beim Erreichen der definierten Zieltemperatur (Xiaomi Temperatursensor in der Mitte des Raumes), lösche ich das ZoneOverlay. Funktioniert prima. Außerdem benutze ich Xiaomi Fenstersensoren, um die Heizung auszuschalten, wenn ein Fenster im Raum geöffnet wird, beim Schließen wird die Heizung wieder eingeschaltet. Da die automatischen Funktionen der Thermostate mitunter die Heizung wieder einschalten (Zeitplan), obwohl ich die Fenster offen habe, habe ich ein weiteres Skript, mit einem Trigger auf Setting.power State, dass die Heizung wieder ausschaltet, wenn das Fenster immer noch offen ist. Funktioniert auch prima. Dennoch finde ich den Datenpunkt clearZoneOverlay nicht sauber definiert, da er als Number definiert ist. Nach meinem Verständnis wäre eine Definition als Logikwert passender. Dies habe ich einfach manuell in dem Datenpunkt geändert. Nun kommt auch keine Warnung mehr im Log, wenn ich den Datenpunkt per Skript steuere. Wie gesagt, es funktioniert auch so. In meiner Variante aber sauberer, da keine Warnung im Log. Ich bin aber sehr froh, dass es diesen Adapter gibt, da man nun nahezu unerschöpfliche Möglichkeiten über den IOBroker hat. Realisiert habe ich bereits, dass die Heizung ab einer definierten Außentemperatur komplett abgeschaltet wird. Etwas weiter oben wird eine Möglichkeit beschrieben, die Away Funktion, die man ja per Abo eigentlich bezahlen muss, per Skript nachbilden kann - auch noch ganz reizvoll.
Ich bin besonders dankbar darüber, dass ich nun sämtliche Sensoren und Geräte, die ich im ioBroker habe, nun mit meinen Tado frei kombinieren kann und das auch noch ohne zeitliche Verzögerungen (ich hatte davor die Fritz!Dect 301 Thermostate, da hat es bis zu 30 Minuten gedauert, bis die Befehle an die Thermostate übermittelt wurden).
Also vielen Dank noch einmal an die Entwickler des Adapters! -
@hilde0407 habe ich ähnlich auch realisiert und bin bisher echt mega zufrieden.
Eine Frage: welche Funktionen schalten bei dir denn die Thermostate automatisch wieder an, was du oben beschrieben hast? Ist bei mir bisher noch nicht passiert, aber wäre interessant zu wissen, so dass ich eventuell auch noch ein Script realisieren muss, um dies bei offenen Fenstern zu verhindern. -
@hilde0407 Bin noch auf dem HAM Adapter, weil ich auf die Modus Ansteuerung noch warten würde... Aber irgendwie klingt das mt dem clearZoneOverlay, Zoneoverlay ect. so wie wenn mans darüber indirekt auch realisieren könnte. Was machen denn die Datenpunkte? Modus wechseln?
-
@Stormbringer Genau so ist es! Man steuert es auf diese Art und Weise vollumfänglich indirekt! Ich hatte zuvor auch den HAM Adapter und war damit auch ganz zufrieden. Dies ist dann aber die direktere Variante und funktioniert bisher in allen Belangen genau so, wie ich es haben möchte. Eine direkte Modus Ansteuerung gibt es tatsächlich nicht (noch nicht einmal den Datenpunkt), ist aber auch nicht nötig. Komfortabel ist auch, dass beim Auslösen von ClearZoneOverlay die zuvor eingestellte Temperatur automatisch wieder aktiviert wird.
-
@HappyTeaFriend Das Schalten von ClearZoneOverlay schaltet die Heizung auch wieder mit an!
Anbei ein Beispielsblocky für die Fenster offen Steuerung (Xiaomi Fenster Sensoren):
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="Efy@y-rOPU4?3%#Wlr(}">Fensterstatus</variable> <variable type="undefined" id="Wohnzimmer_Tür_offen_TimeOut">Wohnzimmer_Tür_offen_TimeOut</variable> </variables> <block type="comment" id="=3!jd`1|Hy3cqO)+jsgy" x="-688" y="-787"> <field name="COMMENT">Datenpunkt Fensterstatus_Wohnzimmer nach offenen Fenstern steuern</field> <next> <block type="on_ext" id="^bQq#li?YG^xQ3v8d:^j"> <mutation items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="[c.rI$s!M-LAXx~V/L5s"> <field name="oid">mihome.0.devices.magnet_158d0002750ce5.state</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="??3!`$OGv6Z41YQ6]3Xn"> <field name="oid">mihome.0.devices.magnet_158d000277b44f.state</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="#OgJ{jU-g]Iz*GB~AtrN"> <field name="VAR" id="Efy@y-rOPU4?3%#Wlr(}" variabletype="">Fensterstatus</field> <value name="VALUE"> <block type="math_number" id=")m+~Eyxbu0AZY%,T%Dur"> <field name="NUM">0</field> </block> </value> <next> <block type="controls_if" id="62hjlw]D77L#[X=X_q%L"> <value name="IF0"> <block type="logic_compare" id="=y,-Az2HI3*SL{sn%pkp"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="-z{owY$^VF+`o%I^7qMx"> <field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d0002750ce5.state</field> </block> </value> <value name="B"> <block type="logic_boolean" id="k6)iLIIOB=T!|FF,r2;r"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="8Vr*!@!Z4{;hMzsi9JV~"> <field name="VAR" id="Efy@y-rOPU4?3%#Wlr(}" variabletype="">Fensterstatus</field> <value name="DELTA"> <shadow type="math_number" id="I*~Q{(QK8Z]S~.Hh3];)"> <field name="NUM">1</field> </shadow> </value> </block> </statement> <next> <block type="controls_if" id="sfm=qXTY^-QieP(u9ob%"> <value name="IF0"> <block type="logic_compare" id="aI/5Qi2po=l@i-eW*l-+"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="vcwI;f}I8Zf|iN3m_`r@"> <field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d000277b44f.state</field> </block> </value> <value name="B"> <block type="logic_boolean" id="YEWb~b)mL}r;+-@KAw%o"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="pDnvp8iTF$m5]b(*{Ze_"> <field name="VAR" id="Efy@y-rOPU4?3%#Wlr(}" variabletype="">Fensterstatus</field> <value name="DELTA"> <shadow type="math_number" id="LGBsTsA9}}7K2eiPB8{*"> <field name="NUM">1</field> </shadow> </value> </block> </statement> <next> <block type="update" id="bQx5X}CtO6=UZU:IS{Ny"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Xiaomi.Fensterstatus_Wohnzimmer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="3T7#K+hW]_2giP8oo81r"> <field name="VAR" id="Efy@y-rOPU4?3%#Wlr(}" variabletype="">Fensterstatus</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id="s9:JqZL~z]@.QK}P%N5|"> <field name="COMMENT">Heizung ein oder ausschalten, wenn Fenster offen oder zu</field> <next> <block type="on_ext" id="_|5{4AEHysftVafeW~ol"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="hYI,BpxN,~A019[:cO;T"> <field name="oid">javascript.0.Xiaomi.Fensterstatus_Wohnzimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="P9]U*,pX[SeAMt}c3)Z%"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="N^/iO*[FVDA]QDqr%iJW"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="~iLcTPAqZp[O]ES:`Hor"> <field name="ATTR">val</field> <field name="OID">javascript.0.Xiaomi.Fensterstatus_Wohnzimmer</field> </block> </value> <value name="B"> <block type="math_number" id=".~jb;8n(+EYN8eWl[TSI"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="_Or7EB:($CN8ok!#RPW$"> <value name="IF0"> <block type="logic_compare" id="I3b5T-+Xu*7lLSNHk::1"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=")I[wYw@!hv+~Y}ab{5;0"> <field name="ATTR">val</field> <field name="OID">tado.0.371509.Rooms.2.setting.power</field> </block> </value> <value name="B"> <block type="text" id="/|=n/Qt)XO32P8_#mEA5"> <field name="TEXT">ON</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="w;YL4EXO55MGL|p;6rW]"> <mutation delay_input="false"></mutation> <field name="OID">tado.0.371509.Rooms.2.setting.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="gl@m)m*tby#sEx~*(7|Z"> <field name="TEXT">OFF</field> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="controls_if" id="d1;7:_Dk.l*Jd8|3h|_G"> <value name="IF0"> <block type="logic_compare" id="79#9`.M`r^b##6%Pw-K|"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="HT)W|?2cda9J:_eZ*s.l"> <field name="ATTR">val</field> <field name="OID">tado.0.371509.Rooms.2.setting.power</field> </block> </value> <value name="B"> <block type="text" id="}+4PBOmzR.|d-G3Uxua9"> <field name="TEXT">OFF</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="z3_@J=Un`)L_:-2CCg0^"> <mutation delay_input="false"></mutation> <field name="OID">tado.0.371509.Rooms.2.overlay.clearZoneOverlay</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="xb7=0yRu`oyYKPC4rsQF"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> <next> <block type="comment" id="c{*^*)M6YG*I^|e|SXkF"> <field name="COMMENT">Boost Modus ausschalten, wenn Wohnzimmertür 5 Minuten offen steht</field> <next> <block type="on_ext" id="~ByS[MJXmarnf`REiOL["> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="QxvxguLqEw.bEKJ15r~W"> <field name="oid">mihome.0.devices.magnet_158d000273da4e.state</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="5`049RAShcj2ZMP|A_s,"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="=0_2*0DgpRh`E3T|~zBB"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="H.1zG%y*d+nbq$VQLHC3"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="%*RVD2qSgK0[2LXE4g5@"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="C;mn0L/lQzv+h~@zu3=Q"> <field name="NAME">Wohnzimmer_Tür_offen_TimeOut</field> <field name="DELAY">10</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="X_|!-{zaH?padLX8*8EX"> <value name="IF0"> <block type="logic_compare" id="5tfs;4gRb|`6v1bxjw2C"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="`E7Hf10Wqy+6_5p:ZVB*"> <field name="ATTR">val</field> <field name="OID">javascript.0.Xiaomi.Schalter_Heizung</field> </block> </value> <value name="B"> <block type="logic_boolean" id="3m5k(yWr{M2Qz7qp1:(o"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Z[a8.`i@ylba|0Ctq=Rb"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Xiaomi.Schalter_Heizung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="{T+%YTbN::?=UQHq$tc0"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> <value name="IF1"> <block type="logic_compare" id="}NT]FTqx!JHW7*_Q.P!["> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="jgRW;_%J_jn.eYVtrvef"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="4Qm15j]Gl~/e@9:AWfO/"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_cleartimeout" id="}riwxHoGLjq$XyACbQp!"> <field name="NAME">Wohnzimmer_Tür_offen_TimeOut</field> </block> </statement> </block> </statement> <next> <block type="comment" id="o#^:cur]Ep0d%^M3oY!x"> <field name="COMMENT">Wenn Heizung über Tado eingeschaltet wird, obwohl Fenster offen, dann wieder ausschalten</field> <next> <block type="on_ext" id="%1n?jrlPaIOu06zxXw-3"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="DNHasW|%3hq=}/Bty@=}"> <field name="oid">tado.0.371509.Rooms.2.setting.power</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="8_mT-vWL9UIDM,d!1`=P"> <value name="IF0"> <block type="logic_compare" id="ioLeA}E]@`.}6a-zY:BL"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="ZpXsuQ6_RhO2quwc`eSf"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="zsit@u5j!]h*3b9HQevw"> <field name="TEXT">ON</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="I)*pOL8cCGpO=|x4y`rT"> <value name="IF0"> <block type="logic_compare" id="O@TKFIDN_Rtraip}7p1X"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="sS$f|y{Z{}|2N%=4++M4"> <field name="ATTR">val</field> <field name="OID">javascript.0.Xiaomi.Fensterstatus_Wohnzimmer</field> </block> </value> <value name="B"> <block type="math_number" id="7AEwG0!A(zX-VeQ+nh)/"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="T?Pvq|!4,+YE_`pB:/Q3"> <mutation delay_input="false"></mutation> <field name="OID">tado.0.371509.Rooms.2.setting.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="_PS#Xh}suf6E1^B]Hld2"> <field name="TEXT">OFF</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@HappyTeaFriend Die Termostate werden beispielsweise wieder eingeschaltet, wenn Du in der Tado App einen Zeitplan hinterlegt hast.
-
@hilde0407 Danke klingt vielversprechend, dann wird das bald mein nächstes Projekt, wenn man ihn schon produktiv nutzen kann @Dutchman sollte mal seinen PayPal Account reinstellen, dass er danke nicht nur als Wörter bekommt sondern auch in