ich bin relativ neu im Thema openHAB und versuche mich in das Thema Regeln schreiben einzuarbeiten.
Unter anderem nutze ich hier auch das Phillips Hue System. Nun habe ich in einem Raum mehre Hue-Lampen. Diese als Einzellampen, sowie auch
als Gruppe und einen Hue Dimmerschalter. Nun stehe ich vor dem Problem, dass ich natürlich alle Lampen separat mit einem Einzigen Dimmerschalter
schalten will.
Jetzt ist die Idee die folgende:
Mit dem 4 Taster des Dimmerschalters, wähle ich die Lampe (Einzellampe oder Gruppe) aus, die ich später bedienen will. Die aktive Lampe blinkt einmalig kurz auf. Damit ich sehe welche Lampe gerade aktiv ist. Über kurzen Tastendruck des 4. Tasters kann ich die gerade aktive Lampe nochmals blinken lassen ohne eine neue Lampe auszuwählen (um später nochmal zu sehen welche Lampe aktiv ist).
Mit Taster 1 des Dimmerschalters schalte ich die aktive Lampe ein/aus. Mit den Dimmertasten dimme ich die aktive Lampe.
Das ganze funktioniert auch. Ich frage mich nur ob ich meine Regeln effektiver gestallten könnte, der Übersichtlichkeit wegen. Ich bin wie gesagt relativ neu im Thema, habe aber Erfahrungen im Bereich Automation an sich. Vielleicht gibts hier ja irgendwelche Regel Gurus, die Tips geben könnten, wie man Sachen effektiver machen könnte.
Hier mal mein Regelset welches ich derzeitig verwende. Nicht wundern, case 2 wird hier noch nicht verwendet.
var Number Select
rule "Mit langem Tastendruck 4. Taste vom Dimmerswitch Lampe auswählen"
when
Channel "hue
then
Select = Select + 1
if (Select < 0) Select = 0
if (Select > 1) Select = 0
LoungeLampeSelect.sendCommand(Select)
end
rule "Wenn Lounge Dimmer Select verändert wurde aktive Lampe aufblinken lassen"
when
Item LoungeLampeSelect received command
then
switch(receivedCommand) {
case 0 : lLoungeWand_Alert.sendCommand("SELECT")
case 1 : lLounge2_Alert.sendCommand("SELECT")
case 2 : lBueroEG3_Alert.sendCommand("SELECT")
}
end
rule "Mit kurzen Tastendruck Taste 4 vom Dimmerswitch aktuell aktive Lampe aufblinken Lassen"
when
Channel "hue
then
if (LoungeLampeSelect.state == 0) {
lLoungeWand_Alert.sendCommand("SELECT")
} else if (LoungeLampeSelect.state == 1) {
lLounge2_Alert.sendCommand("SELECT")
} else if (LoungeLampeSelect.state == 2) {
lLoungeWand_Alert.sendCommand("SELECT")
lLounge2_Alert.sendCommand("SELECT")
}
end
rule "Mit kurzen Tastendruck Taste 1 vom Dimmerswitch aktuell aktive Lampe anschalten/ausschalten"
when
Channel "hue
then
if ((LoungeLampeSelect.state == 0) && (lLoungeWand_Toggle.state == OFF)) {
lLoungeWand_Toggle.sendCommand(ON)}
else if ((LoungeLampeSelect.state == 0) && (lLoungeWand_Toggle.state == ON)) {
lLoungeWand_Toggle.sendCommand(OFF)}
else if ((LoungeLampeSelect.state == 1) && (gsLoungeDecke.state == OFF)) {
gsLoungeDecke.sendCommand(ON)}
else if ((LoungeLampeSelect.state == 1) && (gsLoungeDecke.state == ON)) {
gsLoungeDecke.sendCommand(OFF)}
else if ((LoungeLampeSelect.state == 2) && (lBueroEG3_Toggle.state == OFF)) {
lBueroEG3_Toggle.sendCommand(ON)}
else if ((LoungeLampeSelect.state == 2) && (lBueroEG3_Toggle.state == ON)) {
lBueroEG3_Toggle.sendCommand(OFF)}
end
rule "Dimmen positiv mit kurzem Tastendruck Taste 2 Dimmerswitch"
when
Channel "hue
then
var Number percent = 0
if (LoungeLampeSelect.state == 0) {
if (lLoungeWand_Dimmer.state instanceof DecimalType) percent = lLoungeWand_Dimmer.state as DecimalType
percent = percent + 5
if (percent < 0) percent = 0
if (percent > 100) percent = 100
sendCommand(lLoungeWand_Dimmer, percent) } //Wandlampe Ende
else if (LoungeLampeSelect.state == 1) {
if (gdLoungeDecke.state instanceof DecimalType) percent = gdLoungeDecke.state as DecimalType
percent = percent + 5
if (percent < 0) percent = 0
if (percent > 100) percent = 100
sendCommand(gdLoungeDecke, percent) } //Deckenlampe Ende
end
rule "Dimmen negativ mit kurzem Tastendruck Taste 3 vom Dimmerswitch"
when
Channel "hue
then
var Number percent = 0
if (LoungeLampeSelect.state == 0) {
if (lLoungeWand_Dimmer.state instanceof DecimalType) percent = lLoungeWand_Dimmer.state as DecimalType
percent = percent - 5
if (percent < 0) percent = 0
if (percent > 100) percent = 100
sendCommand(lLoungeWand_Dimmer, percent) } //Wandlampe Ende
else if (LoungeLampeSelect.state == 1) {
if (gdLoungeDecke.state instanceof DecimalType) percent = gdLoungeDecke.state as DecimalType
percent = percent - 5
if (percent < 0) percent = 0
if (percent > 100) percent = 100
sendCommand(gdLoungeDecke, percent) } //Deckenlampe Ende
end
Beste Grüße