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