Hallo kds8,
freut mich, dass es funktioniert und du die ersten „IPS-Infektionserscheinungen“ hast
Für die spätere Steuerung einzelner Rollos gibt es verschiedene Lösungen.
Du musst in deinem Steuerprogramm einen Timer setzen (entweder Start um XX:XX Uhr oder Start in X Minuten).
Beispiele findest du hier im Forum (Script verzögert ausführen).
Da du aber die Rolos über den DS steuerst, ist es sinnvoll einen Timer auf eine bestimmt Uhrzeit zu stellen.
Dann musst du im Programm abfragen, ob der Programmaufruf durch den DS oder den Timer erfolgt.
Ich habe nur einen einzigen Homematic-Rollo-Schalter, den ich folgendermassen steuere:
- hochfahren, wenn Ds hell anzeigt, aber nicht vor XX:XX Uhr (einstellbar je Wochentag, fest im Programm. Könnte man auch über Variable lösen)
- runterfahren bei Astrozeit „zivile Abenddämmerung“, aber nicht wenn das Gartenlich an ist und nicht vor 17:00 Uhr
- wenn der Automatik-Schalter aus ist, wird das Programm nicht ausgeführt
Hier das Steuerprogramm, da kannst du sicherlich was verwenden. Die Homematik-Befehle müsstest du dann durch FS20 ersetzen.
Es gibt hier im Forum sehr ausgefeilte Programme, sind aber für Anfänger in PHP sehr schwer zu verstehen sind. Ich stecke da auch noch in den Grundkenntnissen, aber man lernt ständig was dazu.
<?
// Steuerung Rollo Wohnzimmer ohne Shutter-Control
$rollo = 25257 /*[Räume\Wohnzimmer\Rollo]*/;
$position = GetValueFloat(27104 /*[Räume\Wohnzimmer\Rollo\LEVEL]*/);
$auto = GetValueBoolean(14912 /*[Räume\Wohnzimmer\Rollo\Automatik]*/);
$wochentag = GetValueString(36047 /*[Scripte\Datum-Uhrzeit\Tagname]*/);
$ssmm = GetValueString(24846 /*[Scripte\Datum-Uhrzeit\SSMM]*/);
IF ($auto == true)
{
// Up-Time je Wochentag festlegen
$uptime = "08:00";
switch ($wochentag)
{
case "Montag":
$uptime = "06:15";
break;
case "Dienstag":
$uptime = "06:15";
break;
case "Mittwoch":
$uptime = "06:15";
break;
case "Donnerstag":
$uptime = "06:15";
break;
case "Freitag":
$uptime = "06:15";
break;
case "Samstag":
$uptime = "08:00";
break;
case "Sonntag":
$uptime = "08:00";
break;
}
IF ($IPS_SENDER == "Variable")
{
switch ($IPS_EVENT) // enthält die ID des auslösenden Ereignisses
{
case 47782: // es wird hell
if ($ssmm < $uptime) // zu früh
{
// timer auf $uptime stellen
$datum = GetValueString(50360 /*[Scripte\Datum-Uhrzeit\JJJJMMTT]*/);
$timer = 28721 /*[Räume\Wohnzimmer\Rollo\Steuerung\]*/;
$tag = substr($datum, 6,2);
$monat = substr($datum, 4,2);
$jahr = substr($datum, 0,4);
$start_stunde = $std = substr($uptime,0,2);
$start_minute = $min = substr($uptime,3,2);
$start = mktime($start_stunde, $start_minute, 0, $monat, $tag, $jahr);
IPS_SetEventCyclicDateBounds($timer, $start, 0);
IPS_SetEventCyclicTimeBounds($timer, $start, 0);
}
elseif ($position < 1)
HM_WriteValueFloat($rollo, "LEVEL", 1.0);
break;
case 45499: // es wird dunkel
$nop = GetValueBoolean(59754 /*[Räume\Garten\Gartenlicht\Status]*/);
IF ($ssmm < "17:00")
$nop = true; //rollo bleibt oben
IF (($nop == false) && ($position > 0))
HM_WriteValueFloat($rollo, "LEVEL", 0.0);
break;
default:
// ...
break;
}
}
IF ($IPS_SENDER == "TimerEvent")
{
IF ($position < 1)
HM_WriteValueFloat($rollo, "LEVEL", 1.0);
}
}
// HM_WriteValueFloat($SC_INSTANCE, "LEVEL", 0.0);
//DIRECTION_UP:
// HM_WriteValueFloat($SC_INSTANCE, "LEVEL", 1.0);
?>
viel Spass, Peter