LinkID ermitteln die das Skript aufgerufen hat?

Hallo Zusammen,

gibt es eine Möglicht die LinkID zu ermitteln die ein Skript aufgerufen hat?

Ich habe im Webfront viele Links im EInsatz und möchte herausbekommen welcher der mehreren Links zu einem Skript geklickt wurde. Geht das überhaupt?

Oder habe ich einen Denkfehler und muss gar nicht über den Link gehen um zu erkennen, von wo das Skript im Webfront aufgerufen wurde?

Konkret habe ich mehrere Räume im WF dargestellt und möchte wissen aus welcher Ansicht geklickt wurde.

Ich habe ber die Suche und in der Doku leider nichts Brauchbares gefunden, aber vielleicht hat jemand aus der Community eine Anregung für mich. Oder entfernt mir einach nur mein Brett vorm Kopf. Danke.

Viele Grüße aus dem Unterallgäu
Harry

Meines Wissens geht das nicht (mehr). Dabei würde ich das auch so dringend brauchen i.Z.m. Highcharts Zeitauswahl…

Gesendet von meinem iPhone mit Tapatalk

Hallo,

das hatte ich schon befürchtet. Ich war mir nicht mehr sicher ob ich das im Forum gelesen hatte. Da bleibt mir wohl nur je Raum ein identisches Script anzulegen. 12x mal identischer Code oder 12x Aufrufskript mit Parameterübergabe an ein Auslesekript. Schade, da der Link als Parent den Raum im Kategorienamen hat.

Danke für die Antwort.

Viele Grüße aus dem Unterallgäu
Harry

Sent from my iPad using Tapatalk.

Ist das immer noch Status-Quo ? Würde auch gerne die ID des aufrufenden Link wissen.

Jupp. Das gilt auch generell für alle Links mit egal welchem Ziel. Der Link verknüpft nur uns ist in dem Sinne nicht verfolgbar.

paresy

Wie kann denn ein Link ein Skript aufrufen?
Das Kunstrukt würde mich auch mal interessieren !

Viele Grüsse
Harald

Du kannst einfach einen Link erstellen und dann wird das verlinkte Skript im WebFront angezeigt. Wie aber bereits erklärt, startest du damit das verlinkte Skript und nicht den Link, wodurch eben die „rückwärts“ Zuordnung nicht möglich ist.

paresy

Es ist doch so, dass der Link (der über die Weboberfläche getriggert werden kann) das WebFront aktiviert und dieses dann das Skript startet (!?)

Wenn man folgendes Skript

<?

$Text = '';
foreach ($_IPS as $Key => $Par) {
       $Text .= '$_IPS[' . "'" . $Key . "']=>" . $Par . ', ';
}
$Text .= "
";
foreach ($_SERVER as $Key => $Par) {
       @$Text .= '$_SERVER[' . "'" . $Key . "']=>" . $Par . ', ';
}
IPS_LogMessage ('Lnk-Test', rtrim($Text, ', '));

?>

erst direkt ausführt
und dann über einen Link startet
bekommt man diese Ausgabe:

04.07.2018 22:37:56 | 00000 | CUSTOM  | Lnk-Test             | 
$_IPS['SENDER']=>Execute, $_IPS['THREAD']=>2, $_IPS['SELF']=>13416, 
$_SERVER['REQUEST_TIME_FLOAT']=>1530736676.6525, $_SERVER['REQUEST_TIME']=>1530736676, $_SERVER['argv']=>Array, $_SERVER['argc']=>0
04.07.2018 22:38:05 | 00000 | CUSTOM  | Lnk-Test             | 
$_IPS['CONFIGURATOR']=>56893, $_IPS['SENDER']=>WebFront, $_IPS['THREAD']=>1, $_IPS['SELF']=>13416, 
$_SERVER['REQUEST_TIME_FLOAT']=>1530736685.5133, $_SERVER['REQUEST_TIME']=>1530736685, $_SERVER['argv']=>Array, $_SERVER['argc']=>0

Also zuerst SENDER=Execute und beim Starten über den Link SENDER=WebFront !

Nun kann der Webserver eine ganze Menge Systemvariablen liefern; wenn die IPS-Programmierer es wollten, könnte auch die Objekt-ID des triggernden Objektes (des Links) mitgeliefert werden:banghead:

Aber dann sind wir ja wieder bei Diskussionen wie der über die nicht vorhandene Systemvariable $_IPS[‚TRIG‘]:mad:

Viele Grüsse
Harald

