Hi
I’m having a problem with this rule
import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import java.lang.Math// gia to Math::exp
import java.lang.Integer
import java.lang.Double
//PMV rule
rule "calculatePMV"
when
Item Temperature_thermistor changed or
Item RH changed
then
//function calculatePMV(Ta, Tr, Vel, RH, CLO, MET, EW)
//Definition of the function "PMV" by 7 factors
//
// Ta : Air Temperature, [deg.C]
// @Tr@: Mean Radiant Temperature, @ [deg.C]
// @Vel : Relative Air Velocity, [m/s]
// RH : Relative Humidity, [%]
// CLO : Clothing, [clo]
// MET : Metabolic Rate, [met]
// EW : External Work, [met] (=normally around 0)
// PA : Water Vapor Pressure, [Pa]
var Number Vel=0.5//Vel : Relative Air Velocity, [m/s]
var Number CLO=0.35//CLO : Clothing,
var Number MET=1.1// Metabolic Rate, [met]
var Number EW=0// External Work, [met] (=normally around 0)
var Number flag=0 // checking for closing the function
var Number RH_value=(RH.state as DecimalType).intValue
var Number Ta=(Temperature_thermistor.state as DecimalType).intValue
var Number Tr=(Temperature_thermistor.state as DecimalType).intValue
//var Number RH_value=(RH.state as DecimalType)
//var Number Ta=(Temperature_thermistor.state as DecimalType)
//var Number Tr=(Temperature_thermistor.state as DecimalType)
var Number FCL=0
var Number HC
var Number PA=RH_value*10*Math::exp(16.6536 - 4030.183 / (Ta + 235))
logDebug ("kitchen","RH_value="+RH_value +"Ta=" + Ta + ",the one with the exp->PA="+ PA)
//Metabolic rate
var Number M=MET * 58.15 //Metabolic Rate,[W/m2]
var Number W=EW * 58.15
var Number MW=M-W //internal heat production in the human body
//Clothing
var Number ICL =0.155*CLO //thermal insulation of the Clothing, [m2K/W]
if(ICL<0.078){
FCL= 1 + 1.29 * ICL
}
else{
FCL=1.05 + 0.645 * ICL
}
//convention
var Number HCF=12.1 *Math::sqrt(Vel)//convective heat transfer coefficient by forced convection
var Number TaA=Ta+273 //air temperature in kelvin[K]
var Number TrA=Tr + 273
//CALCULATE SURFACE TEMPERATURE OF CLOTHING BY ITERATION
var Number TCLA= TaA + (35.5 - Ta) / (3.5 * (6.45 * ICL + 0.1))
//first guess for surface temperature of clothing
var Number P1= ICL * FCL //calculation term
var Number P2= P1 * 3.96 //calculation term
var Number P3= 1 * 100 //calculation term
var Number P4= P1 * TaA //calculation term
var Number P5=308.7 - 0.028 * MW + P2 * (TrA / 100) ^ 4 //calculation term
var Number XN = TCLA // 100
var Number XF = XN
var Number N = 0 //N: number of iterations
var Number EPS = 0.00015 //stop criteria in iteration
do{
XF = (XF + XN) / 2
//convective heat Transf. coeff. by natural convection
var Number HCN = 2.38 * Math::abs(100 * XF - TaA) ^ 0.25
if( HCF > HCN){
HC = HCF
}
else{
HC = HCN
}
XN = (P5 + P4 * HC - P2 * XF ^ 4) / (100 + P3 * HC)
N = N + 1
if(N > 150){
var Number PMV_new_value= 999999
flag=1
postUpdate(PMV,PMV_new_value)
}
}
while((Math::abs(XN - XF) < EPS) && flag==0)
//while(((XN - XF) < EPS)||flag==0)
if(flag==0){
var Number TCL = 100 * XN - 273 //surface temperature of the clothing
//HEAT LOSS COMPONENTS
//heat loss diff. through skin
var Number Ediff = 3.05 * 0.001 * (5733 - 6.99 * MW - PA)
//heat loss by sweating (comfort)
if(MW>58.15){
var Number Esw = 0.42 * (MW - 58.15)
}
else{
var Number Esw = 0
}
// latent respiration heat loss
var Number LRES = 1.7 * 0.00001 * M * (5867 - PA)
//dry respiration heat loss
var Number DRES = 0.0014 * M * (34 - Ta)
//heat loss by radiation
var Number R = 3.96 * FCL * (XN ^ 4 - (TrA / 100) ^ 4)
//heat loss by convection
var Number C = FCL * HC * (TCL - Ta)
//CALCULATE PMV AND PPD
//Thermal sensation transer coefficient
//var Number TS = 0.303 * Math::exp(java::math::BigDecimal::doubleValue(-0.036 * M) + 0.028)
var Number TS = 0.303 * Math::exp((-0.036 * M) + 0.028)
//Predicted Mean Vote
var Number PMV_new_value1= TS * (MW - Ediff - Esw - LRES - DRES - R - C)
flag=0
postUpdate(PMV,PMV_new_value1)
}// here closes if flag==0
end
It shows me the error Could not invoke method: java.lang.Math.exp(double) on instance: null but I cannot understand why it is null . I tried with logdebug for some values and posts that they are null even those that I declare in the beggining. From yesterday openhab stopped posts in cmd about this function and have to check the openhab log file. Did I change anything by mistake and that’s because it is not shonw in the cmd.
Thanks in advance