Neu angelegte zyklische Ereignisse führen Script nicht aus

Jedes Ereignis hat eine Aktion. Öffne das Ereignis, welche Aktion ist dort hinterlegt.
Michael


Das ist doch aus dem Screenshot oben zu erkennen oder reden wir aneinander vorbei?

Wo oben? Oben hast du den Objektbaum gezeigt.
Und hier jetzt die Aktion.
Und was ist da?
Nix…
Du hast als Ziel das Script ausgewählt, aber als Aktion führe PHP Code aus → ohne PHP Code, also wird ein leeres Stück Code ausgeführt.
Die korrekte Aktion ist führe Automation aus, die startet das ausgewählte Script.
Michael

Okay mein Fehler. Jetzt klappt es.
Habe das immer über Rechtsklick auf ein Script so gemacht: ->Objekt hinzufügen->Ereignis->Zyklisch. Da hat sich wohl irgendwann mal was geändert und es war „Führe PHP-Code“ statt „Führe Automation aus“ ausgewählt.
Finde ich nicht gerade intuitiv wenn ich explizit auf ein Rechtsklick auf ein Script mache, aber das ist eine andere Diskussion.
Wäre ein Änderungsvorschlag meinerseits.
Vielen Dank

Das bedeutet nur, dass das Ereignis unterhalb vom gewählten Objekt erzeugt wird.
Die Aktion im Ereignis, musst du dennoch passend einstellen.
Du kannst auch ein Ereignis unterhalb einer Variable erzeugen, auch hier muss du dann noch sagen → Schalt, setzte, addiere etc… Variable.

Nene. Der hat hier früher einfeutig das Script ausgewählt. Auch die Benennung ‚Automation‘ ist ungünstig. Das sollte eher führe Ablaufplan oder php-Script aus’ heißen.

Vielleicht kann @Dr.Niels sich das mal ansehen?

Warum? Das ist seit Einführung der Aktionen so und auch korrekt.
PHP Script ist das Script direkt im Ereignis.
Automationen sind Ablaufpläne, Workflows und Objekte vom Typ Script.
Michael

Die Bezeichnungen und Anpassungen in den letzten Jahren werden immer verworrener.

Du siehst doch hier sehr deutlich, dass es unnötigerweise zu Verwechslungen führt.

Ich habe genau eine Aktion erstellt. Finde das Konzept für mich nicht praktikabel und ärgere mich jedes mal, dass hier eine Vereinfachung mir regelmäßig unnötige Komplexität oder missverständlich formulierte Menüpunkte bringt.

So zum Beispiel das doppelt verschachtelte Menü bei ‚neues Script anlegen‘.

Das hat alles nix mit dem Modul hier zu tun, kannst gerne dazu ja einen Wunsch unter Funktionswünsche äußern.
Du hast ja auch selbst gesagt ‚früher‘; das ist aber schon ein paar Jahre her. Symcon entwickelt sich halt weiter und Veränderungen werden uns User z.B. mit den schon im Event gezeigten Darstellungen auch treffen. Hier muss man sich halt anpassen.
Michael

Offensichtlich bin ich nicht der einige, der die Formulierung „führe PHP-Code aus“ hier mißverständlich findet, wenn man per Rechtsklick von einem PHP-Code (Script) kommt. Warum etwas, was früher mal so funktioniert hat jetzt unter „Funktionswünsche“ äußern statt es einfach intuitiver zu gestalten?
Ich komme mir fast vor, als würde ich Windows benutzen…

Dann wird automatisch und vollkommen korrekt Als Ziel dein Script und als Aktion führen Automation aus gesetzt. Du musst also da nix ändern :slight_smile:
Wenn man dann aber selber per Hand die Aktion auf führe PHP-Code aus ändert; dann kommt da sogar ein Script-Editor Dialog und spätestens dann sollte man merken dass das wohl falsch ist.

Beispiel: Rechtsklick auf Script zh
image
image

@tobiasr
Du hast es hier doch selber geschrieben…

Michael

→ führt zu der zuletzt gewählten Aktion !

→ Nur wenn ich nicht zuvor „führe PHP-Code aus“ gewählt hatte z.B. bei einem anderen Script.

Heißt also hier merkt sich die Konsole die letzte Aktion, auch wenn man intuitiv was anderes erwartet? Da Nall-Chan zum kurzfristigen Erstellen seiner Screenshots vorher nichts anderes gemacht hat, fiel im das nicht auf?

Dann wäre das doch eindeutig ein Bug.

Nachtrag: schaue mir nochmal den Screenshot an: Ist es sinvoll, dass man gleichzeitig ein Script UND führe PHP Code überhaupt im Dialog auswählen kann?

Ja, die Konsole merkt sich die zuletzt ausgewählten Aktionen und bietet diese bevorzugt an. Wenn ihr bei der letzten Variable etwas dazuaddieren wolltet, ist es recht wahrscheinlich, dass ihr das bei der nächsten wieder tun wollt, etc. . Mit den Vorschlägen haben wir sekundär Aktionen kuriert, welche wir für geschickt halten, aber euer individuelles Verhalten trumpft dabei unsere Vorschläge. Das ist meiner Meinung nach aber auch absolut sinnvoll, denn eure zuletzt verwendeten Aktionen passen ja viel besser zu eurem System als irgendwelche allgemeingültigen Ideen, die wir haben. Das ist somit also definitiv kein Bug, sondern soll euch im Normalfall das Leben erleichtern.

