Hi,
I created a rule and tested it on my windows computer and it worked. On the RPi3 with OH 2.0 and 2.1 it doesn’t for some reason. Maybe you have a hint for me.
So I have some items:
Switch vTempFixModeEG "Feste Temperatur Modus EG" <switch> (grwe, gVariablen, gStartupOff)
Number vTempFixTemperatureEG "Feste Temperatur EG" <heating> (grwe, gVariablen, gStartupOff)
Switch vTempFixModeOG "Feste Temperatur Modus OG" <switch> (grwe, gVariablen, gStartupOff)
Number vTempFixTemperatureOG "Feste Temperatur OG" <heating> (grwe, gVariablen, gStartupOff)
Switch vTempAway "Away / Urlaub" <vacation> (grwe, gVariablen, gStartupOff)
Switch vKamin "Kamin" <switch> (gEG_Wohnzimmer, gStartupOff)
Now when the vKamin gets ON I want to set vTempFixModeEG and vTempFixModeOG to ON and to set vTempFixTemperatureEG and vTempFixTemperatureOG to 6 (degrees, which can be any decimal). So I want to store the current values, and whenver vKamin gets OFF again the values should get pushed back to the old ones.
So my rule looks like:
var KamincurVarTempFixModeEG
var KamincurVarTempFixTemperatureEG
var KamincurVarTempFixModeOG
var KamincurVarTempFixTemperatureOG
var KamincurVarAwayState
rule "Heizung Kamin an"
when
Item vKamin changed to ON
then
logInfo("RULE", "--> Kamin-Modus aktiviert")
KamincurVarTempFixModeEG = vTempFixModeEG
KamincurVarTempFixModeOG = vTempFixModeOG
KamincurVarTempFixTemperatureEG = vTempFixTemperatureEG.state
KamincurVarTempFixTemperatureOG = vTempFixTemperatureOG.state
KamincurVarAwayState = vTempAway
sendCommand(vTempFixModeEG, ON)
sendCommand(vTempFixModeOG, ON)
sendCommand(vTempFixTemperatureEG, 6)
sendCommand(vTempFixTemperatureOG, 6)
end
rule "Heizung Kamin aus - Werte zurueck"
when
Item vKamin changed from ON to OFF
then
logInfo("RULE", "--> Kamin-Modus ausgeschaltet, Werte zurück")
sendCommand(if(KamincurVarTempFixModeEG != ON && KamincurVarTempFixModeEG != NULL) vTempFixModeEG, OFF)
sendCommand(if(KamincurVarTempFixModeOG != ON && KamincurVarTempFixModeOG != NULL) vTempFixModeOG, OFF)
sendCommand(if(KamincurVarAwayState == ON && KamincurVarAwayState != NULL) vTempAway, ON)
sendCommand(if(KamincurVarTempFixTemperatureEG != NULL) vTempFixTemperatureEG, KamincurVarTempFixTemperatureEG)
sendCommand(if(KamincurVarTempFixTemperatureOG != NULL) vTempFixTemperatureOG, KamincurVarTempFixTemperatureOG)
end
Whenever I turn vKamin ON the
KamincurVarTempFixTemperatureEG = vTempFixTemperatureEG.state
and
KamincurVarTempFixTemperatureOG = vTempFixTemperatureOG.state
seem not to work. In the log I see:
2017-07-04 16:40:25.153 [ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Fix Temperatur': Could not invoke method: org.eclipse.smarthome.model.script.actions.BusEvent.sendCommand(org.eclipse.smarthome.core.items.Item,java.lang.String) on instance: null
And the same in the log when the OFF rule fires and tries to set them back. These commands throw errors:
sendCommand(if(KamincurVarTempFixTemperatureEG != NULL) vTempFixTemperatureEG, KamincurVarTempFixTemperatureEG)
sendCommand(if(KamincurVarTempFixTemperatureOG != NULL) vTempFixTemperatureOG, KamincurVarTempFixTemperatureOG)
2017-07-04 16:41:05.175 [ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Heizung Kamin aus - Werte zurueck': An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.model.script.actions.BusEvent.sendCommand(org.eclipse.smarthome.core.items.Item,java.lang.String) on instance: null
Even the latest snapshot version of the Eclipse designer says there’s someting wrong:
I tried to write the KamincurVarTempFixTemperatureEG and also the vTempFixTemperatureEG.state to the log, but get the same errors… And yes, they are not NULL, I set the temperature in the sitemap and the
sendCommand(vTempFixTemperatureEG, 6)
works.
Does anybody have an idea what I’m doing wrong?
Thanks in advance
Viktor