Ja, das hatte ich in der Doku gelesen, aber dann müsste ich entweder den Wochenplan an sich ändern oder in den Instanzen einen andern WP einsetzen.
Geht ja nicht nur um Sommer/Winter, sondern auch um einfach mal für „heute“ den Tag/Nach-Fahrbetrieb deaktivieren.
Hmm, ich muss mal experimentieren … Vielleicht geht das, wenn ich den „leeren“ WP (also nur mit einer Aktion) nehme und nur DayStartID / DayEndID nutze. Wei nicht, was passiert, wenn die Variablen dann keinen (nutzbaren) Inhalt haben. Ich teste das morgen mal (wenn ich jetzt den Rolladen rauf und runter fahren würde, würden sich meine Lieben bedanken). Ich berichte …
Nachtrag: was ist eigentlich der Unterschied von DayStartID / DayEndID zu WakeUpTimeID / BedTimeID? Beide bestimmen doch Tagesanfang und Ende?
@bumaas
Indikatorvariable vom Typ String, die eine übersteuernde Runterfahrzeit beinhaltet. Die Zeit muss im Format ‚HH:MM‘ angegeben sein. Eine ungültige Zeitangabe wird ignoriert.
Die Erkennung ungültiger Zeitangabe funktioniert nicht.
$heute_ab_ts = strtotime(GetValueString($idBedTime)) + $this->ReadPropertyInteger(self::PROP_BEDTIMEOFFSET) * 60;
ergibt bei einem ungültigen Inhalt von _ idBedTime_ immer den Wert von _ PROP_BEDTIMEOFFSET_ (also wenn nicht konfiguriert 0.)
heute_auf natürlich dito.
Ich habe das mal versuchsweise so geändert
//gibt es übersteuernde Zeiten?
$idWakeUpTime = $this->ReadPropertyInteger(self::PROP_WAKEUPTIMEID);
if (IPS_VariableExists($idWakeUpTime)) {
$wakeUpTime = GetValueString($idWakeUpTime);
if ($wakeUpTime == '') {
$this->Logger_Dbg(__FUNCTION__, 'empty WakeUpTime found: (ignored)');
} else {
$heute_auf_ts = strtotime($wakeUpTime);
if ($heute_auf_ts === false) {
$this->Logger_Dbg(__FUNCTION__, sprintf('No valid WakeUpTime found: \'%s\' (ignored)', $wakeUpTime));
} else {
// es wurde eine gültige Zeit gefunden
$heute_auf_ts += $this->ReadPropertyInteger(self::PROP_WAKEUPTIMEOFFSET) * 60;
$heute_auf = date('H:i', $heute_auf_ts);
$this->Logger_Dbg(__FUNCTION__, sprintf('WakeUpTime found: %s', $heute_auf));
}
}
}
$idBedTime = $this->ReadPropertyInteger(self::PROP_BEDTIMEID);
if (IPS_VariableExists($idBedTime)) {
$bedTime = GetValueString($idBedTime);
if ($bedTime == '') {
$this->Logger_Dbg(__FUNCTION__, 'empty BedTime found: (ignored)');
} else {
$heute_ab_ts = strtotime($bedTime);
if ($heute_ab_ts === false) {
$this->Logger_Dbg(__FUNCTION__, sprintf('No valid BedTime found: \'%s\' (ignored)', $bedTime));
} else {
// es wurde eine gültige Zeit gefunden
$heute_ab_ts += $this->ReadPropertyInteger(self::PROP_BEDTIMEOFFSET) * 60;
$heute_ab = date('H:i', $heute_ab_ts);
$this->Logger_Dbg(__FUNCTION__, sprintf('BedTime: %s', $heute_ab));
}
}
}
Damit werden ungültige bzw. leere Zeitangabe nicht berücksichtigt