HomeMatic: Taster peeren mit Sonderfunktion

Begonnen von C1500, 04 März 2015, 11:43:33

Vorheriges Thema - Nächstes Thema

C1500

Servus,
ich hab da eine Idee und bitte euch um Unterstützung.
In meinem System sind einige MAX!, HomeMatic und MiLight Komponenten.

Die HomeMatic Komponenten sind über einen HM-CFG-USB-2 mit FHEM verbunden.
Bisher steuere ich die HM Komponenten nur über die Weboberfläche oder AndFHEM.

Da jetzt bald die Taster (HM-PB-2-WM55-2) geliefert werden, möchte ich gerne einen Dimmer (HM-LC-Dim1PWM-CV) damit schalten.
Gedacht habe ich mir folgende ,,Besonderheit"
Taste oben kurz drücken -> Licht 100%
Taste oben lang drücken -> Licht hoch dimmen bis losgelassen wird.
Taste unten kurz drücken wenn Licht an -> Licht aus
Taste unten lang drücken wenn Licht an -> Licht runter dimmen bis losgelassen wird
Taste unten kurz drücken wenn Licht aus -> Licht auf 5% dimmen

Also die Besonderheit ist eigentlich nur die, dass wenn aus ist und nochmal ausgeschaltet wird, auf 5% gedimmt wird.

Ist das machbar?

Bisher habe ich mangels Taster alle Komponenten nur gepairt aber noch nichts gepeert.
Wenn ich das richtig verstanden habe ist die oben gewünschte Einstellung mit peeren möglich.
Ich hoffe einer von euch kann sich die Zeit nehemn und mir das erklären.
Vielen Dank im Vorraus

Gruß Peer
(ja ich heiße wirklich so und hab nix mit Peer2Peer oder so zu tun ;) )

Mathea

#1
Hallo Peer,

nach meinem Verständnis ist dieses Verhalten mit einer Direktverknüpfung alleine, also nur mit einem Peering nicht zu erreichen. Die Logik für die Abfrage, ob das Licht aus- oder eingeschaltet ist und wie mit der Information des gedrückten Tasters der Fall unterschieden wird, müsste so in deinem Dimmer gehandlet werden, und das kann er meines Wissens nach nicht.

Allerdings kann ich mir vorstellen, dass du das Einschalten auf 5% bei Tastendruck und ausgeschaltetem Licht mit einem notify oder DOIF in fhem handlen könntest.
Du würdest in diesem Fall alle anderen Funktionen dennoch mit einem Peering des Dimmers und der Taster umsetzen können.
Das DOIF würde dann bei Druck auf die spezifische Taste getriggert werden und zusätzlich abfragen, ob das Licht gerade aus war. Ist diese Bedingung erfüllt, schickt fhem dem Dimmer den Befehl, auf 5% hochzudimmen.

Kritisch wäre da lediglich das Timing. Denn dein Dimmer bekommt dabei (hoffentlich) zuerst die Nachricht des Tasters, das Licht abzuschalten auch wenn es schon aus ist, und ein paar Sekundenbruchteile später die Nachricht von fhem, das Licht auf 5% zu dimmen. Würden die Nachrichten den Dimmer in verdrehter Reihenfolge erreichen, würde das Licht nicht eingeschaltet werden. Allerdings kann dies meiner Meinung nach nicht passieren, da der Dimmer die erste Nachricht der betätigten Taste zeitgleich mit fhem erhält, und fhem anschließend erst die Nachricht zum Dimmen auf 5% schicken kann.

Ein anderer Ansatz würde definitiv Funktionieren wenn dein Dimmer auch virtuelle Kanäle besitzt (weiß ich aus dem Stehgreif leider nicht) und gleichzeitig eleganter sein. Denn Dann würdest du einen Kanal komplett direkt mit dem Taster peeren und diesen Kanal für deine Grundfunktionalität benutzen. einen zweiten Kanal versiehst du dann mit einer OR Verknüpfung zum Handlen des Einschalten auf 5% falls das Licht vorher aus war. Diesen Kanal steuert nun fhem nach der DOIF Abfrage an, wenn das Licht aus war. somit wird zwar Kanal 1 immer ein- und ausgeschaltet, wenn dein Taster betätigt wird, aber Kanal 2 kann unabhängig davon von fhem eingeschaltet werden.
Ergo: Der Tastendruck der "Ausschalt / 5% wenn aus" Taste schaltet zunächst Kanal 1 des Dimmers aus, egal ob das Licht vorher an oder aus war. War das Licht vorher allerdings aus, schaltet fhem nach der DOIF Abfrage Kanal 2 auf 5%. Wenn Kanal 2 nun mit einer OR Verknüpfung versehen ist, übersteuert dieser die theoretischen 0% von Kanal 1 und dein Licht wird auf 5% gedimmt. Du müsstest in diesem Falle lediglich noch eine Funktion schreiben, die Kanal 2 durch erneuten Tastendruck / Nach einer gewissen Zeit / oder sonst irgendwann wieder Abschaltet. Aber wie gesagt: Dieser Lösungsansatz funktioniert nur, wenn der genannte Dimmaktor auch virtuelle Kanäle besitzt.

