Löschen von Systemvariablen mit Präfix

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

Moderator: Co-Administratoren

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

Löschen von Systemvariablen mit Präfix

Beitrag von alchy » 04.06.2018, 09:25

1. Vorgeschichte

Im >> THREAD << wurde die Frage gestellt, wie man mehrere Systemvariablen mit einem Präfix per Script löschen kann.



!!!! ACHTUNG jeder der hiermit rumspielt sollte alles genau gelesen und verstanden und MINIMUM vorher ein Backup machen !!!!

Das folgende Script löscht die Systemvariablen nach der Vorgabe des TE

2. Testrun zur Sicherheit

Code: Alles auswählen

string sicher = "nein"; ! 
ist für einen Testlauf. Solange da nicht

Code: Alles auswählen

string sicher = "ja";  
steht, erfolgt nur eine "Was wäre wenn" Ausgabe auf dem Bildschirm.
Also schön auf nein lassen, das Script ausführen und erst wenn ihr absolut sicher seid, dort ein ja eintragen.


3. Auswahl der zu behandelnden Systemvariablen

in

Code: Alles auswählen

string startswith = "Telegram-Text"; 
wird dabei selektiert, welche Variablen das sein sollen.
Steht da

Code: Alles auswählen

string startswith = ""; 
würden ALLE Systemvariablen gelöscht !

Steht da

Code: Alles auswählen

string startswith = "A";
würden alle Systemvariablen gelöscht, wenn deren Namen mit A beginnen.

Alles klar???




4. Hier nun das Script - Bitte nur ausführen, wenn ihr ein Backup gemacht habt und euch sicher seid, die Anleitung verstanden zu haben:

Code: Alles auswählen

! Systemvariablen auflisten und bestimmte löschen
! v0.1 (c) by Alchy 
string startswith = "Telegram-Text"; !Startbuchstaben des Variablennamens ACHTUNG Anleitung lesen
string sicher = "nein"; ! auf ja setzen, wenn ihr wirklich löschen wollt, bei nein erfolgt nur eine Bildschirmausgabe zum Testen
! +++++++++++ Finger weg ++++++++++++
string svId; string slist = "";integer counter = 0;
foreach(svId, dom.GetObject(ID_SYSTEM_VARIABLES).EnumIDs()) {
object obj = dom.GetObject(svId);
if (obj) {
boolean collect1 = obj.Name().StartsWith(startswith);
if(collect1){ 
counter = counter +1;
Write("ISE_ID: " #obj.ID() #" Name: " #obj.Name() # " - ");
if (sicher =="ja") {dom.DeleteObject(obj.ID());WriteLine(" wurde entfernt");}else{WriteLine(" würde entfernt werden");}
}
}}
WriteLine(counter #" von "#dom.GetObject(ID_SYSTEM_VARIABLES).Count() #" Systemvariablen betroffen");
Ausgeführt wird das Script in der KLickibunti unter >> Script testen <<

Bild

oder im Script Executer (siehe Signatur) usw.

5. Nach dem Löschen von Systemvariablen von der KLickibunti regulär abmelden, damit die Löschaktion auch in der regadom fest gespeichert wird.


Alchy

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.

Antworten

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