Merten 2-fach Switch in FHEM einbinden

Begonnen von Stephan1965, 08 Juli 2016, 12:58:47

Vorheriges Thema - Nächstes Thema

Stephan1965

Hallo,
ich habe seit einigen Wochen FHEM auf einem RPI3 laufen. Bislang hatte ich einige z-Wave Geräte von Merten, die mit der Merten Funkzentrale liefen. Da ich mit dieser aber nicht sehr zufrieden war, habe ich mich umgesehen und wollte jetzt FHEM ausprobieren. Erste Geräte habe ich auch eingebunden (einen Dimmer, einen Lichtschalter, einen Rollladen und die Markise (die im Prinzip ja auch nur ein Rollladen ist)). Diese funktionieren auch ganz gut. Jetzt wollte ich den 2-fach Wandschalter von Merten einbinden, um damit mit der linken Wippe oben den Lichtschalter, linke Wippe unten den Dimmer und rechte Wippe die Markise zu steuern. Dies hatte vorher mit der Merten Funkzentale funktioniert und ist damit im Prinzip auch möglich. Leider schaffe ich es nicht, den Schalter in FHEM zu bekommen. Ich habe mir die Beitrag "Merten Funk-Taster 2-Fach" sowie "ZWave.me Remote HOWTO" mehrfach durchgelesen, aber leider kann ich diese mit meiner Hardware nicht nachvollziehen.

Ich habe den Schalter lt. Merten Bedienungsanweisung komplett zurückgesetzt und dann in FHEM inkludiert. Die in den genannten Beiträgen beschriebene Vorgehensweise habe ich mehrfach versucht nachzuarbeiten. Ich habe den Schalter bei meinen Versuchen mehrfach exkludiert und wieder inkludiert. Ich bin jetzt etwas ratlos und möchte daher um Unterstützung bitten.
Folgende Situation liegt momentan vor:

Es wurden zwei Geräte angelegt:
- ZWave_SWITCH_REMOTE_16
- ZWave_Node_16.2

list ZWave_SWITCH_REMOTE_16
---------------------------
Internals:
CFGFN
DEF c8e51509 16
IODev ZWAVE1
LASTInputDev ZWAVE1
MSGCNT 23
NAME ZWave_SWITCH_REMOTE_16
NR 92
STATE TRANSMIT_NO_ACK
TYPE ZWave
ZWAVE1_MSGCNT 23
ZWAVE1_RAWMSG 004984100d011200728670858eef85202650
ZWAVE1_TIME 2016-07-08 11:53:54
homeId c8e51509
isWakeUp
lastMsgSent 1467971620.56022
nodeIdHex 10
Readings:
2016-07-08 11:53:54 CMD ZW_APPLICATION_UPDATE
2016-07-08 11:39:43 model Merten Transmitter 2-Gang Switch
2016-07-08 11:39:43 modelConfig unknown
2016-07-08 11:39:43 modelId 007a-0001-0004
2016-07-08 11:53:40 state TRANSMIT_NO_ACK
2016-07-08 11:44:07 timeToAck 0.082
2016-07-08 11:53:40 transmit NO_ACK
Attributes:
IODev ZWAVE1
classes MANUFACTURER_SPECIFIC VERSION CONFIGURATION ASSOCIATION MULTI_CHANNEL_ASSOCIATION MARK ASSOCIATION BASIC SWITCH_MULTILEVEL BASIC_WINDOW_COVERING
room ZWave
vclasses ASSOCIATION:1 BASIC:1 BASIC_WINDOW_COVERING:2 CONFIGURATION:1 MANUFACTURER_SPECIFIC:1 MULTI_CHANNEL_ASSOCIATION:1 SWITCH_MULTILEVEL:1 VERSION:1
---------------------------

get ZWAVE1 nodeInfo ZWave_SWITCH_REMOTE_16
---------------------------
ZWAVE1 nodeInfo_16 => ProtocolVers:SDK5.0x+4.2x sleeping maxBaud:9.6kbps Controller SpecificDev RoleType:N/A BasicDevClass:CONTROLLER GenericDevClass:SWITCH_REMOTE
---------------------------

get ZWave_SWITCH_REMOTE_16 versionClass 132
---------------------------
versionClass_84:00
---------------------------

