Hat der Weekdaytimer nur 1 conditions-set für alle Regeln?

Begonnen von bgewehr, 15 März 2015, 13:56:33

Vorheriges Thema - Nächstes Thema

bgewehr

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...)
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Dietmar63

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.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

bgewehr

Ah, das klingt gut! Darf ich Dich um ein Konzeptbeispiel bitten, das den Sachverhalt etwas genauer erkennen lässt?
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Dietmar63

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?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

bgewehr

#4
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.
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

bgewehr

FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868