[Modul] Symcon Integrity Check

@HarmonyFan
Ich hatte das mal seinerzeit mit @Dr.Niels in einem anderen Kontext diskutiert.
Das Problem ist, das ein Property nicht weis, welchen Typ es hat. Man muss daher das dazu passende Konfigurationsformular auslesen und interpretieren - dann weis man ja, welches Property welchen Typ hat.
Ist aber wirklich nicht unaufwendig, insbesondere, wenn man (verschachtelte) Listen hat; daher hatte ich das nicht weiter verfolgt.

Nebenbei: das das Element in der Action SCRIPT heisst, ist auch nicht in Stein gemeisselt. Wenn man eigene Actions in einem Modul macht, kann die Variable mit dem PHP-Code ja heissen, wie man will. Man müsste daher auch die Definition der jew. Action parsen.
Ich überprüfen ja die Aktionen in Ereignissen und in Ablaufplänen und die darin enthaltenen Scripte; hier gehe ich der Handhabbarkeit halber davon aus, das Scripte auch SCRIPT heissen …
Nur für Instanzen habe ich mir das aus diesem Grund geklemmt. Ich überprüfe ja auch aus gleichem Grund nicht jedes Integer-Property darauf, ob das ein (gültiges) Objekt ist

Hi,
schade das es keinen sicheren Weg gibt. Gerade da ist es sehr schwer einen Fehler zu finden. Bei meinem „Fehler“ im Anrufmonitor brauchte ich Wochen bis das AHA-Erlebnis kam.

Ralf

@Nall-chan,
werden Actions mit IPS_RunScriptText aufgerufen? Dann müsste eine Action-Routine für meinen ominösen Fehler

24.07.2023 09:02:01 | 00000 | WARNING | ScriptEngine         | Result for Text (Length: 51)

Warning: 
 in /- on line 1

verantworlich sein oder?

Ralf

Ralf

Nein.
Mit IPS_RunAction.
Aber kann natürlich auch so einen Fehler werfen, wenn die Aktion ein Script ausfüht.
Michael

Hi,
schade das man sowas nicht lokalisieren kann. Ich hasse Fehler/Warnungen wenn ich nicht weiß wo die her kommen.

Ralf

Hallo,

ich verwende mehr und mehr Ablaufpläne. Oft für Dinge wie klassische „Treppenhauslicht-Timer“. Diese Ablaufpläne laufen dann recht lange, 5 Minuten und mehr. Das löst dann im Integrity Check immer eine Warnung aus bzgl. zu lange laufendem Skript.

Leider hilft es auch nicht, die betroffenen Ablaufpläne in die Liste der zu ignorierenden Objekte hinzuzufügen. An der Stelle wäre es toll, wenn es eine zusätzliche Kategorie in den Settings gäbe, um bestimmte Skripte & Ablaufpläne von der Threads Prüfung auszuschließen. Oder gar im Ablaufplan selbst einen Kommentar zu hinterlassen, dass dieser bitte ausgeschlossen werden soll.

Was meinst Du, @demel42?

CU
Golo

ja, hört sich nicht falsch an, eine Liste von Scripten/Ablaufpläne zu haben, die von der Prüfung auf Laufzeit ausgeschlossen werden.
Ich schau mal.

1 „Gefällt mir“

Schau mal die 1.14 (Modulstore/Beta), da kann man Script-IDs bei im Panel Threads angeben.

Sollte helfen.

Das funktioniert aber nur bei Scripten und Ablaufplänen, langlaufende Funktionen von Modulen kann man so nicht ausblenden, weil in den Thread-Informationen kein Verweis auf eine bestimmte Instanz (Instanz-ID) vorhanden ist, sondern nur eine Funktionsaufruf - und bestimmte Funktionsname sind nicht so selten

@Dr.Niels : wäre es nicht denkbar, das man die Instanz-ID mit in den Thread-Informationen (IPS_GetScriptThread()) unterbringt?

Der Wunsch kam hier schonmal: IPS_GetScriptThread() - Rückgabe der Instanz-ID von Modulen

Ich habe aber keine Ahnung, wie da der Stand der Dinge ist, da das nicht wirklich meine Baustelle ist :slight_smile:

1 „Gefällt mir“

Cool, danke! Ich habs grade konfiguriert und auf den ersten Test scheint es zu funktionieren.

1 „Gefällt mir“

Moin @demel42,

erstmal vielen Dank für das tolle Modul, welches meine eigenen Skripte schon vor längerer Zeit abglöst hat.

