Statusvariable über Skript automatisch an Ort X erstellen und öschen, wenn Ereignis Y

Hallo Zusammen,

habe einige Homematic Batterie- und Servicemeldungsskripte hier aus dem Forum bereits ausprobiert und versucht auf meine Bedürfnisse anzupassen, aber et klappt mal wieder net;)

Ich möchte in Abhängigkeit davon, ob eine Batterie-, Service- oder Keymatic-Status-nicht-bestimmbar-Meldung erscheint, dass eine Variable unterhalb der dazugehörigen Instanz (und nicht zentral wie die Servicemeldungen in der CCU) erscheint und dieses auch automatisch wieder verschwindet, wenn ich die Batterie etc. gewechselt habe.

Über die doku habe herausgefunden, dass ich mit:

$status = IPS_CreateVariable(0);

eine Variable vom Typ boolean erstellen kann.

Hat aber keinen Namen und ist nirgendwo eingeordnet.

In der doku habe ich auch in einem Beispiel den Befehl:

IPS_SetPosition(47381, 5);

gefunden. Bevor ich versuche, über das Skript der Variable ein Profil etc. zuzuordnen, würde ich gerne zuerst einmal die Variable als solche richtig einordnen. IPS_SetPosition() setzt eine id voraus, aber diese kenne ich ja noch nicht, wenn ich das Skript ausführe. Wie kriege ich jetzt die Kurve? Wie man schnell erkennt, fehlen mir noch die php und logik-skills…

Danke im Voraus

edit*
ich habe gerade die IPS_SetParent gesehen. Vielleicht gehts damit. Ich probier es mal:)
edit*2
geht! - Und Namen habe ich über IPS_SetName auch hinbekommen. - weiter gehts:)

So, jetzt komme ich nicht mehr weiter.

Ich habe den Code auf das Problem reduziert:


<?
$bat1 = IPS_CreateVariable(0);
$bat2 = getvalueboolean(23965 /*[Homematic\MAINTENANCE\LOWBAT]*/);
$batid = IPS_GetVariableIDByName("BATTERIE", 26230 /*[Home\TV Dimmer]*/);
$batex = IPS_ObjectExists($batid);

if ($bat2 == false and $batex==0)//and IPS_VariableExists($bat1)==false)
{
IPS_SetParent($bat1, 26230 /*[Home\TV Dimmer]*/);
IPS_SetName($bat1, "BATTERIE");
IPS_SetPosition($bat1, 10);
SetValueBoolean($bat1, true);
$batid = IPS_GetVariableIDByName("BATTERIE", 26230 /*[Home\TV Dimmer]*/);
echo $batid;
}
else
{
IPS_DeleteVariable($batid);
}
?>

Problem:

Über GetVariableIDByName suche ich zuerst unter einer Instanz nach der ID einer Variable mit Namen BATTERIE und über IPS_ObjectExists lasse ich mir ausgeben, ob diese existiert oder nicht. Hintergrund: Ich möchte nicht, dass eine zweite und dritte Variable mit Namen BATTERIE erstellt wird und will erst checken, ob diese schon vorhanden ist. Auch wenn diese nicht vorhanden ist, existiert ja die in diesem Skript erstellte Variable $batex, so dass ich ich immer „true“ bekomme. Wie kann ich das ändern?