Autor Thema: Indirekte Zeitsteuerung für mehrere Geräte?  (Gelesen 216 mal)

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1636
Indirekte Zeitsteuerung für mehrere Geräte?
« 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
configDB und Windows befreite Zone!

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9750
Antw:Indirekte Zeitsteuerung für mehrere Geräte?
« Antwort #1 am: 23 Juni 2022, 11:29:00 »
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

 

decade-submarginal