list ZWave_Node_16.2
---------------------------
Internals:
   CFGFN
   DEF        c8e51509 4098
   IODev      ZWAVE1
   LASTInputDev ZWAVE1
   MSGCNT     24
   NAME       ZWave_Node_16.2
   NR         102
   STATE      ???
   TYPE       ZWave
   ZWAVE1_MSGCNT 24
   ZWAVE1_RAWMSG 0004001006600602200100
   ZWAVE1_TIME 2016-07-08 12:39:22
   homeId     c8e51509
   isWakeUp
   nodeIdHex  1002
   Readings:
     2016-07-08 12:39:22   basicSet        00
Attributes:
   IODev      ZWAVE1
   room       ZWave
---------------------------

get ZWAVE1 nodeInfo  ZWave_Node_16.2
---------------------------
ZWAVE1 nodeInfo_4098 => ProtocolVers:SDK5.0x+4.2x sleeping maxBaud:9.6kbps Controller SpecificDev RoleType:N/A BasicDevClass:CONTROLLER GenericDevClass:SWITCH_REMOTE
---------------------------

Momentan bekomme ich beim Drücken der rechten Wippe unten im ZWave_Node_16.2 folgendes:
Readings
basicSet      00     2016-07-08 12:45:47

Beim Drücken der rechten Wippe oben bekomme ich im ZWave_Node_16.2
basicSet   ff   2016-07-08 12:48:48

Beim Drücken der linken Wippe oben oder unten passiert nichts.

Viele Grüße
Stephan

Stephan1965

Hallo,
ich habe den Taster jetzt ein paar mal in FHEM exkludiert, dann den Taster in Auslieferungszustand gebracht und wieder in FHEM inkludiert.

Laut Merten Beschreibung des Tasters:

Information for experienced users who want to program this push-button for use with Z-wave compatible devices from other providers:
Learning/program mode (programming mode):
- Press the operating surface three times within approx. 1.5 seconds. The LED flashes or lights up for approx. one minute.

Configuring the push-button
- Press and hold the operating surface until the Z-wave device being programmed is confirmed.

Number of bytes 1
Dual-surface push-button:

Left top button:
- Association Group =1, Parameter no. = 0

Left bottom button:
- Association Group = 2, Parameter no. = 1

Right top button:
- Association Group =3, Parameter no. = 2

Right bottom button:
- Association Group = 4, Parameter no. = 3

Folgendes habe ich gemacht:
Den Taster drei mal kurz gedrückt, um ihn aufzuwecken. Nach dem Ende des Blinkens der roten LED habe ich den Befehl
set XX mcaAdd 1 0 1 1
abgesetzt. Dann habe ich das nochmal gemacht und den Befehl
set XX mcaAdd 2 0 1 2
abgesetzt.
Genauso mit set XX mcaAdd 3 0 1 3 und set XX mcaAdd 4 0 1 4.

Damit habe ich jetzt Folgendes:
2016-07-16 20:15:42.837 ZWave ZWave_Node_18.1 basicSet: ff
2016-07-16 20:15:44.266 ZWave ZWave_Node_18.1 basicSet: 00
2016-07-16 20:15:45.751 ZWave ZWave_Node_18.3 basicSet: ff
2016-07-16 20:15:47.268 ZWave ZWave_Node_18.3 basicSet: 00

Jetzt mache ich erst mal irgendwie weiter...

Stephan1965

Hallo,
Leider komme ich jetzt nicht mehr weiter. Ich möchte Folgendes erreichen:

Licht (linke Seite des Tasters)
- Linker Taster oben schaltet LichtTerasse_Links mit einem Tastendruck ein und beim nächsten Tastendruck wieder aus. Es handelt sich nur um einen Schalter.
- Linker Taster unten schaltet LichtTerasse_Rechts mit einem Tastendruck ein und beim nächsten Tastendruck wieder aus. Da es sich um einen Dimmer handelt, soll langes Drücken dann auch noch den Dimmwert ändern.

Markise (rechte Seite des Tasters)
- Rechter Schalter oben soll bei einem Tastendruck die Markise ausfahren.
- Rechter Schalter unten soll bei einem Tastendruck die Markise ausfahren.
Falls die Markise noch nicht in der Endposition ist, soll ein weiter Tastendruck die Markise stoppen (bei beiden Tastern).

Mir ist jetzt nicht klar, wie da weitermachen kann. Da bin ich dann noch zu unerfahren im Umgang mit FHEM.

Viele Grüße

Stephan

krikan

Hallo Stephan!

