"Unkontrolliertes" Verhalten bei Runscript?

Ich habe folgende Situation:
In einem Tree-Teil habe ich Links auf Scripte, z.B. stelle ich eine Scene damit zusammen das ich die auszuführenden Scripte dort verlinke und die Links durch ein Script durchlaufe was dann die dahinter liegenden Scripte aufruft… dient mir also zum dynamischen konfigurieren von Scenen…

Soviel zum Hintergrund, nun ist es vorgekommen das durch den Austausch eines Aktors ein Link auf ein nicht mehr existierendes Script zeigt. Nun habe ich fahrlässig, naja ich nenne es mal optimischtisch, programmiert und nicht jeden Link auf die Existenz des dahinter liegenden Scriptes geprüft sondern einfach die ID an IPS_Runscript übergeben… Ergebnis: Alles mögliche… ihr erinnert auch an „geschenkt ist noch zu teuer“, wo das Haus sich selbstständig macht… so in etwa, Lichter an - aus, Rollos runter - hoch, fernseher an aus, türen auf - zu…da wurde wirklich alles durchgespielt was man per irgendeinem script irgendwie auslösen kann… ich konnte noch nicht genau rausfinden was… aber es hat kurzfristig den WAF nahe des absoluten Gefrierpunkts getrieben.

Zur eigentlichen Frage: Warum überprüft Runscript nicht ob es ein gültiges Ziel übergeben bekommen hat…und was tut es?

Hab ich das falsch verstanden?

<?
    IPS_RunScript (47112);
?>

bringt bei mir:


Warning:  Skript #47112 exisitert nicht in /usr/share/symcon/scripts/36129.ips.php on line 3

Hi!

IPS_RunScript — IP-Symcon :: Automatisierungssoftware

IPS_RunScript startet ein Skript. Punkt. :smiley:

Vorher prüfen kannst du damit:
IPS_ScriptExists — IP-Symcon :: Automatisierungssoftware

if Skript existiert, dann IPS_RunScript($id)

Außerdem kannst du noch auf diese Art prüfen, ob erfolgreich oder nicht (siehe der 1. Link in diesem Post):

$result = IPS_RunScript(12345);
if ($result == false) {
   echo "Skript konnte nicht ausgeführt werden!";
}

Allgemein eine recht spezielle Methode, die du da machst…aber viele Wege führen bekanntlich nach Rom :slight_smile:

Grüße,
Chris

Ich vermute hier eher einen Fehler in deinem Script, welches auf einer falschen Kategorie alle Skripte gestartet hat :wink:

paresy

Wenn das Ziel vom Link nicht existiert, würde ich mal vermuten das hier 0 zurück gegeben wird.
Und wenn du das nicht abfängst wird RunScript mit ScriptID 0 was machen ???

Probier mal aus. Eventuell hast du dann dein Problem nachgestellt :slight_smile:
Michael

hab den Fehler gefunden… ID=0 war der Treffer…

Es gab wirklich 0 zurück, da das Script aber auch rekursiv läuft startet es alle Scripte unterhalb von Kategorie 0 :wink: also alle…

Volltreffer…

Allgemein eine recht spezielle Methode, die du da machst…aber viele Wege führen bekanntlich nach Rom

Bin ja immer für Verbesserungsvorschläge offen… aber feste Scripte mit harten ID’s kommen mir nicht ins Haus, wenn du also was besseres dynamisches hast, immer raus damit.

Dazu müsstest du schon etwas mehr Infos preisgeben :wink: Zum Rätselraten habe ich jetzt grad keine Zeit :wink:

Ich mache es an vielen Stellen so, dass ich z.B. ein Projekt im Ordner „Name123“ habe. Diesen Ordner lasse ich durch den Namen suchen und hole mir dann im Skript die ID. Oder gebe die ID vom Hauptordner auch mal fix an. Dann mit Unterordner und Untervariablen usw. wieder nach Namen/Ident auslesen lassen. Also wird alles dynamisch über Namen/Ident ausgelesen.

Zum Beispiel damit:
IPS_GetObjectIDByIdent — IP-Symcon :: Automatisierungssoftware
IPS_GetVariableIDByName — IP-Symcon :: Automatisierungssoftware

Aber ohne genauere Infos…

Grüße,
Chris

na die Anforderungen sind so einfach wie oben beschrieben:

Scenen oder Scripte die mehrere Geräte / Aktionen zusammensetzen geeignet zu konfigurieren ohne feste ID’s oder Bezeichnungen in Scripte hacken zu müssen. Wenn ich also die Scene „Fernsehen im Wohnzimmer“ baue linke ich die dazu nötigen Scripte (Fenseher an, Licht schalten, ggf. Rollo, Hifi an, etc.) in einen Zweig und kopiere dazu mein universal-Script das diese bei Bedarf ausführt.

Konfiguration ist einfach, Zweig anlegen, Script kopieren, Elemente linken
übersichtlich: Man sieht genau im Zweig was „betroffen“ ist
und flexibel: man kann simpel einen Link hinzufügen oder löschen

Eine Alternative mit den Vorteilen sehe ich noch nicht… und ein Script beim Namen ausführen betrifft die Problematik irgendwie nicht.

Da ist aber jemand offen für Alternativen :smiley: :wink: Und unter Infos verstehe ich etwas anderes als einen Wunsch zu definieren, aber ich erspare mir eine weitere Diskussion und wünsche dir weiterhin viel Erfolg und ein schönes Wochenende :slight_smile:

Grüße,
Chris

Ich habe zu alternativen Arten deiner als „speziellen Methode“ definierten Lösung gebeten, dazu muss man Anforderungen definieren… das hab ich getan, was willst du jetzt?