verbesserte Funktionsweise von 'nach Referenzen suchen'

Ich verwende - gerade beim Aufräumen :wink: - sehr gerne die Funktion ‚nach Referenzen suchen‘. Getreu dem Motto: was nicht benutzt wird, kann weg…

Mir fehlen da noch zwei Punkte:

  • Leider wird ‚nach Referenzen suchen‘ für Kategorien noch nicht unterstützt. Dabei würde ich manchmal gerne wissen, ob eine Kategorie in einem meiner Webfronts genutzt wird. Momentan sehe ich keine andere Möglichkeit das herauszufinden, als alle Webfront Konfiguratoren manuell zu durchsuchen. Seeehr aufwändig …

  • die Funktion berücksichtigt zur Zeit noch nicht, ob eine Variable in Instanzen verwendet wird. Beispiel: die in der Alexa Instanz referenzierten Variablen werden nicht gefunden. Da ist es natürlich schlecht, wenn man sich auf die Funktion verlässt.

Ich würde mich freuen, wenn die Anregungen Gefallen finden.

Gruß

Burkhard

Gerade wieder Punkt 1 vermisst :slight_smile:

Hat es einer der Punkte schon bis auf eine ToDo-Liste geschafft?

  1. Macht voll sinn. Wir haben Kategorien extra aus der Funktion „raus“ genommen, weil uns der Use-Case gefehlt hat. Fügen wir hinzu und das WebFront liefert dann auch korrekt die Referenzen.

  2. Jein. Es betrifft zur Zeit alle PHP-Module. Die nativen Instanzen sollten diese Information bereits korrekt liefern. Ich denke wir werden diese Callback Funktion auch erst einführen, sobald OPCache offiziell als Stable gilt - Denn für jede PHP Instanz muss diese Funktion ausgeführt werden und dies würde bisher sehr viel Zeit/Resourcen kosten.

paresy

[ol]
[li]Super - freue mich schon drauf[/li][li]Das gilt aber zur Zeit noch nicht für die Alexa Kerninstanz. Gerade dafür braucht man es aber.[/li][/ol]

Gruß

Burkhard

Alexa ist ein PHP-Modul :smiley:
Michael

Funktioniert inzwischen. Besten Dank!

Hallo.

ich hänge mich hier kurz an :).

Ich programmiere gerade ein Modul und da wäre die Funktion „Referenzen suchen“ als IPS_* Funktion hilfreich.
Kann ich per PHP Code nach Referenzen suchen oder muss ich mir die komplette Struktur mit „IPS_GetSnapshot“ holen und darin parsen?

Gefunden habe ich in der „functions.ips.php“ lediglich das Kommando „UC_FindReferences“. Das scheint aber nicht für diesen Zweck bestimmt zu sein, bzw. ist es offiziell nirgends dokumentiert.

Gruß
Thorsten

UC_FindReferences ist die richtige Funktion. Dokumentieren werden wir die nicht, da diese eher für den internen Gebrauch ist. Schau dir aber mit STRG+Leertaste mal die notwendigen Parameter an. Sollte eher einfach sein :slight_smile:

paresy

Danke für die Antwort :).
Hat etwas gedauert bis ich wusste, dass der „Utils Handler“ als Instanz gemeint war, aber jetzt passt alles.

Gruß & einen guten Start in die neue Woche
Thorsten

Noch ein Hinweis:

UC_FindReferences() findet die Verwendung einer Variablen als zusätzliche Bedingung in einem auslösenden Event nicht.

Gruß

Burkhard

Danke! Fix im nächsten Update.

paresy

Wenn ich „Nach Referenzen suchen“ auf ein Homematic Device anwende, dann erhalte ich die STATUS Variable als referenzierendes Objekt :eek:

Auch UC_FindReferences findet die Referenz:

array(2) {
  [0]=>
  array(4) {
    ["LineNumber"]=>
    int(0)
    ["LineContent"]=>
    string(8) "Variable"
    ["LinePosition"]=>
    int(0)
    ["ObjectID"]=>
    int(10198)
  }

Hinztergrund ist, dass bei der Variablen die Standardaktion ausgewählt ist.

Wenn ich dagegen die Instanz löschen möchte, dann erhalte ich keinen Hinweis auf eine noch existierende Referenz :confused:

Daher meine Frage: warum wird die Referenz zwar angezeigt aber beim Löschen dann doch nicht berücksichtigt?

Oder anders gefragt: sollte die Referenz vielleicht gar nicht erst angezeigt werden, da es sich ja um eine ‚interne‘ Referenz der Instanz handelt.

Momentan ist es in meinen Augen inkonsistent, eine Referenz anzuzeigen, die beim Löschen gar nicht berücksichtigt wird.

Gruß

Burkhard

Daher meine Frage: warum wird die Referenz zwar angezeigt aber beim Löschen dann doch nicht berücksichtigt?

An der Stelle ist der Dialog „schlau“. Er filtert alle Referenzen, die ebenfalls gelöscht werden.
Was der Dialog noch nicht tut, ist jedoch alle Unterobjekte ebenfalls auf Referenzen zu prüfen. Dies werden wir jedoch zeitnah nachpflegen.

Oder anders gefragt: sollte die Referenz vielleicht gar nicht erst angezeigt werden, da es sich ja um eine ‚interne‘ Referenz der Instanz handelt.

Ich habe mir das durch den Kopf gehen lassen und bin deiner Meinung. Wir werden die Standardaktionen nicht bei den Referenzen berücksichtigen.

paresy

Super. Macht es nicht auch Sinn, bei der Aktion „Nach Referenzen suchen“ eine Option anzubieten, Unterobjekte einzuschließen? Oft will man z.B. wissen, wo eine Instanz und ihre Statusvariablen alle benutzt werden. Zur Zeit muss man jedes Objekt einzeln untersuchen lassen. Wenn ich da an ‚WundergroundWeather‘ denke mit geschätzten 50 Variablen … :slight_smile:

Das finde ich gut. Also wird auch UC_FindReferences sie nicht berücksichtigen?

Das finde ich gut. Also wird auch UC_FindReferences sie nicht berücksichtigen?

Genau.

paresy

Ist der Punkt mit dem Finden von Referenzen innerhalb der Instanzen von PHP-Modulen eigentlich noch offen oder ist das mittlerweile verfügbar, muss aber vom Entwickler eines Moduls extra implementiert werden?

Ich hatte jetzt den Fall, wo ich eine Instanz inkl. ihrer Statusvariablen löschen musste. Ich habe zuvor nach Referenzen auf die Statusvariable gesucht und die Funde entsprechend angepasst. Nach dem Löschen traten dann trotzdem diverse Fehler auf, weil die Statusvariable noch in den Instanzen verschiedener Module genutzt wurde. Die Module wurden mir aber zuvor bei der Suche nach Referenzen nicht angezeigt.

Gruß
Slummi

Das wird inzwischen berücksichtigt. Aber, wenn fremde IDs in einem Modul benutzt werden, muss das der Entwickler aktiv mit RegisterReference Symcon mitteilen.
Sonst findet die Suche nach Referenzen nichts.
Michael

Ah alles klar. Danke für die Info!
Dann werde ich da demnächst auch dran denken, wenn ich Module bastel.

Gruß
Slummi