Willst Du eine Direktverbindung mittels Assoziation nutzen oder soll die Steuerung indirekt über FHEM mittels notify, DOIF,.. laufen?
Habe keine Merten-Produkte und kann nur allgemeines schreiben. Dir ist aus den anderen Threads sicherlich bekannt, dass Merten eine gewisse Sonderrolle in ZWave einnimmt und bisher noch niemand sich um einen eventuellen Code-Anpassungsbedarf gekümmert hat. Meiner Erinnerung nach betrifft das im Wesentlichen die Class MULTI_CHANNEL, die Dein Sensor nicht hat.
Warum hast Du das mit MULTI_CHANNEL_ASSOCIATION mcaAdd nicht weiterverfolgt?

Gruß, Christian

Stephan1965

#4
Hallo Christian,
ich habe die indirekte Steuerung über FHEM weiterverfolgt. Vielleicht werde ich aber die direkte Assoziation auch mal ausprobieren.
Momentan läuft der Hauptteil aller bereits verbauten z-wave Komponenten bei mir zuhause noch über die Merten Funkzentrale Connect. Diese empfinde ich aber als sehr unkomfortabel und ich bin auch sehr beeindruckt, was FHEM so alles kann. Mit den genannten Komponenten spiele ich momentan noch herum. Dadurch lerne ich dann aber auch, das System einigermaßen zu verstehen.
Die Sonderrolle der Mertenprodukte ist mir inzwischen auch bewusst. Heute würde ich diese nicht mehr wählen. Aber da meine Hauselektrik damals mit Merten gemacht worden war, bin ich da irgendwie dran hängengeblieben. Naja.

Inzwischen habe ich jetzt die rechte Wippe fast so hinbekommen, wie ich es wollte. Folgendes habe ich gemacht:

Ich habe die angelegten ZWave_Node_18.1 und 18.3 umbenannt:
rename ZWave_Node_18.1 SchalterTerasse.1
rename ZWave_Node_18.3 SchalterTerasse.2


Anschließend:
attr SchalterTerasse.\d* eventMap basicSet..ff:on basicSet..00:off

Und dann habe ich ein Notify angelegt:
define n_ReWi notify SchalterTerasse.2:(on|off) sleep 0.1;; set Markise $EVENT

Zum Glück gibt es im Forum sehr gute Threads! Jetzt funktioniert das schon mal so, dass auch die restliche Familie die Markise wieder betätigen kann. Allerdings kann ich die Markise per Schalter nicht stoppen, sondern nur immer komplett ein- oder ausfahren.

Bei der linken Wippe möchte ich gerne die obere Fläche zum Ein- und Ausschalten einer Lampe benutzen. Den unteren Teil möchte ich für einen Dimmer verwenden:
Ein- und Ausschalten durch kurzes Drücken, längeres Drücken dann Dimmen. Momentan weiß ich aber noch nicht, wie ich diese Wippe quasi aufspalte, um dann zwei unterschiedliche Funktionen zu verwirklichen. Den Produktzettel von Merten verstehe ich da nicht so richtig...

Viele Grüße

Stephan

krikan

Hallo Stephan!

Sehe Merten nicht als schlecht an. Die Haptik der Taster wird vermutlich besser als vieles andere sein, darum habe ich auch schon mal damit geliebäugelt. Merten ist eher eine Herausforderung in FHEM (und anderen ZWave-Softwareprodukten), da wenig bekannt.
Insgesamt interpretiere ich Deinen Bericht als gutes zund zügiges Vorankommen.  :)

Markise stoppen geht nicht mit "set <device> stop"? Falls ja, kann die Merten-Zentrale das? Dann müsstest Du mal den Code herausfinden, den die Merten-Zentrale verschickt und zeigen. So etwas steht manchmal in Logs der Steuerprodukte. Oder hat die Zentrale keinen Bildschirm/Pc-Anschluss?
Wenn Du Taster mit Mehrfachbelegung, Druckdauerunterscheidung u.ä. bei der indirekten Steuerung einsetzt, schau Dir auch mal http://fhem.de/commandref.html#sequence mit dem Attribut triggerPartial an, wenn Du es noch nicht kennst. Falls Du Beispiele suchst, die hatten wir meiner Erinnerung nach beim EnO. Kann ggfs. gerne schauen.

Gruß, Christian

Stephan1965

Hallo Christian,
die Markise stoppen mit dem Befehl "set Markise stop" vom Computer aus funktioniert. Irgendwann möchte ich gerne, dass das (während der Fahrt) durch nochmaliges Drücken der Wippe (oben oder unten) ausgelöst wird. Scheint mir aber möglich zu sein. :-)
Im alten System hat dies funktioniert, also muss es auch hier gehen. Genauso wie die weiter oben genannte Funktion der anderen Wippe so ja schon mal funktioniert hat.

