FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: DC am 04 Juni 2013, 23:10:59

Titel: "Alles Aus" Funktion / peering-Probleme
Beitrag von: DC am 04 Juni 2013, 23:10:59
Hallo zusammen,

Ziel:
Beim Verlassen der Wohnung sollen durch längeres Drücken eines Wandtasters alle Lichter in der Wohnung ausgeschaltet werden.

Problem:
- die Wandtaster senden kein longRelease (um ein notify zu triggern)
- die Befehle werden von FHEM als "to broadcast" erkannt und nicht einem Kanal zugeordnet
- peerXref auf HMinfo zeigt "interessante" Daten:

    F.Alex_SW_Btn_01 =>F.Boden
    F.Alex_SW_Btn_01 =>F.Decke_chn:01
    F.Alex_SW_Btn_02 =>F.Decke_chn:01
    F.Boden =>F.Alex_SW_Btn_01
    F.Boden =>F.Eingang_SW_Btn_02
    F.Decke =>F.Alex_SW_Btn_02
    F.Decke =>F.Eingang_SW_Btn_01

Anmerkung:
- F.Alex_SW ist ein HM-PB-2-WM55
- F.Eingang_SW ist ein HM-PB-2-WM55
- F.Boden ist Kanal 01 eines HM-LC-SW2-FM
- F.Decke ist ein HM-LC-SW1-FM
- die Taster sind auf dem jeweiligen Kanal per GUI mit "peerChan <chanel> <Actorkanal> single set"  eingerichtet worden.
- das "Alles Aus" notify hätte sein sollen: "define F.alles_aus_notify notify F.Alex_SW:Alex_SW_Btn_01.LongRelease.* set F.Decke off;;set F.Boden off"

Beide Wandtaster wurden gleich eingerichtet, trotzdem zeigt peerXref  die Taster unterschiedlich an.

- Warum machen Sie ein "to broadcast" ?
- Warum gibt es kein "longRelease" ?
- Wie kann ich die "Alles Aus" bei langem Tastendruck realisieren, falls ich kein longRelease bekommen kann ?

Irgendwie komme ich nicht weiter....

Danke im voraus für Euren Input,
Karsten
Titel: Aw: "Alles Aus" Funktion / peering-Probleme
Beitrag von: martinp876 am 05 Juni 2013, 09:31:03
Hallo Karsten,

ein Taster sendet trigger an seine Peers, wenn die Aktion beendet ist. Bei short also mit der ersten message (hat ja nur eine) und bei long mit der letzten message, also beim Loslassen.
Die 'longpress' werden also, bis auf die letzte message, an broadcast gesendet, also "an alle" oder "ohne Empfaenger".
Mit der jeweils letzten message wird an jeden Peer eine "Einschreiben mit Rueckschein" versendet. Die Remote kontrolliert also, ob alle Peers auch zugehoert haben.

Jeder Button kann also mehrere Peers haben.

Deine Remote hat auf dieser Taste keinen Peer eingerichtet. Daher fragt sie auch nicht nach einer Quittung, bei wem auch? FHEM wertet ein Release anhand "des Einschreibens" aus, da die remote ein Ende des Long nicht Signallisiert. Siehe Commandref
Zitat•remote/pushButton/outputUnit
   (to $dest) is added if the button is peered and does not send to broadcast
    Release is provided for peered channels only
oder EinsteigerDoc.

Ich wuerde also in jedem Fall die Tasten peeren. Hier hast du die Beiden Moeglichkeiten:
a) mit einem virtuellen Aktor => FHEM simuliert einen Aktor und sendet die ACKS ggf. an die FB
b) mit deinen Aktoren direkt. Du kannst in den Aktoren einstellen, dass sie nur auf den Longpress der Taste reagieren sollen und dann das Licht ausschalten. Funktioniert dann auch ohne Zentrale.

Eine der Varianten a) oder b) solltest du realisieren. b) ist resourcenschonender, schneller und stoer-unanfaelliger, dafuer etwas aufwendiger beim Einrichten und nicht so aenderungsfreundlich.

Funktionieren kann es aber auch ohne die Beiden (was ich nicht empfehle... ich will immer eine Antwort bei HM...). Wenn du es mit der Zentrale ueber notify machen willst.
Aber auf release wuerde ich nicht warten, ist fuer mich nicht intuitiv genug. Wenn ich einen langen Druck brauche um alles auszuschalten, wie lange muss der sein, wann ist genug? Daher einfach mit dem ersten 'long' trigger ausschalten.

Du hast sicher einmal beobachtet, welche Trigger alle kommen und welche Readings gesetzt werden.  "trigger:Long_1" sollte doch kommen? also schalte das licht beim ersten "long" aus, dann ist der Person klar, wenn sie loslassen darf.

define Laus notify F.Alex_SW_Btn_01.*trigger:Long_1 set F.Boden off

Gruss Martin
Titel: Aw: "Alles Aus" Funktion / peering-Probleme
Beitrag von: DC am 05 Juni 2013, 23:35:18
Hallo Martin,

