FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Elektrolurch am 23 Juni 2022, 10:34:43

Titel: Indirekte Zeitsteuerung für mehrere Geräte?
Beitrag von: Elektrolurch am 23 Juni 2022, 10:34:43
Hallo Liste,

ich lese aus einem reading eines Gerätes eine Uhrzeit aus und seuere damit ein DOIF:

DOIF ([[Az_FRolladen:OpenTime]])
(
set $DEVICE open
)

Jetzt möchte ich dies allerdings für 10 Geräte lösen, ohne dass ich 10 DOIF's dafür anlegen möchte.
Setze ich für das Gerät eine regex ein, so wird das ganze ja als Ereignis-Steuerung interpretiert.


   DOIF        ([["^.._.Rolladen":"OpenTime":"\d+:\d\d","08:00"]])
(
set DEVICE open
)

Beispielsweise führt ein 

trigger Az_FRolladen OpenTime 08:30"

dazu, das beim DOIF ein Timer angelegt wird:

     2022-06-23 08:26:56   timer_01_c01    24.06.2022 00:00:00

also a) mit der falschen Uhrzeit und
b) Vermutlich habe ich da einen Denkfehler -> geht das überhaupt für viele Geräte per regex mit einem DOIF?

Elektrolurch
Titel: Antw:Indirekte Zeitsteuerung für mehrere Geräte?
Beitrag von: Damian am 23 Juni 2022, 11:29:00
Zitat von: Elektrolurch am 23 Juni 2022, 10:34:43
Hallo Liste,

ich lese aus einem reading eines Gerätes eine Uhrzeit aus und seuere damit ein DOIF:

DOIF ([[Az_FRolladen:OpenTime]])
(
set $DEVICE open
)

Jetzt möchte ich dies allerdings für 10 Geräte lösen, ohne dass ich 10 DOIF's dafür anlegen möchte.
Setze ich für das Gerät eine regex ein, so wird das ganze ja als Ereignis-Steuerung interpretiert.


   DOIF        ([["^.._.Rolladen":"OpenTime":"\d+:\d\d","08:00"]])
(
set DEVICE open
)

Beispielsweise führt ein 

trigger Az_FRolladen OpenTime 08:30"

dazu, das beim DOIF ein Timer angelegt wird:

     2022-06-23 08:26:56   timer_01_c01    24.06.2022 00:00:00

also a) mit der falschen Uhrzeit und
b) Vermutlich habe ich da einen Denkfehler -> geht das überhaupt für viele Geräte per regex mit einem DOIF?

Elektrolurch
Ein Zeittrigger kann nur eine Zeit beinhalten, deshalb kann man auch bei indirekten Zeittriggern nur eine Zeit angeben und damit nur ein Reading. Regex würde hier keinen Sinn ergeben.

Mehrere gleich aufgebaute DOIFs, kann man nur im Perl-Modus mithilfe eines Templates erzeugen.