Den Link werde ich mir durchlesen und dann ausprobieren. Allerdings wird das jetzt noch etwas dauern. :-) Sommerzeit...
Vielen Dank schon mal für die Hinweise. Vielleicht kann ich ja mit dem Thread auch anderen helfen. Ich profitiere ja auch von den vielen Themen hier.

Viele Grüße

Stephan

Stephan1965

Hallo Christian,
ich habe mir das mit sequence angesehen. Das könnte passen. Werde das ausprobieren, wenn ich wieder zuhause bin.

Was meinst du mit Beispielen mit EnO? Beispiele fände ich natürlich interessant. :-)

Viele Grüße

Stephan

krikan

Zitat von: Stephan1965 am 25 Juli 2016, 12:07:27
Was meinst du mit Beispielen mit EnO? Beispiele fände ich natürlich interessant. :-)
Hallo Stephan!
Sorry war ein wenig kurz. Ich meinte, dass wir sequence im EnOcean-Unterforum schon einmal mit Beispielen hatten. Im EnO-Wiki http://www.fhemwiki.de/wiki/EnOcean-PTM-210-Taster#Einsatzbeispiel habe ich im 1. Beispiel eine alte Variante ohne sequence stehen lassen und Rudis Einführungsbeitrag zu triggerPartial bei sequence verlinkt. Im 2. Beispiel ist auch eine sequence-Variante mit triggerPartial enthalten.
Vielleicht hilft das schon ein wenig, ansonsten bitte nachfragen.  :)
Gruß, Christian

Stephan1965

#9
Hallo,
ist jetzt einige Zeit vergangen und zur Vollständigkeit der aktuelle Stand der Belegung des Merten 2-fach Schalters.
Damit die Familie auch das Licht auf der Terrasse schalten kann, habe ich für die linke Wippe zwei notifys angelegt:

define n_LiWiOben notify SchalterTerasse.1:on set LichtTerasse_links toggle
Damit wird mit der oberen Seite der linken Wippe das Licht der linken Terrasenseite ein- oder ausgeschaltet. Das Licht wird über einen z-wave Schalter geschaltet.

define n_LiWiUnten notify SchalterTerasse.1:off set LichtTerasse_rechts toggle
Damit wird mit der unteren Seite der linken Wippe das Licht der rechten Terrassenseite ein- oder ausgeschaltet. Das Licht wird über einen z-wave Dimmer geschaltet.

Das Licht der linken (Terrassen-)Seite entspricht also vollkommen dem, was ich mir vorgestellt hatte. Für das Licht der rechten (Terrassen-)Seite würde ich jetzt noch gerne über den Schalter (also die untere Seite der linken Wippe) irgendwie eine Dimmfunktion hinbekommen. Aber ich weiß leider nicht, ob die Betätigungsdauer des Schalters irgendwie ausgelesen werden kann. Bislang steuere ich dann den Dimmwert über das Latop oder Handy oder Tab...

Die Betätigung der Markise hatte ich ja schon geschildert. Hier muss ich noch die Stopfunktion versuchen. Da muss ich mich jetzt demnächst mal wieder mit befassen. Thema Sequenz etc...

Stephan1965

Hallo,
ich habe gestern mal wieder ein Update von FHEM gemacht und dabei bemerkt, das für die Merten Rollladenschalter anscheinend sich ein bisschen verändert / verbessert hat. Ich bin mir nicht ganz sicher, aber trotzdem:

VIELEN DANK!!!

Das wollte ich einfach nur mal sagen.

Viele Grüße,

Stephan

Stephan1965

Hallo,
ich habe jetzt die Markisensteuerung über die rechte Schaltwippe mit dem Sequence-Befehl umgesetzt. Dazu habe ich erst das bislang bestehende notfy n_ReWi gelöscht.
Und dann:

Markise ausfahren:
define MarkiseRausSequence sequence SchalterTerrasse.2:off 1 SchalterTerrasse.2:off
Bei dieser Sequence habe ich dann das Attribut triggerPartial auf 1 gesetzt.
Dann habe ich die Aktion für das Rausfahren der Markise definiert:
define MarkiseRaus notify MarkiseRausSequence:trigger set Markise raus
Dieses wird durch doppeltes Drücken des Schalters ausgelöst.

Während jetzt die Markise ausfährt, soll sie durch einmaliges Drücken des Schalters auch gestoppt werden können:
define MarkiseRausStop notify MarkiseRausSequence:partial_1 set Markise stop

