Sequence für ein Codeschloss

Begonnen von Vorhand, 06 Mai 2018, 12:53:41

Vorheriges Thema - Nächstes Thema

Vorhand

Mein uraltes Hardware-Codeschloss geht mit einer Taste. Leider nicht mehr erhältlich.
Jetzt wollte ich ein CodeSchloss in fhem mit der Funktion "sequence" realisieren.
Eingabe über Taster und I2C_PCF8574 mit Interrupt.

z.B. zweimal kurz, einmal lang...
define s_TrAuf S20x2:off 0.5 S20x2:off 1 S20x2:off  (off wg. Umkehrung des Eingangs)
zusammen mit
define n_TrAuf s_TrAuf:trigger set S24x0 on-for-timer 2

funktioniert ... der Türöffner wird 2 s betätigt.
Aber auch mit 3 kurzen Impulsen geht es, weil timeout nur das Zeitfenster vorgibt.

Meine Versuche mit delay:timeout lt. Beispiel in der Commandref sind leider gescheitert.
Angeblich soll damit ein "Drücken und Halten" auswertbar sein
z.B.
define s_TrAuf S20x2:off 2:3 :on (deutsche Beschreibung) geht nicht.
define s_TrAuf S20x2:off 2:3 S20x2:on (englische Beschreibung) geht auch nicht.
Irgenwie verstehe ich delay:timeout nicht richtig.
Was mache ich falsch?
danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

nils_

in deinen codes fehlt zB schonmal das modul.
hast du das kopiert oder mal eben hier im forum hingetippt (und deswegen vergessen).

ich kenne sequence nicht, aber ein list hilft bestimmt weiter.
oder evtl. log auszüge.

"geht nicht" ist keine ausreichende fehlerbeschreibung!
viele Wege in FHEM es gibt!

Vorhand

Danke für die Antwort.
welches modul im code meinst du?
list bringt mir leider auch keine Hilfe.

Grundsätzlich geht sequence ja. Ich kann verschiedene Anzahlen von Impulsen unterscheiden. Nur gelingt es mir nicht, die Länge des Impulses auszuwerten.
Im forum habe ich auch kein passendes Beispiel gefunden.
Ich möchte nochmals auf den Unterschied zwischen der deutschen und der englischen Referenz hinweisen - sicher nur ein Schreibfehler.
Kennt jemand einen Beitrag über die Nutzung dieser Funktion "sequence"?
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

Beta-User

Könntest du uns eventuell mal einen Auszug aus dem Event-Monitor liefern, was da so passiert, wenn du Tasten auf deinem Code-Schloss drückst? (Bitte ggf. die Filtermöglichkeit im Event-Monitor nutzen - dazu .* oben links bearbeiten, siehe wiki).

