Ok!
Ich habe mich nun entschlossen, die Karenzzeit in die Logikengine einzufuehren: für eine bestimmte Zeit blockiert die Engine die Ausführung der Logik.
@Makki: hier noch ein einfacher wiregated.pl-Patch betr Uhrzeit/Datum. ACHTUNG: wurde nochmal geändert!
VG, Fry
Ich habe mich nun entschlossen, die Karenzzeit in die Logikengine einzufuehren: für eine bestimmte Zeit blockiert die Engine die Ausführung der Logik.
@Makki: hier noch ein einfacher wiregated.pl-Patch betr Uhrzeit/Datum. ACHTUNG: wurde nochmal geändert!
Code:
--- wiregated.pl.orig 2012-05-11 23:45:21.000000000 +0200 +++ wiregated.pl 2012-05-12 00:03:37.000000000 +0200 @@ -206,16 +206,17 @@ sub decode_dpt10 { #3byte time my @val = split(" ",shift); - my @wd = qw(Null Mo Di Mi Do Fr Sa So); + my @wd = qw(0 Mo Di Mi Do Fr Sa So); $val[0] = hex($val[0]); $val[1] = hex($val[1]); $val[2] = hex($val[2]); - unless ($val[2]) { return; } + unless (defined $val[2]) { return; } my $day = ($val[0] & 0xE0) >> 5; + $day=$day?($wd[$day].' '):''; my $hour = $val[0] & 0x1F; my $minute = $val[1]; my $second = $val[2]; - return sprintf("%s %02i:%02i:%02i",$wd[$day],$hour,$minute,$second); + return sprintf("%s%02i:%02i:%02i",$day,$hour,$minute,$second); } sub decode_dpt11 { #3byte date @@ -224,7 +225,7 @@ $val[0] = hex($val[0]); $val[1] = hex($val[1]); $val[2] = hex($val[2]); - unless ($val[2]) { return; } + unless (defined $val[2]) { return; } my $mday = $val[0] & 0x1F; my $mon = $val[1] & 0x0F; my $year = $val[2] & 0x7F; @@ -411,7 +412,7 @@ $dpt = $eibgaconf{$dst}{'DPTSubId'} unless $dpt; # read dpt from eibgaconf if existing given ($dpt) { when (/^10/) { - my %wd=(Mo=>1, Di=>2, Mi=>3, Do=>4, Fr=>5, Sa=>6, So=>7); + my %wd=(Mo=>1, Di=>2, Mi=>3, Do=>4, Fr=>5, Sa=>6, So=>7, Mon=>1, Tue=>2, Wed=>3, Thu=>4, Fri=>5, Sat=>6, Sun=>7); my $wdpat=join('|',keys %wd); my ($w,$h,$m,$s); return unless ($w,$h,$m,$s)=($value=~/^($wdpat)?\s*([0-2][0-9])\:([0-5][0-9])\:?([0-5][0-9])?\s*/si);
Kommentar