Scripttimer Fragen

Hi wie stelle ich es an, das ein Script mehrere Scripttimer hat und die auch alle einen anderen Name zuweisen kann ?



So kann ich einen Scripttimer erstellen, bekomme aber die ID vom Scripttimer nicht :-(

IPS_SetScriptTimer(22532 /*tasmota (Scripte\MQTT)*/,120);

Wenn ich mir im Objektbaum die ID besorgen, kann ich den Scripttimer auch so um benennen:

IPS_SetName(34180 /*ScriptTimer (Ereignis: Täglich alle 60 Sekunde(n)) (Scripte\MQTT	asmota)*/,"Test 1234");


Geht das nicht einfacher ? Bzw. wie bekomme ich die ID vom Scripttimmer im Script raus ?

Wenn Du das unbedingt automatisch machen willst bleibst Dir wohl nichts anderes übrig als eine kleine Funktion zu schreiben.

So in der Art:


 $scriptid = 12345;
 $interval = 10;
 $script_timer_name = "MEINTIMERNAME";
 Set_ScriptTimer($scriptid, $interval, $script_timer_name);
 
 function Set_ScriptTimer($scriptid, $interval, $script_timer_name)
 {
 	$result = IPS_SetScriptTimer($scriptid, $interval);
 	if($result)
	 	{
		 $ids = IPS_GetChildrenIDs($scriptid);
		 foreach($ids as $id)
			{
				$info = IPS_GetObject($id);
				$object_name = $info["ObjectName"];
				if($object_name == "ScriptTimer")
				{
					IPS_SetName($id, $script_timer_name);
					return $id;
				}
			}
		 }
 }

Meiner Meinung nach kann es pro Skript immer nur einen Skripttimer geben. Welcher Timer sollte denn mit IPS_SetScriptTimer gesetzt werden, wenn es mehrere gäbe?

Gruß

Burkhard

Welchen Sinn, würde es ergeben einem Script mehrere Scripttimer zuzuorden.

Ein Script 1 Timer. Dem Script kann man zig Ereignisse zufügen und auch wieder auslesen über Event…TimerEvent.

Das war nur ein Teil der Frage. Die Frage war ja auch wie kann man einen Skripttimer, den man erstellt hat, automatisch umbenennen. Und das geht eben nur, wenn man ein paar Zeilen Code benutzt, da IPS_SetScriptTimer nur true/false zurück gibt, nicht aber die ID. Daher muss man dann die ID des Timers über die übergeordnete Instanz herausbekommen, um den Skript Timer dann umbenennen zu können.

Wozu man mehrere Skript Timer braucht bzw. ob das überhaupt geht ist mir auch ein Rätsel.

Dafür gibt es IPS_GetEventIDByName [emoji1]