Status von Events abfragen

Hi zusammen,
erstmal vielen Dank für das Skript/Modul. Ein Verständnisfrage hätte ich aber. Warum ist das Modul der Meinung diese Datei gibt es nicht?

Gruß
Pascal

Hi,
es gab in dem Modul eine bessernder Behandlung von Dateien mit dem Muster *.inc.php.
Warum, weis ich nicht mehr so genau, ist umgebaut und verfügbar im ModulStore/beta

Prima, auf den Betachannel hätte ich auch selbst kommen können :smiley: probier ich direkt. Hab davon gelesen im Thread, bin aber irgendwie davon ausgegangen, dass es im stable ist. Danke!

nee, der Fix ist neu in Beta

Jup und schon isses weg. Danke :wink:

Hallo,
gibt’s zum Modul eine eigene Seite für Kommentare, etc?
Wohl nicht oder nicht gefunden, also geht es hier weiter:
Habe das Update eingespielt und kann das Konfigurationsformular nicht mehr öffnen:

Konnte Konfigurationsform nicht laden
Warning: Modul hat fehlerhafte library.json in /var/lib/symcon/modules/.store/demel42.symcon.integrity/libs/common.php on line 165

Grüße, Gerhard

Hmm, eine Seite sollte ich mal einrichten …
Die Meldung ist ja schon spannend, ist unverändert


    "id": "{673E38D6-DB64-2834-28EE-26B338A9A5C2}",
    "name": "Integrity Check",
    "author": "Ch. Damsky",
    "url": "https://github.com/demel42/IPSymconIntegrityCheck",
    "compatibility": {
        "version": "5.5"
    },
    "version": "1.3",
    "build": 0,
    "date": 1639134017
}

Der MODUL VALIDATOR meckert

Wenn ich den Wert von version von 5.5 auf 5.3 ändere, geht’s, aber der Wert schon lange drin. 5.4 geht wieder nicht.

@paresy: gibt es eine Idee, woher das kommt?

ich habe ein anderes Modul

{
        "id": "{CCB22FB7-9262-4387-98E4-256A07E37816}",
        "author": "Ch. Damsky",
        "name": "Hydrawise",
        "url": "https://github.com/demel42/IPSymconHydrawise",
        "compatibility": {
                "version": "5.4"
        },
        "version": "1.26",
        "build": 0,
        "date": 1637486434
}

und das kann ich im IPS öffnen (obwohl 5.4).

Bin auf einer 6.0 (IP-Symcon 6.0, Ubuntu (amd64), 28.08.2021, 883beea87a99)

demel

Du weißt doch gar nicht auf welches Modul Symcon hier die Meldung bei MC_GetModule auswirft.
Du fragst in deinem Code doch alle Module des Modul-Control ab, und wenn da eins kaputt ist, kommt die Meldung.
Michael

Ja, aber es passiert beim Öffnen der Konfigurationsseite dieses Moduls, da kommt der Fehler.
Konnte ich selbst bei mir nachvollziehen.

Dann hatte ich die library.json von meinem Modul in dem Symcon Modul-Validator geprüft und die o.g. Meldung bekommen.

Ich kann da natürlich einen anderen Wert in compatibilty.version setzen, aber das betrifft potentiell mehrere meiner Module.
demel

Der Validator der Website und die IPS Funktion MC_GetModule haben doch gar keine Beziehung zueinander.
Der Validator ist vermutlich nicht aktuell, und kann nur bis 5.3 prüfen.
Hast doch selber geschrieben:

Somit ist es kein Fehler der JSON.
Die wird auch nicht beim öffnen der Konfig einer Instanz geladen oder geprüft.
Sondern nur wenn das Modul geladen wird (LogFile, Meldung im MC) oder wenn du halt MC_GetModule benutzt.

Wenn die Meldung mit Fehler in Zeile 165 in /demel42.symcon.integrity/libs/common.php beim öffnen der Konfig kommt, dann musst du ja PHP Code haben welche diese Zeile durch GetConfigurationForm erreicht.
Welches Modul jetzt aber betroffen ist, weiß du nicht, da alle Module in der Foreach Schleife durchlaufen werden.
Michael

Ok, das macht Sinn.

du hast natürlich recht, ich hatte überlesen, das der Fehler in common.php auftritt
ja, und ich sehe das Problem, ich habe in meinem git-Verzeichnis Mist stehe …
wie doof & vielen Dank
das muss ich in meiner Funktion abfangen, kann man ja nicht verhindern und darf nicht zu einem Absturz führen …

@GerhardBS: morgen fixe ich das

demel

@demel42 Habe die Validierung mal gefixt. Kommt dann mit dem nächsten Update der Webseite online! Danke für den Fund!

paresy