Analog habe ich das Einfahren gemacht:
define MarkiseReinSequence sequence SchalterTerrasse.2:on 1 SchalterTerrasse.2:on
Bei dieser Sequence habe ich dann das Attribut triggerPartial auf 1 gesetzt.
Dann habe ich die Aktion für das Einfahren der Markise definiert:
define MarkiseRein notify MarkiseReinSequence:trigger set Markise rein
Dieses wird durch doppeltes Drücken des Schalters ausgelöst.

Während jetzt die Markise einfährt, soll sie durch einmaliges Drücken des Schalters auch gestoppt werden können:
define MarkiseReinStop notify MarkiseReinSequence:partial_1 set Markise stop

Anmerkung: Der Markise habe ich statt on/off die Zustände rein/raus zugewiesen (eventMap on:rein stop:stop off:raus)

Leider gibt der Schalter nicht die Betätigungsdauer weiter. Und auch ein zu schnelles zweimaliges Drücken hintereinander funktioniert nicht. Aber mit dem jetzigen Stand kann ich leben. Mal sehen, was die Familie sagt...  ;)

Viele Grüße

Stephan

P.S.: Und nochmal "Danke!" für die Hilfen und das tolle Forum!!! Ich werde allmählich süchtig und kaufe jetzt immer mehr Sensoren, etc. dazu...
Das nächste Projekt sind jetzt Heizungsthermostate. Wahrscheinlich dann aber die ersten Homematic-Produkte. Z-Wave-Thermostate gefallen mir bis jetzt noch nicht und sind auch teurer.  Oder?

krikan

Hallo Stephan,
liest sich nach erfolgreicher Umsetzung .  :)
ZitatUnd auch ein zu schnelles zweimaliges Drücken hintereinander funktioniert nicht.
Was funktioniert dann nicht? Das ist mir nicht klar.

Mit den Z-wave-Thermostaten habe ich aufgrund diverser Berichte und der technischen Daten auch meine Probleme. Selbst nutze ich EnO-Thermostate, die aber preislich noch höher liegen. HM ist vermutlich keine schlechte Alternative.

Gruß, Christian

Stephan1965

Hallo Christian,
ZitatWas funktioniert dann nicht? Das ist mir nicht klar.
Im Event monitor wird nur das erste Drücken angezeigt. Das zweite (zu schnelle) Drücken wird anscheinend vom Schalter dann gar nicht gesendet. Nur wenn eine gewisse Pause zwischen den Betätigungen ist, wird dann wieder das zweite Drücken auch im Event monitor angezeigt und damit dann der entsprechende Sequence-Befehl ausgeführt. Das ist ein bisschen üben, aber es geht dann recht zuverlässig.

Was ich aber nicht verstehe: Mit der alten Merten Funkzentrale, die jetzt funktionslos bei mir ist und demnächst ausgebaut wird, konnte ich auch die Dimmfunktion durch längeres Drücken ausführen. Jetzt sehe ich aber im Event monitor keinen Unterschiede bei längerem Drücken. Vielleicht muss ich ja in FHEM noch irgendwelche Attribute bei dem Schalter ändern, damit dies auch geht?

Viele Grüße

Stephan



krikan

Zitat von: Stephan1965 am 22 Oktober 2016, 13:04:43
Im Event monitor wird nur das erste Drücken angezeigt. Das zweite (zu schnelle) Drücken wird anscheinend vom Schalter dann gar nicht gesendet. Nur wenn eine gewisse Pause zwischen den Betätigungen ist, wird dann wieder das zweite Drücken auch im Event monitor
Seltsam, FHEM unterdrückt keine Nachrichten. Hattest Du solche Doppelklick-Robleme auch mit der Merten-Zentrale oder hast Du dort keine Doppelklicks genutzt?

Zitat
Was ich aber nicht verstehe: Mit der alten Merten Funkzentrale, die jetzt funktionslos bei mir ist und demnächst ausgebaut wird, konnte ich auch die Dimmfunktion durch längeres Drücken ausführen. Jetzt sehe ich aber im Event monitor keinen Unterschiede bei längerem Drücken. Vielleicht muss ich ja in FHEM noch irgendwelche Attribute bei dem Schalter ändern, damit dies auch geht?
Hast Du UNPARSED-Nachrichten in den Readings?
Falls ja, dann zeige die mal bitte und schreibe, mit welcher Aktion die entstehen.

Falls nein, dann tippe ich auf eine abweichende Konfiguration/Assoziation. Aber letztlich ist das Glaskugel. Am Besten wäre ausführliche Doku von Merten (gibt es mWn aber nicht) oder das (zeitaufwendige) Analysieren der Kommunikation von MertenZentrale mit Schalter.

Gruß, Christian