NEWS
Ungewollte doppelte Sprachausgabe
-
Hallo,
habe einen Xiaomi Switch. Wenn ich den klicke, wird eine Variable geswitcht. Auf Basis des Switches wird eine Sprachausgabe gemacht.
Auf Objektebene blinkt der Status 2x schnell hintereinander mit gleichem Wert auf.Die Sprachausgabe wird auch 2x getriggert. Vielleicht gibt es da einen Zusammenhang? Aber wie umgehe ich den? Ein Timeout, der wartet und "löschen falls läuft" bringt beides nichts.
Gruß
maxpd -
Hallo,
ich würde das so umsetzten.
- in deinem Falls Objektblock würde ich nichts anderes machen als die Anwesenheit umzuschalten.
- in einem eigenen Falls Objektblock würde ich auf die Änderung der Anwesenheit reagieren.
Zu 1. ich denke dass das "klicken" ein button ist der wahrscheinlich auf wahr gesetzt wird und dann auf falsch zurück springt.Ssetzte vor das umschalten noch einen Falls Block in dem du Wert abfragst (Wert findest du unter Logik - Baustein in dem Objekt steht und dort im Dropdownmenü auswählen)
-
@maxpd
sieht nach doppelten timeout aus, stop den mal zuerst -
@ticaki Hi. Ich separiere mal.
Aber warum meinst du, dass ich den Wert noch abfragen und mit einem falls block setzen muss? Denn die Variable der Anwesenheit wird absolut sauber jedes Mal umgeschaltet.
Hi @Jan1 danke dir: Die Empfehlung Timeouts zu stoppen haben ich schon sehr oft an verschiedenen Stellen bekommen und es hat noch nie zu einer Lösung geführt. Warum meinst du muss ich einen 2 Sec Timeout stoppen. Er landet ja nur in der Regel wenn ich den Knopf drücke. Das mache ich auch nur 1x. Bis zum nächsten Drücken ist der Timeout auch wieder vorbei. Wie oben geschrieben war der Timeout selbst auch schon ein Versuch der Lösungsfindung. Auch ohne ihn besteht der Fehler und damit ist der Timeout nicht das Problem
-
@maxpd
Es ist soweit ich das sehe keine Variabel sondern ein Datenpunkt. Das setzen und auslesen von Datenpunkten erfolgt nicht synchron. Wenn du 2 mal umschalten verwendest, wird trotzdem nur 1 mal umgeschaltet.Das Problem ist im Moment das dein Schalter Zustände für gedrückt und nicht gedrückt wieder gibt und folglich beim Betätigen des Schalters 2 mal dein Code ausgeführt wird.
Timeouts stoppt man bevor man sie ausführt.
-
@maxpd
Das macht man einfach, da so ein Prellen schon vermieden wird und somit mehrere Timeouts laufen. Das ist eigentlich nicht kann man machen, sondern eher sollte man machen
Wobei Dein Script nicht doppelt ausführen sollte, es sei denn Dein Trigger prellt. Ich würde den timeout mal auf 10s stellen und ihn vorher stoppen, wenn das nichts bringt läuft was anderes schief. -
@ticaki thx. das Trennen hat geholfen:
Der Home Mini bloppt jetzt zwar noch 3-4 Mal bevor er seine Sprachausgabe macht, aber ich denke das liegt nicht am Script.