Script auflösen bei "3x kurze Betätigung einer Taste"

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
lucabert
Beiträge: 55
Registriert: 01.02.2019, 10:52
Danksagung erhalten: 1 Mal

Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von lucabert » 11.02.2019, 19:42

Hallo,

ich versuche zu überlegen, wie ich ein bestimmtes Script auflösen kann, indem ich z.B. 3 mal schnell eine Taste drucke...
Meine Idee war, zwei Variabeln zu definieren, eine als Zähler und die andere als "Start-Zeitstempel".
Jedesmal, dass ich die Taste betätige, wird geprüft, ob die aktuelle Zeitstempel eine Differenz zum "Start" weniger als eine Sekunde hat. Ist das der Fall, wird der Zähler addiert, sonst wieder auf 0 gesetzt.
Erreicht der Zähler den Wert z.B. 3, löse ich das Skript auf.

Das sollte funktionieren, allerdings muss ich sehen, dass diese Zeitstempel eine Auflösung hat, die feiner als eine Sekunde ist, sonst geht es nicht.

Ich konnte aber keine Funktion finden, mit der ich die aktuelle Zeit als Millisekunden vom Epoch bekomme...

Kann jemand mir helfen, bzw. ein anderes System empfehlen, wie ich das Problem lösen kann?

Danke
Luca

Benutzeravatar
robbi77
Beiträge: 13847
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 738 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von robbi77 » 11.02.2019, 19:53

lucabert hat geschrieben:
11.02.2019, 19:42
Hallo,

ich versuche zu überlegen, wie ich ein bestimmtes Script auflösen auslösenkann, indem ich z.B. 3 mal schnell eine Taste druckedrücke...
Meine Idee war, zwei VariabelnVariablen zu definieren, eine als Zähler und die andere als "Start-Zeitstempel".
Jedesmal, dasswenn ich die Taste betätige, wird geprüft, ob dieder aktuelle Zeitstempel eine Differenz zum "Start" ,weniger als eine Sekunde hat. Ist das der Fall, wird der Zähler addiert, sonst wieder auf 0 gesetzt.
Erreicht der Zähler den Wert z.B. 3, löse ich das Skript aufaus.

Das sollte funktionieren, allerdings muss ich sehen, dass dieser Zeitstempel eine Auflösung hat, die feiner als eine Sekunde ist, sonst geht es nicht.

Ich konnte aber keine Funktion finden, mit der ich die aktuelle Zeit als Millisekunden vom Epochvom was? bekomme...

Kann jemand mir helfen, bzw. ein anderes System empfehlen, wie ich das Problem lösen kann?

Danke
Luca
Entschuldige, ich hatte zu viel Zeit ...
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von Xel66 » 11.02.2019, 19:58

Du brauchst nur mit der ersten und der zweiten Tastenbetätigung je eine Systemvariable setzen und nach einer Zeitspanne wieder zurücksetzen. Kommen in dieser Zeit noch zwei weitere Tastendrücke (Systemvariable) rein, wird ausgelöst oder alles wieder auf FALSCH gesetzt. Das mit den Timestamps ist zu zeitkritisch und die Laufzeit des Scripts nicht garantiert vorhersagbar. Erst recht nicht, wenn auf dem System noch andere Scripts laufen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

lucabert
Beiträge: 55
Registriert: 01.02.2019, 10:52
Danksagung erhalten: 1 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von lucabert » 11.02.2019, 20:17

Xel66 hat geschrieben:
11.02.2019, 19:58
Du brauchst nur mit der ersten und der zweiten Tastenbetätigung je eine Systemvariable setzen und nach einer Zeitspanne wieder zurücksetzen. Kommen in dieser Zeit noch zwei weitere Tastendrücke (Systemvariable) rein, wird ausgelöst oder alles wieder auf FALSCH gesetzt. Das mit den Timestamps ist zu zeitkritisch und die Laufzeit des Scripts nicht garantiert vorhersagbar. Erst recht nicht, wenn auf dem System noch andere Scripts laufen.
Ich nehme an, die erste und letzte Tastenbetätigung, nicht wahr? Und dann zählen, wie viele Tastenbetätigungen innerhalb der Zeit.
Ja, das würde gehen, aber wenn ich dreimal betätige innerhalb einer Sekunde, aber diese "in zwei nacheinanderliegenden Sekunden" sind, sehe ich schon ein Problem, denn das System denkt, es sind zwar 3x Tasten, aber innerhalb 2 Sekunden...

Oder habe ich dein Vorschlag falsch verstanden?

Danke
Luca

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von Sammy » 11.02.2019, 20:25

Die Zeit lässt Du ja erst nach der ersten Betätigung starten. Außerdem kannst/solltest Du sowieso besser 2s nehmen. Es könnte schwer werden, 3 Telegramme innerhalb 1s von Hand auszusenden.
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

lucabert
Beiträge: 55
Registriert: 01.02.2019, 10:52
Danksagung erhalten: 1 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von lucabert » 11.02.2019, 20:32

Die Zeit lässt Du ja erst nach der ersten Betätigung starten. Außerdem kannst/solltest Du sowieso besser 2s nehmen. Es könnte schwer werden, 3 Telegramme innerhalb 1s von Hand auszusenden.
OK, verstanden...
Ich werde ein bißchen experimentieren...

Danke
Luca

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von Xel66 » 11.02.2019, 23:15

Ich meinte: erster Tastendruck, setzt erste Systemvariable auf WAHR (und verzögert um 2 Sek. wieder auf FALSCH) wenn die zweite FALSCH ist, der zweite setzt die zweite Systemvariable auf WAHR, wenn die erste WAHR ist (und verzögert um 1 Sek. wieder auf FALSCH) und der dritte Tastendruck löst die Aktion aus, wenn beide Systemvariablen WAHR sind. Das sollte man alles in einem Programm abarbeiten können (1x WENN, 2x SONST WENN). Das Timing könnte man noch innerhalb zwei Sekunden abarbeiten. Kürzer geht es wahrscheinlich nicht. Die CCU baucht auch Zeit.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Script auflösen bei "3x kurze Betätigung einer Taste"

Beitrag von Familienvater » 11.02.2019, 23:18

Hi,

in ioBroker kannst Du mit Zeitstempeln mit ms-Sekunden Auflösung arbeiten, ob man das braucht, und ob das Sinn macht, musst Du dann für Dich entscheiden.

Der Familienvater

Antworten

Zurück zu „HomeMatic allgemein“