@GerhardBS: ich habe eine neue Version in den Modulstore/Beta eingestellt.
Der Grund war (vermutlich), das du in deinem Git-Verzeichnis Verzeichnisse hast, die keine IPS-Module sind.
Die müssten auch unter KernModule angemeckert werden.
Das wird nun abgefangen.
Bitte Info nach Test, damit ich das wieder als stabile übernehmen kann
demel

Hallo demel,

es der Integrity-Test funktioniert wieder und unter Kern → Module Control war tatsächlich noch ein angefangenes Modul mit Fehler. Das ist jetzt auch wieder weg.

Danke, Gerhard

Hi Demel42,
ich hätte da vielleicht eine Idee für ein neues Modul a la ccCleaner oder BleachBit. Einige Module erzeugen Variablen oder Profile die vielleicht nie gebraucht werden. Ich habe mal ein Script geschrieben das alle unbenutzten Variablen bzw. Profile listet. Bei mir habe ich 322 unbenutzte Variablen und 250 unbenutzte Profile gefunden.

Als unbenutzte Variable gilt wenn es kein Aktualisierungsdatum und keine Aktionsroutine gibt.

Als unbenutztes Profil gilt wenn es keiner Variablen zugewiesen ist und nicht mit ‚~‘ anfängt, da es vermutlich Standardprofile sind.

Für Benutzer die „nur“ die Basic- oder Professional-Version von IPS benutzen könnte speziell die Variablenprüfung sehr interessant sein.

Hier mal das Script:

<?php
// unbenutzte Variablen suchen
$VariableIDs = IPS_GetVariableList();
$VariableCount = count($VariableIDs);
$UnusedVariables = 0;

for ($i = 0; $i < $VariableCount; $i++){
    $Variable = IPS_GetVariable($VariableIDs[$i]);
    if (($Variable['VariableUpdated'] == 0) && ($Variable['VariableAction'] == 0)){
        $UnusedVariables++;
        echo $VariableIDs[$i] . ':' . IPS_GetName($VariableIDs[$i]) . PHP_EOL;
    }
}
echo PHP_EOL . 'Anzahl unbenutzter Variablen:' . $UnusedVariables . PHP_EOL . PHP_EOL;

// unbenutzte Profile suchen
//$VariableIDs = IPS_GetVariableList();
//$VariableCount = count($VariableIDs);

$UsedProfiles = array();
for ($i = 0; $i < $VariableCount; $i++){
    $Variable = IPS_GetVariable($VariableIDs[$i]);
    if (isset($UsedProfiles[$Variable['VariableProfile']])) $UsedProfiles[$Variable['VariableProfile']]++;
    else $UsedProfiles[$Variable['VariableProfile']] = 1;
    if (isset($UsedProfiles[$Variable['VariableCustomProfile']])) $UsedProfiles[$Variable['VariableCustomProfile']]++;
    else $UsedProfiles[$Variable['VariableCustomProfile']] = 1;
}
$Profiles = IPS_GetVariableProfileList();
echo 'Anzahl unbenutzter Profile:' . (count($Profiles) - count($UsedProfiles)) . PHP_EOL . PHP_EOL;
foreach ($Profiles as $Profile){
    if ($Profile[0] != '~'){
        if (!isset($UsedProfiles[$Profile])) echo $Profile . PHP_EOL;
    }
}
?>

Ralf

Das ist aber die Anzahl benutzter Profile, oder?

Gruß Heiko

Hi,
stimmt scheint so. Script sollte anfangs anders aussehen aber ich bin immer wieder auf die Meldung gestoßen das ich, warum auch immer, > 1048576(0?) Byte haben möchte und das nicht geht.

Edit: habs oben geändert. Ich habe jetzt nur 250 ungenutzte Profile.

Ralf

Anzahl unbenutzter Variablen:91

Anzahl unbenutzter Profile:696 (!!!)

Hilfe und Danke für das Skript.
Wie kann ich sie maschinell löschen?

<?php
$variablen=IPS_GetVariableList();
foreach (IPS_GetVariableProfileList() as $profil)
{
    $gefunden=false;
    foreach ($variablen as $variable)
    {
        if ($profil == IPS_GetVariable($variable)["VariableProfile"] or $profil == IPS_GetVariable($variable)["VariableCustomProfile"]) $gefunden=true;
    }
    if (!$gefunden and substr($profil,0,1)!="~")
    {
        var_dump($profil." ".$gefunden);
        IPS_DeleteVariableProfile($profil);
    }
}

Für die Profile hab ich mir was gebastelt. Aber ohne Gewähr und Pistole :wink:

Hast du es denn schon getestet? :stuck_out_tongue:

Damit ich das Skript verstehe: Wo überprüfst du denn ob es benutzt wird?

Danke und lg
Chri