interne Timer anzeigen und evtl. verändern

Begonnen von roedert, 23 Juli 2019, 23:51:21

Vorheriges Thema - Nächstes Thema

roedert

FHEM legt ja teilweise interne Timer an, zB beim Sleep-Befehl und (außer bei HM) wohl auch bei on/off-for-timer.
Kann man sich diese internen Timer auch irgendwie anzeigen und evtl. auch beeinflussen - Zeit ändern oder ganz löschen?

amenomade

%intAt enthält die Timer
RemoveInternalTimer($hash) löscht die Timer eines Devices.

Aber... was willst Du damit machen? Die Manipulation von den internen Timers halte ich für eine sehr schlechte Idee, es sei denn, Du bist dabei ein Modul zu entwickeln. Es gibt bestimmt andere Möglichkeiten.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Beta-User

Speziell zu sleep gibt es cancel; das setzt aber voraus, dass das sleep benannt ist (siehe cref zu beiden Befehlen).

Die SetExtensions-timer (on-for-timer&Co) sind jeweils beim zu schaltenden Gerät "angehängt" und können darüber auch abgerufen werden (wirf mal einen Blick auf ein list eines Geräts, das du mit einem on-for-timer-Befehl angeschaltet hast). Diese sollte man auch über den SetExtensions-Weg neu schreiben bzw. schlicht den passenden on/off-Command senden, um die abzubrechen.

Wie amenomade schreibt, ist es in der Regel außerhalb dieser beiden Fälle keine so gute Idee, in die Timerfunktionalität direkt eingreifen zu wollen, von daher verzichte ich im Moment auch darauf, hier im Anfängerbereich Code zu posten, mit dem man sich die Timer insgesamt anzeigen lassen kann.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

roedert

Danke erstmal für die Antworten. Es war eigentlich nur ein "Gedankenspiel".
Hintergrund
a) Nach einem set on-for-timer hatte ich noch mit paar on und offs rumgespielt und wollte wissen ob der Timer fürs Aussschalten trotzdem noch vorhanden ist -> stimmt, das sieht man prima im List-Befehle, also Frage beantwortet
b) jeden Abend wird die Gartenbeleuchtung mit on-for-timer 5400 eingeschaltet. Wenn ich aber im Garten bin, würde ich das automatische Abschalten manchmal gerne abbrechen und es manuell (bzw. über andere Kriterien) ausschalten. Daher die Frage ob man den internen Timer des on-for-timer dafür beeinflussen kann. Die bessere Lösung wäre aber wahrscheinlich ein "richtiges" at mit einem set off anzulegen - dies kann man dann ja problemlos anpassen.
 

Beta-User

Zitat von: roedert am 24 Juli 2019, 07:43:27
b) jeden Abend wird die Gartenbeleuchtung mit on-for-timer 5400 eingeschaltet. Wenn ich aber im Garten bin, würde ich das automatische Abschalten manchmal gerne abbrechen und es manuell (bzw. über andere Kriterien) ausschalten. Daher die Frage ob man den internen Timer des on-for-timer dafür beeinflussen kann. Die bessere Lösung wäre aber wahrscheinlich ein "richtiges" at mit einem set off anzulegen - dies kann man dann ja problemlos anpassen.
Ein Totalabbruch wäre ein "normales" on (oder off). Was du aber scheinbar haben willst, ist eine Änderung. Dazu kannst du den laufenden Timer problemlos überschreiben, z.B. auch mit einem "on-till" oder einem neuen on-for-timer, wenn du einen neuen/geänderten Timer haben willst.
So richtig kann ich den Vorteil eines "unabhängigen" at hier nicht sehen, aber vielleicht übersehe ich ja auch was...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

#5
Im DOIF-Perl-Modus kannst du beliebig viele Timer definieren, abfragen, ändern und löschen. Deren aktueller Ablaufzeitpunkt wird in Readings des Moduls angezeigt:

https://fhem.de/commandref_DE.html#DOIF_Ausf%C3%BChrungstimer

Und deren Anwendung:

https://fhem.de/commandref_DE.html#DOIF_Anwendungsbeispiele_im_Perlmodus
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF