Im DOIF einen *-for-timer abfragen

Begonnen von fireball, 09 Juni 2026, 15:48:01

Vorheriges Thema - Nächstes Thema

fireball

Hi Freunde,

ich habe ne kurze Frage, ich hab eine Bewässerungssteuerung mit DOIF implementiert und die läuft seit Jahren gut.
Ich habe ne klein Verbesserung, aber weiß nicht genau wie ich das abfrage.

Wenn es genug geregnet hat oder es gerade regnet, dann setze ich einen Dummy auf "off-for-timer xxxx"

Ich würde jetzt gern in einer DOIF Bedingung noch abfragen ob der Timer läuft und dann eine Bedingung nicht ausführen:

Ich hatte erst:
DOELSEIF([Wetterstation:israining:d] == 1 && [Gartenbewaesserung] ne "off-for-timer")

das funzt aber nicht, weil ja auch noch ne Zahl hinter off-for-timer ist
Viell. geht das ja mit nem regulären Ausdruck wie off-for-timer.*

oder die KI hat mir grad folgendes vorgeschlagen?! Geht das?

DOELSEIF([Wetterstation:israining:d] == 1 && [Gartenbewaesserung:wait_timer] > 0)

Also ich will einfach verhindern, wenn der off-for-timer läuft, dass die Bedingung nochmal ausgeführt wird.

VG+Danke
René


Guybrush

wenn Gartenbewaesserung dein dummy device ist und off-for-timer immer eine Zahl, würde doch [Gartenbewaesserung:off-for-timer:d] > 0 doch passen? ansonsten kannst du im doif auch per regex vergleichen. da dann zb mit [Gartenbewaesserung] =~ /off-for-timer\s\d+/ . Ich denke aber mal, dass off-for-timer ein reading in deinem dummy device ist?

fireball

Hi,

ja Gartenbewässerung ist mein Dummy und mit useSetExtensions=1 erweitert, sodass man die erweiterten on/off-for-timer Funktionen hat. siehe Bild.
off-for-timer steht im state... dann müsste der Regex den du vorgeschlagen hast ja auf [Gartenbewaesserung:state] oder sogar rein auf [Gartenbewaesserung] funktionieren.
Ein spezielles Reading gibts dafür nicht.

Hatte nur dieses [Gartenbewaesserung:wait_timer] gefunden, was wohl intern genutzt wird, aber nicht als Reading sichtbar ist.


VG
René


rabehd

Wie wäre es mit einem List des DOIF und aller Devices, die beteiligt sind?
Screenshots helfen nicht und werden ungern gesehen.
Auch funktionierende Lösungen kann man hinterfragen.

Damian

Ich würde den off-for-timer über einen Zweig im DOIF-Device mit wait realisieren, wenn eine andere Bedingung des DOIF-Devices zuschlägt, wird der wartende Zweig automatisch abgebrochen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF