Herausfinden welche Systemvariable wo überall verwendet wird (in Scripten)

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 741 Mal

Re: Herausfinden welche Systemvariable wo überall verwendet wird (in Scripten)

Beitrag von Matsch » 22.03.2021, 21:53

Worum ging es hier eigentlich?
Gute Nacht, das ist mir jetzt zu blöd ....

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Herausfinden welche Systemvariable wo überall verwendet wird (in Scripten)

Beitrag von MichaelN » 23.03.2021, 16:13

alchy hat geschrieben:
21.03.2021, 19:24
Da 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.
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...

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 +++

alchy
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)

Beitrag von alchy » 23.03.2021, 18:17

MichaelN hat geschrieben:
23.03.2021, 16:13
DPEnumUsagePrograms macht allerdings nichts anderes als die WebUI-Funktion. Ich finde damit nur Programme in denen die SV referenziert ist.
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.

Antworten

Zurück zu „HomeMatic allgemein“