IPSLibery in ein bestimmtes WF installieren

Hallo
Ich habe mehrere Webfronts. Wenn ich das Baseloader-Skript ausführe wird der Modulmanager, Logger usw. in eines der Webfronts installiert. Ich möchte aber die Installation in einen anderen Webfront haben. Kann man irgendwo einstellen, in welches Webfront die IPSLibery installiert wird?

MfG
computerpap

Hallo computerpap,
wenn Du das Baseloader-Script ausgeführt hast, wird unter anderem auch die IPSModuleManagerGUI installiert. Wenn du den im WF öffnest, kannst du bei den einzelnen Modulen auf den Button Installations Wizard klicken und dort dein WF auswählen. Dann wieder auf installieren drücken.

Grüße, Jürgen

Hallo Jürgen

Danke für deine Hilfe. Wie ich die Module in verschiedene WF installiere, ist klar. Mich interessiert, ob ich alles was beim Ausführen des Baseloader-Skriptes installiert wird (IPSModuleManagerGUI, IPSLogger), auch in ein bestimmtes WF installieren kann.

MfG
computerpap

Ist möglich, man muss in diesem Fall zuerst den Module Manager laden, danach die korrekte WebFront ID im IPSModuleManager.ini File setzen und dann den Rest installieren.

Hallo
Versteh ich das richtig, das ich bei dieser „Installationsart“ statt des Baseloaderscriptes alle einzelnen Bestandteile der IPSLibery auch separat installieren muß?
Wo kann ich den ModulManager downloaden?

MfG
computerpap

So könnte es klappen:

1.) IPSModuleManager laden


<?
    // Repository
    $repository = 'https://raw.github.com/brownson/IPSLibrary/Development/';

    // Download BaseLoader Script 
    $remoteFile = $repository.'IPSLibrary/install/BaseLoader/IPSLibrary_BaseLoader.ips.php';
    $localFile  = IPS_GetKernelDir().'scripts\\IPSLibrary_BaseLoader.ips.php';

    $curl_handle=curl_init();
    curl_setopt($curl_handle, CURLOPT_URL,$remoteFile);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,5);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_handle, CURLOPT_FAILONERROR, true);
    $fileContent = curl_exec($curl_handle);
    curl_close($curl_handle);
    if ($fileContent===false) {
        throw new Exception('Download of File '.$remoteFile.' failed !!!');
    }

    if (!file_put_contents($localFile, $fileContent)) {
        throw new Exception('Create File '.$localFile.' failed!');
    }

    // Execute Baseloader Script
    include $localFile;
?>

2.) ID=12345 im File IPSModuleManager.ini setzen

3.) restlichen Module installieren


<?
    // Repository
    $repository = 'https://raw.github.com/brownson/IPSLibrary/Development/';

    // Load and Install IPSLogger
    IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
    $moduleManager = new IPSModuleManager('IPSLogger', $repository);
    $moduleManager->LoadModule();
    $moduleManager->InstallModule('');

    // Load and Install IPSModuleManagerGUI
    IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
    $moduleManager = new IPSModuleManager('IPSModuleManagerGUI', $repository);
    $moduleManager->LoadModule();
    $moduleManager->InstallModule('');

    // Load and Install IPSComponent
    IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
    $moduleManager = new IPSModuleManager('IPSComponent', $repository);
    $moduleManager->LoadModule();
    $moduleManager->InstallModule('');

    // Load and Install IPSMessageHandler
    IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
    $moduleManager = new IPSModuleManager('IPSMessageHandler', $repository);
    $moduleManager->LoadModule();
    $moduleManager->InstallModule('');
?>

Hallo
Wenn ich das erste Script ausführe, kommen folgende Fehlermeldungen:


Warning: include_once(D:\Programme\IP-Symcon\\scripts\IPSLibrary\app\core\IPSUtils\IPSUtils.inc.php): failed to open stream: No such file or directory in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[0] in function include_once in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[1] in function require_once in D:\Programme\IP-Symcon\scripts\__autoinclude.inc.php on line 75