Wie hast du das Script bei er ersten Ausgabe direkt gestartet?
Aus der Console oder aus dem WebFront ohne Link?
Michael

Aus der Console

Und wo ist da jetzt irgendwas vergleichbar :banghead:
Michael

Wie Nall Chan schon sagte… Der SENDER wird von der Konsole bzw. WebFront gesetzt. Das hat nichts mit dem Link zu tun.

paresy

Oh, ne riesen Diskussion aufwerfen wollte ich hier nicht… Sorry…
Nur als Hintergrund warum ich frage und wie ich es bislang löse, vielleicht reicht das ja schon.

Warum? Ich nutze Links für identische Scripte, damit ich sie inhaltlich nur einmal Pflegen muss. Allerdings benötigen die Scripte häufig ein „wissen“ darüber wo sie laufen, also nicht wo das original-Script hängt sondern sein Stellvertreter-Link, weil zum Beispiel auf das darüber liegende Gerät zugegriffen wird etc.

Da das bislang nicht ging habe ich es etwas anders gelöst, ich mache statt Link ein Mini-Script das einfach das original-Script inkludiert…, so kann ich es weiterhin zentral pflegen aber hab es „quasi“ überall statt Link.

Hätte ich einfach den Parent des Link abfragen können, hätte ich gar keinen Bedarf gehabt :wink:

Den Parent oder auch Target des Links kannst du ermitteln.
Bringt dir aber nichts in dem Fall, da der Link niemals Absender ist.
Der Link im WebFront repräsentiert halt das Ziel. Wäre ja fatal wenn es nicht so wäre. Dann wäre der Sinn eines Link hinfällig.
Michael

da hast du die Goldwaage rausgeholt… natürlich will ich IM verlinkten Script den Parent des Links abfragen (von dem Link der das Script gestartet hat).

Es ist eine Philosophie-Frage wie man einen Link versteht… ob nur als Verweis auf ein Ziel (selbst da kann man idR abfragen wer auf mich verwiesen hat) oder als Instanz des ursprunglichen Objektes… ist etwas ähnlich wie pass-by-reference und pass-by-value… (ok, ein klein wenig hinkt der Vergleich)

Genau. Ich wollte jetzt auch nicht erörtern oder behaupten, dass dein Ansatz/Wunsch nicht gut ist. Es ist zur Zeit einfach nur so implementiert, dass der Link zum Zeitpunkt des Aufrufs vollständig aufgelöst ist und somit die Information des Links gar nicht mehr verfügbar ist. Wenn wir also den Link (der dies aufgerufen hatte) mitgeben wollen würden müssten wir sehr viel an der Art, wie wir Links verwenden, ändern. :wink:

paresy

Deswegen ja auch Sorry für die Diskussion, wollte ja nur hören ob ich was bei mir optimieren kann oder es so lasse wie es ist.

Niemand hatte die Absicht irgendwas zu vergleichen :loveips:

Es war nur so, dass mir die Reaktionskette von Link zu Skript etwas zu diffus dargestellt war.

Aber der nachgereichte Teilsatz „Es ist zur Zeit einfach nur so implementiert, dass … die Information des Links gar nicht mehr verfügbar ist.“ trifft ja des Pudels Kern.

Es wäre nur schön, wann das „IPS-Programmier-Management“ nicht gleich jede Nachfrage/Vorschlag, der etwas tiefer in die Mechanismen von IPS eintaucht (und dabei das know-how des Systems tangiert) als nicht realisierbar abtun würde (wie es z.B. bei meinem Vorschlag über die nicht vorhandene Systemvariable $_IPS[‚TRIG‘] der Fall war). Vielleicht kommt es auch bei der hier im Betreff beschriebenen Nachfrage zu einem Nachdenken; die Kenntnis über den triggernden Link kann schon nützlich sein, wenn man mehrfache Links von verschiebenen Orten auf dasselbe Objekt nutzt.

Viele Grüsse
Harald

Hallo zusammen,

wie in meinem versehentlich neu eröffneten Thema, würde ich mir ebenfalls diese Funktion wünschen, dass der aufrufende Link ebenfalls im Aktion-Skript bereitgestellt wird.

Für mich und meine Automatisierung ist diese Information wichtig, um zusätzlich (kontextbezogene) Informationen zur eigentlich angesteuerten Variablen zu ermitteln.

Da dieser Anwendungsfall nun bereits mehrfach aufgekommen ist, würde sich ggf. doch die Überlegung lohnen, diese Funktion in ein Symcon-Update bereitzustellen.

Viele Grüße,
bition