Hallo, ich habe irgend ein seltsames Phänomen mit einer Variablen und deren Ident-Bezeichnung. Die Variable hat ein Legacy-Profil und soweit der Ident IP_Duration heißt, funktioniert auch alles. Aber sobald ich ihn IP_Durationtime nenne, wird die Variable nach Änderung sofort wieder auf 0 gesetzt. Hier mal bildlich:
Das müsste doch für die Variable völlig egal sein, wie die Identbezeichnung ist, oder ?
In diesem Zusammenhang wollte ich mal fragen, ob es jemals möglich sein wird, den Ident einer Variablen als Auslöser eines Ereignisses auszuwählen oder einzugeben. das Thema ist eigentlich schon ziemlich alt, aber eine Reaktion des Symcon-Teams konnte ich bisher nirgends finden.
Auch wenn die Referenzsuche nichts ergeben hat, war das der entscheidende Hinweis. Tatsächlich habe ich ein Script, in welchem die Variable über den Ident angesprochen wird und unter Umständen verändert wird. Die Referenzsuche findet die Stelle im Script natürlich nicht.
Daher passiert das auch erst, wenn der Ident gesetzt ist. Sorry, da hätte ich auch selbst drauf kommen können aber irgendwie war ich auf dem Auge gerade blind.
Vielen Dank für die Hilfe.
Kannst du mir noch etwas zu dem zweiten Thema sagen ? Das Problem ist, dass wenn man viele Ereignisse innerhalb einer Instanz-Ebene hat, diese bei jeder Instanz und für jedes Ereignis manuell setzen muss. Hätte man Zugriff auf den Ident, könnte man einfach nur die Instanzen kopieren und hätte die Zusammenhänge innerhalb der Instanz immer gleich passend implementiert.
Häng das Ereignis direkt an die Variable. Dann ist das Ereignis immer relativ zur Variable und du kannst es problemlos hin und herschieben, wenn du intern RequestAction nutzt.
Ja, das Ereignis wirkt sich schon immer auf die Variable aus, an der es hängt, aber der Auslöser nicht. Der bleibt immer an der ursprünglichen Variable. Und wenn man da einen Ident hinterlegen kann, wird auch der Auslöser immer die richtige Variable innerhalb der Instanz sein.
Das wird nie per ident funktionieren, weil diese ja (ebenso wie Namen) nicht eindeutig sind.
Darum werden ja überall die ObjektIDs benutzt, diese sind einmalig.
Hm - dafür gibt es die Idents ja, weil sie innerhalb einer Ebene immer einzig sind …
Wenn ich zum Beispiel in einer Bewegungsmelder-Instanz eine Variable “Letzte Aktion” habe, die immer gesetzt werden soll, wenn der Bewegungsmelder einschaltet, könnte ich doch ein Ereignis anlegen, welches bei Wert “true” einen Timestamp hinterlegt. Wenn sich der Auslöser nun auf den Ident der Variable “Motion” bezieht, kann ich dieses Konstrukt in jede Bewegungsmelder-Instanz kopieren und es wird immer funktionieren und ich muss nicht jedes Mal über die Oberfläche den Auslöser suchen und anklicken.
Zum einen ja, das ist ja genau die Intension, dass der Auslöser des Ereignisses quasi als Pointer auf einen Ident innerhalb der Instanz verweist und damit aber nicht auf Name oder ID der Variable festgelegt wird und trotzdem immer den richtigen Auslöser hat. Also eine Funktion innerhalb des Objekts. Mit einem Script-Timer geht das ja auch. Wenn man dem einen Ident verpasst, braucht man im Script nicht mehr die ID des Timers angeben sondern kann das so machen und es funktioniert in allen Scripten, die einen Script-Timer haben :
case (IPS_GetObjectIDByIdent("IP_ScriptTimer",$_IPS['SELF'])):
Die ID des Timers interessiert in der Case-Abfrage nicht.
Zum anderen könnte der Auslöser genauso gut über die Funktion IPS_GetObjectIDByIdent definiert sein und damit überall im Baum liegen.
In der aktuellen Beta-Version vom IPSVIEW ist das mit den Idents sehr gut implementiert. Hier kann man über die Idents ein persönliches Element anlegen, in dem sämtliche Attribute einer Instanz über Idents definiert werden und wenn ich z.B. ein Lampen-Element (z.B. eine Shelly-Instanz) erstellt habe, kann ich sämtliche identischen Shelly-Lampen in einer View abbilden und muss nur die ID der Instanz angeben. Alle darunter liegenden Objekte sind dann automatisch mit verknüpft.
Nein, weil zusätzlich zum Ident auch die Parent ObjektId benötigt wird.
Wenn überhaupt könnte man sich wünschen das die Konsole beim Kopieren hier etwas ‚mitdenkt‘ wenn ein Ereignis kopiert wird, was seinen Auslöser auf gleicher Ebene hat.
naja, was daraus wird kann man ja schon längerer Zeit sehen : nichts! - nicht mal eine Reaktion seitens Symcon, obwohl das Thema 2024 und 2025 angesprochen wurde.
Ich befürchte dein Problem ist so speziell, dass der Aufwand hier die Konsole zu erweitern (wie Nall Chan vorschlägt) viel zu komplex ist im Vergleich zu der Menge an Personen, die sich dies Wünschen würden. Du kannst gerne die von dir im 1. Post angesprochenen Themen noch eimal Referenzieren (evtl. wird das auch das Problem noch einmal verständlicher erklärt), sodass andere User in Zukunft deinen Post besser finden können und sich dort dann ran hängen.
Wie du aber vermutlich selbst hier im Thema siehst → Es ist kein Thema, welches aktuell groß diskutiert wird und wir müssen mit unseren Ressourcen auch vernünftig umgehen.