Rule - Determine Differences in state of temperatures

How would I use a rule to determine a range difference between a current state of a temperature monitor and and desired cool state of my Ecobee?

For example:
I have a timer firing every x seconds. In that timer I want to:
Compare the TempSensor.state and the EcobeeDesiredCool.state and then if TempSensor.state is not at least 8 degrees cooler than EcobeeDesciredCool.state …{do something here}

Something like

rule "TestTemperature"

when 
  Item TempSensor changed
then
  logInfo ("TestTemperature", "TempSensor.state ={}", TempSensor.state)
  if ((TempSensor.state as DecimalType)+8>=(EcobeeDesciredCool.state as DecimalType) {
    logInfo ("TestTemperature", "TestTemperature is not at least 8 degrees cooler than EcobeeDesciredCool.state")
  }
end

No timer needed in here, rule triggers whenever your TestTemperature changes.

I’m completely lost; i’ve tried many combinations and can’t get this to run:
I’ve stripped it down to what should happen and cut out extraneous paths that shouldn’t run:

Essentially this conditional should fire: if ((Laundry_Temperature.state as DecimalType) < (testBlowTemp)) {
as laundry temp is 56 and the testblowtemp is 70
That email never comes
All i see in the log is:
2017-05-19 11:10:34.043 [ERROR] [.script.engine.ScriptExecutionThread] - Rule ‘Test Rule’: org.eclipse.smarthome.core.library.types.DecimalType

I’ve tried removing state, adding state to each variable, removing as decimaltype and adding as decimal type to each variable/item…nothing works…it never sends the email even though the item state and variable are set with the proper values to fire it.

if (EcoBeeEquipmentStatus.state == ‘compCool1,fan’) {

	if (weather_forecasts0_temperature.state <= 70) {
		(testBlowTemp = 65)
	}
	if ((weather_forecasts0_temperature.state > 70) && (weather_forecasts0_temperature.state <= 80)) 
		(testBlowTemp = 65)
	}				
	if ((weather_forecasts0_temperature.state > 80) && (weather_forecasts0_temperature.state <= 90)) {
		(testBlowTemp = 70)
	}				
	if ((weather_forecasts0_temperature.state > 90) && (weather_forecasts0_temperature.state <= 100)) {
		(testBlowTemp = 70)
	}				
	if (weather_forecasts0_temperature.state > 100) {
		(testBlowTemp = 80)
	}		

if ((Laundry_Temperature.state as DecimalType) < (testBlowTemp)) {
sendMail("xxx@gmail.com", “test”, “test”)
}
}

Put some logInfo in so you can see the path followed and the values

   logInfo("test", "we got this far somehow")
   logInfo("test", "next we will test " + EcoBeeEquipmentStatus.state)
   if (EcoBeeEquipmentStatus.state == 'compCool1,fan') {
      logInfo("test", "whatever that was about we got past it")
         if (weather_forecasts0_temperature.state <= 70) {
                logInfo("test", "maybe testBlow was declared earlier")
                testBlowTemp = 65
                logInfo("test", "that doesnt need brackets")
etc etc.