Indirekte Zeitsteuerung für mehrere Geräte?

Begonnen von Elektrolurch, 23 Juni 2022, 10:34:43

Vorheriges Thema - Nächstes Thema

Elektrolurch

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
configDB und Windows befreite Zone!

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF