"doppelklick" auf HM-LC-BL1-FM Tastern

Begonnen von Init, 08 Juni 2013, 21:18:19

Vorheriges Thema - Nächstes Thema

Init

Hallo zusammen,

gibt es eine Möglichkeit einen "Doppelklick" von den Tastern abzufangen?

Würde gerne die Jalousie nach einem Doppelklick runter aus der automatisch Steuerung für einen Tag entfernen.

Hat jemand eine Idee?

Viele Grüße
Marc

martinp876

Hi Marc,

Taster koennen einen double-press erkennen und unterdrücken. An FHEM wird es nicht gemeldet
Das ist nicht, was du willst, denke ich.
Zum einen: Double-press an welcher Stellen? Eine Remote, der angeschlossene Schalter oder ein FHEM kommando?
Machbar ist die Erkennung wohl nur von einer remote.
Dann musst du definieren, wann es ein double-press ist. An welchen Zeitraum hast du gedacht? ms oder sec?
dann noch: hast du direkt gepeert oder geht die Steuerung ueber FHEM?

Gruss
Martin

Init

Hi Martin,

wollte am Schalte selbst einen double-press oder Long-press machen und diesen dann in fhem abfangen um einen logischen lock auf diese jalousie zu setzen.

Hintergrund ist folgender. Bei uns fährt alles um 8h hoch, aber wenn meine Frau von der Nachtschicht gekommen ist, dann soll die Jalousie unten bleiben und dies sollte über den normalen schalter gesehen.

Nun stelle ich mir die Frage, ob das Modul "HM-LC-BL1-FM" einen double-press oder Long-press kennt, denn dann könnte man es ja in CUL_HM_parseCommon einbauen.

VG
Marc

martinp876

Hi Marc,

noch ein bisschen die Begriffswelt sortieren.
er 'normale Schalter' ist der, den du am BL angeklemmt hast?
mit 'Modul' meinst du FHEM SW-modul oder HM-Modul?

ein Aktor  (auch mit angeschlossenem oder eingebautenschalter) sendet keine Schalter-aktionen. Nur deren Auswirkung (also das Fahren des Rollo, nicht das Tippen auf den Taster).

Ich gehe davon aus, dass du also den angeschlossenen Schalter meinst... mal nachdenken.
Dein rollo sollte 'inhibit' unterstuetzen. Wenn du also Rollo-Aktionen unterdrücken willst solltest schicke ein Inhibit (muss ich auch mal probieren...)
Das Inhibit kannst du nun an jeden Notify festmachen. Du musst dir evtl etwas komplexes ausdenken, so wie "wenn Rollo zu und 2 mal in 10 sec "zu" gedrueckt, dann sende inhibit on" . Irgendwann brauchst du dann noch ein inhibit off.

Gruss Martin

Init

HI Martin,

Zitat von: martinp876 schrieb am So, 09 Juni 2013 18:16er 'normale Schalter' ist der, den du am BL angeklemmt hast?
Richtig...

Zitat von: martinp876 schrieb am So, 09 Juni 2013 18:16mit 'Modul' meinst du FHEM SW-modul oder HM-Modul?
Da meine ich das HM-Modul

Zitat von: martinp876 schrieb am So, 09 Juni 2013 18:16Dein rollo sollte 'inhibit' unterstuetzen.
Hab das mal bei mir getestet, funktioniert super, aber wie bekomme ich einen double-press via notify mit? So wie ich dich verstanden habe, funktioniert genau das nicht.

Hast du eine CCU bei dir stehen? Da könnte man evtl. mal schauen, ob man dem aktor eine Verknüpfung oder ähnliches setzen kann, dass dieser bei einem double-press oder Long-press den aktor auf 'inhibit' setzt.

VG
Marc

martinp876

Hi Marc,

eine CCU habe ich nicht.
Da HM das doulble-press nicht unterstuetzt koenntest du es in FHEM versuchen. Wenn also deine Frau in der Nacht nach Hause kommt und die Rolladen schon unten sind koennte sie 2mal 'down' druecken. Der Rollo sollte 2 man einen Status absetzen, jeweils mit einem Zustand und einem Zeitstempel. Beides kannst du abfragen.

Definiere einen Dummy, der Zaehlen soll, wie oft hintereinander ein RolloZu kommt. Mal so aus dem Kopf - incl denk und tipfehlen

define RolloZuCnt dummy
define RolloZuNf Rollo.*zu.* {if (Value{RolloZuCnt}>2){fhem{"set Rollo inhibit on"}}\
else\
fhem{"set RolloZuCnt Value{RolloZuCnt}+1"}}

define RolloAufNf Rollo.*level.* {if (attrVal("Rollo","level",0) != 100){fhem{"set RolloZuCnt 0"}}}

Ist jetzt ohne Zeitueberwachung. Wenn das Rollo zu ist und noch n-mal "zu" gedrueckt wird, wird verriegelt. Das Entriegeln musst du noch einbauen... so wird es wohl nicht funktionieren... da brauchst du einen anderen Trigger
Ich hoffem den Gedankengang konnte ich verstaendlich machen...
Gruss Martin

justme1968

für das zählen und die zeiten sollte doch sequence das richtige sein oder ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

martinp876

cool, ja. Hatte ich noch nicht genutzt...

Init

Hallo zusammen.

Mit sequence hatte ich das auch schon mal getestet, aber eine sequence muss meiner Meinung nach so aussehen:

define lampseq sequence LC_EG_5_SW_Rollo_Wohnzimmer:off 1 LC_EG_5_SW_Rollo_Wohnzimmer:off

Ich hab auch folgendes Notify zum test eingebut:

define myTest2 notify LC_EG_5_SW_Rollo_Wohnzimmer {\
Log 1, "myTest2: @ - %";;\
}


Und wenn ich jetzt 2x runter drücke, dann bekomme ich folgende Einträge:

2013.06.10 17:33:54 1: myTest2: LC_EG_5_SW_Rollo_Wohnzimmer - level: 77.5 %
2013.06.10 17:33:54 1: myTest2: LC_EG_5_SW_Rollo_Wohnzimmer - deviceMsg: 77.5 % (to broadcast)
2013.06.10 17:33:54 1: myTest2: LC_EG_5_SW_Rollo_Wohnzimmer - 77.5 %
2013.06.10 17:33:54 1: myTest2: LC_EG_5_SW_Rollo_Wohnzimmer - motor: stop:77.5 %


Dementsprechend reagiert auch die sequence nicht...

Muss mir scheinbar einen Workaround überlegen.

Demnach ist meine Idee folgende:
Die Jalousie wird am Abend automatisch runtergefahren.
Das runterfahren bewirkt folgenden Status: 1
Wenn meine Frau dann kommt und einmal runter drückt, dann geht die Joulosie in den Status: off
Am Morgen fahre ich dann alles hoch, was den Status "1" hat und somit fährt im Schlafzimmer nichts mehr hoch

Lieber hätte ich ja doch das double-press abgefangen und im Aktor selbst eine Verknüpfung auf bei double-press auf inhibit gemacht.

VG
Marc

martinp876

Hi Marc,

das mit den Triggern des Rollo verstehe ich nicht. Wenn der Rollo unten ist sollte er auf 'off'  (oder wegen mir auf 'on') stehen. 77,5% geht schon einmal nicht.

Das Problem mit dem double-press ist, dass der BL1 kein Taster sondern ein Aktor ist. Ein Taster wuerde alle alle 'presses' melden. Ein Aktor meldet den Zustand des Aktors, und zwar nach einer kurzen Zeit, und wenn er stabil ist. Wenn du also 2-mal pressed muss genug Zeit dazwischen sein, dass der Aktor auch einen status meldet.
Insgesamt sehe ich also nur einen Trigger, keine 2. Wenn du bei diesen Konzept bleibst musst du (deine Frau) laenger warten zwischen den presses und du das Timing entsprechend anpassen.

Im HM-device kenne ich keinen Weg, ihn auf inhibit zu setzen.

Gruss Martin

Init

Hi Martin,

der Wert 77.5 % kam zustande, da ich ein double-press in diesem Zustand gemacht habe.

Aber da davon auszugehen ist, dass die Jalousie unten ist, wenn meine Frau die Funktion benötigt, werde ich heute Abend noch einen Test im Zustand 1 und off machen.

Schade das der BL1 kein double-press unterstützt.

Dachte es gäbe evtl. wie bei den wired Komponenten Verknüpfungen. Ob man da genau so etwas machen könnte, kann ich auch nicht sagen. Kenne nur die Möglichkeit Ausgänge direkt in Abhängigkeit von Eingängen zu schalten.

VG
Marc

martinp876

Hi Marc,

man kann schon Ausgaenge in Abhaengigkeit der Eingaenge schalten. Aber die Beschraenkung ist, dass man den operativen Zustand aendern kann (fahre hoch, fahre nach x sec hoch...) Wie lange und solche Sachen. Man kann den Schalter unterschieden (hoch,runter und alle andere gepairten ) und man kann lang und kurz unterschieden.
Man kann nicht "inhibit" steuern und nicht doppel-click. Wired ist sicheraehnlich beschraenkt.


Gruss
Martin

Init

Hi Martin,

habe ich dich richtig verstanden, dass der Aktor zwischen kurzem und langem Druck unterscheiden kann?

VG
Marc

martinp876

Hi Marc,

ja aber klar doch. Das koennen (fast) alle HM Sensoren
Ich befuerchte aber, dass es dir nicht helfen wird. Du kannst verscheidene Aktionen definieren (im Aktor) was bei lang oder Kurz zu tun ist.
Aber leider kann man meines wissens kein Inhibit bei langem Tastendruck einstellen.

Martin

Init

Hi Martin,

kann ich denn nicht irgendeine Aktion einstellen, bei z.B. Lang, welche ich dann im notify auswerten könnte?

VG
Marc

martinp876

schwierig, dafuer ist es nicht gemacht.
Evtl hilft dir das Einsteigerdoc zu verstehen, was bei HM geht und was nicht. Hier ein Versuch auf die Schnelle:
HM Sensoren schicken kurze trigger (einen pro press) und lange trigger (wird so lange alle x ms  wiederholt bis du los laesst). Das machen alle Sensoren so, die Trigger schicken koennen (bewegungsmelder, remotes,.... ).

Aktoren koennen das Empfangen und ihren ausgang damit steuern. Du kannst also festlegen:
- {peer-channel}{long|sort} =>AktionDefinition

Die "ActionDefinition", die jeden Peer/[long-short] eigen ist, ist nicht frei programmierbar. Sie steuert nur den Ausgang, also den Kanal. Festlegen kannst du, wenn der gegebene Trigger kommt
- "bin in state 'xx'"=> gehe nach state 'yy'
also die aenderung, die zu ergreifen ist, wenn DIESER trigger kommt und der Ausgagn gerade im Zustand 'xx' ist.
- aktuell='on'=> gehe nach 'off',"delayOff',ignoriere den Trigger......
- aktuell='dlyOn'=> gehe nach 'off',"delayOff',ignoriere den Trigger......

"Normal" kommt ein trigger des Sensors, den wir sehen koennen. Der Aktor bestaetigt den Trigger, koennen wir auch sehen. Dann ergreift er die entsprechende Zustandsaenderung (was dem Sensor schon egal ist). Wenn die Aktion fertig ist wird die Zentrale informiert, dass ein neuer Zustand erreicht ist. Achtung: Die Zentreale wird auch informiert, wenn sich der Zustand nicht geaendert hat, also wenn Rollo=zu =>Trigger"zu dann wird die Zentrale noch einmal informiert, dass jetzt (schon wieder) 'zu' ist.

Bei dir ist es besonders schwer, da du den eingebauten Sensor nutzen willst. Da ist die Kommunikation zwischen Sensor und Aktor nicht zu sehen, der Sensor ist im uebrigen garnicht zu sehen. Alles was wir sehen koennen ist, welche Aktion der Aktor bei diesen Sensor ergreifen soll, und welchen Zustand der Aktor am Ende einnimmt.

inhibit ist in kein Zustand des Channels (jedenfalls habe ich noch nicht gesehen, wie man den erreichen koennte ... hm ... dokumentiert ist es nicht in den XMLs)

Du kannst also Auswerten:
Rollo zu, noch einmal 'zu' getriggert => status meldung an die Zentrale kannst du auswerten.

Einen 'long press' kann man schon etwas verbiegen - aber den brauscht du auch zum Steuern... und ob es dann etwas bringen wuerde... unklar.

Gruss
Martin