Anhand Deiner Postings kann ich nicht nachprüfen, ob die Werte, die eingestellt sind, im gültigen Bereich sind, auch nicht ob das Profil richtig erstellt ist.
Verwende doch mal zur Erstellung eines Test-Profils folgendes als Auszug aus meinem „Bombastic-Skript“:
<?php
$ObVgrp = 'IP-Geräte'; // aktuelle Gruppe, detaillierte Einstellungen s.u.
$ObV_Profile = 'TestProfil'; // Name des Profils der $ObV_Namen (wird immer neu erstellt).
//...
// Individuelle Daten, reichhaltig kommentiert, legen die Default-Werte fest (für den Fall, dass sie später nicht definiert werden), deshalb nicht verändern!
// Dieses Basis-Beispiel legt alle erforderlichen Werte fest,
// die Konfigurationen im weiteren Abschnitt "Archiv und idividuellen Einstellungen" überschreiben diese oder übernehmen sie
//...
// B.1b Definition der Status (Status: lateinisch für „Zustand“, „Stellung“ oder „Lage“; Plural: Status), bzw. engl.: State, häufig anzutreffen mit falschem lateinischen Plural Stati (entlehnt der o-Deklination) statt lat. statis (richtig als Plural der u-Deklination)
$St_Namen = array ('', 'Anwesend', 'Nachtruhe', 'Unterwegs', 'Urlaub'); // Namen der möglichen Status, die Reihenfolge bleibt horizontal so
$St_Value = 0; // 0 für linearen Wertebereich oder array mit den Werten der möglichen Status in der Reihenfolge der $St_Namen, IPS sortiert die $St_Namen leider in der Reihenfolge von $St_Value
$St_Color = 0; // 0 oder array mit den Farben für die möglichen Status in der Reihenfolge der $St_Namen
$St_Icons = ''; // '' oder array mit den Icons für die möglichen Status in der Reihenfolge der $St_Namen
$St_Param = 0; // 0 oder array mit den Profil-Parametern $Name = '', $Start = 0, $Step = 0, $Stop = 0, $Prefix = "", $Suffix = "" (nur gültig, wenn $St_Value = 0)
$St_NoAkt = 0; // =1: Änderungen im WebFront sind eigentlich garnicht erlaubt und führen zu keiner Aktion der Anzeige weil nur als Anzeige vorgesehen,nur für ganze Gruppe einstellbar
//...
switch ($ObVgrp) {
case 'IP-Geräte':
//...
$St_Namen = array ('AUS', 'EIN'); // Namen der möglichen Status
$St_Value = array (0, 1); // 0 oder array mit den Werten der möglichen Status
$St_Color = array (0xFF0000, 0x00FF00); // Rot/Grün
$St_Param = array ('', 0, 1, 0, '', ''); // array mit den Profil-Parametern $Name = '', $Start = 0, $Step = 0, $Stop = 0, $Prefix = "", $Suffix = "" (nur gültig, wenn $St_Value = 0)
$St_NoAkt = 1; // 1= Änderungen im WebFront sind nicht erlaubt und führen zu keiner Aktion
break;
case 'Elektro_Schalter':
//...
$St_Namen = array ('EIN', 'AUS');
$St_Color = array (0xFF0000, 0x00FF00,); // Rot/Grün
break;
default: // nichts gefunden, also wird nichts angelegt
}
//...
// ------------------------
// I.6a Profil wird immer neu anlegt; nix mit if (!(IPS_VariableProfileExists($ObV_Profile)))
@IPS_DeleteVariableProfile ($ObV_Profile);
if (is_array ($St_Param)) {
if ($St_Param[0] == '') {
CreateProfile_Count ($ObV_Profile, $St_Param[1], $St_Param[2], $St_Param[3], $St_Param[4], $St_Param[5]);
} else {
$ObV_Profile = $St_Param[0];
}
} else {
IPS_CreateVariableProfile ($ObV_Profile, 1);
}
// I.6b
if (is_array ($St_Namen)) {
foreach ($St_Namen as $i => $IdxName) {
$Icon = '';
if (is_array ($St_Icons))
$Icon = $St_Icons[$i];
$Farbe = 0;
if (is_array ($St_Color))
$Farbe = $St_Color[$i];
$St_Wert = $i;
if (is_array ($St_Value)) // $St_Value ist 0 oder array mit den Werten der möglichen Status
$St_Wert = $St_Value[$i];
if ($St_Namen[$i] == "") {
@IPS_SetVariableProfileAssociation ($ObV_Profile, $St_Wert, '', '', $Farbe); // Wenn Name und Icon leer sind, wird die Assoziation zum angegebenen Wert gelöscht
} else {
IPS_SetVariableProfileAssociation ($ObV_Profile, $St_Wert, $St_Namen[$i], $Icon, $Farbe);
}
}
if (is_array ($St_Value)) // $St_Value ist 0 oder array mit den Werten der möglichen Status
$St_Namen = array_combine ($St_Value, $St_Namen); // Bereite Werte-Liste auf
if ($St_Namen === FALSE)
die ("Abbruch: Anzahl der Werte der möglichen Status falsch !!");
} else {
die ("Abbruch: Namen der möglichen Status müssen als Array angelegt werden !!");
}
//
//---- Funktionen
/** Quelle IPSInstaller: Anlegen eines Integer Profils */
function CreateProfile_Count ($Name, $Start = 0, $Step = 0, $Stop = 0, $Prefix = "", $Suffix = "", $Icon = "") {
@IPS_CreateVariableProfile ($Name, 1);
IPS_SetVariableProfileText ($Name, $Prefix, $Suffix);
IPS_SetVariableProfileValues ($Name, $Start, $Stop, $Step);
IPS_SetVariableProfileDigits ($Name, 0);
IPS_SetVariableProfileIcon ($Name, $Icon);
echo 'Created VariableProfile ' . $Name . "
";
}
// ------------------ Ende
?>
Beim Setzen von $ObVgrp = ‚IP-Geräte‘ wird ein Button EIN/AUS auf einem Fleck erzeugt.
Bei $ObVgrp = ‚Elektro_Schalter‘ sitzen die Schaltfelder nebeneinander.
Bitte Meldung, falls irgend ein Fehler bei dem Skript-Auszug auftritt (vielleicht hab ich eine Funktion vergessen). (Uuups, ich hatte das PHP-Ende vergessen)
Viele Grüsse
Harald