How to calculate DateTime

I am tried to make a rule how turn off my speakers when if my phone don’t show up since 20 minutes.

So i wrote folwing code:

import org.openhab.core.library.types
import org.openhab.core.persistence
import org.openhab.model.script.actions
import java.lang.Math.*
import org.joda.time.*    

rule "Iphone geht Offline"
    when
    	Time cron "0/10 * * * * ?"
    then
    logWarn("loggerName", "___")
    logWarn("IphineZeit", IphoneChris_ZuletztGesehen_1.state.toString)
    var Number time = now
    var Number diff = time - IphoneChris_ZuletztGesehen_1.state
    if( diff > 20 ) {
        sendCommand(bose_kueche_power, OFF)
        Thread::sleep(1200)
        sendCommand(bose_hurra_power, OFF)
        Thread::sleep(1200)
    }
    end

i am getting this exception:

21:18:00.172 [ERROR] [untime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Iphone geht Offline': An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.model.script.lib.NumberExtensions.operator_minus(java.lang.Number,java.lang.Number) on instance: null

Found a soultion, but i think there should be a nicer one:

rule "Iphone geht Offline"
when
	Time cron "0/10 * * * * ?"
then
    logWarn("loggerName", "___")
    logWarn("IphineZeit", IphoneChris_ZuletztGesehen_1.state.toString)
    
    var DateTime iphoneoff	= new DateTime((IphoneChris_ZuletztGesehen_1.state as DateTimeType).calendar.timeInMillis)
    
    var Integer hour = iphoneoff.getHourOfDay
    var Integer mins = iphoneoff.getMinuteOfDay
    var Number kpl = hour + mins
    var Number current = now.getHourOfDay + now. getMinuteOfDay
    var Number diff = current - kpl
    logWarn("kpl", kpl.toString)
    logWarn("current", current.toString)
    logWarn("diff", diff.toString)
    if( diff > 20 ) {
        sendCommand(bose_kueche_power, OFF)
        Thread::sleep(1200)
        sendCommand(bose_hurra_power, OFF)
        Thread::sleep(1200)
    }
end

Have you seen this?