Status von Events abfragen

Ja, ich hab es getestet und meine Profile bereinigt.
Die Überprüfung erfolg hier

if ($profil == IPS_GetVariable($variable)["VariableProfile"] or $profil == IPS_GetVariable($variable)["VariableCustomProfile"]) $gefunden=true;

Jedes Profil wird in jeder Variable gesucht. Einmal wird überprüft ob es als sog. Custom Profile (von dir definiert) verwendet wird, oder ob es als Variable Profile (von einem Modul zugewiesen) verwendet wird. Wird es entweder da oder dort gefunden, dann wird die Variable $gefunden auf true gesetzt und das Profil wird nicht gelöscht.

Vielen Dank!
Dieser Beitrag ist zu kurz.

Hi,
zusätzlich werden die Grundprofile von IPS, starten mit ~, nicht gelöscht denn zukünftig installierte Module könnten sich darauf verlassen das es sie gibt.

Ralf

Das stimmt natürlich. Die bleiben auf jeden Fall. Vielen Dank für den Hinweis.

Und die von Modulen eingerichtet Profile auch (sofern diese im Create() oder ApplyCharges() angelegt werden) …

Hallo Ralf,
sorry, das ich nicht reagiert hatte, war mit anderen Angelegenheiten sehr beschäftigt.
klar, kann ich das in das Integrity-Modul einbauen
demel

1 „Gefällt mir“

Heißt das, es kommt ein Modul zum löschen der unbenutzten Variablen?

Moin Demel,
kein Problem. War nur so eine Idee von mir weil schon fast alles überprüft wird was man überprüfen kann und die 2 Sachen sind mir noch eingefallen.

Automatisch löschen ist gefährlich und 100te von Warnung ausgeben könnte von richtigen Problemen ablenken. Bisher beschränkte sich das ganze ja auf wenige Meldungen.

Wie Du auch entscheidest ich finde es OK.

Ralf

@HarmonyFan
ich habe mal gerade den Check eingebaut.
Bei mir kommen da ein paar 100 Variablen … aber das sind alles Variablen von Instanzen (gerne HmIP) - wenn ich die löschen würde, kämen die ja bei nächsten Reboot oder einer Änderung anders jew. Instanz schwuppdiwupp wieder
Wenn ich zusätzlich auf Vorhandensein eines ObjectIdent prüfen (was ja vornehmlich bei Modulen gesetzt wird), sind das bei mir 0 Variablen.
Dann habe ich mal eine Variable von Hand angelegt … die ist gleich Aktualisiert, denn die wird ja initialisiert. Mit „Trick 17“ habe ich dann mal eine nicht initialisierte Variable angelegt (beim erzeugen der Variable den Standardwert gelöscht - gibt zwar eine Fehlermeldung, die Variable ist aber angelegt). Und die wird dann angezeigt.

Die Ausbeute ist aber dann ja gering …

Bei deinem Script prüfst du übrigens nur auf VariableAction == 0 … wäre nicht VariableCustomAction == 1 ebenfalls wichtig?

oder verstehe ich das Ziel nicht so ganz?

@cbeham: auto. Löschen sehe ich erstmal (noch) nicht, die Gefahr was falsches zu löschen ist ja doch nicht zu unterschätzen.

Moin,

bei dir. Du pflegst dein System vermutlich auch mehr als der Durchschnitt.

ohne nachgesehen zu haben würde ich sagen auf jeden Fall. Egal welche Action, wenn eine hinterlegt ist dürfte die Variable auch einen Sinn haben.

Ralf

  1. Schritt: „ungenutzte Variablen“ sind nun dabei (Modulstore/Beta)
    allerdings ist die Überprüfung auf „Updated“ schon sehr einschränkend … naja, solche Variablen sind ja kaum von Hand zu erstellen
    Ob eine Prüfung auf „Changed“ besser ist?

Moin,

hatte ich auch überlegt aber es gibt ja auch Variablen die aktualisiert werden ohne das sie sich je ändern wie z.B. 230V bei Steckdosen.

Ralf

Mir fällt gerade ein, dass auch Diagramme Profile nutzen können. :slight_smile:

Burkhard

Hi Demel,
noch eine Idee (von dir) für das Modul :grin:

Im Thread Zu viele gleichzeitige Skripte. Verwerfe Ausführ - #6 von demel42 hast Du ein Script vorgestellt das die Threads überwacht.
Wäre das nicht eine schöne Erweiterung für dieses Modul. Auf Wunsch alle X Sekunden (Standard vielleicht 60) die Threads überprüft und wenn > N das Zeitlimit überschreiten Meldung geben.
Mir und auch anderen hat es schon sehr geholfen einen Fehler zu finden. Es geht nichts über eine Rekursion ohne Ende- oder Abbruchbedingung :smiley:

Ralf

schau mal in Modulstore/Beta …

Moin,
war das schon drin oder hast Du das „mal eben schnell“ eingebaut?:slight_smile:

Ich habe das Script jetzt mal deaktiviert und die Prüfung im Modul aktiviert. Jetzt muss ich warten bis ich mal wieder Mist baue um zu sehen ob es geht.

Danke Ralf

nee, schnell eingebaut. Ist ja kein Hexenwerk, weil der Code ja schon als Script existierte und von daher nur da mit rein musste.

Zum Test, mach do einfach ein Script, in dem ein IPS_Sleep(140*1000) steht.
Das hängt dann ja 140s … wenn du ungeduldig bist, stellst du die Grenzen einfach auf kürzer

ich erwarte
a) passende Meldungen alle 60s
b) eine Änderung in der HTML-Box - die wir aber ja nur alle 60m aktualisiert - also einfach manuell auslösen.
da wollte ich aber auch noch was dran machen, und versuchen, das Erkenntnis in dem minütlichen MonitorThread auch hier dargestellt wird.

demel

Habe ich mir gedacht das Du das mal eben schnell kannst deswegen hatte ich es vorgeschlagen.

Test mit 100sec Script bei 40sec für Fehler und Prüfung alle 20sec aber kein Fehler. Ich schätze weil der ThreadCount noch nicht erreicht wurde.

Ralf

ThreadCount=0 bedeutet, das zu dem Zeitpunkt nix lief. Oder ich habe einen Gedanklichen Fehler, denn ich prüfe, ob die Thread-Struktur eine „ScriptID“ != 0 enthält … prüfe ich gleich nochmal

sobald ein Script-Laufzeit eine der in der Konfig angegebene Grenzen überschreitet, gibt es eine LogMessage. Die HTML-Box nur dann wenn die PerformCheck (also die stündlich laufende Prüfung) passend abläuft

1 „Gefällt mir“

Ahh OK im IPS Log steht Warnung und Fehler alles OK soweit. Eintrag in Variablen wäre nicht schlecht.

Ralf