Länge eines Impulses

Hallo zusammen,

vor vielen Jahren gab es hier mal die Diskussion zum Thema „Länge eines Tastendrucks ermitteln“

https://www.symcon.de/forum/threads/3859-L%C3%A4nge-eines-Impulses-ermitteln

Nach einer Migration wurden einige der Variablen ersetzt, jedenfalls funktioniert der folgende Code heute nicht mehr:

//Trigger: Boolean Variable!

//Hier die Maximale Zeit angeben, die der Taster gedrückt werden könnte
$maxpushtime=10; //10 Sekunden

function myCode($pushlen)
{
//Hier kommt euer Code rein:
  global $IPS_SELF;
  IPS_LogMessage($IPS_SELF, "Push Length: ".$pushlen); //KernelLog -> Custom
//Hier ist euer Code zuende
}

//-- Ab hier muss nichts verändert werden!
//Nur Variablen Trigger erlaubt
if($IPS_SENDER != "Variable") { return; }

//Hilfsvariable erstellen, falls nicht vorhanden
$pushtimevar=$IPS_VARIABLE."_PressTime"; //Integer
if(!IPS_VariableExists($pushtimevar)) {
 IPS_CreateVariable($pushtimevar, "Integer");
}

//Gleichzeitige Scriptausführung verhindern
if (IPS_SemaphoreEnter($IPS_SELF, $maxpushtime * 1000))
{
 if($IPS_VALUE) //Taster gedrückt?
 {
  SetValueInteger($pushtimevar, time());
 } else { //Auswerten wie lange gedrückt wurde
  myCode(time()-GetValueInteger($pushtimevar));
 }
 IPS_SemaphoreLeave($IPS_SELF);
} 
Bitteschön 

Ich habe daraufhin versucht, die alten Variablen zu ersetzen:

//Trigger: Boolean Variable!

//Hier die Maximale Zeit angeben, die der Taster gedrückt werden könnte
$maxpushtime=10; //10 Sekunden

function myCode($pushlen)
{
//Hier kommt euer Code rein:
  Global ${$_IPS['SELF']};
  IPS_LogMessage($_IPS['SELF'], "Push Length: ".$pushlen); //KernelLog -> Custom
//Hier ist euer Code zuende
}

//-- Ab hier muss nichts verändert werden!
//Nur Variablen Trigger erlaubt
if($_IPS['SENDER'] != "Variable") { return; }

//Hilfsvariable erstellen, falls nicht vorhanden
$pushtimevar=$_IPS['VARIABLE']."_PressTime"; //Integer
if(!IPS_VariableExists($pushtimevar)) {
 $pushtimevar = IPS_CreateVariable(1);
}
if(!$_IPS['VALUE']) {
 IPS_Sleep(100);
} 
//Gleichzeitige Scriptausführung verhindern
if (IPS_SemaphoreEnter($_IPS['SELF'], $maxpushtime * 1000))
{
 if($_IPS['VALUE']) //Taster gedrückt?
 {
  SetValueInteger($pushtimevar, time());
 } else { //Auswerten wie lange gedrückt wurde
  myCode(time()-GetValueInteger($pushtimevar));
 }
 IPS_SemaphoreLeave($_IPS['SELF']);
} 

Leider wird mir als pushlength nur die Unixzeit angezeigt, nicht aber die Dauer des Tastendrucks. Als Warnung erhalten ich außerdem noch

10/13/2019, 05:55:24 PM | ScriptEngine | Result for Event 12379
<br />
<b>Warning</b>: Variabletyp stimmt nicht überein in <b>/-</b> on line <b>33</b><br />

Sieht jemand, welchen Fehler ich mache? Über eine Hilfe würde ich mich sehr freuen.

Grüße
Matthias