Hallo,
was ist damit, die Variable auf -1 zu setzen? Ist das auch ein gültiger Wert?
Ansonsten kannst Du Sie einfach löschen per
IPS_DeleteVariable ( integer $VariablenID )
(IPS_DeleteVariable: IP-Symcon :: Automatisierungssoftware) und wieder neu anlegen
IPS_CreateVariable ( integer $VariablenTyp )
(IPS_DeleteVariable: IP-Symcon :: Automatisierungssoftware). Dann ist Sie nie aktualisiert …
Danach musst Du Sie eventuell noch das VariablenProfil und die CustomAction zuweisen und Sie im Baum in die richtige Kategorie verschieben.
Eigentlich sollte das dein Problem lösen.
Der folgende Code ist etwas aus dem Zusammenhang gerissen, aber macht genau das innerhalb einer Schleife, die den Heizplan für den heutigen Tag neu erstellt. Erst werden alle alten Variablen in der Kategorie des heutigen Tages gelöscht und dann neu erstellt (für alle Räume und alle Zeiten) und initialisiert.
// alte Variablen der vergangenen Woche lschen
$childrenIDsToday = IPS_GetChildrenIDs($todayRootNode);
$this->configObject->showEnvironmentDebugMessage("Heizplan vorheriger ". date("l") .":","heizungssteuerung_createHeizplan.class[initialzing]",9);
for ($i = 0; $i < count($childrenIDsToday); $i++) {
$actualVariableID = $childrenIDsToday[$i];
$actualVariableName = IPS_GetName($actualVariableID);
$this->configObject->showEnvironmentDebugMessage(" ". $actualVariableName ,"heizungssteuerung_createHeizplan.class[initialzing]",9);
// Variable lschen
$result = IPS_DeleteVariable($actualVariableID);
$this->checkResult($result,"die by deleting Variable ". $actualVariableID ."(". $actualVariableName .")",$SCRIPT_ID_NAME);
$this->configObject->showEnvironmentDebugMessage(
"Variable ". $actualVariableID . " (". $actualVariableName .") erfolgreich gelscht","heizungssteuerung_createHeizplan.class[initialzing]",8);
}
// neu anzulegende Variablen erstellen:
$zeitProfile = $this->configObject->getZeitProfile();
foreach ($zeitProfile as $raumName => $raumValue) {
// echo " ". $keyI . "<br>
";
foreach ($raumValue as $zeit) {
// Variable erstellen:
$variableID = IPS_CreateVariable($configConstantsArray['IPSCreateVariableBoolean']);
$this->configObject->showEnvironmentDebugMessage(
"Variable ". $variableID . " wurde erstellt","heizungssteuerung_createHeizplan.class[initialzing]",7);
$variableName = $raumName . " - ". $zeit;
$result = IPS_SetName($variableID,$variableName);
$this->checkResult ($result,"die by setting Name to DynamicVariable ". $variableName ,$SCRIPT_ID_NAME);
$this->configObject->showEnvironmentDebugMessage(
"Variable ". $variableID . " umbenannt in: ". $variableName,"heizungssteuerung_createHeizplan.class[initialzing]",7);
//CustomProfile setzen:
$result = IPS_SetVariableCustomProfile($variableID,$configConstantsArray['WebFrontVariableProfileName']);
$this->checkResult ($result,"die by setting CustomProfile ". $variableID ." to DynamicVariable ". $configConstantsArray['WebFrontVariableProfileName'],$SCRIPT_ID_NAME);
$this->configObject->showEnvironmentDebugMessage(
"Variable ". $variableID . ' CustomProfil : "'. $configConstantsArray['WebFrontVariableProfileName'] .'" zugewiesen',"heizungssteuerung_createHeizplan.class[initialzing]",7);
// CustomAktion setzen:
$result = IPS_SetVariableCustomAction($variableID,$configConstantsArray['WebFrontChangeBooleanScriptObjectID']);
$this->checkResult ($result,"die by setting CustomAction ". $variableID ." to DynamicVariable ". $configConstantsArray['WebFrontChangeBooleanScriptObjectID'],$SCRIPT_ID_NAME);
$this->configObject->showEnvironmentDebugMessage(
"Variable ". $variableID . ' CustomAction : "'. $configConstantsArray['WebFrontChangeBooleanScriptObjectID'] .'" zugewiesen',"heizungssteuerung_createHeizplan.class[initialzing]",7);
// Variable im Logischen Baum einordnen:
$result = IPS_SetParent($variableID,$todayRootNode);
$this->checkResult($result,"die by moving ". $variableID ." to RootNode (". $todayRootNode .")",$SCRIPT_ID_NAME);
$this->configObject->showEnvironmentDebugMessage(
"Variable ". $variableID . ' im Baum unter '. $todayRootNode .' ("'. IPS_GetName($todayRootNode) .'") eingeordnet',"heizungssteuerung_createHeizplan.class[initialzing]",7);
// Variable initialisieren:
$initialValue = $this->configObject->getInitialAnwesendValue($raumName,$zeit,$actualWeekDay);
$result = SetValueBoolean($variableID,$initialValue);
$this->checkResult($result,"die by setting ". $variableID ." to ". $initialValue,$SCRIPT_ID_NAME);
$this->configObject->showEnvironmentDebugMessage(
"Set Variable ". $variableID . ' to '. $initialValue,"heizungssteuerung_createHeizplan.class[initialzing]",7);
} // foreach ($raumValue as $zeit)
Gruß,
ernie