Variable aus Skript erstellen in Kategorie

Hallo,

wie der Titel schon sagt möchte ich gerne aus einem Script heraus automatisch Variablen erzeugen lassen.

Dies funktioniert aktuell auch so:

SetValue(CreateVariableByName($_IPS['SELF'], "Aktuelle Location", 3, "~String"), $actWeather_location);

function CreateVariableByName($id, $name, $type, $profile = "")
{
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}

Das ist ein Teil aus dem Weather script.

Was ich aber möchte ist, nicht die Variablen innerhalb des Scriptes zu erzeugen, sondern in einer Kategorie innerhalb des Scriptes. Hintergrund ist, dass es relativ viele werden und ich diese zwecks besserer Lesbarkeit sortieren möchte.

LG
Sven

Dann erstelle eine Kategorie und setze diese für die Variablen als Parent.

danke für deine Hilfe,

ich habe das vorhandene Script leicht abgewandelt und zunächst geprüft ob die kategorie existiert, wie in der abfrage für die variable, ggf angelegt und dann statt der ID in CreateVariable eben die ParentId umgeschrieben.

danke für den tip:

der aufruf:

SetValue(CreateVariableByName('Aktuell', "_Assoziation Aktuell", 1, ""), $asso);

die function

//------------------------------------------------------------------------------------------//
function CreateVariableByName($id, $name, $type, $profile = "") //$category
{
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;

    // Anlegen von Kategorien "Aktuell, Heute, Morgen, Uebermorgen, Ueberuebermorgen"
    $NewCatID = @IPS_GetCategoryIDByName("Aktuell", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Aktuell");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    if ($id <> $_IPS['SELF']) { $CatID = @IPS_GetCategoryIDByName($id, $_IPS['SELF']); }
    else { $CatID = $id; }

    // Anlegen der Variablen
    $VarID = @IPS_GetVariableIDByName($name, $CatID);
    if($VarID === false)
    {
        $VarID = IPS_CreateVariable($type);
        IPS_SetParent($VarID, $CatID);
        IPS_SetName($VarID, $name);
        IPS_SetInfo($VarID, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($VarID, $profile); }
    }
    return $VarID;
}

Unter dem Stichwort IPSInstaller findest Du jede Menge Skripte um IPS-Objekte automatisch anzulegen.

Viele Grüsse
Harald