Da ja dieser Thread wie üblich mit irgendwelchen Abschweifungen fortgeführt wurde, hier nun die Ausgliederung des hilfreichen Scriptes meinerseits.
BadenPower hat von sich aus Kontakt mit mir aufgenommen und mich gebeten und autorisiert das folgende Script zu posten.
Nein, überhaupt nicht um mit dem Finger auf irgend wen zu zeigen
Nein, er hat mich auch nicht darum gebeten, hier Propaganda zu betreiben.
Er wollte den Forum Usern helfen und ich füge noch hinzu: trotz allem
Ich denke, das ist ihm hoch anzurechnen. Vielen Dank @ BadenPower
Das alte Script wurde ja "damals" von BadenPower wegen eventueller Inkompatibilitäten mit den neuen RegaHss Versionen entfernt.
Alle die auf Grund der Suche nach Geistervariablen oder ähnlichem hier her gefunden haben.
Dieses hier folgende wurde hinlänglich mit allen Versionen getestet und funktioniert mit den derzeitig bekannten Versionen.
Code: Alles auswählen
!Geistervariablen löschen
! homematic-forum.de by BadenPower
string lUserName = "Admin";
object lUser;
string lOldList = "";
string lEnum = "";
object lEnumObj;
boolean lRemove;
integer lRemoved = 0;
object lSysVars = dom.GetObject(ID_SYSTEM_VARIABLES);
WriteLine("Geistervariablen suchen:");
lUser = (dom.GetObject(ID_USERS)).Get(lUserName);
if (lUser)
{
foreach(lEnum,lUser.UserSharedObjects())
{
if(lOldList <> "")
{
lOldList = lOldList # "\t";
}
lOldList = lOldList # lEnum;
}
foreach(lEnum,lOldList)
{
WriteLine("");
lRemove = false;
lEnumObj = dom.GetObject(lEnum);
if(lEnumObj)
{
if((lSysVars.Get(lEnum)) && ((lEnumObj.Type() == OT_ALARMDP) || (lEnumObj.Type() == OT_VARDP)))
{
WriteLine("Objekt " # lEnumObj.Name() # " verbleibt in der Liste.");
}
else
{
lRemove = true;
WriteLine("Fehler:");
WriteLine("Objekt mit dem Objekttyp " # lEnumObj.TypeName() # " und der ID " # lEnum # " gefunden!");
WriteLine("Objektname: " # lEnumObj.Name());
}
}
else
{
lRemove = true;
WriteLine("Fehler:");
WriteLine("nicht vorhandenes Objekt mit der ID " # lEnum # " gefunden!");
}
if(lRemove)
{
(lUser.UserSharedObjects()).Remove(lEnum);
lRemoved = lRemoved + 1;
WriteLine("Objekt mit der ID " # lEnum # " erfolgreich aus der Liste gelöscht.");
}
}
WriteLine("");
WriteLine("-------------------------");
Write(lRemoved.ToString(0) # " ");
if(lRemoved == 1)
{
Write("Objekt");
}
else
{
Write("Objekte");
}
WriteLine(" gelöscht.");
}
WriteLine("-----Vorgang beendet-----");
Ich bitte darum die Scripte nicht quer im Forum zu kopieren / posten.
Bitte besser einen Link auf diesen Beitrag setzen.
Sollte es in Zukunft nötig sein, an den Scripten Änderungen durchzuführen, kann ich es besser updaten.
BadenPower kann es ja nicht.
Zum Abschluss noch ein paar Links, die das Problem mit den Geistervariablen beschreiben.
>> H I E R << eine Erklärung, wie es dazu kommt und wie man Schläfer provozieren kann.
Alchy