FHEM Forum

FHEM => Automatisierung => Thema gestartet von: chipmunk am 20 März 2019, 07:34:01

Titel: [gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: chipmunk am 20 März 2019, 07:34:01
Ich habe bisher im WeekdayTimer  das Kommando "on-for-timer xxx" Sekunden verwendet. Dabei werden die Sekunden vom Kommando durch Doppelpunkt getrennt. Also on-for-timer:60
Jetzt will ich aber das Kommando "on-till hh:mm" verwenden. Da funktioniert der Doppelpunkt nicht, da er ja bereits die Stunden von den Minuten trennt. on-till:22:00 funktioniert nicht.
Wie gebe ich das richtig an?
Muss ich dafür wirklich ein {FHEM set $NAME on-till 22:00} absetzen, geht das nicht einfacher?

Danke
Chipmunk

PS: Kann man bei sunset() und sunrise() auch negative Werte angeben, um x Minuten davor etwas auszulösen?
Titel: Antw:WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: sinus61 am 20 März 2019, 16:24:48
on-till:22\:00

So sollte das gehen.
Titel: Antw:WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: Otto123 am 20 März 2019, 18:49:22
Zitat von: chipmunk am 20 März 2019, 07:34:01
PS: Kann man bei sunset() und sunrise() auch negative Werte angeben, um x Minuten davor etwas auszulösen?
Ja. Man kann das Ergebnis auch einfach testen: {sunset(-360)} in die FHEM Kommandozeile werfen.

Gruß Otto
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: chipmunk am 21 März 2019, 07:39:13
Danke Sinus61, das hat geholfen.

@ Otto: Danke,
aber mich hat verwirrt, dass im Log eine Zeitangabe von 42:38:05 steht, was 18:38:05 am nächsten Tag entspricht.
Offenbar geben sunset und sunrise keine Uhrzeit, sondern die Zeit bis zum nächsten Auftreten im Uhrzeitformat aus.
Das war mir so nicht bewußt und die Fehlermeldung im Log hat mich irritiert.

LG
Chipmunk
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: Otto123 am 21 März 2019, 10:43:34
Moin,

na dafür gibt es ja dann die anderen Funktionen:
https://commandref.fhem.de/#SUNRISE_EL

Gruß Otto
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: chipmunk am 21 März 2019, 12:40:33
Die Commandref habe ich natürlich zuerst gelesen, aber sie ist mir nicht klar genug formuliert.
Auch das Wiki hat mir nicht weiter geholfen,.
Es sind viele Fragen offen geblieben, daher habe ich hier gefragt, wo mir ja auch geholfen wurde.

LG
Chipmunk
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: Otto123 am 21 März 2019, 13:01:13
Was ist denn daran nicht klar genug?
Zitatsunrise_abs() and sunset_abs() return the absolute time of the corresponding event today (no 24 hours added).
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: chipmunk am 22 März 2019, 07:21:13
ZitatWas ist denn daran nicht klar genug?/quote]

Wann welche Variante einzusetzen ist und ob es überhaupt einen Unterschied ausmacht, abgesehen von der Fehlermeldung im Log.
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: Otto123 am 22 März 2019, 08:53:26
Ich zitiere mal gern die Doku für alle Varianten, Du sagst es ist Dir nicht klar und Du fragst Dich ob es einen Unterschied macht. Und Du redest von offenbar ...
Sag doch dem Author bitte, was Du an dieser (für mich sehr klaren Aussage) ändern würdest.
Zitatsunrise() and sunset() return the absolute time of the next sunrise/sunset, adding 24 hours if the next event is tomorrow, to use it in the timespec of an at device or for the on-till command for FS20 devices.
sunrise_rel() and sunset_rel() return the relative time to the next sunrise/sunset.
sunrise_abs() and sunset_abs() return the absolute time of the corresponding event today (no 24 hours added).
sunrise_abs_dat() and sunset_abs_dat() return the absolute time of the corresponding event to a given date(no 24 hours added).
Oder wird es beim zweiten Lesen einfach klarer?  ;D

Gruß Otto
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: chipmunk am 27 März 2019, 07:36:56
Otto,
nein es wird auch beim fünften Lesen nicht besser, da es für mich nicht ausreichend dokumentiert ist und daher Fragen offen bleiben.
Ich kann die Beschreibung nicht besser formulieren, da  ich eben nicht weiß, wie sich die Versionen verhalten und wann sie Anwendung finden.

Es gibt von den Befehlen jeweils eine generische Variante (sunset()) und ein paar spezifische (sunset_irgendwas()).
Normalerweise verwendet man in diesem Fall die generische Variante außer man hat einen speziellen Anwendungsfall, der eine spezifische Variante erfordert.
Es ist NICHT erklärt, welche Auswirkungen die unterschiedlichen spezifischen Varianten haben und wofür sie anzuwenden sind.
Die generische Variante sunset() scheint in weekdaytimer zu funktionieren (es wird geschaltet) aber produziert Fehler im Log.
Damit ist es (zumindest mir) unklar, ob sie sonst noch irgendwelche unerwünschten Nebenwirkungen produziert.
Weiters ist zu lesen, dass es drei Parameter gibt, aber dann wird ein vierter verwendet.

Wenn dir alles klar ist: fein - aber ich kenne mich nicht aus.
Es hat auch keinen Sinn, hier weiter zu diskutieren, dass, im Gegensatz zu dir, jemand mit der Beschreibung nicht auskommt.
Das soll kein Angriff sein, ich will nur den Thread nicht sinnlos offen halten.

LG
Chipmunk

PS: Vielleicht habe ich als Informatiker ja zu viel Wissen und hinterfrage die Funktionalität deshalb genauer, statt einfach unbedarft irgend etwas anzunehmen.
Titel: Antw:[gelöst] WeekdayTimer: Wie übergibt man Zeiten an einen Befehl?
Beitrag von: Otto123 am 27 März 2019, 09:45:04
Die Annahme aus dem Namen sunrise() auf eine generische Funktion zu schließen ist meiner Meinung nach falsch.
Im Gegenteil, sie ist eigentlich speziell für Module wie at und Funktionen wie on-till gebaut.
Sie liefert den Zeitpunkt aus der Sicht von JETZT, wenn der Zeitpunkt morgen ist werden einfach 24 h aufgeschlagen.

Das mit den Argumenten ist in der Tat schwierig beschrieben. Es gibt 3 Optionale und das "1-te" Argument. Wenn es nicht angegeben ist, steht dort intern "CIVIL". Anhand des Syntax ist die Funktion so intelligent zu erkennen um was es sich in der ersten Position handelt.