Und bitte verwende code-tags (#-Button oben), zusammen mit einem "list". Was nils_ angesprochen hat, ist dass in deinem define nirgends das modul "sequence" auftaucht. Das sollte ungefähr so aussehen:

define s_TrAuf sequence S20x2:off 0.5 S20x2:off 1 S20x2:off

Wenn du den Text so aus der config kopiert haben solltest: Bitte zukünftig auf das Editieren der cfg verzichten, das geht besser über das Web-Interface oder telnet.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

nils_

Zitat von: Vorhand am 08 Mai 2018, 12:58:51
welches modul im code meinst du?
siehe Antwort von Beta-User

Zitat von: Vorhand am 08 Mai 2018, 12:58:51
list bringt mir leider auch keine Hilfe.
evtl. aber einem der helfenden hier!

Zitat von: Vorhand am 08 Mai 2018, 12:58:51
Ich möchte nochmals auf den Unterschied zwischen der deutschen und der englischen Referenz hinweisen - sicher nur ein Schreibfehler.
schreibfehler könnte sein.
für mich scheint der unterschied von dieser Funktionalität her zukommen:
ZitatNachfolgende Regexps können den Namen des Gerätes weglassen, in diesem Fall werden nur die Events des beim ersten Event eingetroffenen Gerätes beachtet:


funktioniert sowas nicht??
define s_TrAuf sequence S20x2:off 0.5 S20x2:off 0.5 S20x2:off 2:3
was sagt dein log?
und der eventmonitor??




@rudi: falls du mitliest: gerade gesehen das in der deutschen commandref der Attribute-Teil zweimal vorkommt  :o :o
viele Wege in FHEM es gibt!

Vorhand

Natürlich - sequence fehlt in meinem Text. Im richtigen Code ist es enthalten. Das lag wohl daran, dass ich mit dem Web-Interface arbeite und hier fehlt das modul in der Kopie. Im Text hab ich dann nur ein define+name davor geschrieben und schon war es vergessen.
Ok, werde mich bessern.
Zu deinem Vorschlag
define s_TrAuf sequence S20x2:off 0.5 S20x2:off 0.5 S20x2:off 2:3
Der wird nicht akzeptiert, weil timeout nur zwischen den Tastendrücken vorkommt.
Ein weiteres S20x2:off wird akzeptiert aber funktioniert nicht.
Test mit diesem Code
define s_TrAuf sequence S20x2:off 1 S20x2:off 1 S20x2:off 1 S20x2:off 1 S20x2:off
2018-05-08 20:57:31 I2C_PCF8574 S20 Port2: off
2018-05-08 20:57:31 I2C_PCF8574 S20 Port2: on
2018-05-08 20:57:32 I2C_PCF8574 S20 Port2: off
2018-05-08 20:57:32 I2C_PCF8574 S20 Port2: on
2018-05-08 20:57:32 I2C_PCF8574 S20 Port2: off
2018-05-08 20:57:33 I2C_PCF8574 S20 Port2: on
2018-05-08 20:57:33 I2C_PCF8574 S20 Port2: off
2018-05-08 20:57:33 I2C_PCF8574 S20 Port2: on
2018-05-08 20:57:34 I2C_PCF8574 S20 Port2: off
2018-05-08 20:57:34 I2C_PCF8574 S24 Port0: off
2018-05-08 20:57:34 I2C_PCF8574 S20 Port2: on
Hier wurden 5 Impulse mit timeout 1 s geschickt. Am Ende kommt der Ausgang S24 Port0 richtig.
Test mit diesem Code
define s_TrAuf sequence S20x2:off 1 :off 1 :off 1 :off 1 :off
Gleiche Events - funktioniert auch.
Test mit diesem Code
define s_TrAuf sequence S20x2:off 1 :off 1 :off 1 :off 2:3 :off
Gleiche Events, ohne S24 Port0 - funktioniert nicht.

Ich verstehe das delay vor dem timeout so, dass ich die Taste nach 4x schnell, 1x zwischen 2 und 5 s drücke.
Auch wenn das letzte off mit on ersetzt wird - keine Funktion.
???
 
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

Beta-User

Vorab: den Code für code-tags erhält man einfacher, wenn man sich ein list vom Device anzeigen läßt; das enthält oft auch noch weitere Infos, die einem weiterhelfen können.
Zitat von: Vorhand am 08 Mai 2018, 21:50:34
Ich verstehe das delay vor dem timeout so, dass ich die Taste nach 4x schnell, 1x zwischen 2 und 5 s drücke.
Das liest sich so, ja. Hast du bei dem Versuch, das letzte Event mit "on" zu belegen die Taste beim 4. Drücken mind. 2 Sec. gedrückt gehalten? Wie sehen die Events dazu aus?

Im allgemeinen würde ich empfehlen, beim austesten erweiterter Funktionalität (wie hier dem Delay) erst mal mit den simplen Beispielen aus der Commandref anzufangen. Also nur mit 2 Events, und das dann erst später aufzuboren, wenn die Funktionsweise bezogen auf die konkrete Hardware klar ist.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Zitat@rudi: falls du mitliest: gerade gesehen das in der deutschen commandref der Attribute-Teil zweimal vorkommt
Habs gefixt. Und disabledForIntervals hinzugefuegt.

ZitatIch möchte nochmals auf den Unterschied zwischen der deutschen und der englischen Referenz hinweisen - sicher nur ein Schreibfehler.
Nicht wirklich, beide sind korrekt, ab den zweiten Regexp kann man den Namen des Event-Ausloesers weglassen, dann wird der Vorherige angenommen.

Bitte:
attr global mseclog
attr s_TrAuf triggerPartial

setzen, und den Event-Log eines Fehlversuchs hier nochmal zeigen.