Autor Thema: WeekdayTimer und Condition  (Gelesen 334 mal)

Offline Frood42

  • Full Member
  • ***
  • Beiträge: 151
WeekdayTimer und Condition
« am: 23 Oktober 2021, 10:32:47 »
Hallo Community,

diese Frage ist glaub gar nichts für den Bereich "Anfängerfragen" weil mir das Thema schon fortgeschritten vorkommt.
Ich habe den WeekdayTimer entdeckt, der mir jede Menge perl Code spart. 

Jetzt gibts aber ein echtes Problem. Da steht dass am ende
define <name> WeekdayTimer <device> [<language>] [weekdays] <profile> <command>|<condition>
kommt. (Ich habe das ales gelesen!)
Das doofe ist, dass dieser senkrechte Strich ein ODER bedeutet.

Wieso kann ich mit dem WeekdayTimer nicht eine Bedingung und einen Schaltbefehl verwenden?
Ich benötige eine Abfrage
ob mein Heizungscontrol = on istund einen Schaltbefehl ala
fhem("set $NAME desired-temp $EVENT");}--> Hintergrund: Wenn ich mehrere Tage komplett physisch aus dem Haus bin, sollen die WeekdayTimer einfach mal inaktiv sein.

Jetzt läuft das bei mir darauf hinaus, dass ich per DummyDevice "Heizungscontrol" (on/off) und einem Notify auf das DummyDevice meine ganzen WeekdayTimer aktiv/inaktiv stelle.
Das kommt mir sehr unkomfortabel vor.

Gibt es irgendwo ein Beispiel, wie man per Hardware-Schalter oder auch DummyDevice im fhem UI andere Devices aktiv/inaktiv setzen kann?

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16246
Antw:WeekdayTimer und Condition
« Antwort #1 am: 23 Oktober 2021, 15:59:36 »
Also:
CONDITION wird jeweils bei der täglichen Initialisierung des WeekdayTimer geprüft. Wenn er aktiv ist, wird bei "true" dann zu den Schaltzeitpunkten der unter commandTemplate gesetzte Befehl abgearbeitet - was bei  "normalen" Heizungsdevices dann per default das "set ... desired-temp ..." ist (konfigurierbar).

Will man zur Laufzeit prüfen, kann man einfach Perl-if verwenden, z.B. so:
defmod Timer_Umwaelzpumpe WeekdayTimer MYSENSOR_96 !$we|05:50|on $we|06:55|on 12:30|on {fhem ("set $NAME status1 $EVENT") if (ReadingsVal('MYSENSOR_96','temperature21',0) < 35 and ReadingsVal('Status_Urlaub','state',"off") ne "on") }
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Frood42

  • Full Member
  • ***
  • Beiträge: 151
Antw:WeekdayTimer und Condition
« Antwort #2 am: 23 Oktober 2021, 17:31:20 »
äh wie.
Die CONDITION ist gar nicht die condition eines jeden Schaltbefehls? Dann fliegt die Option ja eh raus...

Und die Lösung ist so einfach - man coded die Bedingung einfach in den perl teil des Schaltbefehls rein?
Damit wäre ich einverstanden.
sowas:
defmod MeinEigenerHeizungsreglerBenuetztDesired WeekdayTimer MeinEigenerHeizungsreglerKueche !$we|05:50|23 $we|06:55|17 12:30|22 { if ( "1" eq "1" )  fhem("set $NAME desired $EVENT") }

Bei Deinem Beispiel ist das if und das do smth aber aus versehen falsch herum oder? (Ich spreche perl extrem sporadisch)
{fhem ("set $NAME status1 $EVENT") if (ReadingsVal('MYSENSOR_96','temperature21',0) < 35 and ReadingsVal('Status_Urlaub','state',"off") ne "on") }

