ich habe vor kurzem meine beiden Hue Bridges gegen den Phoscon Conbee II getauscht. Zur lokalen Steuerung des Lichts nutze ich FoH Senic Enocean Taster. Die Tasterbelegung hätte ich gerne vollumfänglich über die Phoscon App gelöst. Mein Plan für die Tasterbelegung ist folgende:
Kurzer Druck oben: Abwechselnd An/Aus
Langer Druck oben: Dimmen - Helligkeit erhöhen
Kurzer Druck unten: Szenen durchschalten
Langer Druck unten: Dimmen - Helligkeit verringern
Leider lässt sich in der Phoscon App Dimmen nicht separat auf "langen Tastendruck" zuweisen (nur in Kombination mit kurzem Tastendruck für An/Aus). Nun wäre meine Überlegung, Dimmen via Openhab Rule und Script zu steuern, um obige Wunsch-Tasterbelegung realisieren zu können. Folgende Überlegung:
Wenn Channel "Schaltfläche" von Thing "FoH Taster" den Wert "3003" für langen Tastendruck empfängt, dann erhöhe solange die Helligkeit (Brightness (Dimmer)) mit INCREASE, bis Helligkeit =100 oder bis Channel "Letzte Aktualisierung" von Thing "FoH Taster" upgedatet wurde mit neuem Zeitstempel (entspricht dem Zeitpunkt des Loslassens der Tasterwippe).
In vielen hier nachzulesenden Rules zum Thema Dimmen wurde das mit Timern gelöst. Benötige ich denn auch einen Timer, wenn ich die Helligkeit in Schritten erhöhen möchte, bis der Channel "Letzte Aktualisierung" upgedatet wird? Könnte man das mit einer Repeat Until - Do Schleife lösen?
Meine Rule mit Blockly Skript sieht aktuell folgendermaßen aus:
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Arbeitszimmer__Arbeitszimmer_PhilipsFoH_Schaltflache
state: "3003"
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "4"
configuration:
blockSource: <xml xmlns="https://developers.google.com/blockly/xml"><block
type="controls_whileUntil" id="k6.Uvk~L(A=:)kt0AIZL" x="219"
y="201"><field name="MODE">UNTIL</field><value name="BOOL"><block
type="oh_item" id="R^8YrA=fX%sus^YMBm[,"><field
name="itemName">Arbeitszimmer__Arbeitszimmer_PhilipsFoH_Letzte_Aktualisierung</field></block></value><statement
name="DO"><block type="controls_if" id="g,(nN{Uv?$`q4Q7NkUTB"><value
name="IF0"><block type="logic_compare" id="h_3M3Ckp/%f*9j8ivu;B"><field
name="OP">LT</field><value name="A"><block type="oh_item"
id="Qs8|*W$u=GQFiXTg+[Y4"><field
name="itemName">Arbeitszimmer_Leuchte_1_WA_E27_Helligkeit</field></block></value><value
name="B"><block type="math_number" id="UGs`%w1,A.|g-2k8WhRq"><field
name="NUM">100</field></block></value></block></value><statement
name="DO0"><block type="oh_event" id="Wit9yWA6t7mt9V*,!EvO"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id="^kOm+(peM9q?qyi=`d{["><field
name="TEXT">INCREASE</field></shadow></value><value
name="itemName"><shadow type="oh_item" id="DBJ)jG7hE?{x`cL,Yo.0"><field
name="itemName">Arbeitszimmer_Leuchte_1_WA_E27_Helligkeit</field></shadow></value></block></statement></block></statement></block></xml>
type: application/vnd.openhab.dsl.rule
script: >
while (!'Arbeitszimmer__Arbeitszimmer_PhilipsFoH_Letzte_Aktualisierung')
{
if ('Arbeitszimmer_Leuchte_1_WA_E27_Helligkeit' < 100) {
events.sendCommand('Arbeitszimmer_Leuchte_1_WA_E27_Helligkeit', 'INCREASE');
}
}
type: script.ScriptAction
- Welchen Command muss ich in der Zeile
Code: Alles auswählen
while (!'Arbeitszimmer__Arbeitszimmer_PhilipsFoH_Letzte_Aktualisierung')
- Kann das Skript so funktionieren oder habe ich noch weitere grundlegende Fehler in der Überlegung/im Skript?
Danke Euch!
Grüße
neuling10