Gleichzeitig PHP-Code und Skriptausführung ist ganz klar sinnvoll. PHP-Code ist ja sozusagen der „Joker“ der Aktionen. Du möchtest bei Ereignisauslösung das Skript sichtbar schalten falls der aktuelle Zeitstempel durch 3 teilbar ist? Das hat nichts mit dem eigentlichen Skript zu tun und ist wunderbar via PHP-Code umsetzbar.

Ich kann mir aber gut vorstellen, dass man den Namen von „Führe PHP Code aus“ anpasst. Ich verstehe, dass man darüber stolpert. Insbesondere falls ihr da mal verwirrt wurdet, was für ein Name hätte euch da besser geholfen?

Aus meiner Sicht ist nicht zwangweise die Bezeichnung führe PHP-Code aus verwirrend, sondern eher die Bezeichnung starte Automation (oder wie auch immer das heißt, hab jetzt nicht nachgesehen). Dort erwarte ich sowas wie - starte Ablaufplan bzw. PHP-Script

1 „Gefällt mir“

Automation ist der Oberbegriff für alles was „ausgeführt“ wird, also aktuell PHP-Skripte, Ablaufpläne und IPSWorkflows. Die Liste kann theoretisch später auch noch erweitert werden, falls wir da noch neue Typen einführen, auch wenn aktuell nichts in der Richtung geplant ist. Für Ereignisse werden bei der Aktion fürs aktiv/inaktiv schalten ja auch nicht alle Ereignisarten aufgelistet, da steht auch nur „Ereignis“.

Gefühlt ist ja die Kombination aus beidem verwirrend. Jemand sieht die beiden Aktionen (weil sie bei kürzlich verwendet stehen) und entscheidet sich für „Führe PHP Code aus“ um das PHP-Skript zu starten, was halt nicht passt. Und hier müsste man es hinbekommen, dass es klar ist, dass „Führe Automation aus“ die korrekte Wahl ist.

Alternativ könnte ich vielleicht einen Sanity-Check einbauen, dass der PHP-Code als ungültig konfiguriert gilt, wenn man dort keinen Code eingetragen hat. Dann würde bei der Auswahl von „Führe PHP Code aus“ und direktem bestätigen eine Fehlermeldung hochkommen im Sinne von „Kein Code eingetragen“, vielleicht sogar noch erweitert um „Wollen Sie vielleicht die Automation ausführen? Dann sind Sie hier falsch, hier gehts lang“. Dann könnte man vielleicht trotzdem initial stolpern, aber das wird schnell gerichtet.

Was nützt einem der beste Oberbegriff, wenn man ihn nicht inituitiv einordnen kann?

Die Abfrage: Wollen Sie wirklich die Kombination aus ‚Führe PHP-Code ohne Code‘, könnte ggf. helfen.

Es gibt aber Situationen, in denen man das bewusst auswählt (Platzhalter für Vorbereitungen im 2. Schritt 10min später). Daher sollte die Abfrage wegklickbar sein. Was wieder dafür sorgt, dass der typische ‚ich klicke alles weg‘ User erneut Gefahr läuft das falsche zu wählen.

Ich gehöre auch zu denen, die da immer wieder mal verwirrt waren und sich gewundert haben, warum nichts passiert. Das hatte ich ja schon vor einiger Zeit geschrieben, weshalb ich es sehr begrüßen würde, wenn sich hier etwas ändert.

Ich muss gestehen, dass ich die Ablaufpläne überhaupt nicht nutze und auch nicht PHP direkt am Ereignis assoziiert. Ersteres halte ich für einen Irrweg, der das Verständnis was da eigentlich passiert extrem erschwert wird und zweites finde ich aus SW Engineering-Sicht auch nicht gut. Der Programmcodensollte immer in den entsprechenden Script-Objekten sein, damit ich ihn schnell finde und nicht übersehe. Daher ist meine Sicht wahrscheinlich etwas einseitig, aber ich würde als erstes die Auswahl von irgendwelchen zuletzt gewählten Sachen rausnehmen. Wir reden hier ja nicht von so vielen möglichen Aktionen. Und dann würde ich ganz simpel nur die drei Auswahlpunkte bieten: PHP Script, Ablaufplan oder IPSWorkflows.

@Dr.Niels : Mir ist noch eine andere Idee gekommen, wie man das ggf. vereinfachen und verständlicher machen könnte. Wie wäre es, wenn man einen objektorientierten Ansatz mit Polymorphismus nutzt und die Methode einfach nur „ausführen/execute“ nennt und dann immer das jeweilige auszuführende Objekt durch ID hinterlegt und das dann korrekt ausgeführt wird. Bei einem Code Snippet direkt beim Event würde man dann die ID vom Event Objekt selbst hinterlegen. Wäre das ein Ansatz?

Ich bin nicht sicher, ob ich deinen Vorschlag richtig verstehe. Möchtest du eine zweite Zielauswahl in den Parametern einer zusammengefassten Ausführen-Aktion, welche die tatsächliche Auswahl dann „übersteuert“? Vielleicht kannst du ja nochmal ausholen