Worum ging es hier eigentlich?
Gute Nacht, das ist mir jetzt zu blöd ....
Herausfinden welche Systemvariable wo überall verwendet wird (in Scripten)
Moderator: Co-Administratoren
-
- Beiträge: 9684
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1627 Mal
Re: Herausfinden welche Systemvariable wo überall verwendet wird (in Scripten)
Das hat mich dazu angespornt mich mal näher damit zu beschäftigen. DPEnumUsagePrograms macht allerdings nichts anderes als die WebUI-Funktion. Ich finde damit nur Programme in denen die SV referenziert ist. Das aber ist in Skripten ja gerade nicht der Fall. Da ist die SV ja nur "dummer" Text. Oder irre ich mich da? Nun, stumpf die Rega durchsuchen kann es ja auch nicht ein. Aber diese ist ja auch in Objekten greifbar...alchy hat geschrieben: ↑21.03.2021, 19:24Da Scripte in der regadom abgelegt werden, könnte man z.B. auch dort anfangen zu suchen
viewtopic.php?f=26&t=48753&p=488747#p488747
Die Verwendung von Systemvariablen in Programmen kann man natürlich einfacher auflisten lassen
z.B. unter Verwendung der Methode .DPEnumUsagePrograms() dafür ist's ja da.
Vielleicht geht es auch eleganter, aber mit diesem Skript kann man die Rega nach Skripten mit einem bestimmten Suchbegriff durchsuchen und bekommt alle gefundenen Programme aufgelistet:
Code: Alles auswählen
! Programme mit Suchbegriff in Skripten auflisten MN 23032021
string Suchbegriff = "Suchbegriff";
! === hier nichts mehr ändern ===
string ProgID;
object ProgrammObjekt;
string SingleDest;
object SingleDestObjekt;
string SkriptInhalt;
integer CountFund = 0;
WriteLine("=== START ===");
foreach(SingleDest,dom.GetObject(ID_SDESTINATIONS).EnumIDs() ){
SingleDestObjekt = dom.GetObject(SingleDest);
if (SingleDestObjekt) {
if ((SingleDestObjekt.DestinationParam() == ivtString)) {
! diese SingleDestination ist ein Skript
SkriptInhalt = SingleDestObjekt.DestinationValue();
if ( SkriptInhalt.Contains(Suchbegriff) )
{
! gefunden
ProgID = SingleDestObjekt.DestinationProgram();
ProgrammObjekt = dom.GetObject(ProgID);
CountFund = CountFund + 1;
WriteLine(ProgrammObjekt.Name()#" - Programm-ID: "#ProgID#" - SingleDest-ID: "#SingleDest);
}
}
}
}
WriteLine("=== ENDE - "#CountFund#" Fundstellen ===");
LG, Michael.
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Herausfinden welche Systemvariable wo überall verwendet wird (in Scripten)
Ich habe doch nichts anderes / Gegenteiliges geschrieben.
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.