nach Update auf OH4 geht eine Rule nicht mehr
Verfasst: 18. Jul 2023 22:27
Hallo zusammen,
in meinen ersten Wochen mit Openhab habe ich, mit Hilfe von Udo eine Taupunktberechnung für unseren Wäschekeller entwickelt.
Seit dieser Zeit tat das Script klaglos seinen Dienst.
Jetzt ist mir gestern die SSD von meinem System verreckt und ich musste neu aufsetzen.
Zum Glück hatte ich ein relativ aktuelles Backup. Trotzdem ist das eine Menge Arbeit.
Jedenfalls hat er mit direkt OH4 installiert und das Taupunkt-Script funktioniert nicht mehr.
Ich vermute, dass er jetzt Probleme mit der Funktion, die die Berechnung an sich macht.
Alleine steige ich da nicht durch. Vielleicht bekomme ich das mit Eurer Hilfe gelöst.
Das könnte ja eventuell auch für andere interessant sein.
Hier das Script:
Die Fehlermeldung hierzu sieht so aus:
Ich freue mich mal wieder was zu lernen 
in meinen ersten Wochen mit Openhab habe ich, mit Hilfe von Udo eine Taupunktberechnung für unseren Wäschekeller entwickelt.
Seit dieser Zeit tat das Script klaglos seinen Dienst.
Jetzt ist mir gestern die SSD von meinem System verreckt und ich musste neu aufsetzen.
Zum Glück hatte ich ein relativ aktuelles Backup. Trotzdem ist das eine Menge Arbeit.
Jedenfalls hat er mit direkt OH4 installiert und das Taupunkt-Script funktioniert nicht mehr.
Ich vermute, dass er jetzt Probleme mit der Funktion, die die Berechnung an sich macht.
Alleine steige ich da nicht durch. Vielleicht bekomme ich das mit Eurer Hilfe gelöst.
Das könnte ja eventuell auch für andere interessant sein.
Hier das Script:
Code: Alles auswählen
val org.eclipse.xtext.xbase.lib.Functions$Function2<Double, Double, Double> getDewPoint = [
Double Temperature,
Double Humidity
|
var Double a
var Double b
var Double SDD
var Double DD
var Double v
var Double t = Temperature
var Double h = Humidity
if (t >= 0.0){ // T >= 0 °C
a = 7.5
b = 237.3
} else { // T < 0 °C über Wasser
a = 7.6
b = 240.7
}
SDD=(6.1078 * Math::pow(10.0, ((a*t)/(b+t))))
DD = (h/100.0*SDD)
v = Math::log10((DD/6.107))
return ((b*v)/(a-v))
]
rule "Klima - Taupunktberechnung Außen" // calculation of outdoor dewpoint
when
Item Out_THSensor_Temp received update or
Item Out_THSensor_Hum received update or
System started
then
if (Out_THSensor_Dew.state == NULL) {Out_THSensor_Dew.postUpdate(0)}
if ((Out_THSensor_Temp.state != NULL) && (Out_THSensor_Hum.state != NULL))
{
var t = (Out_THSensor_Temp.state as QuantityType<Number>).doubleValue
var h = (Out_THSensor_Hum.state as QuantityType<Number>).doubleValue
// OutsideThermometerCombined.sendCommand(String::format("%.1f°C / %.0f%%", t, h))
Out_THSensor_Dew.postUpdate(getDewPoint.apply(t, h))
}
end
rule "Klima - Taupunktberechnung Innen" // calculation of basement dewpoint
when
Item In_THSensor_Temp received update or
Item In_THSensor_Hum received update or
System started
then
if (In_THSensor_Dew.state == NULL) {In_THSensor_Dew.postUpdate(0)}
if ((In_THSensor_Temp.state != NULL) && (In_THSensor_Hum.state != NULL))
{
var t = (In_THSensor_Temp.state as QuantityType<Number>).doubleValue
var h = (In_THSensor_Hum.state as QuantityType<Number>).doubleValue
// OutsideThermometerCombined.sendCommand(String::format("%.1f°C / %.0f%%", t, h))
In_THSensor_Dew.postUpdate(getDewPoint.apply(t, h))
}
end
rule "Klima - Taupunktdifferenz berechnen" // for statistics: dewpoint difference
when
Item In_THSensor_Dew changed or
Item Out_THSensor_Dew changed
then
var dewpoint_keller = (In_THSensor_Dew.state as Number).doubleValue
// var dewpoint_keller = In_THSensor_Dew.state
var dewpoint_aussen = (Out_THSensor_Dew.state as Number).doubleValue
// var dewpoint_aussen = Out_THSensor_Dew.state
Taupunkt_Differenz.postUpdate(dewpoint_keller - dewpoint_aussen)
end
Code: Alles auswählen
2023-07-18 14:05:40.899 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Klima_Taupunktberechnung-1' failed: cannot invoke method public abstract java.lang.Object org.eclipse.xtext.xbase.lib.Functions$Function2.apply(java.lang.Object,java.lang.Object) on null in Klima_Taupunktberechnung
2023-07-18 14:05:40.899 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Klima_Taupunktberechnung-2' failed: cannot invoke method public abstract java.lang.Object org.eclipse.xtext.xbase.lib.Functions$Function2.apply(java.lang.Object,java.lang.Object) on null in Klima_Taupunktberechnung
