FHEM Forum

FHEM - Hausautomations-Systeme => SlowRF => Thema gestartet von: dadoc am 21 November 2015, 17:17:43

Titel: [Gelöst] on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: dadoc am 21 November 2015, 17:17:43
Guten Abend,
soweit ich sehe, ist es nach wie vor so, das nach dem Abschicken eines on-for-timer xx-Befehls der State des Geräts in fhem dauerhaft auf "on-for-timer xx" bleibt.
Zur Steuerung von Velux-Rollläden müsste ich aber abfragen können, ob der Timer tatsächlich noch läuft oder schon abgelaufen ist.
Das Problem wurde schon einmal von anderen diskutiert und gelöst (http://forum.fhem.de/index.php/topic,23940.0/nowap.html (http://forum.fhem.de/index.php/topic,23940.0/nowap.html)). Damit hatte das bei mir auch funktioniert. Und es gab auch einen Wiki-Eintrag (http://www.fhemwiki.de/wiki/On-for-timer_zur%C3%BCcksetzen (http://www.fhemwiki.de/wiki/On-for-timer_zur%C3%BCcksetzen)), der aber im Oktober 2015 gelöscht wurde.
Der o.g. Code wirft jetzt auch Fehler aus:
2015.11.21 12:20:38 3: OnForTimer_n return value: Can't use global @@ in "my" at (eval 100) line 2, near "my @@"syntax error at (eval 100) line 2, near "@@args" Global symbol "@args" requires explicit package name at (eval 100) line 6.
Global symbol "@args" requires...


Ist das ein diskreter Hinweis darauf, solche Sachen ausschließlich mit at anzugehen?
Grüße
Martin
Titel: Antw:on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: marvin78 am 21 November 2015, 17:18:49
Suche mal nach featurelevel 5.7 hier im Forum.
Titel: Antw:on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: dadoc am 21 November 2015, 18:15:17
Vielen Dank, also ab sofort @ statt @@.
Bringt mir jetzt allerdings

"Illegal modulo zero at line 9"

Das notify ist:
define OnForTimer_n notify .*:on-for-timer.* {\
my @args= split(" ", "%EVENT");; \
if($defs{%NAME_off}) { \
my $mod_cmd= sprintf ( \
"modify %NAME_off +%%02d:%%02d:%%02d", \
$args[1] / 3600, ($args[1] / 60) %% 60, $args[1] %%60);; \
fhem $mod_cmd;; \
} else { my $room = AttrVal("%NAME", "room", "Unsorted");; \
my $def_cmd= sprintf ( \
"define %NAME_off at +%%02d:%%02d:%%02d set %NAME off", \
$args[1] / 3600, ($args[1] / 60) %% 60, $args[1] %%60);; \
fhem $def_cmd;; \
fhem "attr %NAME_off room $room" \
} \
}

Brauche ich da Math::BigInt?
Titel: Antw:on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: marvin78 am 21 November 2015, 18:16:56
Es geht nicht um um @@, sondern auch um %% (=>%), %NAME (=>$NAME) und %EVENT (=>$EVENT). Lese mal die commandref zu notify.
Titel: Antw:on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: dadoc am 21 November 2015, 20:14:17
Nochmals danke - jetzt geht's.
Ich habe den geänderten Code in dem eingangs zitierten Thread geposted.
Falls der gelöschte Wiki-Eintrag wieder hergestellt wird, kann ich es dort auch ändern.
Grüße
Martin
Titel: Antw:[Gelöst] on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: Brice am 22 November 2015, 09:03:28
Eine Verständnisfrage:

warum reicht dir nicht attr <Device> follow-on-for-timer 1

Übersehe ich etwas Wesentliches?

Stefan
Titel: Antw:[Gelöst] on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: dadoc am 22 November 2015, 10:44:35
Das war auch mein erster Ansatz, aber da bekam ich (FS20 SM8)
Notify_Velux return value: Unknown argument follow-on-for-timer, choose one of off off-for-timer on on-for-timer reset timer toggle on-till on-till-overnight blink off-till-overnight intervals off-till
und dachte daher, dass das vlt. nicht mehr unterstützt wird und habe es nicht weiter verfolgt.
Habe es jetzt BTW doch mit einem Ausschalten per at gelöst, da besagter Code bei der Verwendung von Stucture zum Betätigen mehrere Rollläden nicht richtig funktionierte (der Timer des jeweils letzten Geräts in der Structure-Definition wurde nicht gelöscht.
Grüße
Martin
Titel: Antw:[Gelöst] on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: rudolfkoenig am 22 November 2015, 11:23:58
follow-on-for-timer ist ein "attr", kein "set".
Titel: Antw:[Gelöst] on-for-timer Status in fhem nach Ablauf des Timers
Beitrag von: dadoc am 23 November 2015, 18:35:48
Aua, da war der letzte Kamillentee wohl doch zu viel, zumal ich on-for-timer ja schon bei anderen Geräten im Einsatz habe. Jetzt klappt es zumindest in den ersten Versuchen bestens mit follow-on-for-timer. Dann war der Wiki-Eintrag wohl wirklich obsolet.