NEWS
[gelöst] Alexa macht mich wahnsinnig
-
Bei dieser Steuerung wird ein Datenpunkt Schrankbeleuchtung geschaltet.
Doch wenn man per Sprachbefehl oder per false setzen des Datenpunktes wiederholt Alexa Schrankbeleuchtung wurde ausgeschaltet mehrfach. Auch wenn nach einer Stunde die Schrankbeleuchtung abgeschaltet wird wiederholt Alexa diesen Text mehrfach. kann man das irgendwie unterbinden!?var timeout; on({id: "Aqua_Control.0.System.Schrankbeleuchtung"/*Schrankbeleuchtung*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("Aqua_Control.0.System.Schrankbeleuchtung").val == true) { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, true); sendTo("telegram.0", "send", { text: 'Schrankbeleuchtung wurde eingeschaltet' }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak"/*speak*/, 'Schrankbeleuchtung wurde eingeschaltet'); } else if (getState("Aqua_Control.0.System.Schrankbeleuchtung").val == false) { sendTo("telegram.0", "send", { text: 'Schrankbeleuchtung wurde ausgeschaltet' }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak"/*speak*/, 'Schrankbeleuchtung wurde ausgeschaltet'); setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); } timeout = setTimeout(function () { if (getState("Aqua_Control.0.System.Schrankbeleuchtung").val == true) { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); sendTo("telegram.0", "send", { text: (['Schrankbeleuchtung wurde automatisch','\n','nach einer Std. abgeschaltet'].join('')) }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak"/*speak*/, 'Schrankbeleuchtung,, wurde automatisch nach einer Stunde,, abgeschaltet'); } setState("Aqua_Control.0.System.Schrankbeleuchtung"/*Schrankbeleuchtung*/, false); }, 10000); });
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout">timeout</variable> </variables> <block type="on" id="|x6mTJ]+Zxl!,OM|q7ge" x="-1137" y="-737"> <field name="OID">Aqua_Control.0.System.Schrankbeleuchtung</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id=".sar{vm)A!.F_mB:$PUV"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="KZeJAd_Qr.G`XLrG/LP4"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="qoy7*RBYxyg-G@tIIcfZ"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.System.Schrankbeleuchtung</field> </block> </value> <value name="B"> <block type="logic_boolean" id="@RAeF7-EnMt5+=RB*l2d"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="9rx~f?2G?hyN@cR$Xd|+"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Control.POWER6</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="QzjlRO2ET0=qr#L{YdV1"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="telegram" id=",minZy~WQGSfX]Ox.t8x"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="_yXhRzz?RS5oUE{%*+x,"> <field name="TEXT">text</field> </shadow> <block type="text" id="$4{hx[if)fniLcc8U^,Q"> <field name="TEXT">Schrankbeleuchtung wurde eingeschaltet</field> </block> </value> <next> <block type="control" id="@~artz5udshdJ[`H}kx:"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="jf#VVyaKb7B(wuYtSes|"> <field name="TEXT">Schrankbeleuchtung wurde eingeschaltet</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="o$dPqr$eM*FIY[g-TM1o"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="W|8I5djf$aWr:Dlfwtgm"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.System.Schrankbeleuchtung</field> </block> </value> <value name="B"> <block type="logic_boolean" id="pM,GT481RZIhU1MSW+1m"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="j.129-fxbQ6j#.DC`dpR"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Control.POWER6</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="e_`Q{CoC)OBvQ?Ds9NM@"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="telegram" id="ZCC!W3z)$`0ilvT7OSWF"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="_yXhRzz?RS5oUE{%*+x,"> <field name="TEXT">text</field> </shadow> <block type="text" id="`(ib%L`)6$RdQdFmCYKj"> <field name="TEXT">Schrankbeleuchtung wurde ausgeschaltet</field> </block> </value> <next> <block type="control" id="~C3B0*l+.5P[~oV=HWNm"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="3{*cD[U+i5$(=gw*HY/e"> <field name="TEXT">Schrankbeleuchtung wurde ausgeschaltet</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="Zg`NJ2}B5mZJRLbjeM1d"> <field name="NAME">timeout</field> <field name="DELAY">60</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="HW0f^PKW]urhf2:#L7@M"> <value name="IF0"> <block type="logic_compare" id="8k;Fvr0nedOY=mM;3L$9"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="D=Zl9)/k(1CkDFCCRZK;"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.System.Schrankbeleuchtung</field> </block> </value> <value name="B"> <block type="logic_boolean" id="q0%]SWa3Nf.P?=1cAxUC"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="3al:Y^bQ7r9J7(7WN{oL"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Control.POWER6</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="bMMeWs8*L,NAcf:)saj*"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="telegram" id="fD@]FODhh!C]Q^Cm1K@:"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="_yXhRzz?RS5oUE{%*+x,"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="QnQWlkWA@@Q1-s|d9.k`"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="KDLJ,Okx2%A+tBPaY?hf"> <field name="TEXT">Schrankbeleuchtung wurde automatisch</field> </block> </value> <value name="ADD1"> <block type="text_newline" id="0#F*+H0Pb#K!8;?HzR:]"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="text" id="*=%-9jk_8Tk!uau)!16k"> <field name="TEXT">nach einer Std. abgeschaltet</field> </block> </value> </block> </value> <next> <block type="control" id="W7thFpaoh[RX]9;umyun"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="POdc`6BY0;?g,j(Td0.,"> <field name="TEXT">Schrankbeleuchtung,, wurde automatisch nach einer Stunde,, abgeschaltet</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="control" id="[TWTAOS.96fLXosgsnWb"> <mutation delay_input="false"></mutation> <field name="OID">Aqua_Control.0.System.Schrankbeleuchtung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="jz9wrE3.u6H4Qg`cpe1M"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>
Bevorzugt als Blockly Script--- Danke
-
@Aphofis
Ändere mal den Trigger auf "wurde geändert". Wenn das nicht genügt, suche im Forum nach "entprellen". -
-
@paul53
gibt einen fehler in zeile 20 ziffer 16
muss was mit der Text länge zu tun haben.var entpreller, entpreller, text, timeout; on({id: "Aqua_Control.0.System.Schrankbeleuchtung"/*Schrankbeleuchtung*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (!entpreller) { entpreller = setTimeout(function () { entpreller = null; }, 2000); setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, (obj.state ? obj.state.val : "")); if ((obj.state ? obj.state.val : "")) { text = 'Schrankbeleuchtung wurde eingeschaltet'; timeout = setTimeout(function () { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); text = ['Schrankbeleuchtung wurde automatisch','\n','nach einer Std. abgeschaltet'].join(''); }, 3600000); } else { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); if (text.length < 50) { text = 'Schrankbeleuchtung wurde ausgeschaltet'; } } sendTo("telegram.0", "send", { text: text }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak"/*speak*/, text); } });
Datenpunkt wird nach ablauf der 60 min nicht abgeschaltet, da der Datenpunkt noch auf true steht.
-
-
@paul53
Im Log steht bei mir nix!
Datenpunkt wird nicht geschaltet nach ablauf des timeouts ich vermute weil auf true steht.
Nur setze ich steuere Datenpunkt mit false geht die beleuchtung ja aus.
Das ja blödsinn -
@Aphofis sagte:
Nur setze ich steuere Datenpunkt mit false geht die beleuchtung ja aus.
Geht der Triggerdatenpunkt auf false, dann geht sie sofort aus. Bleibt der Trigger-Datenpunkt auf true, wird dieser Datenpunkt nach einer Stunde auf false gesetzt, was wiederum zum Triggern und Auschalten führen soll.
-
@paul53
OK klappt habe den Timeout auf 20 sek gestellt und Schrank geht nach 20 sek aus nur die Meldung per Alexa bleibt aus
Nach dem Ablauf bleibt der Datenpunkt auf true -
-
-
@Aphofis
Zeile 1: 2 mal Variable entpreller ! Ist im Original nicht enthalten:var entprell, text, timeout; on({id: "Aqua_Control.0.System.Schrankbeleuchtung", change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (!entprell) { entprell = setTimeout(function () { entprell = null; }, 2000); setState("sonoff.0.Aqua_Control.POWER6", (obj.state ? obj.state.val : "")); if ((obj.state ? obj.state.val : "")) { text = 'Schrankbeleuchtung wurde eingeschaltet'; timeout = setTimeout(function () { setState("Aqua_Control.0.System.Schrankbeleuchtung", false); text = ['Schrankbeleuchtung wurde automatisch','\n','nach einer Std. abgeschaltet'].join(''); }, 3600000); } else { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); if (text.length < 50) { text = 'Schrankbeleuchtung wurde ausgeschaltet'; } } sendTo("telegram.0", "send", { text: text }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak", text); } });
-
@paul53
Nach dem eigentlichen 60 min Timeout wird keine Alexa meldung ausgegeben. Ist aber auch nicht so wild. -
@paul53
es waren schon wieder zwei variablen in der steuerung.
Habe jetzt eine gelöscht.
Mal sehen ob alexa nun die richtigen zustände ansagt.
wenn man den Datenpunkt Schrankbeleuchtung schaltet, sagt Alexa Schrankbeleuchtung automatisch nach einer Std abgeschaltet.
Wenn man den Datenpunkt auf false setzt geht die schrankbeleuchtung aus und Alexa sagt schrankbeleuchtung eingeschaltet.
Ist schon etwas komisch
Nachtrag:
Fehler gefunden: länge von Text fehlte.
Doch nach ablauf der 60 min sagt Alexa immer noch nix.Fehler 20:16 besteht nach wie vor:
var entpreller, text, timeout; on({id: "Aqua_Control.0.System.Schrankbeleuchtung"/*Schrankbeleuchtung*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (!entpreller) { entpreller = setTimeout(function () { entpreller = null; }, 2000); setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, (obj.state ? obj.state.val : "")); if ((obj.state ? obj.state.val : "")) { text = 'Schrankbeleuchtung wurde eingeschaltet'; timeout = setTimeout(function () { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); text = 'Schrankbeleuchtung wurde automatisch' + 'nach einer Std. abgeschaltet '; }, 15000); } else { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); if (text.length < 50) { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); text = 'Schrankbeleuchtung wurde ausgeschaltet'; } } sendTo("telegram.0", "send", { text: text }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak"/*speak*/, text); } });
-
@Aphofis sagte i:
Fehler 20:16 besteht nach wie vor:
Initialisiere mal die Variable text vor dem Trigger mit "Schrankbeleuchtung wurde ausgeschaltet".
-
@paul53
initialisiere??? -
@Aphofis sagte:
initialisiere???
Oberhalb des Triggers: setze text auf "Schrankbeleuchtung wurde ausgeschaltet"
-
@paul53
eingeschaltet und ausgeschaltet klappt aber nach ablauf der zeit wenn die beleuchtung ausgeht,
sagt alexa nix -
var text, entpreller, timeout; text = 'Schrankbeleuchtung wurde ausgeschaltet'; on({id: "Aqua_Control.0.System.Schrankbeleuchtung"/*Schrankbeleuchtung*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (!entpreller) { entpreller = setTimeout(function () { entpreller = null; }, 2000); setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, (obj.state ? obj.state.val : "")); if ((obj.state ? obj.state.val : "")) { text = 'Schrankbeleuchtung wurde eingeschaltet'; timeout = setTimeout(function () { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); text = 'Schrankbeleuchtung wurde automatisch' + 'nach einer Std. abgeschaltet '; }, 15000); } else { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); if (text.length < 50) { setState("sonoff.0.Aqua_Control.POWER6"/*Schrankbeleuchtung*/, false); text = 'Schrankbeleuchtung wurde ausgeschaltet'; } } sendTo("telegram.0", "send", { text: text }); setState("alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak"/*speak*/, text); } });
-
@Aphofis sagte:
sagt alexa nix
Du schaltest nach einer Stunde den falschen Datenpunkt auf false: Es muss der Triggerdatenpunkt sein !
-
@paul53
Ja bis auf nach einer std automatisch
Das schmeisst telegram auch einfach mal so raus das automatisch nach einer std abgeschaltet wurde obwohl ich nur den Datenpunkt auf false gesetzt hatte.