Hallo zusammen.
Ich hatte bis vor kurzem einen "normalen" HM-Schaltaktor mit Dimmfunktion (HM-LC-Sw1PBU-FM) und 2 HM-RC-2-PBU-FM und konnte die 2 direkt mit dem Schaltaktor verknüpfen, so das ich an 3 Schaltstellen eine Lampe schalten und dimmen konnte.
Leider hat der Schaltaktor (HM-LC-Sw1PBU-FM) den Geist aufgegeben und ich dachte mir, einfach schnell nen neuen Schaltaktor bestellt und fertig.
Jepp, leider knapp daneben gegriffen, da ich einfach mal nen HMIP-BDT gekauft habe und jetzt erst nachgelesen habe, das ich die "normalen" HM-Komponenten nicht mit den IP-Komponenten direkt verknüpfen kann.
Kann mir jetzt jemand dabei helfen, wie ich welche Kanäle(Items) miteinander per Rule verbinden kann, damit ich wieder von allen 3 Stellen die Lampe dimmen und schalten kann?
HM-RC-2-PBU-FM mit HmIP-BDT verbinden
Moderator: seppy
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
HM-RC-2-PBU-FM mit HmIP-BDT verbinden
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
Re: HM-RC-2-PBU-FM mit HmIP-BDT verbinden
Vielleicht habe ich die Frage zu speziell verfasst.
Mal anders gefragt: Wie kann ich auf einen kurzen und einen langen Tastendruck eines Tasters reagieren, also kurz gedrückt soll eine Lampe, die an einem Schaltaktor angeschlossen ist, an- oder ausgeschaltet werden und bei einem langen Tastendruck heller oder dunkler gedimmt werden.
Beide Aktoren haben ein Dimmer-Item angelegt, aber ich weiß nicht, wie man das Rules-mäßig hin bekommt.
Klar, an und aus geht ja über sendcommand 0 oder 100 an das Dimmer-Items des Aktors, wo die Lampe angeschlossen ist, aber wie funktioniert das mit dem Dimmen?
Mal anders gefragt: Wie kann ich auf einen kurzen und einen langen Tastendruck eines Tasters reagieren, also kurz gedrückt soll eine Lampe, die an einem Schaltaktor angeschlossen ist, an- oder ausgeschaltet werden und bei einem langen Tastendruck heller oder dunkler gedimmt werden.
Beide Aktoren haben ein Dimmer-Item angelegt, aber ich weiß nicht, wie man das Rules-mäßig hin bekommt.
Klar, an und aus geht ja über sendcommand 0 oder 100 an das Dimmer-Items des Aktors, wo die Lampe angeschlossen ist, aber wie funktioniert das mit dem Dimmen?
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
- udo1toni
- Beiträge: 14828
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: HM-RC-2-PBU-FM mit HmIP-BDT verbinden
Ich hab ja keinen Schimmer von Homematic...
Was bekommst Du denn exakt für Signale vom Taster? In der Doku von Homematic habe ich auf die Schnelle das hier gefunden:
https://www.openhab.org/addons/bindings ... ic/#button
also stünden vier verschiedene Signale zur Verfügung, SHORT_PRESSED, LONG_PRESSED, LONG_REPEATED und LONG_RELEASED, welche beim Drücken/gedrückt Halten/Loslassen getriggert werden.
Was kannst Du für Kommandos an den Dimmer senden? Funktioniert INCREASE/DECREASE als Kommando? Dann könnte die Rule ungefähr so aussehen
Wenn Du Zwei-Tasten-Bedienung nutzt (also eine Taste für EIN/heller, die andere für AUS/dunkler), brauchst Du zwei Rules, die dafür entsprechend einfacher ausfallen können. Die gezeigte Variante ermöglicht Ein-Tasten-Bedienung.
Den ternären Operator habe ich hier nur zur besseren Lesbarkeit in getrennte Zeilen geschrieben
Wenn der Dimmer die Befehle INCREASE/DECREASE nicht unterstützt, musst Du den Helligkeitswert absolut setzen, das ist auch nicht weiter schlimm:
Eine weitere Möglichkeit bestünde darin, einen Timer zu starten, wenn LONG_PRESSED detektiert wird und diesen zu beenden, wenn LONG_RELEASED detektiert wird. Der Timer kümmert sich dann ums Dimmen und startet sich selbst wieder neu.
Vorteil: Du kannst die Dimmgeschwindigkeit aus openHAB heraus besser kontrollieren
Nachteil: Wenn LONG_RELEASED aus irgendeinem Grund nicht empfangen wird, läuft der Timer endlos, bis Du den Stopp des Timers auf anderem Wege erzwingst (z.B. ein cancel aus einer anderen Rule heraus, oder eben ein Restart von openHAB)
Was bekommst Du denn exakt für Signale vom Taster? In der Doku von Homematic habe ich auf die Schnelle das hier gefunden:
https://www.openhab.org/addons/bindings ... ic/#button
also stünden vier verschiedene Signale zur Verfügung, SHORT_PRESSED, LONG_PRESSED, LONG_REPEATED und LONG_RELEASED, welche beim Drücken/gedrückt Halten/Loslassen getriggert werden.
Was kannst Du für Kommandos an den Dimmer senden? Funktioniert INCREASE/DECREASE als Kommando? Dann könnte die Rule ungefähr so aussehen
Code: Alles auswählen
//globale Variablen vor der ersten Rule definieren!
var Boolean bDimDirection = false // Dimmrichtung merken
rule "Taster 1"
when
Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered
then
switch(receivedEvent) {
case "SHORT_PRESSED" : {
meinDimmer.sendCommand(
if(meinDimmer.getStateAs(OnOffType) != ON)
ON
else
OFF
)
}
case "LONG_PRESSED" : {
meinDimmer.sendCommand(
if(bDimDirection)
INCRESE
else
DECREASE
)
}
case "LONG_REPEATED" : {
if(bDimDirection)
INCRESE
else
DECREASE
)
}
case "LONG_RELEASED" : {
bDimDirection = !bDimDirection
}
default: logWarn("taster","Taster 1: Da ist was faul. Empfangenes Event ({}) ungültig",receivedEvent)
}
end
Den ternären Operator habe ich hier nur zur besseren Lesbarkeit in getrennte Zeilen geschrieben
Wenn der Dimmer die Befehle INCREASE/DECREASE nicht unterstützt, musst Du den Helligkeitswert absolut setzen, das ist auch nicht weiter schlimm:
Code: Alles auswählen
rule "Taster 1"
when
Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered
then
var nBright = meinDimmer.state as Number
if(bDimDirection)
nBright += 5 // in 5-Prozent-Schritten, bei Bedarf anpassen
else
nBright -= 5
)
if(nBright > 100) nBright = 100
if(nBright < 0) nBright = 0
switch(receivedEvent) {
case "SHORT_PRESSED" : {
meinDimmer.sendCommand(if(meinDimmer.getStateAs(OnOffType) != ON) ON else OFF)
}
case "LONG_PRESSED" : {
meinDimmer.sendCommand(nBright)
}
case "LONG_REPEATED" : {
meinDimmer.sendCommand(nBright)
}
case "LONG_RELEASED" : {
bDimDirection = !bDimDirection
}
default: logWarn("taster","Taster 1: Da ist was faul. Empfangenes Event ({}) ungültig",receivedEvent)
}
end
Code: Alles auswählen
//globale Variablen vor der ersten Rule definieren!
var Boolean bDimDirection = false // Dimmrichtung merken
var Timer tDimmer = null
rule "Taster 1"
when
Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered
then
switch(receivedEvent) {
case "SHORT_PRESSED" : {
meinDimmer.sendCommand(if(meinDimmer.getStateAs(OnOffType) != ON) ON else OFF)
}
case "LONG_PRESSED" : {
tDimmer = createTimer(now.plusNanos(10000000),[
var nBright = meinDimmer.state as Number
if(bDimDirection)
nBright += 5 // in 5-Prozent-Schritten, bei Bedarf anpassen
else
nBright -= 5
)
if(nBright > 100) nBright = 100
if(nBright < 0) nBright = 0
meinDimmer.sendCommand(nBright)
tDimmer.reschedule(now.plusNanos(400000000)) // alle 400 Millisekunden ein Durchlauf
])
}
case "LONG_REPEATED" : {
}
case "LONG_RELEASED" : {
tDimmer?.cancel
bDimDirection = !bDimDirection
}
default: logWarn("taster","Taster 1: Da ist was faul. Empfangenes Event ({}) ungültig",receivedEvent)
}
end
Nachteil: Wenn LONG_RELEASED aus irgendeinem Grund nicht empfangen wird, läuft der Timer endlos, bis Du den Stopp des Timers auf anderem Wege erzwingst (z.B. ein cancel aus einer anderen Rule heraus, oder eben ein Restart von openHAB)
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.8, LXC), mit openHABian eingerichtet
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
Re: HM-RC-2-PBU-FM mit HmIP-BDT verbinden
Hallo und mal wieder vielen, vielen Dank für deine ausführliche Antwort.
Ich habe mal alle Channel, die ich zur Verfügung habe, mal angehängt.
Als 1. mal den Schaltaktor, an dem die Lampe direkt angeschlossen ist:
Und hier die Channel, die ich von einem der beiden Taster habe:
Für mich noch einmal zur Erklärung, wenn es auch sehr vereinfacht sein sollte:
Der Schaltaktor (Der mit der Lampe) besteht doch aus 2 Geräten, oder? 1 x der Empfänger mit den Stromanschlüssen für die Lampe und dann ein Taster, ähnlich den beiden anderen, die ich noch an der Flur- und der Terassentür habe?!?
Ich weiß, man mag nicht so gerne Screenshoots, aber da kann man die "Sortierung" der Channel ganz gut erkennen
Ich habe mal alle Channel, die ich zur Verfügung habe, mal angehängt.
Als 1. mal den Schaltaktor, an dem die Lampe direkt angeschlossen ist:
Code: Alles auswählen
Switch EZLichtK1PRESSSHORT "Press short"
Switch EZLichtK1PRESSLONGSTART "Press long start"
Switch EZLichtK1PRESSLONG "Press long"
Switch EZLichtK1PRESSLONGRELEASE "Press long release"
Switch EZLichtK2PRESSSHORT "Press short"
Switch EZLichtK2PRESSLONGSTART "Press long start"
Switch EZLichtK2PRESSLONG "Press long"
Switch EZLichtK2PRESSLONGRELEASE "Press long release"
String EZLichtK3PROCESS "Process"
Number EZLichtK3SECTION "Section"
String EZLichtK3SECTIONSTATUS "Section status"
String EZLichtK3ACTIVITYSTATE "Activity state"
Dimmer EZLichtK3LEVEL "Level"
String EZLichtK3LEVELSTATUS "Level status"
Number EZLichtK4SECTION "Section"
String EZLichtK4SECTIONSTATUS "Section status"
String EZLichtK4ACTIVITYSTATE "Activity state"
Number EZLichtK4RAMPTIME "Ramp time"
Dimmer EZLichtK4LEVEL "Level"
Number EZLichtK4ONTIMEAUTOMATIC "On time automatic"
String EZLichtK4LEVELSTATUS "Level status"
Number EZLichtK4ONTIME "On time"
String EZLichtK4COMBINEDPARAMETER "Combined parameter"
String EZLichtK4PROCESS "Process"
Number EZLichtK5SECTION "Section"
String EZLichtK5SECTIONSTATUS "Section status"
String EZLichtK5ACTIVITYSTATE "Activity state"
Dimmer EZLichtK5LEVEL "Level"
Number EZLichtK5ONTIMEAUTOMATIC "On time automatic"
Number EZLichtK5ONTIME "On time"
Number EZLichtK5RAMPTIME "Ramp time"
String EZLichtK5LEVELSTATUS "Level status"
String EZLichtK5COMBINEDPARAMETER "Combined parameter"
String EZLichtK5PROCESS "Process"
String EZLichtK6SECTIONSTATUS "Section status"
Number EZLichtK6SECTION "Section"
String EZLichtK6ACTIVITYSTATE "Activity state"
String EZLichtK6LEVELSTATUS "Level status"
Number EZLichtK6ONTIME "On time"
Dimmer EZLichtK6LEVEL "Level"
Number EZLichtK6RAMPTIME "Ramp time"
Number EZLichtK6ONTIMEAUTOMATIC "On time automatic"
String EZLichtK6COMBINEDPARAMETER "Combined parameter"
String EZLichtK6PROCESS "Process"
Number EZLichtK7WEEKPROGRAMTARGETCHANNELLOCKS "Week program target channel locks"
Number EZLichtK7WEEKPROGRAMCHANNELLOCKS "Week program channel locks"
String EZLichtK7WEEKPROGRAMTARGETCHANNELLOCK "Week program target channel lock"
String EZLichtK7COMBINEDPARAMETER "Combined parameter"
Code: Alles auswählen
Switch EZLichtFl1PRESSLONG "Press long"
Switch EZLichtFl1PRESSCONT "Press cont"
Switch EZLichtFl1PRESSSHORT "Press short"
Switch EZLichtFl1PRESSLONGRELEASE "Press long release"
Switch EZLichtFl1INSTALLTEST "Install test"
Switch EZLichtFl2INSTALLTEST "Install test"
Switch EZLichtFl2PRESSLONG "Press long"
Switch EZLichtFl2PRESSLONGRELEASE "Press long release"
Switch EZLichtFl2PRESSCONT "Press cont"
Switch EZLichtFl2PRESSSHORT "Press short"
Der Schaltaktor (Der mit der Lampe) besteht doch aus 2 Geräten, oder? 1 x der Empfänger mit den Stromanschlüssen für die Lampe und dann ein Taster, ähnlich den beiden anderen, die ich noch an der Flur- und der Terassentür habe?!?
Ich weiß, man mag nicht so gerne Screenshoots, aber da kann man die "Sortierung" der Channel ganz gut erkennen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
Re: HM-RC-2-PBU-FM mit HmIP-BDT verbinden
Und hier noch die "Sortierung eines Tasters:
Increase oder decrease habe ich aber nicht gesehen.
Okay, der Trigger ist der Button.Increase oder decrease habe ich aber nicht gesehen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
- udo1toni
- Beiträge: 14828
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: HM-RC-2-PBU-FM mit HmIP-BDT verbinden
Der erste "Fehler" ist schon, dass Du überhaupt alle Channel auflistest, bis auf (weil Du diese Channel nicht mit Items verknüpfen kannst) die beiden wichtigsten Channel einfach unterschlägst Erster Screenshot. dritter und neunter Channel Taster 1#BUTTON und 2#BUTTON. Dies sind die Trigger Channel, welche eben nicht mit einem Item verlinkt werden können, sondern direkt in Rules verwendet werden (wie in meinem Beispiel gezeigt)
Falls diese Channel übrigens keine Daten liefern, dann liegt das daran, dass sie mindestens einen "Empfänger" brauchen, sie müssen also in Homematic mit einem (notfalls virtuellen) Punkt verknüpft sein (ist in der Doku in openHAB erwähnt).
Wie wird nun der Dimmer angesteuert... Ich habe ja darauf hingewiesen, dass ich von Homematic erst mal keine Ahnung habe...
Aber Homematic ist ja grundsätzlich in der Lage, über die CCU Geräte "intern" miteinander zu verknüpfen. Dass das mit Deinen Geräten jetzt so nicht geht, weil sie unterschiedliche Protokolle verwenden, ist erst mal unerheblich.
Wie sähe eine Verknüpfung in der Homematic ccu aus (also auf welchen Befehl würdest Du den langen Tastendruck verbinden)?
Eventuell verbirgt sich der Befehl auch hinter den beiden Tastern, die ja Bestandteil des Dimmers sind. Dann wäre ein Befehl EZLichtK1PRESSLONGSTART der Befehl, mit dem Aufdimmen zu beginnen und ein Befehl EZLichtK1PRESSLONGRELEASE, diesen Vorgang zu beenden. Für die 2. Taste wäre es entsprechend die Gegenrichtung. Gewöhnlich wird man die Tasten ja immer in Verbindung mit dem Dimmer verwenden, also zur lokalen Bedienung.
Falls Du überhaupt keine Zentrale nutzt (die Geräte können ja wohl auch untereinander kommunizieren, nur halt nicht, wenn sie unterschiedliche Medien und/oder Protokolle verwenden), schau mal nach RaspberryMatic, damit sollte man eine CCU3 ersetzen können.
Falls das alles nicht funktioniert, steht immer noch die letzte Variante zur Verfügung, openHAB sendet absolute Helligkeitswerte, und zwar zyklisch, beginnend mit dem Langen Drücken auf eine Taste, und dann aufsteigend (bzw. absteigend) bis die Taste wieder losgelassen wird.
Wenn der Dimmvorgang über zwei Taster gesteuert werden soll:
Die eine Rule kümmert sich um den einen Taster, die andere um den anderen Taster.
Bei der einen Rule wird bei kurzem Druck eingeschaltet, bei langem Druck die Helligkeit in 5-Prozent-Stufen erhöht, bei der zweiten Rule ist es genau umgekehrt.
Wenn der Channel nicht funktioniert, welche Events empfängst Du beim Drücken des Tasters (kurz, lang start, loslassen, getrennt für beide Tasten)
Falls diese Channel übrigens keine Daten liefern, dann liegt das daran, dass sie mindestens einen "Empfänger" brauchen, sie müssen also in Homematic mit einem (notfalls virtuellen) Punkt verknüpft sein (ist in der Doku in openHAB erwähnt).
Wie wird nun der Dimmer angesteuert... Ich habe ja darauf hingewiesen, dass ich von Homematic erst mal keine Ahnung habe...
Aber Homematic ist ja grundsätzlich in der Lage, über die CCU Geräte "intern" miteinander zu verknüpfen. Dass das mit Deinen Geräten jetzt so nicht geht, weil sie unterschiedliche Protokolle verwenden, ist erst mal unerheblich.
Wie sähe eine Verknüpfung in der Homematic ccu aus (also auf welchen Befehl würdest Du den langen Tastendruck verbinden)?
Eventuell verbirgt sich der Befehl auch hinter den beiden Tastern, die ja Bestandteil des Dimmers sind. Dann wäre ein Befehl EZLichtK1PRESSLONGSTART der Befehl, mit dem Aufdimmen zu beginnen und ein Befehl EZLichtK1PRESSLONGRELEASE, diesen Vorgang zu beenden. Für die 2. Taste wäre es entsprechend die Gegenrichtung. Gewöhnlich wird man die Tasten ja immer in Verbindung mit dem Dimmer verwenden, also zur lokalen Bedienung.
Falls Du überhaupt keine Zentrale nutzt (die Geräte können ja wohl auch untereinander kommunizieren, nur halt nicht, wenn sie unterschiedliche Medien und/oder Protokolle verwenden), schau mal nach RaspberryMatic, damit sollte man eine CCU3 ersetzen können.
Falls das alles nicht funktioniert, steht immer noch die letzte Variante zur Verfügung, openHAB sendet absolute Helligkeitswerte, und zwar zyklisch, beginnend mit dem Langen Drücken auf eine Taste, und dann aufsteigend (bzw. absteigend) bis die Taste wieder losgelassen wird.
Wenn der Dimmvorgang über zwei Taster gesteuert werden soll:
Code: Alles auswählen
rule "Taster 1"
when
Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered
then
var nBright = meinDimmer.state as Number
nBright += 5 // in 5-Prozent-Schritten, bei Bedarf anpassen
if(nBright > 100) nBright = 100
switch(receivedEvent) {
case "SHORT_PRESSED" : {
meinDimmer.sendCommand(ON)
}
case "LONG_PRESSED" : {
meinDimmer.sendCommand(nBright)
}
case "LONG_REPEATED" : {
meinDimmer.sendCommand(nBright)
}
case "LONG_RELEASED" : {
}
default: logWarn("taster","Taster 1: Da ist was faul. Empfangenes Event ({}) ungültig",receivedEvent)
}
end
rule "Taster 2"
when
Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:2#BUTTON' triggered
then
var nBright = meinDimmer.state as Number
nBright -= 5
if(nBright < 0) nBright = 0
switch(receivedEvent) {
case "SHORT_PRESSED" : {
meinDimmer.sendCommand(OFF)
}
case "LONG_PRESSED" : {
meinDimmer.sendCommand(nBright)
}
case "LONG_REPEATED" : {
meinDimmer.sendCommand(nBright)
}
case "LONG_RELEASED" : {
}
default: logWarn("taster","Taster 1: Da ist was faul. Empfangenes Event ({}) ungültig",receivedEvent)
}
end
Bei der einen Rule wird bei kurzem Druck eingeschaltet, bei langem Druck die Helligkeit in 5-Prozent-Stufen erhöht, bei der zweiten Rule ist es genau umgekehrt.
Wenn der Channel nicht funktioniert, welche Events empfängst Du beim Drücken des Tasters (kurz, lang start, loslassen, getrennt für beide Tasten)
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.8, LXC), mit openHABian eingerichtet