Kann es sein, dass Variablen, Skripte … die unterhalb einer Kategorie liegen deren Objekte nicht berücksichtigt werden sollen, doch mitgezählt werden? Ich bin dabei davon ausgegangen, dass auch darunter liegende Kategorien samt deren Inhalte dann nicht berücksichtigt werden.

Aufgefallen ist mir das weil mir 3 Ablaufpläne angezeigt werden. Diese 3 Test Ablaufpläne liegen in einer Unterkategorie ZZ/Test die unterhalb der nicht zu berücksichtigen Kategorie ZZ liegt.

IP-Symcon 7.0, Windows (amd64), 02.11.2023, 58fc2cba75b1
Integrity Check 1.14

Gruß
Hans

ja, das ist so. Ist aber eventuell eine denkbare Idee, optional Kinder mit auszuschliessen - muss ich mal prüfen.
Bzgl. einer Kategorie gibt es eine spezielles Property „Objekte unterhalb der Kategorie ignorieren“, das ist aber genau eine Kategorie und es muss auch eine Kategorie sein.

Moin,

danke für die schnelle Antwort. Solltest du es ändern können würde ich es begrüßen :slight_smile: Grund ist, dass unterhalb der Kategorie 3 weitere Kategorien liegen für die unterschiedlichen Testprogramme die sich auf HM, IPS bzw. PHP beziehen.

Gruß
Hans

Versuch mal die aktuelle beta (v1.15).
gibt nun einen Schalter in der Objektliste, um das zu steuern

Moin,

ich habe die Kategorie ZZ mit einem Haken für inklusive Kinder versehen. Es ergibt sich aber keine Änderung.

Gruß
Hans

hmm, grübel …
ich muss das morgen nochmal testen, bin aber eigentlich ziemlich sicher, das die Unterobjekte dann auch in der Ignorierliste laden.

Nur damit ich das richtig verstehe

  • die Kategorie ZZ ist in der Liste der zu ignorierenden Objekte
  • darunter ist eine Kategorie „Test“
  • unterhalb von ZZ/Test sind Ablaufpläne, die zb auf eine Variable verweisen, die es nicht mehr gibt.

diese Ablaufpläne sollen nicht geprüft werden

soweit richtig verstanden?

Moin,

ein Bild sagt mehr als 1000 Worte.

grafik

Urprünglich hatte ich angenommen, dass alles unterhalb der Kategorie ZZ ignoriert wird, wenn man die Kategorie ZZ bei „Objekte unterhalb dieser Kategorie ignorieren“ einträgt (so als gäbe es ZZ mit allen Kindern nicht).

Nur unterhalb von ZZ liegen Test Ablaufpläne und diese werden mitgezählt. Dadurch bin ich darauf aufmerksam geworden. Dies gilt auch für Var … Mein Wunsch wäre, dass alles was unterhalb von ZZ liegt komplett ignoriert wird.

Wenn das nun in der Objektliste so realisiert würde, dann wäre es natürlich viel filigraner einstellbar.

Gruß
Hans

Moin,

noch ein Nachtrag. Die Anzahl der z. B. Ablaufpläne hole ich mir mit:

$ErgebnisArray = json_decode(GetValueString(IPS_GetObjectIDByIdent("CheckResult", IPS_GetInstanceListByModuleID('{9BC98F5F-A5F1-7980-D9C9-11C29B64F288}')[0])), true);

Das muss ich morgen nochmals überprüfen. Vielleicht liegt da irgendwo das Problem.

Gruß
Hans

Ich kann es leider nicht nachvollziehen

ID 12345 ist ungültig.

Mit der Einstellung wird die fehlerhafte ID angemeckert

und so nicht mehr

so ist es auch … aber das war ja bereits so vorhanden?? Ich hatte deine Anfrage so verstanden, das man letztendlich beliebig Kinder ausschliessen kann und nicht nur die, die unterhalb der speziell anzugebenden Kategorien liegen.

Nunmehr ist dieses spezielle Attribut

abbildbar über die allgemeine Objekt-Liste und eigentlich überflüssig.

Moin @demel42,

zunächst einmal sorry für die ausgelöste Verwirrung was wirklich nicht meine Absicht war.

Es ging nur darum, dass wenn man die Kategorie ZZ bei „Objekte unterhalb dieser Kategorie ignorieren“ einträgt, dass dann die Objekte auch in CheckResult auftauchten. Mein Verständnis von ignorieren war, dass alles komplett ignoriert wird also auch die Anzahl von Variablen, Ablaufplänen … und das für alle Kinder des zu ignorierenden Objektes. Prüfungen hatte ich damit gar nicht gemeint.

Aber die jetzige Lösung mit den granularen Einstellungen ist wirklich top :slight_smile:

Gruß
Hans