(gelöst) Weekdaytimer mit if-else Abfrage

Begonnen von schoizi, 08 September 2015, 17:38:03

Vorheriges Thema - Nächstes Thema

schoizi

Hallo zusammen,

nachdem ich nun schon alles an Dokumentation und google Ergebnissen gelesen habe, muss ich wohl doch nochmal eine Frage einstellen, weil ich nicht weiterkomme.

Aufgabenstellung:
Ich möchte ein Rollo je nach Wochentag zu anderen Zeiten hochfahren lassen.
Das funktioniert auch mit folgendem Code:
define Schlafzimmer_Rollo_hoch WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81AC 12345|{sunrise(+900,"09:00","10:00")}|100% 6|{sunrise(+900,"08:00","08:30")}|100% 0|{sunrise(+900,"10:30","11:30")}|100%

Nun möchte ich ein anderes Rollo ebenfalls an verschiedenen Tagen zu verschiedenen Zeiten hochfahren lassen, aber je nachdem:
- ob ich zu Hause bin ganz öffnen lassen oder
- wenn ich nicht zu Hause bin nur zur Hälfte öffnen lassen.

Dies habe ich wie folgt versucht:

define Esszimmer_Rollo_hoch WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 12345|{sunrise(+900,"07:45","08:30")}|100% (Value("Anwesenheit") eq "on")
(im Code ist erstmal nur die Abfrage für die Werktage drin, weil ich eben die Abfrage nicht hinbekomme.

Problem 1: dieser Code funktioniert gar nicht; das Rollo fährt gar nicht hoch
Problem 2: wenn der Code funktionieren würde, wüsste ich nicht, wie ich die "else" Bedingung für Anwesenheit=0 in dieser Verknüpfung mit dem WeekdayTimer einbauen soll.
Problem 3: wenn der Code dann funktioniert, wie erweitere ich dann die Syntax auch auf die anderen Zeiten am Samstag und Sonntag?

Ich habe wirklich schon viel dazu gelesen und auch die einzelnen Kommandobeschreibungen studiert, aber ich bekomm's nicht kombiniert.

Hat jemand bitte einen kokreten Code-Tipp für mich?

1000 Dank vorab.
Viele Grüße
Andreas

Dietmar63

Unterschiedliche Befehle je nach zusätzlichen Bedingungen ist bei WD nicht vorgesehen.
Die Bedingung ist immer gleich.

Es gibt zwar Moglichkeiten durch Tricks dies hinzubekommen, für Newcomer aber eher ungeeignet.

Du kannst dir aber mit zwei WD behelfen:

define tstEsszimmer_Rollo_hoch_ANWESEND WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 12345|{sunrise(+900,"07:45","08:30")}|100% (Value("Anwesenheit") eq "on")
define tstEsszimmer_Rollo_hoch_ABWESEND WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 12345|{sunrise(+900,"07:45","08:30")}|100% (Value("Anwesenheit") eq "off")


Wenn du die WD mit tst beginnen läßt, wird automatisch verbose 4 eingeschaltet, dann bekommst du debugging Informationen. Verbose 4 oder verbose 5 kann auch nachträglich ergänzt werden.


Wenn (Value("Anwesenheit")) nicht funktioniert, dann gib die Bedingung mal in fhem so ein:
{Value("Anwesenheit")}

Dann muss "on" oder "off" ausgegeben werden.
Dann bitte den Code im Log prüfen, ob erst einmal zum richtigen Zeitpunkt etwas passiert. Wenn Ausgaben erscheinen, dann den Code überprüfen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

und wenn du auch noch $we oder !$we in die Logik einweben möchtest, dann bleibt dir nicht anderes übrig als die WD nocheinmal zu verdoppeln:


define tstEsszimmer_Rollo_hoch_ANWESEND WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE $we|{sunrise(+900,"07:45","08:30")}|100% (Value("Anwesenheit") eq "on")
define tstEsszimmer_Rollo_hoch_ABWESEND WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE $we|{sunrise(+900,"07:45","08:30")}|100% (Value("Anwesenheit") eq "off")
define tstEsszimmer_Rollo_hoch_ANWESEND WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE !$we|{sunrise(+900,"07:45","08:30")}|60% (Value("Anwesenheit") eq "on")
define tstEsszimmer_Rollo_hoch_ABWESEND WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE !$we|{sunrise(+900,"07:45","08:30")}|60% (Value("Anwesenheit") eq "off")
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

schoizi

Hallo Dietmar,

danke für die Tipps. Ich teste und gebe wieder Bescheid.
Viele Grüße
Andreas

schoizi

Hallo Dietmar,

ich stelle mich irgendwie doof an.
Wollte das jetzt gerade mit einem Lichtschalter ausprobieren, damit ich nicht das Rollo dauernd rauf und runterfahre.
Habe versucht, deine Tipps wie folgt umzusetzen (feste Uhrzeit statt sunrise zum Testen):

define tstBuero_Licht_Test_Anwesend WeekdayTimer CUL_HM_HM_LC_Sw1PBU_FM_376B47 12345|21:28|off {Value("Anwesenheit") eq "on"}

Es tut sich aber nichts.
Im Log steht folgendes:
2015.09.08 21:27:23 4: [tstBuero_Licht_Test_Anwesend] setTimer - timer seems to be active today: 12345|21:28|off
2015.09.08 21:27:23 4: [tstBuero_Licht_Test_Anwesend] akt:  2015-09-07 21:28:00(mo) -->> off
2015.09.08 21:27:23 4: [tstBuero_Licht_Test_Anwesend] next: 2015-09-08 21:28:00(di) -->> off
2015.09.08 21:27:23 1: HMLAN_Parse: HMLAN1 new condition ok

Irgendwie blicke ich nicht mehr durch :-(

Danke vorab für's Helfen.
Viele Grüße
Andreas

Dietmar63

bitte so eingeben:

define tstBuero_Licht_Test_Anwesend WeekdayTimer CUL_HM_HM_LC_Sw1PBU_FM_376B47 12345|21:27|on  12345|21:28|off (Value("Anwesenheit") eq "on")
bitte dieZeiten anpassen.

Welche Ausgabe liefert
{Value("Anwesenheit")}
in fhem?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

die Bedingung ist dann true wenn folgende Zeile im Log erscheint:
2015.09.08 20:38:00 4: [tstRollosWochenende] command: set ZWSD_SES  off executed
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

schoizi

Hallo Dietmar,

danke für deine Hilfe.
Die Tests per Licht und auch gerade mit dem Rollo mit festen Uhrzeiten haben funktioniert.

Daraus habe ich jetzt folgendes abgeleitet:
define Esszimmer_Rollo_hoch_Anwesend WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 12345|{sunrise_abs(10,"07:45","08:30")}|100% (Value("Anwesenheit") eq "zuHause")
define Esszimmer_Rollo_hoch_Abwesend WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 12345|{sunrise_abs(10,"07:45","08:30")}|50% (Value("Anwesenheit") eq "weg")
define Esszimmer_Rollo_hoch_Anwesend WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 6|{sunrise_abs(10,"08:00","08:30")}|100% (Value("Anwesenheit") eq "zuHause")
define Esszimmer_Rollo_hoch_Abwesend WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 6|{sunrise_abs(10,"08:00","08:30")}|50% (Value("Anwesenheit") eq "weg")
define Esszimmer_Rollo_hoch_Anwesend WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 0|{sunrise_abs(10,"07:45","08:30")}|100% (Value("Anwesenheit") eq "zuHause")
define Esszimmer_Rollo_hoch_Abwesend WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 0|{sunrise_abs(10,"10:00","10:30")}|50% (Value("Anwesenheit") eq "weg")


Bin mal gespannt, ob morgen früh der Live-Test funktioniert.

Einer der Fehler, den ich noch drin hatte, war zu einfach..... die Werte von "Anwesenheit" waren nicht "on" und "off" sondern "zuHause" und "weg"......

Ich berichte weiter.
Viele Grüße
Andreas

schoizi

Hallo zusammen,

mit dem geposteten Code funktioniert es nun wie gewünscht.
Danke nochmal für die Hilfe!
Viele Grüße
Andreas