Reading nur mit bestimmter Syntax annehmen

Begonnen von hhsch, 31 Oktober 2015, 15:45:48

Vorheriges Thema - Nächstes Thema

hhsch

Das Reading eines Dummys soll nur dann aktualisiert werden, wenn es zu einer Regular Expression passt. Dazu habe ich folgenden Dummy eingerichtet:


Internals:
   NAME       ZiSued_TempList
   NR         70
   STATE      on
   TYPE       dummy
   CHANGETIME:
   Helper:
     Dblog:
       List:
         Mydblog:
           TIME       1446301933.81402
           VALUE      1
   Readings:
     2015-10-31 15:32:13   list            12:00 14.0 24:00 17.0
     2015-10-31 15:30:21   list_b          12:00 14.0 24:00 17.0
     2015-10-31 14:56:43   state           on
Attributes:
   alias      Temperatur Plan
   group      Heizung
   room       ZiSued
   userReadings list {my $r = ReadingsVal($name,"list",0);; if($r =~ /^((((1[0-9])|(2[0-3])|[0-9]):[0-6]0) (([1-2][0-9]\.(0|5))|30\.0|[5-9]\.(0|5)) )+(24:00 (([1-2][0-9]\.(0|5))|30\.0|[5-9]\.(0|5)))$/) {fhem("setreading $name list_b $r");; $r;;} else {ReadingsVal($name,"list_b",0);;} }


Die regexp des userReadings funktioniert, sobald ich aber mit dem fhem() Befehl das Backup-Reading list_b setzen will, stürzt fhem ab. Woran liegt das? Gibt es eine einfachere Möglichkeit Readings nur dann anzunehmen wenn sie auf ein regexp matchen?

Grüße
hhsch
FHEM mit DbLog (MySQL) auf BananaPi M2 (RPiTC-2_beta1-bpi-m2), mit CUL868 (fw 1.57) und CUL868 (fw 1.57) im HM Betrieb
12xCUL_EM, 2xCUL_WS, 6xHMS100T, 4xHMS100TF, CUL_HM_HM_CC_RT_DN, CUL_HM_HM_TC_IT_WM_W_EU, CUL_HM_HM_SEC_SCo, CUL_HM_HM_LC_SW2_FM, KS300

hhsch

Habe die Lösung gefunden. Der setreading Befehl führt wohl zu einer unendlichen Rekursion bis der RAM volläuft.

attr userReadings list:list {my $r = ReadingsVal($name,"list",0);; if($r =~ /^((((1[0-9])|(2[0-3])|[0-9]):[0-6]0) (([1-2][0-9]\.(0|5))|30\.0|[5-9]\.(0|5)) )+(24:00 (([1-2][0-9]\.(0|5))|30\.0|[5-9]\.(0|5)))$/) {$r;;} else {ReadingsVal($name,"list_b",0);;}},list_b:list {my $r = ReadingsVal($name,"list",0);; if($r =~ /^((((1[0-9])|(2[0-3])|[0-9]):[0-6]0) (([1-2][0-9]\.(0|5))|30\.0|[5-9]\.(0|5)) )+(24:00 (([1-2][0-9]\.(0|5))|30\.0|[5-9]\.(0|5)))$/) {$r;;}}


Grüße
hhsch
FHEM mit DbLog (MySQL) auf BananaPi M2 (RPiTC-2_beta1-bpi-m2), mit CUL868 (fw 1.57) und CUL868 (fw 1.57) im HM Betrieb
12xCUL_EM, 2xCUL_WS, 6xHMS100T, 4xHMS100TF, CUL_HM_HM_CC_RT_DN, CUL_HM_HM_TC_IT_WM_W_EU, CUL_HM_HM_SEC_SCo, CUL_HM_HM_LC_SW2_FM, KS300