Development – IPSModuleManager Funktionen

Verwalten von Modulen

Hinzufügen eines Modules

Die Installation eines Modules gliedert sich in 3 Teile:

  • Laden des Modules, in dieser Phase werden die erforderlichen Dateien des Modules aus dem Repository geladen
  • Konfigurieren des Modules, ist nicht bei jedem Module nötig, Details über die jeweilige Konfiguration kann der jeweiligen Module Dokumentation entnommen werden.
  • Installation des Modules, bei der Installation werden anhand der Konfiguration alle Variablen, Event und sonstigen Objecte in IP-Symcon erzeugt.

Laden eines Modules

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>');
   $moduleManager->LoadModule();

Konfigurieren eines Modules

Muss derzeit immer manuell im jeweiligen Konfigurations File des Modules gemacht werden.

Installieren eines Modules

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>');
   $moduleManager->InstallModule();

Update eines Modules

Der IPSModuleManager bietet die Möglichkeit für ein automatisches Update der Module auf eine neuere Version.

Die Update Funktion holt lädt zuerst eine aktuelle Version aller Files aus dem Repository und ruft auch automatisch das Installations Script auf, wenn sich die Versionsnummer des Modules geändert hat.

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>');
   $moduleManager->UpdateModule();

Sollte vom User nachträglich die Konfiguration geändert werden, so ist teilweise ein erneutes Ausführen des Installations Scriptes notwendig (siehe Punkt Installieren eines Modules). Ob bei dem jeweiligen Konfigurations Parameter eine Installation notwendig ist, ist der jeweiligen Modul Konfigurations Dokumentation zu entnehmen.

Löschen eines Modules

Es gibt auch die Möglichkeit Module wieder zu deinstallieren. Dabei werden alle Objekte, die in IP-Symcon angelegt worden sind wieder gelöscht.

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>');
   $moduleManager->DeleteModule();

Allgemeine Funktionen

Liste der installierten Module

Die Funktion GetInstalledModules liefert eine Liste der installierten Module mit einigen Status Informationen des Modules

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('');
   $installedModules = $moduleManager->GetInstalledModules();

Aufbau

array(<<ModuleName>> => array(<<Version>>,<<State>>,<<Description>>))

Beispiel:

Array
(
    [IPSModuleManager] => Array
        (
            [0] => 2.50.0
            [1] => Loading
            [2] => Modul Verwaltung der IPSLibrary
        )

    [IPSLogger] => Array
        (
            [0] => 2.50.1.Beta
            [1] => 
            [2] => Logging Handler, Protokollierung von Fehlern
        )

    [IPSComponent] => Array
        (
            [0] => 2.50.1
            [1] => Loaded
            [2] => Abstraktions Schicht zur Ansteuerung der Hardware
        )

)

Liste aller verfügbaren Module

Die Funktion GetAvailableModules liefert eine Liste aller verfügbaren Module mit einigen Zusatz Informationen des Modules

    IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
    $moduleManager    = new IPSModuleManager('');
    $moduleManager->VersionHandler()->GetKnownModules();

Aufbau

array(<<ModuleName>> => array(<<ModulePath>>,<<Description>>))

Beispiel:

Array
(
    [IPSModuleManager] => Array
        (
            [0] => IPSLibrary.install
            [1] => Modul Verwaltung der IPSLibrary
        )

    [IPSLogger] => Array
        (
            [0] => IPSLibrary.core
            [1] => Logging Handler der IPSLibrary
        )

    [IPSComponent] => Array
        (
            [0] => IPSLibrary.core
            [1] => Abstraktions Schicht zur Ansteuerung der Hardware
        )
    [NetPlayer] => Array
        (
            [0] => IPSLibrary.modules
            [1] => Audio Player zum Abspielen von MP3s und Internet Radios
        )
    [IPSTwillight] => Array
        (
            [0] => IPSLibrary.modules.Wetter
            [1] => Berechnung und Visualisierung der täglichen Dämmerungszeiten
        )

)

Weitere nützliche Funktionen

ID des Konfigurations Scriptes

Die Funktion „GetConfigurationObjectId“ liefert die ID des Scriptes, in dem die Konfiguration des jeweiligen Modules abgelegt ist

$id = $moduleManager->GetConfigurationObjectId();

Name des aktuellen Installer LogFiles

Mit der Funktion „GetLogFileName“ ist es möglich den Namen des aktuell benützen Log Files zu ermitteln

$id = $moduleManager->GetLogFileName();

Weiterführende Links

IPSLibrary Main Thread

IPSLibrary Diskussions Thread

IPSLibrary Development Environment

Umgang mit verschiedenen Repositories

Der IPSModuleManager bietet zur Angabe eines Repositories mehrere Möglichkeiten:

  • Initialization File
  • Erzeugen des IPSModuleManager Objektes
  • Funktions Aufruf

Initialisierungs File

Das Initialisierungs File des IPSModuleManagers wird bereits durch den BaseLoader angelegt und enthält den Default Wert des Repositories, wenn sonst nichts angegeben wird. Das File ist unter IPSLibrary/install/InitializationFiles/IPSModuleManager.ini zu finden und der entsprechende Eintrag ist „SourceRepository“.

SourceRepository="https://raw.github.com/brownson/IPSLibrary/master/"

Objekt IPSModuleManager

Nächste Stufe zur Angabe ist der Objekt Konstruktor des IPSModuleManagers

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>', '<<PathToIPSLibrary>>');
   $moduleManager->LoadModule();

Funktions Aufruf

Zusätzlich gibt es noch die Möglichkeit zur Angabe des Repositories in den verschiedenen Funktionen. Diese Angaben haben die höchste Priorität. Ist beim Funktionsaufruf nichts angegeben, wird versucht den Wert zu nehmen, der beim erzeugen des Objektes angegeben wurde. Ist auch dort nichts angegeben, wird der Default Wert aus dem Initialisierung File genommen.

   IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>');
   $moduleManager->DeployModule('C:\GIT\IPSLibrary');
   $moduleManager->UpdateModule('C:\GIT\IPSLibrary');
   $moduleManager->LoadModule('C:\GIT\IPSLibrary');