Hi guys,
casting and type coversion is something that drives me crazy as well. Maybe you can point me to the right direction:
This is the rule that should tell me when the washinmachine is done. Took the biggest part of that from annother post (I guess it was from Thom Dietrich)
val Number Waschmaschine_MODE_OFF = 0
val Number Waschmaschine_MODE_STANDBY = 1
val Number Waschmaschine_MODE_ACTIVE = 2
val Number Waschmaschine_MODE_FINISHED = 3
val Number Waschmaschine_MODE_CREASE_PROTECTION = 4
var Number Waschmaschine_Counter = 0
rule "Waschmaschine Status"
when
Item Steckdose_Waschmaschine_Strom changed
then
if (Steckdose_Waschmaschine_Strom.state < 1) Waschmaschine_OpState.postUpdate(Waschmaschine_MODE_OFF)
else if (Steckdose_Waschmaschine_Strom.state > 100 && Waschmaschine_OpState.state !== (Waschmaschine_MODE_CREASE_PROTECTION) || Steckdose_Waschmaschine_Strom.state > 500){
Waschmaschine_OpState.postUpdate(Waschmaschine_MODE_ACTIVE)
}
if (Waschmaschine_OpState.state == (Waschmaschine_MODE_ACTIVE) && Steckdose_Waschmaschine_Strom.state < 2){
Waschmaschine_Counter = Waschmaschine_Counter + 1
}
if (Steckdose_Waschmaschine_Strom.state > 1 && Steckdose_Waschmaschine_Strom.averageSince(now.minusMinutes(2)) < 2) {
if (Waschmaschine_OpState.state == Waschmaschine_MODE_OFF) Waschmaschine_OpState.postUpdate(Waschmaschine_MODE_STANDBY)
}
if (Waschmaschine_Counter > 6){
if (Waschmaschine_OpState.state == Waschmaschine_MODE_ACTIVE){
Waschmaschine_Counter = 0
Waschmaschine_OpState.postUpdate(Waschmaschine_MODE_CREASE_PROTECTION)
}
}
if (Steckdose_Waschmaschine_Strom.averageSince(now.minusMinutes(30)) < 150){
if (Waschmaschine_OpState.state == (Waschmaschine_MODE_CREASE_PROTECTION)) Waschmaschine_OpState.postUpdate(Waschmaschine_MODE_FINISHED)
}
end
Now when loading into VSC, it throws an error like this
file: 'file:///Volumes/openHAB-share/openhab2-conf/rules/washing_machine_state.rules'
severity: 'Fehler'
message: 'Ambiguous binary operation.
The operator declarations
operator_lessThan(Number, Number) in NumberExtensions and
operator_lessThan(Type, Number) in NumberExtensions
both match.'
at: '25,114'
source: ''
code: 'org.eclipse.xtext.xbase.validation.IssueCodes.ambiguous_feature_call'
The script runs and alternates between states “0” and “2”, but never actually reaches “1”, “3” or “4”.
Guess the main problem is this expression here
Steckdose_Waschmaschine_Strom.averageSince(now.minusMinutes(2)) < 2)
So I have tried “xxx as Decimal”, “(xxx as Decimal).floatValue”, replaced the figure “2” with a variable of type int or type float or type number, nothing worked. What am I doing wrong?
Thanks for any hints