Hallo,
in der WDT-commandref heißt es
define <name> WeekdayTimer <device> <profile> <command>|<condition>
...
Example:
define dimmer WeekdayTimer livingRoom Sa-Su,We|07:00|dim30% Sa-Su,We|21:00|dim90% (ReadingsVal("WeAreThere", "state", "no") eq "yes")
The dimmer is only set to dimXX% if the dummy variable WeAreThere is "yes"(not a real live example).
Heißt doch, dass man nicht dem ersten Schaltbefehl andere Conditions geben kann, als dem zweiten, richtig?
Das führt bei komplexen Steuerungen dazu, dass man evtl. mehrere WDT für dasselbe Device benötigt, um das gewünschte Schaltverhalten abzubilden, richtig?
Ist das der beste Weg mit dem aktuellen WDT? Oder gibt es noch weitere Tricks?
(DOIF möchte ich nicht so gern verwenden, weil WDT für mich von der Strukturierung der Steuerdaten her besser passt...)
Grundsätzlich ja,
Aber du kannst dem Wdt ja jeden Text als Parameter unterschieben:
Anstelle von dim30% geht auch 1:dim30% 2:dim50%.
Wenn Du dann anstelle einer Bedingungen einen Perl Befehl anhängst, kannst du in Perl dann jede beliebig komplizierte Bedingung an 1 bzw. 2 knüpfen. - Am besten eine Funktion in 99_Utils erstellen.
Ah, das klingt gut! Darf ich Dich um ein Konzeptbeispiel bitten, das den Sachverhalt etwas genauer erkennen lässt?
cfg:
define dimmer WeekdayTimer livingRoom Sa-Su,We|07:00|b1:dim30% Sa-Su,We|21:00|b2:dim90% {allesSebstmachen("@", "%")}
99_utils:
sub allesSebstmachen($$) {
my ($device, $parameter) = @_;
($bedingung, $para) = split (":",$parameter);
if ($bedingung eq "b1") {
fhem ("set $device on-for-timer " . $para);
} else {
fhem ("set $device " . $para);
}
}
Du kannst natürlich einfach jedes andere device schalten, und "@" ignorieren.
Alles kapiert? Noch Fragen?
Hm. Ja, verstanden. Mein Ansatz passt aber nicht recht dazu. Ich bekomme die Steuerinformationen für die WDT von einem externen Frontend-Widget mit dem hübschen Namen UZSU (Universelle ZeitSchaltUhr) aus dem SmartVISU Frontend. Das ist im Stande, Zeit, Wert, Abhängigkeit von Sunrise oder sundown, Wochentage und in Zukunft auch Ferien oder Feiertage als Bedingungen zu verarbeiten - auf Zeilenebene, also pro Profil im WDT.
Dann scheint es die einfachste Lösung zu sein, mehrere WDT zu generieren, die immer nur ein ZeitProfil mit den passenden Bedingungen haben.
Dank Dir jedenfalls für die Antworten!