[SOLVED] Help with "simple" rule?

Hi guys,

I would really appreciate some guidance regarding this simple rule:

//Systemair_Virkningsgrad//
rule "systemair virkningsgrad prosent"

when 
Time cron "0 0/1 * * * ?"   // every minute

then

	if ( Systemair_Heater_Status.state == OFF) {
        logInfo("Systemair", "Virkningsgrad rule triggered")
		var Number virkningsgrad = ((Systemair_Supply_temp.state as Number) - (Systemair_Outdoor_temp.state as Number) / (Systemair_Extract_temp.state as Number) - (Systemair_Outdoor_temp.state as Number) * 100)
		logInfo("test", "Systemair Tilluft-Temp = " + (Systemair_Supply_temp.state as Number))
		logInfo("test", "Systemair Utendørs-Temp = " + (Systemair_Outdoor_temp.state as Number))
		logInfo("test", "Systemair Avtrekks-Temp = " + (Systemair_Extract_temp.state as Number))
		Systemair_Virkningsgrad.sendCommand(virkningsgrad)
		}
	
end

Log results:

2018-10-10 20:01:15.402 [INFO ] [pse.smarthome.model.script.Systemair] - Virkningsgrad rule triggered

2018-10-10 20:01:15.428 [INFO ] [.eclipse.smarthome.model.script.test] - Systemair Supply-Temp = 21.5

2018-10-10 20:01:15.436 [INFO ] [.eclipse.smarthome.model.script.test] - Systemair Utend�rs-Temp = 13.2

2018-10-10 20:01:15.444 [INFO ] [.eclipse.smarthome.model.script.test] - Systemair Avtrekks-Temp = 24.7

==> /var/log/openhab2/events.log <==

2018-10-10 20:01:15.458 [ome.event.ItemCommandEvent] - Item 'Systemair_Virkningsgrad' received command -1299.03441296

2018-10-10 20:01:15.472 [vent.ItemStateChangedEvent] - Systemair_Virkningsgrad changed from NULL to -1299.03441296

What is wrong with my matemathics in “val Number virkningsgrad”?

Thanks
Christian

Does this work better?

var Number virkningsgrad = (((Systemair_Supply_temp.state as Number) - (Systemair_Outdoor_temp.state as Number)) / ((Systemair_Extract_temp.state as Number) - (Systemair_Outdoor_temp.state as Number))) * 100
1 Like

I think it is calculating as :
(((A - B)/ C) - B) * 100

1 Like

@lfs_alp5
That worked flawlessly! Thank you very much!

Result:

Item 'Systemair_Virkningsgrad' received command 75.9615384615384615384615384615384600

How would I go about rounding the result to 1 decimal only?

Okay, I figured that one out myself :slight_smile:

Thanks guys! :smiley: