FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: popeye1979 am 16 Mai 2022, 09:57:47

Titel: Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: popeye1979 am 16 Mai 2022, 09:57:47
Einen schönen guten Morgen,

ich versuche gerade eine Zeitsteuerung für eine Bewässerung mit Weekdaytimer hinzubekommen, scheitere aber kläglich... ::)

Folgendes habe ich jetzt, was auch soweit funktionier. Meldung und An/Aus.
defmod steuerungWDT WeekdayTimer Outdoorstecker 12345|09:49|on 12345|09:50|off 12345|09:51|on 12345|09:52|off {fhem("set popeye1979Bot message @#FHEM 'Automatische Steuerung ".$EVENT."'");; fhem("set $NAME $EVENT")} \
\

attr steuerungWDT commandTemplate set $NAME  $EVENT
attr steuerungWDT room Garten,Pumpe

setstate steuerungWDT on
setstate steuerungWDT 2022-05-16 09:49:00 currValue on
setstate steuerungWDT 2022-05-16 09:49:00 nextUpdate 2022-05-16 09:50:00
setstate steuerungWDT 2022-05-16 09:49:00 nextValue off
setstate steuerungWDT 2022-05-16 09:49:00 state on


Was ich aber möchte: Ich möchte gerne für jede Uhrzeit eine Kette von SET absetzen, welche sich unterscheiden. Ich hatte gehofft, die on/off Parameter ersetzen zu können, was aber nicht funktioniert.
Ziel ist es, die verschiedenen Bewässerungskreise per MQTT zu aktivieren(und die anderen wieder zu schliessen).

Vielleicht kann mir jmd helfen, dass ich den Holzweg wieder verlassen kann! Vielen Dank im Voraus.

Gruss
Jo

Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: Beta-User am 16 Mai 2022, 10:15:19
Sehe (mit WeekdayTimer) zwei Optionen:

Entweder du übergibst "$EVENT" an einen komplexeren Perl-Code. Da kann dann im Prinzip was beliebiges passieren und/oder auch der gerade aktive Kreis ermittelt werden (ggf. mit FHEM-Each()?).

Vielleicht würde es aber auch reichen, wenn du statt on/off dann einfach "Kreis_1", "Kreis_2" etc. als "Parameter" (statt on/off) definierst und dann das Attribut "WDT_eventMap" benutzt, um dann jeweils den passenden "Satz an Befehlen" zu ermitteln? (Ich verstehe grade noch nicht, warum du das Kommando überhaupt in Perl notierst; es müßte eigentlich auch gehen, wenn du das commandTemplate anpaßt und nur die beiden FHEM-Befehle da reinschreibst?).
Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: popeye1979 am 16 Mai 2022, 12:25:44
Hallo Beta-User,

ich habe es jetzt mal mit WDT_eventMap versucht und zig Dinge dort ausprobiert.
Leider weiß ich nicht, wie die Schaltbefehle dort eingestellt werden müssen.
Vielleicht hast du ja noch eine Erklärung für mich, wie WDT_eventMap und commandTemplate aussehen müssen.

Das ist jetzt der letzte Stand...
defmod steuerungWDT WeekdayTimer Outdoorstecker 12345|11:43|Kreis_1 12345|11:44|Kreis_2\
\

attr steuerungWDT WDT_eventMap Kreis_1:{fhem("set+popeye1979Bot+message+@#FHEM+'Automatische+Steuerung+an'");;;;fhem("set+Outdoorstecker+on");;;;fhem("set+meinMQTT2Client+publish+ventil1+1")+} Kreis_2:{fhem("set+meinMQTT2Client+publish+ventil1+0");;;;fhem("set+meinMQTT2Client+publish+ventil2+1")}
attr steuerungWDT commandTemplate $EVENT
attr steuerungWDT room Garten,Pumpe

setstate steuerungWDT active
setstate steuerungWDT 2022-05-16 12:20:12 currValue Kreis_2
setstate steuerungWDT 2022-05-16 12:20:12 nextUpdate 2022-05-17 11:43:00
setstate steuerungWDT 2022-05-16 12:20:12 nextValue Kreis_1
setstate steuerungWDT 2022-05-16 12:20:12 state active



Dein erster Vorschlag mit "komplexerem Perl-Code" würde ich vermutlich noch weniger hin bekommen.

Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: Beta-User am 16 Mai 2022, 12:43:31
Hmm, also...

Habe mal in den Code geschaut, und da wird "hart" "set $DEVICE $EVENT" verwendet, wenn WDT_eventMap gesetzt ist. Vermutlich kann man etwas tricksen, wenn man eben den ersten Befehl an $DEVICE sendet, aber vermutlich ist das nur bedingt das, was du willst...