nur mal so an die ganzen Experten hier: Ich habe satte 10 Jahre fhem gebraucht bis ich einige Sachen mal mit perl code realisiere. Der Abschreckungsfaktor und vermeintliche Hürden sind extrem. Also rein psychologisch, nicht programmier-technisch.   
Hat nicht mal einer Lust einen python Interpreter einzubauen, als Alternative zu Perl?
« Letzte Änderung: 23 Oktober 2021, 18:35:58 von Frood42 »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16246
Antw:WeekdayTimer und Condition
« Antwort #3 am: 23 Oktober 2021, 18:40:29 »
Das ist ein "Echtbeispiel", das mit dem "postfix if" geht bei Perl ohne weiteres, man braucht dann eigentlich nicht mal mehr diese hinteren Klammern ;) . Würde das heute noch einfacher schreiben....

Die commandref sollte eigentlich zu CONDITION zwischenzeitlich etwas aussagekräftiger sein, als das früher der Fall war, aber Verbesserungsvorschläge nehme ich gerne entgegen ;) .

Ansonsten kann ich nicht nachvollziehen, warum man "noch eine Syntax" haben will. Perl ist "speziell", aber als "Gelegenheitsreinschnupperer" in alle möglichen Programmiersprachen habe ich den Eindruck, dass jede Sprache so ihre Eingenheiten hat, und Perl in der Hinsicht nicht wesentlich schlimmer ist als andere - im Gegenteil schätze ich zwischenzeitlich die recht flexible Interpretation meines Codings und bin immer froh, wenn was in Perl ist :) .
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 11295
  • NIVEAu ist keine Creme...
Antw:WeekdayTimer und Condition
« Antwort #4 am: 23 Oktober 2021, 19:04:08 »
Zitat
Hat nicht mal einer Lust einen python Interpreter einzubauen, als Alternative zu Perl?
Gibt's doch: https://forum.fhem.de/index.php?topic=63816.0 ;)

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)

Offline Frood42

  • Full Member
  • ***
  • Beiträge: 151
Antw:WeekdayTimer und Condition
« Antwort #5 am: 23 Oktober 2021, 21:06:45 »
Zitat
Die commandref sollte eigentlich zu CONDITION zwischenzeitlich etwas aussagekräftiger sein, als das früher der Fall war, aber Verbesserungsvorschläge nehme ich gerne entgegen ;) .
da steht immer noch etwas anderes;
Zitat
If you have defined a <condition> and this condition is false if the switchingtime has reached, no command will <da fehlt ein "be"> executed.
Du sagtest aber, dass
Zitat
CONDITION wird jeweils bei der täglichen Initialisierung des WeekdayTimer geprüft.

Ich hatte anfangs einige Stunden beides probiert CONDITION && COMMAND und frage mich immer noch warum nicht beides geht.
Aber die CONDITION in den command reinzupacken ist ja ok, wenn auch wieder gleich ein klein wenig unübersichtlicher.

Zitat
Gibt's doch: https://forum.fhem.de/index.php?topic=63816.0
Hmmmja, aber das ist outside of fhem. Ich dachte erst "geil" aber wenn outside, dann basht man ja eher (Für Presence vor allem).

Alles in allem ist der WeekdayTimer ziemlich super heftig gut.
Er macht bei mir aus einem 30 Zeiler perl (Psychologisch auf Saturn-Level (weit über Moon)) einen One-Liner. Das ist extremst im Sinne des Ökonoms. 



« Letzte Änderung: 23 Oktober 2021, 21:17:30 von Frood42 »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16246
Antw:WeekdayTimer und Condition
« Antwort #6 am: 24 Oktober 2021, 08:12:57 »
Danke für den Schubs, hab's jetzt dem (mAn. schon immer an der Stelle gleich tickenden) Code angepaßt, verfügbar mit dem morgigen update.

Beides gleichzeitig ist ein Problem für das Parsen der DEF, und auch, wenn ich den WDT auch ziemlich cool finde, ist nicht alles super, sondern manches eben auch erklärungsbedürftig...
« Letzte Änderung: 24 Oktober 2021, 08:16:04 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}