Warning: include_once(): Failed opening 'D:\Programme\IP-Symcon\\scripts\IPSLibrary\app\core\IPSUtils\IPSUtils.inc.php' for inclusion (include_path='.;C:\php\pear') in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[0] in function include_once in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[1] in function require_once in D:\Programme\IP-Symcon\scripts\__autoinclude.inc.php on line 75

Fatal error:  Call to undefined function IPSUtils_Include() in D:\Programme\IP-Symcon\scripts\__autoload.php on line 4

Genau die selben Fehler wie oben werden jetzt auch im Browser angezeigt, wenn ich ein WF aufrufe.:frowning:


Warning: include_once(D:\Programme\IP-Symcon\\scripts\IPSLibrary\app\core\IPSUtils\IPSUtils.inc.php): failed to open stream: No such file or directory in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[0] in function include_once in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[1] in function require_once in D:\Programme\IP-Symcon\scripts\__autoinclude.inc.php on line 75

Warning: include_once(): Failed opening 'D:\Programme\IP-Symcon\\scripts\IPSLibrary\app\core\IPSUtils\IPSUtils.inc.php' for inclusion (include_path='.;C:\php\pear') in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[0] in function include_once in D:\Programme\IP-Symcon\scripts\__autoload.php on line 3
[1] in function require_once in D:\Programme\IP-Symcon\scripts\__autoinclude.inc.php on line 75

Fatal error: Call to undefined function IPSUtils_Include() in D:\Programme\IP-Symcon\scripts\__autoload.php on line 4

Ich hoffe ihr könnt mir helfen!

Du hast vermutlich die Files der IPSLibrary manuell gelöscht, in diesem Fall musst Du auch die Einträge in der Datei __autoload.php manuell entfernen, danach sollte es wieder klappen.

Jetzt kann ich schon mal wieder die WF-Auswahlseite öffnen, allerdings mit 2 Fehlermeldungen (siehe Anhang).
Die Fehler werden auch beim Start der drei Webfronts angezeigt, sonst nichts.
Hier mal noch meine __autoload.php und __autoinclude.inc.php, ich denke dort wird der Fehler sein, nur da hab ich keinen richtigen Durchblick.

__autoload.php


<?
   include_once IPS_GetKernelDir()."\scripts\IPSLibrary\app\core\IPSUtils\IPSUtils.inc.php";
?>

__autoinclude.inc.php


<?

if($_IPS['SENDER'] == "RunScript")
{
    $IPS_SENDER = $_IPS['SENDER'];
    $IPS_SELF = $_IPS['SELF'];
    $IPS_THREAD = $_IPS['THREAD'];
    foreach($_IPS as $key => $val)
    {
        if(!in_array($key, Array("SENDER", "SELF", "THREAD")))
        {
            ${$key} = $val;
        }
    }
} else {
    foreach($_IPS as $key => $val)
    {
        ${"IPS_".$key} = $val;
    }
}

switch($_IPS['SENDER'])
{
    case "HeatingControl":
        $HC_INSTANCES = $_IPS['INSTANCES'];
        $HC_INVERTS = $_IPS['INVERTS'];
        $HC_VALUE = $_IPS['VALUE'];
        break;
    case "ShutterControl":
        $SC_INSTANCE = $_IPS['INSTANCE'];
        $SC_INSTANCE2 = $_IPS['INSTANCE2'];
        $SC_DIRECTION = $_IPS['DIRECTION'];
        $SC_DURATION = $_IPS['DURATION'];
        break;
    case "ISDN":
        $ISDN_CONNECTION = $_IPS['CONNECTION'];
        $ISDN_EVENT = $_IPS['EVENT'];
        $ISDN_DATA = $_IPS['DATA'];
        break;
    case "WebFront":
        $REMOTE_ADDR = $_IPS['REMOTE_ADDR'];
        break;
    case "Designer":
        $REMOTE_ADDR = $_IPS['REMOTE_ADDR'];
        $REMOTE_HOST = $_IPS['REMOTE_HOST'];
        break;
}

if(file_exists("__autoload.php"))
    require_once("__autoload.php");


if (!function_exists('IPS_StatusVariableExists'))
{
    function IPS_StatusVariableExists($InstanceID, $VariableIdent)
    {
        return !(@IPS_GetObjectIDByIdent($VariableIdent, $InstanceID) === false);
    }
}