Hier mal was, was zumindest im list ok aussieht:
attr steuerungWDT WDT_eventMap Kreis_1:on;;set+popeye1979Bot+message+@#FHEM+'Automatische+Steuerung+an';;set+meinMQTT2Client+publish+ventil1+1 Kreis_2:on;;{fhem("set+meinMQTT2Client+publish+ventil1+0");;fhem("set+meinMQTT2Client+publish+ventil2+1")}
Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: Prof. Dr. Peter Henning am 16 Mai 2022, 13:04:41
Mal das Modul YAAHM anschauen.

LG

pah
Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: popeye1979 am 16 Mai 2022, 15:14:16
Zitat von: Beta-User am 16 Mai 2022, 12:43:31
...Vermutlich kann man etwas tricksen, wenn man eben den ersten Befehl an $DEVICE sendet, aber vermutlich ist das nur bedingt das, was du willst...

Hier mal was, was zumindest im list ok aussieht:
attr steuerungWDT WDT_eventMap Kreis_1:on;;set+popeye1979Bot+message+@#FHEM+'Automatische+Steuerung+an';;set+meinMQTT2Client+publish+ventil1+1 Kreis_2:on;;{fhem("set+meinMQTT2Client+publish+ventil1+0");;fhem("set+meinMQTT2Client+publish+ventil2+1")}

Tricksen wäre mir ja egal...
Wenn ich immer ein "on" als erstes schicken müsste, wäre das ja egal. Das "was zumindest im list ok aussieht" geht aber leider auch nicht. Auch da habe ich weitere Versuche unternommen (mit "{fhem(" beim Kreis_1, ohne "{fhem(" beim Kreis_2,....)


@pah:
Ja, habe ich mir jetzt auch mal angeschaut. Wenn ich nun eine Action bei sunrise eintragen würde mit "{fhem("set popeye1979Bot message @#FHEM 'Automatische Steuerung an'"); fhem("set Outdoorstecker on");fhem("set meinMQTT2Client publish ventil1 1")}....wo würde ich dann den 2ten Kreis schalten? Erst bei Morning? Und dann Kreis_3?



Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: Beta-User am 16 Mai 2022, 15:29:54
Na ja, der WeekdayTimer wurde (afaik) mal entwickelt, um v.a. Heizungsgeräte steuern zu können, also z.B. für Temperaturlisten und eben on/off Kommandos.

Wenn du komplexere Dinge wirklich brauchst (man kann solche Bewässerungessequenzen auch mit "sleep"-Kommandos zwischendurch abbilden, dafür sollten hier im Forum auch einige Beispiele zu finden sein), wäre vermutlich neben pah's Vorschlag auch u.a. noch das Modul "Timer" einen Blick wert.

Oder du übergibst "Parameter" an eine eigene myUtils-sub. Oder du schaust dir mal das Beispiel an, das Rudi als garden.pl in contrib liegen hat (habe aber nicht nachgesehen, wie das zu starten wäre). Die DOIF-Freunde haben bestimmt auch wieder einiges anzubieten, und vom Developer "Tobias" gibt es gleich ein ganzes Komplettpaket an Hard- und Software rund um das Thema "Bewässerung" ;D .

Prinzipiell musst du aber damit rechnen, dass das ganze einen gewissen Einarbeitungsaufwand mit sich bringen wird - ganz egal, welche Lösung du am Ende wählst...

WeekdayTimer _kann_ eine Lösung sein, um irgendwelche Sequenzen zu starten oder weiterzuschalten, aber für direkt mit reingeknödelte komplexere Befehle ist es einfach nicht konzipiert.
Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: popeye1979 am 16 Mai 2022, 15:58:43
Ja ich denke der WeekdayTimer wird mich da nicht weiter bringen.
Wie du schon sagst, viele Wege führen nach Rom...ich denke ein paar "at" könnten auch zum Ziel führen...
Die Lösung vom Tobias hatte ich auch bereits "gelötet" und im Test. Habe mich dann aber für ne eigene Lösung entschieden. Manuell gehts ja auch schon... ;D ;D ;D ;D

Trotzdem Danke für die Hilfe!

Falls noch jmd ne tolle (einfache  ;) ) Idee hat, immer her damit.

Gruss
Jo
Titel: Antw:Weekdaytimer - Verschiedene Befehle pro Uhrzeit
Beitrag von: LutzG am 18 Mai 2022, 01:24:57
Ich finde, die Aufgabe passt zu einem Timer? https://fhem.de/commandref_DE.html#Timer (https://fhem.de/commandref_DE.html#Timer)
define Schaltuhr Timer
Verschiedene Befehle zu definierten (Tages/Wochen...)Zeiten. Oder lieg ich daneben?