Geistervariablen und deren Schläfer löschen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Geistervariablen und deren Schläfer löschen

Beitrag von alchy » 13.11.2017, 22:59

Der Ursprung dioeses Themas kommt aus >> dem Thread <<.
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-----");
Auch hierfür Vielen Dank @ BadenPower - Respekt :!:

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. :oops:

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
Zuletzt geändert von alchy am 14.11.2017, 08:36, insgesamt 1-mal geändert.
Grund: Erklärungen hinzugefügt

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Geistervariablen und deren Schläfer löschen

Beitrag von dtp » 14.11.2017, 15:15

Auch von meiner Seite vielen Dank an BadenPower für dieses extrem hilfreiche Skript.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
jmaus
Beiträge: 9820
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1857 Mal
Kontaktdaten:

Re: Geistervariablen und deren Schläfer löschen

Beitrag von jmaus » 14.11.2017, 15:34

Problem wird in ReGaHss mit der nächsten kommenden beta24 hoffentlich komplett beseitigt sein.

Siehe: viewtopic.php?f=26&t=39972&p=398458#p398458
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Geistervariablen und deren Schläfer löschen

Beitrag von dtp » 14.11.2017, 22:01

Hi Jens,

das wäre klasse. Danke für die Info.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
jmaus
Beiträge: 9820
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1857 Mal
Kontaktdaten:

Re: Geistervariablen und deren Schläfer löschen

Beitrag von jmaus » 15.11.2017, 17:03

Beta24 von ReGaHss gibt es inzwischen wie immer im OCCU. Diese Version sollte das Problem mit Geister- und Schläfervariablen (wie hier beschrieben) beheben.

Siehe: viewtopic.php?f=26&t=36623&p=398713#p398713
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“