[Gelöst] on-for-timer Status in fhem nach Ablauf des Timers

Begonnen von dadoc, 21 November 2015, 17:17:43

Vorheriges Thema - Nächstes Thema

dadoc

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). 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), 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
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

marvin78


dadoc

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?
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

marvin78

Es geht nicht um um @@, sondern auch um %% (=>%), %NAME (=>$NAME) und %EVENT (=>$EVENT). Lese mal die commandref zu notify.

dadoc

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
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Brice

Eine Verständnisfrage:

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

Übersehe ich etwas Wesentliches?

Stefan
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

dadoc

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
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

rudolfkoenig


dadoc

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.
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods