Seite 1 von 2

Probleme mit Regeln

Verfasst: 18. Jun 2018 11:13
von yoshi98
Hallo Gemeinde,

ich versuche eine Homematic-Steckdose mit Leistungsmessung als Master/Slave zu verwenden. Dazu nutze ich den Power-Kanal. Dieser soll unterhalb von 20 Watt eine andere Steckdose ausschalten. Dass die Regeln ganz allgemein funktionieren und meine Aktoren geschaltet werden,, habe ich mit einem Timer überprüft. Jetzt komme ich jedoch nicht weiter. Unter den Zeichen "<" und ">" erhalte ich die Anmerkung "cannot be resolved" und es passiert nix.

Bin in openHab und Java ein blutiger Anfänger. Nutze Visual Studio Code als Editor.

Code: Alles auswählen

rule "React on Power (SteckdoseHomematickennung_2_Power) change/update"
when
    Item SteckdoseHomematickennung_2_Power changed
then
    if(SteckdoseHomematickennung_2_Power < 20) {
        sendCommand(Homematickennung2_3_State, OFF)
    } else {
    if(SteckdoseHomematickennung_2_Power > 30)  
        sendCommand(Homematickennung2_3_State, ON) 
    }
end
Kann jemand helfen?

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 11:17
von hr3
Wie ist das Item SteckdoseHomematickennung_2_Power definiert.
probier mal

Code: Alles auswählen

if(SteckdoseHomematickennung_2_Power.state < 20) {

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 11:28
von yoshi98
Danke für die schnelle Antwort.

Das Item "SteckdoseHomematickennung_2_Power" ist der Power-Kanal des Aktors und er ist als eigenes Item definiert. Der State-Kanal ist für das Switchen ON/OFF zuständig. Ich will aber schalten in Abhängigkeit von den Power Werten.

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 11:34
von hr3
Konkret: ist "SteckdoseHomematickennung_2_Power" als Number definiert?

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 11:40
von yoshi98
Das Item ist als Typ Number definiert. Es liefert auch Werte, die ich über das Control der PaperUI sehen kann.

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 11:58
von hr3

Code: Alles auswählen

if ((SteckdoseHomematickennung_2_Power.state as DecimalType) < 20) {

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 12:18
von yoshi98
Visual Studio Code gibt zurück "Cannot cast from NumberItem to DecimalType" - nix geht

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 12:30
von hr3
hr3 hat geschrieben: 18. Jun 2018 11:17 probier mal

Code: Alles auswählen

if(SteckdoseHomematickennung_2_Power.state < 20) {
dann wieder zurück

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 12:49
von yoshi98
Ja, das war's. Wäre ich nie drauf gekommen. Herzlichen Dank @hr3!

Re: Probleme mit Regeln

Verfasst: 18. Jun 2018 13:52
von udo1toni
Nunja, das ist nur die halbe Wahrheit. Korrekt wäre

Code: Alles auswählen

if((SteckdoseHomematickennung_2_Power.state as Number) < 20)
Alternativ ginge auch

Code: Alles auswählen

if((SteckdoseHomematickennung_2_Power.state as DecimalType).intValue < 20)
openHAB führt das Casting stillschweigend selbst durch, das war mal anders. Es ist wichtig, die Sache mit dem Type Casting zu verstehen, denn es gibt immer wieder Stellen, wo plötzlich etwas nicht wie gewünscht funktioniert, nur weil der Typ nicht stimmt.