Weekdaytimer - Verschiedene Befehle pro Uhrzeit

Begonnen von popeye1979, 16 Mai 2022, 09:57:47

Vorheriges Thema - Nächstes Thema

popeye1979

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

1 x Fritzbox 7490
1x Raspberry Pi B , CUL868
2 x ITL-500 Jalousiesteuerunng
1 FHT80B
MySensors USB Gateway, MySensor TemperaturSensor

Beta-User

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?).
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

popeye1979

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.

1 x Fritzbox 7490
1x Raspberry Pi B , CUL868
2 x ITL-500 Jalousiesteuerunng
1 FHT80B
MySensors USB Gateway, MySensor TemperaturSensor

Beta-User

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")}
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Prof. Dr. Peter Henning


popeye1979

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?



1 x Fritzbox 7490
1x Raspberry Pi B , CUL868
2 x ITL-500 Jalousiesteuerunng
1 FHT80B
MySensors USB Gateway, MySensor TemperaturSensor

Beta-User

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.
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

popeye1979

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
1 x Fritzbox 7490
1x Raspberry Pi B , CUL868
2 x ITL-500 Jalousiesteuerunng
1 FHT80B
MySensors USB Gateway, MySensor TemperaturSensor

LutzG

Ich finde, die Aufgabe passt zu einem Timer? https://fhem.de/commandref_DE.html#Timer
define Schaltuhr Timer
Verschiedene Befehle zu definierten (Tages/Wochen...)Zeiten. Oder lieg ich daneben?
DMZ: J5040 mit OpenMediaVault, in Docker: Portainer, Fhem, MariaDB, zigbee2mqtt, esphome, NextCloudPi, Jellyfin, Grocy.
Intranet: J5005 mit OpenMediaVault, in Docker: Portainer, Fhem-minimal, urbackup - läuft nur, wenn Rechner laufen.