Hi,
Die Automatik wird ja bei einer manuellen Übersteuerung nur für den aktuellen Tag deaktiviert. Im WebFront wird das durch die Anzeige „Automatik/Manuell“ visualisiert, dieses kann man per Hand, per Script oder es wird um Mitternacht zurückgesetzt.
Ohne das Flag würde ja der Automatik Timer nach 5 Minuten die manuelle Steuerung wieder zurücksetzen (schlecht wenn man grad in den Garten gegangen ist…).
Werde das Rücksetzen in den nächsten Wochen so ändern, dass es zu den Tag/Nach Wechsel gemacht wird.
Hab heute auch noch ein kleines Script geschrieben, dass Fehler in den Scenarios korrigiert - diese können entstehen, wenn man nachträglich noch den Beschattungstype ändert.
IPSUtils_Include ("IPSShadowing.inc.php", "IPSLibrary::app::modules::IPSShadowing");
$MovementIds = array(
c_MovementId_Space => c_Movement_Space,
c_MovementId_NoAction => c_Movement_NoAction,
c_MovementId_Up => c_Movement_Up,
c_MovementId_Down => c_Movement_Down,
c_MovementId_Stop => c_Movement_Stop,
c_MovementId_90 => c_Movement_90,
c_MovementId_75 => c_Movement_75,
c_MovementId_50 => c_Movement_50,
c_MovementId_Closed => c_Movement_Closed,
c_MovementId_Opened => c_Movement_Opened,
c_MovementId_Dimout => c_Movement_Dimout,
c_MovementId_Shadowing => c_Movement_Shadowing,
c_MovementId_MovedOut => c_Movement_MovedOut,
c_MovementId_MovedIn => c_Movement_MovedIn,
c_MovementId_MovingOut => c_Movement_MovingOut,
c_MovementId_MovingIn => c_Movement_MovingIn,
);
$categoryIdDevices = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSShadowing.Devices');
$categoryIdScenarios = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSShadowing.Scenarios');
$scenarios = IPS_GetChildrenIDs($categoryIdScenarios);
$deviceConfig = get_ShadowingConfiguration();
foreach ($scenarios as $scenarioId) {
echo 'Found Scenario='.IPS_GetName($scenarioId).PHP_EOL;
foreach ($deviceConfig as $deviceIdent=>$deviceData) {
$controlId = @IPS_GetObjectIDByIdent($deviceIdent, $scenarioId);
$movementId = GetValue($controlId);
$invalid = false;
switch ($deviceData[c_Property_ShadowingType]) {
case c_ShadowingType_Jalousie:
if ($movementId<>c_MovementId_NoAction and $movementId<>c_MovementId_Shadowing and $movementId<>c_MovementId_Dimout
and $movementId<>c_MovementId_Opened and $movementId<>c_MovementId_Stop) {
$invalid = true;
}
break;
case c_ShadowingType_Shutter:
if ($movementId<>c_MovementId_NoAction and $movementId<>c_MovementId_Closed and $movementId<>c_MovementId_90
and $movementId<>c_MovementId_50 and $movementId<>c_MovementId_50
and $movementId<>c_MovementId_Opened and $movementId<>c_MovementId_Stop) {
$invalid = true;
}
break;
case c_ShadowingType_Marquees:
if ($movementId<>c_MovementId_NoAction and $movementId<>c_MovementId_MovedOut and $movementId<>c_MovementId_MovedIn
and $movementId<>c_MovementId_75 and $movementId<>c_MovementId_50 and $movementId<>c_MovementId_Stop) {
$invalid = true;
}
break;
}
if ($invalid) {
echo ' INVALID --> '.IPS_GetName($controlId).'='.$MovementIds[$movementId].PHP_EOL;
echo ' --> Repair, Set "NoAction"'.PHP_EOL;
SetValue($controlId, c_MovementId_NoAction);
} else {
echo ' OK --> '.IPS_GetName($controlId).'='.$MovementIds[$movementId].PHP_EOL;
}
}
}
Gib bitte Bescheid, ob sich Dein Problem dadurch gelöst hat!