Variablenprofil inaktiver Werte auslesen möglich?

Hallo,
ist es eigentlich möglich ein Variablenprofil auszulesen? Ich meine jetzt konkret, wenn ich eine Variable habe, welche unter „Anzeige“ beispielsweise „vier“ Werte hinterlegt hat. siehe Bild. Die Variable selber hat jetzt beispielsweise den Wert 3, also mit formatted erhalte ich dann eben „Badlicht“. Was aber wenn ich eine for-Schleife bauen will. Kann ich den array wie in bild gezeigt sozusagen durchsuchen? …welchen „formatted“ wert hast du wenn du wert 1 oder 2 hättest? …wieviele werte hast du überhaupst auf diese weise abgespeichert? usw.

Mfg, Hinti

ipsfr1.gif


print_r(IPS_GetVariableProfile("~Switch"));

paresy

function getVariableProfile ($variableID)
{
    $variable = IPS_GetVariable($variableID);
    $profileName = strlen($variable['VariableCustomProfile'] > 0) ? $variable['VariableCustomProfile'] : $variable['VariableProfile'];
    return (IPS_VariableProfileExists($profileName) ? IPS_GetVariableProfile($profileName) : array());
}

print_r(getVariableProfile(12345));

Gibt das Variablenprofil als Array zurück. Ist kein Profil gesetzt wird ein leeres Array zurückgegeben. In Associations findest Du dann die Wertpaare.

perfekt :slight_smile:
danke euch beiden.

Für alle die das vielleicht auch mal brauchen können poste ich hier mal einen part von einem script,
mit dem man zum einen eine schleife der länge der „Associations“ eines Profils anwendet,

Und zum zweiten (denn darum gehts mir hier dann in folge), wie ich die im webfront im string abgespeicherte zeit in einen brauchbaren float wert umsetzen kann (um den echten timer zu setzen), und wieder zurück zum string, quasi als mathematische Probe :rolleyes:


<?
/*
$t1_kaffeebar;
$t2_stehlampe;
$t3_badelicht;
$t4_buerolamp;
*/

$ProfilArray = IPS_GetVariableProfile("TimerAuswahl"); /* Profilname! */
$Len = sizeof($ProfilArray["Associations"]); /* Anzahl Einträge */

for ($i = 0; $i < $Len; $i++)
{
	echo $ProfilArray["Associations"][$i]["Value"].": ";
	echo $ProfilArray["Associations"][$i]["Name"].": ";
	echo GetValueString(IPS_GetVariableID($i +1)).": ";
	$x = (float)strtotime(GetValueString(IPS_GetVariableID($i +1)));
	echo $x.": ";
	echo strftime("%H:%M",$x);
	echo "
";
}

?>

Und die entsprechende echo Ausgabe zum obigen script, natürlich an meinem Beispiel angewendet:

1: Licht Kaffeebar: 01:30: 1250551800: 01:30
2: Stehlampe WZ: 01:00: 1250550000: 01:00
3: Badlicht: 02:30: 1250555400: 02:30
4: Büroleuchte: 03:00: 1250557200: 03:00