Ich hoffe, ich konnte dir helfen.

Gruß,
Mathea

C1500

Servus Mathea,
danke für deine Hilfe und Beschreibung.

Ja, die Dimmer haben anscheinend virtuelle Kanäle.
Das sind doch die Sw1_V_01 und Sw1_V_02 oder?
define CUL_HM_HM_LC_Dim1PWM_CV_341604 CUL_HM 341604
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 IODev hmusb
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 alias UnterbauLicht
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 autoReadReg 4_reqStatus
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 expert 2_full
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 firmware 2.7
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 model HM-LC-Dim1PWM-CV
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 room CUL_HM
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 serialNr LEQ1294005
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 subType dimmer
attr CUL_HM_HM_LC_Dim1PWM_CV_341604 webCmd getConfig:clear msgEvents
define CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw CUL_HM 34160401
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw model HM-LC-Dim1PWM-CV
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw peerIDs 00000000,
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw room Küche
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw webCmd on:up:off:down:pct 10
define CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_01 CUL_HM 34160402
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_01 model HM-LC-Dim1PWM-CV
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_01 peerIDs 00000000,
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_01 room hidden
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_01 webCmd toggle:on:off:up:down
define CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_02 CUL_HM 34160403
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_02 model HM-LC-Dim1PWM-CV
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_02 peerIDs 00000000,
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_02 room hidden
attr CUL_HM_HM_LC_Dim1PWM_CV_341604_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down

Bisher konnte ich ihnen aber keine Funktion nachweisen.
Ich habe sie über das Webinterface verändert was aber keinen Einfluss hatte.

Meine Taster sind leider doch noch nicht geliefert.
Somit bleibt nur abwarten mit dem peering.

Aber vielleicht hat ja noch jemand eine Idee zu dem Thema oder hat es sogar schon realisiert?
Danke für eure Unterstützung.

Gruß Peer

Mathea

#3
Hallo,

jap, das müssten die virtuellen Kanäle sein. Wahrscheinlich hast du versucht, diese in fhem zu schalten, oder? Damit die Kanäle bei der Ansteuerung des Leuchtmittels eine Auswirkung haben, musst du beim gewünschten Kanal zuerst das Register "logicCombination" auf eine der hier beschriebenen Logik-Verknüpfungen setzen: http://www.elv.de/controller.aspx?cid=758&detail=10&detail2=93. Anschließend sollte sich der Dimmer mit dem virtuellen Kanal so verhalten wie gewünscht.

Ich habe bei mir die Beispielschaltung 1 auf der Seite umgesetzt. Ich habe dabei gemerkt, dass Kanal 3 des Dimmers höherwertig ist als Kanal 2 als Kanal 1. Das ist unter Umständen zu berücksichtigen, da du aufpassen musst welchem Kanal du welche Funktion / Logik-Verknüpfung zuweist.

Folgende Formel ist dabei genannt: Ausgangspegel = ([(0 % o A) o B] o C). Hieraus kann man schon erkennen, dass Wert "C" höherwertig ist, als Kanal B und A. Kanal C sollte hierbei deinem Sw1_V_02, Kanal B Sw1_V_01 und Kanal A dem verbleibenden Channel ohne V_0x bezeichnung entsprechen. Ich habe bei mir die Kanäle zuerst in falscher Reihenfolge angenommen, weswegen meine Schaltung zunächst nicht funktionierte und ich dann alles erneut machen musste.

Damit dein Vorhaben am Ende so funktioniert wie du willst, musst du noch weitere Register des Dimmers mit den korrekten Einstellungen beschreiben. Das fand ich am kompliziertesten und ich weiß auf Anhieb nicht mehr welche Register relevant sind. Dafür musst du vielleicht noch ein wenig im Forum suchen.

Gruß,
Mathea