NEWS
Nachricht, nur wenn Shelly > als 2 Sekunden aktiviert ist.
-
Hallo, ich versuche mich erst seit ein paar Tagen mit Blockly.
Die Nachricht an telegram senden, wenn der Kontakt aktiviert ist, habe ich hinbekommen.
Mein Problem ist, dass bei kurzen Einschaltimpulsen auch immer eine Mitteilung erfolgt.
Mit timeout und pause habe ich es nicht geschafft.
Kann mir bitte jemand einen Lösungsansatz zeigen? -
-
@paul53 Vielen Dank für die schnelle Hilfe,
Das funktioniert genau wie ich wollte. Meine Versuche sahen ähnlich aus, aber das mit
sonst: stop timeout fehlte bei mir. -
@paul53 Wieso bekomme ich nach Ausführung eine Warnung: (29707) script.js.telegram.Kanal: clearTimeout() => not found
-
@hardl sagte: Wieso bekomme ich nach Ausführung eine Warnung: (29707) script.js.telegram.Kanal: clearTimeout() => not found
Keine Ahnung. Poste mal den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
-
var timeout; on({id: 'shelly.0.SHSW-1#E098068D0BFA#1.Relay0.Switch', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "")) { timeout = setTimeout(async function () { setState("shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch"/*Switch*/, true); setState("alexa2.0.Echo-Devices.G000WV0484231KF4.Commands.speak-volume"/*Volume to use for speak commands*/, 50); setState("alexa2.0.Echo-Devices.G000WV0484231KF4.Commands.speak"/*speak*/, ('Achtung, bitte Kanal prüfen')); sendTo("telegram.0", "send", { text: 'Achtung Kanal-Pumpe läuft' }); sendTo("telegram.0", "call", { text: 'Achtung, bitte Pumpe vom Kanal prüfen', user: '@XX', lang: "", repeats: "1" }); setStateDelayed("shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch"/*Switch*/, false, 5000, false); }, 5000); } else { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); } });```
-
@hardl
Das ist in Ordnung, sollte also nicht die Warnung erzeugen.
Es handelt sich um das Skript "Kanal" unter der Gruppe "telegram"? -
@hardl ja
-
@paul53 Ich bräuchte bitte nochmals Hilfe: Das Skript funktioniert prima, nur klappt das mit den Anrufen über telegram nicht mehr:
var timeout; on({id: 'shelly.0.SHSW-1#E098068D0BFA#1.Relay0.Switch', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "")) { timeout = setTimeout(async function () { setState("shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch"/*Switch*/, true); setState("alexa2.0.Echo-Devices.G000WV0484231KF4.Commands.speak-volume"/*Volume to use for speak commands*/, 20); setState("alexa2.0.Echo-Devices.G000WV0484231KF4.Commands.speak"/*speak*/, ('Achtung, bitte Kanal prüfen')); sendTo("telegram.0", "send", { text: 'Achtung Kanal-Pumpe läuft' }); sendTo("telegram.0", "call", { text: 'Achtung,bitte Pumpe vom Kanal pruefen', user: '@muellerreinhard', lang: "de-DE-Standard-B", repeats: "1" }); setStateDelayed("shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch"/*Switch*/, false, 5000, true); }, 5000); } else { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); } });
18.8.2021, 16:13:30.157 [info ]: javascript.0 (165) Start javascript script.js.telegram.Kanal 18.8.2021, 16:13:30.175 [info ]: javascript.0 (165) script.js.telegram.Kanal: subscribe: {"pattern":{"id":"shelly.0.SHSW-1#E098068D0BFA#1.Relay0.Switch","change":"ne","q":0},"name":"script.js.telegram.Kanal"} 18.8.2021, 16:13:30.176 [info ]: javascript.0 (165) script.js.telegram.Kanal: registered 1 subscription and 0 schedules 18.8.2021, 16:13:53.188 [info ]: javascript.0 (165) script.js.telegram.Kanal: setTimeout(ms=5000) 18.8.2021, 16:13:58.190 [info ]: javascript.0 (165) script.js.telegram.Kanal: setForeignState(id=shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch, state={"val":true,"ack":false,"c":"script.js.telegram.Kanal"}) 18.8.2021, 16:13:58.190 [info ]: javascript.0 (165) script.js.telegram.Kanal: setForeignState(id=alexa2.0.Echo-Devices.G000WV0484231KF4.Commands.speak-volume, state={"val":20,"ack":false,"c":"script.js.telegram.Kanal"}) 18.8.2021, 16:13:58.191 [info ]: javascript.0 (165) script.js.telegram.Kanal: setForeignState(id=alexa2.0.Echo-Devices.G000WV0484231KF4.Commands.speak, state={"val":"Achtung, bitte Kanal prüfen","ack":false,"c":"script.js.telegram.Kanal"}) 18.8.2021, 16:13:58.191 [info ]: javascript.0 (165) script.js.telegram.Kanal: sendTo(adapter=telegram.0, cmd=send, msg={"text":"Achtung Kanal-Pumpe läuft"}) 18.8.2021, 16:13:58.195 [info ]: javascript.0 (165) script.js.telegram.Kanal: sendTo(adapter=telegram.0, cmd=call, msg={"text":"Achtung,bitte Pumpe vom Kanal pruefen","user":"@muellerreinhard","lang":"de-DE-Standard-B","repeats":"1"}) 18.8.2021, 16:13:58.203 [info ]: javascript.0 (165) script.js.telegram.Kanal: setStateDelayed(id=shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch, state=false, isAck=false, delay=5000, clearRunning=true) 18.8.2021, 16:13:58.204 [info ]: javascript.0 (165) script.js.telegram.Kanal: setStateDelayed: no running timers 18.8.2021, 16:14:03.205 [info ]: javascript.0 (165) script.js.telegram.Kanal: setForeignState(id=shelly.0.SHSW-1#E098068D0A33#1.Relay0.Switch, state={"val":false,"ack":false,"c":"script.js.telegram.Kanal"}) 18.8.2021, 16:14:03.222 [warn ]: javascript.0 (165) script.js.telegram.Kanal: clearTimeout() => not found
Anrufe über telegram und Test mit API auf callMeBot.com funktionieren. Ich habe schon stundenlang probiert und komme nicht weiter.
-
@hardl sagte: nur klappt das mit den Anrufen über telegram nicht mehr:
Mit telegram kenne ich mich nicht aus.
-
@paul53 Ok danke, vielleicht kann ja jemand anderes helfen.