NEWS
Gelöst Velux Rolladensteuerung/ Homematic Fenstersensoren
-
Hi Eagle_87,
du musst mit den Triggerfunktionen aufpassen.
Wenn du sie auf wahr oder unwahr abfragst, werden sie trotzdem nur auf ein Aktualisierung hin gestartet.
Darum sollten auch nicht mehrere Trigger ineinander verschachtelt sein.
Schaue dir bitte das Blockly im Anhang an, der Kommentar muss mit deinem Scene-Baustein ersetzt werden und Steckdose Trockner ist natürlich dein VELUX.
Ich empfehle dir auch mehr mit dem Baustein "debug output" zum eigenen Debuggen zu arbeiten, dann kannst du im LOG genau sehen, wann und wie häufig welcher Programmteil durchlaufen wird. Ich würde für ein so überschaubares Script vielleicht auch nicht so viele Variablen deklarieren. Ändere die kryptischen HM Objekte vielleicht in sprechende um die Probleme bei der Initialisierung zu umgehen und immer die aktuellen Werte im Script zu haben.
Ansonsten gebe ich paul und buggybeast soweit vollkommen recht.
Ich kenne die Velux Box nicht aber was hat der HM Stecker mit der V-Box zu tun, wenn diese nur ein Signal Ändern kann und danach einen Neustart braucht? Du sagtest du willst den Stecker tauschen, wogegen denn?
Gruß
Kai
-
@KaZim erstmal danke werde mal sehen wie ich das mache.
Kurz zu dem Thema Velux Box : Die Velux Box steuert meine Dachrolläden und es gibt leider keine andere Möglichkeit auser dieser Box. Wenn die Velux Box das signal abgibt Fahre Rolladen 1 zu geht das, wenn aber direkt danach das signal rausgehen soll Fahre Rolladen 2 zb hoch geht das nicht.
Erst muss die Box neugestartet werden und dies mache ich einfach über den HM Schalter.Dies scheint erst seit dem letzten versions update von velux so zu sein das es so Probleme gibt.Mit dem Tauschen meinete ich vllt gegen einen SP111 aber das ist im moment erstmal nebensache. -
@buggybeast leider ist der Rolladen mit dem geänderten Skript auch nicht gefahren. Erst nachdem ich das Fenster wieder auf und zu gemacht habe.
-
@Eagle_87 schreibe doch Mal bitte die aktuelle Zeit und die Sonnenuntergang Zeit vor deiner "falls"-Abfrage. Ich befürchte dass dein "nicht zwischen" ein größer gleich und kleiner gleich ist und somit die genaue Sonnenuntergang Zeit ausgespart wird. Vielleicht auch einfach Mal ein Offset von 1 Minute ausprobieren.
Gute Nacht. -
@Eagle_87
Teste doch mal Schritt für Schritt (falls noch nicht geschehen). In Anlehnung an das Skript von @KaZim zum Beispiel so:
Nimm einen einfachen Zeitplan und stelle auf Bestimmte Zeit ein und einen Zeitpunkt in 5 Minuten oder so. Dann den Block unten "Ausführen timeout" erstmal deaktivieren und schauen, ob er je nach Fensterstatus die Steckdose korrekt umschaltet. Mal Fenster zu, mal auf. Wenn das sauber geht, aktiviere wieder den Block mit der Szene. Nebenbei, die Szene hast Du hier glaube ich noch nie gezeigt. Was steckt da drin??? Kannst Du das vielleicht auch mal posten bzw. muss es unbedingt eine Szene sein? Danach das gleiche dann mit Rolladensteuerung. -
@buggybeast die Szene habe ich auch hier aus dem Forum ( https://forum.iobroker.net/topic/14312/adapter-für-velux-klf-200-interface/87 )zu der Velux Box, diese sieht so aus:
'use strict'; var velux = require('velux-klf200-api'); velux.connect(velux_gw_ip,{}) .then(()=>{ return velux.login(velux_gw_passwd); }) .then((data)=>{ return velux.sendCommand({ api: velux.API.GW_COMMAND_SEND_REQ, commandOriginator: 1, priorityLevel: 2, parameterActive: 0, functionalParameterMP: {valueType:'RELATIVE', value:sceneId}, /* functionalParameterMP: 100, */ indexArrayCount: 1, indexArray: [1], priorityLevelLock: false, lockTime: 0 }) }) .then((data)=>{ console.log(data); return velux.end(); }) .catch((err)=>{ console.log(err); return velux.end();
Der Test aufbau geht ohne Probleme. Der HM Schalter , schaltet egal ob ich umschalte benutze oder steuere benutze. Er geht immer in den richtigen Schaltzustand on/off.
Da es ja auch alles so funktioniert wie es soll, wenn ich das Fenster öffne und wieder schließe, denke ich das ich entweder ein Problem mit dem Trigger habe oder wie KaZim geschrieben hat mit der Sonnenuntergangs Zeit.
@KaZim Anfängerfrage
wo sehe ich den die Sonnenuntergangszeit meiner "falls-Abfrage".
Solltest du die von javascript.0 meinen sieht das so bei mir aus:Danke für eure hilfe und geduld.
-
@Eagle_87 sagte
Solltest du die von javascript.0 meinen sieht das so bei mir aus:
Es werden keine Astro-Zeiten angezeigt. Nimm mal den Haken oben raus und trage Deine Koordinaten ein.
-
habe mal die Koordinaten eingetragen. Wie sollte es den aussehen?
Habe iobroker nochmal neugestartet. Jetzt sieht es so aus. Denke mal das sind dann die richtigen Zeiten oder?
-
-
@Eagle_87 Die Einstellungen über die Koordinaten sind so richtig, ich meinte dass du die Zeiten über die Debug Ausgabe schreibst. Die erste Ausgabe in der Funktion ist "bin angekommen". Diese kommt aber erst nach der Abfrage auf "nicht zwischen". Dies würde ich nur überprüfen um das < oder <= eine Rolle spielen könnte.
-
@KaZim danke habe mal mehr debugs eingebaut nur heute war es leider zu spät.
Habe mal Bilder vom Log gemacht, leider noch mit den alten depug ausgaben. Bei uns wäre der Sonnenuntergang um 21:32Uhr.
Beim ersten Bild die Zeit 20:04Uhr , warum er da schon das Skript startet keine Ahnung....beim zweiten Bild gibt er um 21:33Uhr einen der depugs aus......
beim dritten Bild habe ich das Fenster geöffnet und wieder geschlossen........
Vlllt könnt Ihr mehr damit anfangen.
Die neuen Depug ausgaben sehen jetzt so aus:
und zu guter letzt hänge ich das Blockly mal an:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="J!j;{%1DMR`e}Q/$a`$0">sceneId</variable> <variable id="e;Q#WU%e9/C]8MrNM,O^">velux_gw_ip</variable> <variable id="Oq`eO:H3%D:`Y,/ZU!_G">velux_gw_passwd</variable> <variable id="B}3@?4~r7^3Sumiytc@5">Fenster</variable> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> </variables> <block type="procedures_defcustomnoreturn" id="D_v~=cD*P[U_,6`[2++#" x="-1188" y="-438"> <mutation statements="false"> <arg name="sceneId" varid="J!j;{%1DMR`e}Q/$a`$0"></arg> </mutation> <field name="NAME">activateScene</field> <field name="SCRIPT">J3VzZSBzdHJpY3QnOwp2YXIgdmVsdXggPSByZXF1aXJlKCd2ZWx1eC1rbGYyMDAtYXBpJyk7Cgp2ZWx1eC5jb25uZWN0KHZlbHV4X2d3X2lwLHt9KQoudGhlbigoKT0+ewogIHJldHVybiB2ZWx1eC5sb2dpbih2ZWx1eF9nd19wYXNzd2QpOwp9KQoudGhlbigoZGF0YSk9PnsKcmV0dXJuIHZlbHV4LnNlbmRDb21tYW5kKHsgYXBpOiB2ZWx1eC5BUEkuR1dfQ09NTUFORF9TRU5EX1JFUSwKCiAgICAgIGNvbW1hbmRPcmlnaW5hdG9yOiAxLAoKICAgICAgcHJpb3JpdHlMZXZlbDogMiwKCiAgICAgIHBhcmFtZXRlckFjdGl2ZTogMCwKCiAgICAgIGZ1bmN0aW9uYWxQYXJhbWV0ZXJNUDoge3ZhbHVlVHlwZTonUkVMQVRJVkUnLCB2YWx1ZTpzY2VuZUlkfSwKCiAgICAgIC8qIGZ1bmN0aW9uYWxQYXJhbWV0ZXJNUDogMTAwLCAqLwoKICAgICAgaW5kZXhBcnJheUNvdW50OiAxLAoKICAgICAgaW5kZXhBcnJheTogWzFdLAoKICAgICAgcHJpb3JpdHlMZXZlbExvY2s6IGZhbHNlLAoKICAgICAgbG9ja1RpbWU6IDAKCiAgfSkKfSkKLnRoZW4oKGRhdGEpPT57CiAgY29uc29sZS5sb2coZGF0YSk7CiAgcmV0dXJuIHZlbHV4LmVuZCgpOwp9KQouY2F0Y2goKGVycik9PnsKICBjb25zb2xlLmxvZyhlcnIpOwogIHJldHVybiB2ZWx1eC5lbmQoKTsKfSk7</field> <comment pinned="false" h="80" w="160">Activates a predefined scene on the Velux KLF200 interface</comment> </block> <block type="procedures_defnoreturn" id="fJd5gbH6H/~!9SKl@[Ii" x="-537" y="-437"> <field name="NAME">Rolladen</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="debug" id="%-FhWajQ/-F^TNa,$0C`"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id=")615npXk~q!FfmciHb:#"> <field name="TEXT">Station1</field> </shadow> </value> <next> <block type="controls_if" id="u_fa!)|r*aF[TL(rUHID"> <value name="IF0"> <block type="logic_operation" id="dur0jaRT6~(Tz/,13WM0" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="time_compare_ex" id="~v`qNh~q^`SzWhr}:;Z3" inline="false"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"> <shadow type="text" id="-$(MTBRDb#%G9oN6JHYN"> <field name="TEXT">12:00</field> </shadow> <block type="time_astro" id="0i}YE;8L~L8c,Nm0;W]H"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> <value name="END_TIME"> <shadow type="text" id="#uPbZM*Wu)j1;ujnT!%7"> <field name="TEXT">18:00</field> </shadow> <block type="time_astro" id="u-]e?Yf2eu]0Ck2nY[7v"> <field name="TYPE">sunset</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="cMiTN0!;y[5P.kVq`A;@"> <value name="BOOL"> <block type="variables_get" id="G,[n`kWiggClT+Ox`%QJ"> <field name="VAR" id="B}3@?4~r7^3Sumiytc@5">Fenster</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="44zQ*XLSHtSp^Cb[;CqQ"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Bs8rP|S0]2m(D!FJ0A25"> <field name="TEXT">Station2</field> </shadow> </value> <next> <block type="toggle" id="`!zjgZ+M#QZ[O!V+LREL"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hm-rpc.0.OEQ0189034.1.STATE</field> <field name="WITH_DELAY">FALSE</field> <next> <block type="debug" id="+4-DdqXF^0b!;%o-};~g"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="[X:Rj^Mz)2sf)v9,`iex"> <field name="TEXT">Station3</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="yMNf1$Fwa.v?Tv2U*!=;"> <field name="NAME">timeout</field> <field name="DELAY">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="debug" id="vYyH4dhUx{Sn2bt4I.1e"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="%n~/4(ihMY8YdIuko~3P"> <field name="TEXT">Station4</field> </shadow> </value> <next> <block type="procedures_callcustomnoreturn" id="`HZIVMi#(qx7pg-H::f_"> <mutation name="activateScene"> <arg name="sceneId"></arg> </mutation> <value name="ARG0"> <block type="math_number" id="0ASb5Dau2i/*M3S1=khd"> <field name="NUM">100</field> </block> </value> <next> <block type="debug" id=";JPp+;**jmzI$k^`EEfg"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="SGojjpnWZ8Qccnm,w8pl"> <field name="TEXT">Station5</field> </shadow> </value> <next> <block type="comment" id=",k-!In_Wa2LN8b]U3k!_"> <field name="COMMENT">100 = Geschlossen</field> <next> <block type="comment" id="D!dIN}Q4`a53a2c|Mjmz"> <field name="COMMENT">Bei Sonnenuntergang wird der Status des Fensters abgefragt</field> <next> <block type="comment" id="YolE8s?T]qYzwqOoVy^S"> <field name="COMMENT">Fenster: 0 = Geschlossen , 1 = Offen</field> <next> <block type="timeouts_settimeout" id=".1($gt5EvHU4ANmtnIN0"> <field name="NAME">timeout2</field> <field name="DELAY">2</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="debug" id="m5Lp$9G:%D]hQVm-n0zd"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="MuM4G={-%)TB866x$Pl5"> <field name="TEXT">Station6</field> </shadow> </value> <next> <block type="toggle" id="8pcWtqobDYDbQk+zu6Dd"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hm-rpc.0.OEQ0189034.1.STATE</field> <field name="WITH_DELAY">FALSE</field> <next> <block type="debug" id="O#%aa5j2x6zReuyyDJOj"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="M=~{)kDc-y1Fm:TLI!wu"> <field name="TEXT">Station7</field> </shadow> </value> <next> <block type="comment" id="f/|*~jPUZ8V^#I|#xh~3"> <field name="COMMENT">Falls geschlossen Rolladen Runter</field> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="debug" id=".Nyn_P54E-5YN2D`sm%G"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="X_%+6E%#7fM1g33o*[p="> <field name="TEXT">Station8</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="debug" id="FBaUWS/P-bKSf@QUw*pn"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="+SHTEDLB!GiZnZvmk-jb"> <field name="TEXT">Station9</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="debug" id="ZL~RG?4~;SO/T,O(5-Nl"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="]LPSw{e-3@d(ev%4Le-w"> <field name="TEXT">Station10</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> <block type="comment" id="X|J3YT689(q(8APPIP0C" x="-1187" y="-387"> <field name="COMMENT">Dachfensterrollläden nach Astro auf/zu</field> <next> <block type="variables_set" id="@TTT{[).wNR@SPT?sS)Q"> <field name="VAR" id="e;Q#WU%e9/C]8MrNM,O^">velux_gw_ip</field> <value name="VALUE"> <block type="text" id="CJ+.(M:2e{irFzEOg}64"> <field name="TEXT">192.168.188.35</field> </block> </value> <next> <block type="variables_set" id="U)ex73Ldg3Dr}fA!yzbV"> <field name="VAR" id="Oq`eO:H3%D:`Y,/ZU!_G">velux_gw_passwd</field> <value name="VALUE"> <block type="text" id="lDo@3hvTzZ%i.kN/KMrA"> <field name="TEXT">ge47FXJPHu</field> </block> </value> <next> <block type="variables_set" id="WZLri!)SEBiJP_Q!sLTz"> <field name="VAR" id="B}3@?4~r7^3Sumiytc@5">Fenster</field> <value name="VALUE"> <block type="get_value" id="Amzh)Pa.#Z)1S{J]Q{tw"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.MEQ1483562.1.STATE</field> </block> </value> <next> <block type="debug" id="7t8p9@tV(Uu.h]9%F{xb"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id=")Ks~LEHDba7H.@oj8]R{"> <field name="TEXT">Trigger Start</field> </shadow> </value> <next> <block type="astro" id="Q2u8%Omb,.%)ZqeIZc*%"> <field name="TYPE">sunset</field> <field name="OFFSET">0</field> <statement name="STATEMENT"> <block type="debug" id="eltVg4V]nN6oD-:nO}}]"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="E1fI9m2iG$.;z@m16dYd"> <field name="TEXT">Trigger Sonnenuntergang</field> </shadow> </value> <next> <block type="procedures_callnoreturn" id="ZS,JFQc8Rh3GODI9E+Hy"> <mutation name="Rolladen"></mutation> </block> </next> </block> </statement> <next> <block type="debug" id="2.Q#|/SUIcH,5*k@-vUB"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="BrgTB*M+GDz5D-DPr@B}"> <field name="TEXT">Bin mit Sonnenuntergang durch</field> </shadow> </value> <next> <block type="on_ext" id="kY@~?Owj3{;F;9pw!wEF"> <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="gLXk5=g.N0dtEi|e/d0]"> <field name="oid">hm-rpc.0.MEQ1483562.1.STATE</field> </shadow> </value> <statement name="STATEMENT"> <block type="debug" id="%Cp8dR_S|JYlGqC;fS0G"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="q`](S96h1rOk?4}kQqHR"> <field name="TEXT">Trigger Fenster</field> </shadow> </value> <next> <block type="variables_set" id="WsJ-EyK|27?$~zNo1e/P"> <field name="VAR" id="B}3@?4~r7^3Sumiytc@5">Fenster</field> <value name="VALUE"> <block type="on_source" id=")oTE~Od-|(`H~b{IxgQR"> <field name="ATTR">state.val</field> </block> </value> <next> <block type="procedures_callnoreturn" id="tbyw{kZF72XzKr|,(cu7"> <mutation name="Rolladen"></mutation> </block> </next> </block> </next> </block> </statement> <next> <block type="debug" id="up|_1AoRp`c!1gKQ*L2}"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Z*f?sHaz8X{QilC=Jh/a"> <field name="TEXT">Bin mit Fensterwert durch</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Euch nochmals vielen dank & gute Nacht
-
@Eagle_87 sagte:
Beim ersten Bild die Zeit 20:04Uhr , warum er da schon das Skript startet keine Ahnung....
Das Skript wurde neu gestartet.
@Eagle_87 sagte in Velux Rolladensteuerung/ Homematic Fenstersensoren:
beim zweiten Bild gibt er um 21:33Uhr
Welcher Debug-Block gibt "Bin bei Rolladen und prüfe die Zeit" aus ?
Falls die Zeitspanne und der Zeitpunkt "Sonnenuntergang" grenzwertig sind, dann verwende mal beim Trigger einen Offset von 1 Minute.
-
Nur mal so ins Blaue. Ich habe mal testweise die Aktuelle Zeit und die Aktuelle Zeit von Sonnenuntergang bei mir ausgegeben. Sieht dann so aus:
Oben: Aktuelle Zeit, Unten: Sonnenuntergang
Könnte es wichtig sein, die Zeiten überall im Skript gleich zu formatieren??? Oder macht JS das dann immer automatisch richtig?
@Eagle_87 Das sähe dann so aus:
Zumindest für Menschen ist der Output dann lesbarer
-
@buggybeast sagte:
Oder macht JS das dann immer automatisch richtig?
Ohne Formatierung nimmt JS das Date Object bzw. die ms seit 1.1.1970.
Ich habe gerade eine Test-Script laufen, dass zu Mittag (ca. 13:06 Uhr) triggert und dann einen Vergleich mit "nicht zwischen" macht. Mal schauen, was passiert. -
@buggybeast
Der Test ergab: Ohne Offset funktioniert der Vergleich nicht wie erwartet:Mit Offset passt es:
Also verwende beim Trigger einen Offset von 1 Minute oder beim Vergleich "Sonnenuntergang -1 Minute".
-
@paul53
Das erscheint logisch. Mit Versatz ist man 100%ig nicht kleiner/gleich Sonnenuntergang. Und damit ist das falls Statement wahr. Man scheint die Formatierung Der Zeit explizit also nicht zu benötigen. Gut zu wissen
Tatsächlich erstaunlich finde ich dagegen, dass Es ohne Versatz Nicht geht. Vom Trigger bis zur Auswertung des falls Blockes vergehen ja auch Millisekunden, also müsste die aktuelle Zeit ja eigentlich größer als Sonnenuntergang sein, und somit auch wieder wahr. -
@buggybeast sagte:
also müsste die aktuelle Zeit ja eigentlich größer als Sonnenuntergang sein, und somit auch wieder wahr.
Dachte ich auch, ist aber offenbar nicht so, wie der Test zeigt.
-
Na besser mit Versatz und auf der sicheren Seite, sonst läuft es womöglich mal so, mal anders
-
@paul53 @buggybeast & @KaZim vielen vielen dank für eure Unterstützung bei dem Theama hier. Finde ich wirklich super. Habe jetzt im offset mal 1 min eingetragen und drücke die Daumen das es heute abend klappt. Werde dann natürlich bescheid
geben.
-
@paul53 @buggybeast & @KaZim
jap hat funktioniert. Vielen dank damit ist das Problem gelöst.