ich war schon einige Male bei euch auf der Seite, um mir ein paar Informationen zu Problemlösungen zu holen und habe mich heute hier angemeldet, da ich bei einem scheinbar einfachen Umwandlungsproblem nicht weiter komme (Nummernwert eines Slider-Item zu PercentType).
Ich möchte von meiner Tradfri-Leuchte nur die Helligkeit ändern können. Da es keinen passenden Channel gibt, muss ich den Color-Channel nutzen.
Vorgehensweise:
1. Änderung eines Sliders erkannt
2. Aktuelle Farbwerte auslesen
3. Helligkeit anhand der Sliderposition neu vorgeben
4. Ergebnis an Tradfri-Leuchte senden.
Items:
Code: Alles auswählen
Number Tradfri_Leuchte_Dimmen (RRD4J_TEMP) //(Dummy-Item für einen Slider in der sitemap)
Color Tradfri_Leuchte_Farbe { channel="tradfri:0210:gwa0c9a0d7b653:Tradfri_Flur_Alarm:color" } //Tradfri-Binding
Code: Alles auswählen
rule "Helligkeit steuern"
when
Item Tradfri_Leuchte_Dimmen received update
then
logInfo("Leuchte", " Helligkeit wird berechnet.")
//Variablen anlegen
var DecimalType hue = new DecimalType(240) // 0-360;
var PercentType sat = new PercentType(100) // 0-100
var PercentType bright = new PercentType(100) // 0-100
hue=(Tradfri_Leuchte_Farbe.state as HSBType).hue
sat=(Tradfri_Leuchte_Farbe.state as HSBType).saturation
--> bright = (Tradfri_Leuchte_Dimmen.state as Number) //FEHLER!! funktioniert, wenn Zeile auskommentiert. Helligkeit geht entsprechend der Deklaration auf 100
Tradfri_Leuchte_Farbe.sendCommand(new HSBType(hue, sat, bright))
end
Code: Alles auswählen
2019-12-18 18:08:26.136 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Helligkeit steuern': An error occurred during the script execution: Could not invoke constructor: org.eclipse.smarthome.core.library.types.HSBType.HSBType(org.eclipse.smarthome.core.library.types.DecimalType,org.eclipse.smarthome.core.library.types.PercentType,org.eclipse.smarthome.core.library.types.PercentType)