Danke für das schnelle Feedback. Lösung gefunden, sieht aber etwas anders aus.
Der Wandtaster hat nicht die von Dir aufgezeigten Signale gesendet:

Taster erstes mal gedrückt:
2013-06-05 22:42:47 CUL_HM F.Eingang_SW_Btn_02 Long 2-8440- (to broadcast)
2013-06-05 22:42:47 CUL_HM F.Eingang_SW_Btn_02 trigger: Long_13
2013-06-05 22:42:47 CUL_HM F.Eingang_SW battery: ok
2013-06-05 22:42:47 CUL_HM F.Eingang_SW F.Eingang_SW_Btn_02 Long 2-8440- (to broadcast)
2013-06-05 22:42:47 CUL_HM F.Eingang_SW_Btn_02 Long 3-8440- (to broadcast)
2013-06-05 22:42:47 CUL_HM F.Eingang_SW_Btn_02 trigger: Long_13
2013-06-05 22:42:47 CUL_HM F.Eingang_SW battery: ok
2013-06-05 22:42:47 CUL_HM F.Eingang_SW F.Eingang_SW_Btn_02 Long 3-8440- (to broadcast)
2013-06-05 22:42:47 CUL_HM F.Eingang_SW_Btn_02 Long 4-8440- (to broadcast)
2013-06-05 22:42:47 CUL_HM F.Eingang_SW_Btn_02 trigger: Long_13
2013-06-05 22:42:47 CUL_HM F.Eingang_SW battery: ok

Taster zweites mal gedrückt:
2013-06-05 22:42:48 CUL_HM F.Eingang_SW F.Eingang_SW_Btn_02 Long 8-8440- (to broadcast)
2013-06-05 22:42:50 CUL_HM F.Eingang_SW_Btn_02 Long 2-8440- (to broadcast)
2013-06-05 22:42:50 CUL_HM F.Eingang_SW_Btn_02 trigger: Long_14
2013-06-05 22:42:50 CUL_HM F.Eingang_SW battery: ok
2013-06-05 22:42:50 CUL_HM F.Eingang_SW F.Eingang_SW_Btn_02 Long 2-8440- (to broadcast)
2013-06-05 22:42:51 CUL_HM F.Eingang_SW_Btn_02 Long 3-8440- (to broadcast)
2013-06-05 22:42:51 CUL_HM F.Eingang_SW_Btn_02 trigger: Long_14
2013-06-05 22:42:51 CUL_HM F.Eingang_SW battery: ok
2013-06-05 22:42:51 CUL_HM F.Eingang_SW F.Eingang_SW_Btn_02 Long 3-8440- (to broadcast)
2013-06-05 22:42:51 CUL_HM F.Eingang_SW_Btn_02 Long 4-8440- (to broadcast)
2013-06-05 22:42:51 CUL_HM F.Eingang_SW_Btn_02 trigger: Long_14
2013-06-05 22:42:51 CUL_HM F.Eingang_SW battery: ok

Er zählt den "trigger: Long_" hoch und kommt nicht bei _1 vorbei.

Nach einigem Experimentieren habe ich den Fehler jetzt gefunden: das peeren:

Falsch:   set F.Eingang_SW_Btn_02 peerChan 2 F.Boden single set
Richtig:  set F.Eingang_SW_Btn_02 peerChan 0 F.Boden single set

Also 0 statt 2 (weil der Button ja schon eindeutig beschrieben ist - und die 2 wohl dafür gesorgt hat, dass der trigger per Funk durchkommt, der Rest aber nicht).
Resultat: 2013-06-05 23:21:00 CUL_HM  F.Eingang_SW_Btn_02 LongRelease 10-A040- (to F.Boden_HM_LC_SW2)
Jetzt geht auch der Notify:define F.alles_aus_notify notify F.Eingang_SW:.*Btn_02.LongRelease.* set F.Decke off;;set F.Boden off
Titel: Aw: "Alles Aus" Funktion / peering-Probleme
Beitrag von: martinp876 am 06 Juni 2013, 10:02:36
Hallo Karsten,

ja, notify war mein Fehler. Es gibt 2 Zaehler: HM zeahlt die Ereignise, long trigger ist ein ereigniss, egal wie lange. FHEM zaehlt die Anzahl der 'long-trigger-messages' hab ich verwuerfelt.
Der trigger waere dann
define Laus notify F.Eingang_SW_Btn_02.Long.1-.* set F.Boden off
wobei ich erst einmal korrigieren muss. dass der erste Trigger auch '1' ist. Jetzt kommt '2' statt '1', bald nicht mehr.

das mit dem '2' verstehe ich nicht. Da F.Eingang_SW_Btn_02 ein channel ist sollte der wert keinen Einfluss haben.
Kannst du mir den Auszug aus fhem.cfg schicken, der den gesamten F.Eingang_SW und alle Buttons (channels) definiert?

Gruss Martin