if (!function_exists('IPS_GetStatusVariable'))
{
    function IPS_GetStatusVariable($InstanceID, $VariableIdent)
    {
       $id = IPS_GetObjectIDByIdent($VariableIdent, $InstanceID);
       $v = IPS_GetVariable($id);
       return Array(
            "VariableID" => $id,
            "VariableIdent" => $VariableIdent,
            "VariableName" => "N/A",
            "VariablePosition" => 0,
            "VariableProfile" => $v['VariableProfile'],
            "VariableType" => $v['VariableValue']['ValueType'],
            "VariableHasAction" => ($v['VariableAction'] > 0),
            "VariableUseAction" => ($v['VariableAction'] > 0)
        );
    }
}

if (!function_exists('IPS_GetStatusVariableIdents'))
{
    function IPS_GetStatusVariableIdents($InstanceID)
    {
        $r = Array();
        $cids = IPS_GetChildrenIDs($InstanceID);
        foreach($cids as $cid)
        {
           $o = IPS_GetObject($cid);
           if($o['ObjectIdent'] != "")
              $r[] = $o['ObjectIdent'];
        }
        return $r;
    }
}

if (!function_exists('IPS_GetStatusVariableID'))
{
    function IPS_GetStatusVariableID($InstanceID, $VariableIdent)
    {
        return IPS_GetObjectIDByIdent($VariableIdent, $InstanceID);
    }
}
?>

Problem gelöst, gab es hier schon mal.

So, der Modulmanager ist im richtigen WF installiert, das hat schon mal geklappt.
Wenn ich dann das Script für die Installation der einzelnen Module ausführe, gibt es u.a. folgende Scriptausgabe:


IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.45  Script jquery.min.js NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.45  Script IPSModuleManagerGUI NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.45  Script IPSModuleManagerGUI_Overview NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.45  Script IPSModuleManagerGUI_Updates NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.45  Script IPSModuleManagerGUI_Logs NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.46  Script IPSModuleManagerGUI_LogFile NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.46  Script IPSModuleManagerGUI_NewModule NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.46  Script IPSModuleManagerGUI_Module NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.46  Script IPSModuleManagerGUI_Wizard NOT registered (Filepath)
IPSModuleManager-Log-IPSScriptHandler    2013-01-04 19:07:58.46  Script IPSModuleManagerGUI_Receiver NOT registered (Filepath)

File IPSWatering_Configuration.inc.php not exists (Namespace=IPSLibrary\config\modules\IPSWatering\Default\)
File IPSWatering_Configuration.inc.php not exists (Namespace=IPSLibrary\config\modules\IPSWatering\)
File IPSLogger_Configuration.inc.php not exists (Namespace=IPSLibrary\config\core\IPSLogger\Default\)
File IPSLogger_Configuration.inc.php not exists (Namespace=IPSLibrary\config\core\IPSLogger\)

Im Forum wurde das Problem schon besprochen und durch folgende Änderungen gelöst:
Original

$moduleManager->InstallModule('');

Änderung

$moduleManager->InstallModule(true);

Allerdings hat das bei mir nichts gebracht.
Wenn ich das WF öffne kommt unter IPSLibrary folgender Fehler:


Fatal Error: Call to undefined function IPSUtils_Include() in D:\Programme\IP-Symcon\webfront7
\user\IPSModuleManagerGUI\IPSModuleManagerGUI.php on Line 120

Keiner da, der mir ansatzweise zu dem obigen Problem helfen kann?

Das Baseloader Script sollte dieses Problem beheben, was ist der Output, gibt es einen Fehler ?

Fehler im Scriptausgang gibt es keine. Was mir im Scriptausgang aufgefallen ist, habe ich im Beitrag 11 geschrieben, ich weiß aber nicht so recht, ob das mit dem Fehler im WF zu tun hat.
Im Anhang der komplette Scriptausgang von beiden Scripten.

Module_install.txt (64.4 KB)

ModulManager_install.txt (18 KB)

Problem gelöst, es lag in der __autoinclude.inc.php!