|
From: <pf...@us...> - 2012-11-13 09:58:42
|
Revision: 1137
http://openautomation.svn.sourceforge.net/openautomation/?rev=1137&view=rev
Author: pfry
Date: 2012-11-13 09:58:33 +0000 (Tue, 13 Nov 2012)
Log Message:
-----------
kleine Fixes
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-11-13 08:41:32 UTC (rev 1136)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-11-13 09:58:33 UTC (rev 1137)
@@ -144,16 +144,13 @@
}
# transmit-Adresse abonnieren
- if (defined($logic{$t}{transmit}))
+ if (defined $logic{$t}{transmit})
{
- my $transmit=groupaddress $logic{$t}{transmit};
- $plugin_subscribe{$transmit}{$plugname}=1;
- plugin_log($plugname, "\$logic{$t}: Transmit-GA $transmit nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$transmit};
- }
+ my $transmit=groupaddress $logic{$t}{transmit};
+ $plugin_subscribe{$transmit}{$plugname}=1;
+ plugin_log($plugname, "\$logic{$t}: Transmit-GA $transmit nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$transmit};
+ }
- # Zaehlen und Logeintrag
- $count++;
-
# Timer-Logiken reagieren nicht auf Bustraffic auf den receive-Adressen
# fuer Timer-Logiken: ersten Call berechnen
if($logic{$t}{timer})
@@ -162,17 +159,24 @@
}
# Nun alle receive-Adressen abonnieren (eine oder mehrere)
- my $receive=groupaddress $logic{$t}{receive};
+ if(defined $logic{$t}{receive})
+ {
+ my $receive=groupaddress $logic{$t}{receive};
- next unless $receive;
-
- $receive=[$receive] unless ref $receive;
+ if($receive)
+ {
+ $receive=[$receive] unless ref $receive;
+
+ for my $rec (@{$receive})
+ {
+ $plugin_subscribe{$rec}{$plugname}=1;
+ plugin_log($plugname, "\$logic{$t}: Receive-GA $rec nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$rec};
+ }
+ }
+ }
- for my $rec (@{$receive})
- {
- $plugin_subscribe{$rec}{$plugname}=1;
- plugin_log($plugname, "\$logic{$t}: Receive-GA $rec nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$rec};
- }
+ # Zaehlen und Logeintrag
+ $count++;
}
# plugin_log($plugname, "Initialisierungsblock beendet");
@@ -187,7 +191,7 @@
# Berechnung und Senden beim Startup des Logikprozessors
my $result=execute_logic($t, undef, undef);
- if(defined $result && defined $logic{$t}{transmit} && length($logic{$t}{transmit}))
+ if(defined $result && defined $logic{$t}{transmit})
{
my $ga=groupaddress $logic{$t}{transmit};
knx_write($ga, $result); # DPT aus eibga.conf
@@ -329,7 +333,7 @@
}
else
{
- if(defined $result && defined $transmit && length($transmit))
+ if(defined $result && defined $transmit)
{
knx_write($transmit, $result);
$retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> $transmit:$result gesendet " if $debug;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2012-12-15 03:01:11
|
Revision: 1215
http://openautomation.svn.sourceforge.net/openautomation/?rev=1215&view=rev
Author: pfry
Date: 2012-12-15 03:01:05 +0000 (Sat, 15 Dec 2012)
Log Message:
-----------
Noch ein Mini-Bugfix
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-12-15 02:49:40 UTC (rev 1214)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-12-15 03:01:05 UTC (rev 1215)
@@ -639,17 +639,17 @@
# time=>'08:00+30min' - ab 08:00 alle 30min
# time=>'08:00+5min-09:00' - ab 08:00 alle 5min mit Ende 09:00
my ($head,$t1,$period,$t2)=($1,$2*60+$3,$4*($5 eq 'h' ? 60 : 1),(defined $6 ? ($6*60+$7) : 24*60));
- my $now=$hour*60+$minute;
+ my $now=int($hour)*60+$minute;
# erster Zeitpunkt am Tag
push @{$newtime}, sprintf("%02d:%02d",$t1/60,$t1%60);
# erster Zeitpunkt nach aktueller Tageszeit
- if($t1<$now && $t2>$now)
+ if($t1<=$now && $t2>$now)
{
- $t1+=floor(($now-$t1)/$period+1)*$period;
- $t1+=$period if $t1<$now; # darf eigentlich gar nicht sein, aber zur Sicherheit...
- push @{$newtime}, sprintf("%02d:%02d",$t1/60,$t1%60) if $t1<$t2;
+ $t1+=int(($now-$t1)/$period+1)*$period;
+ $t1+=$period while $t1<=$now; # darf eigentlich nicht sein
+ push @{$newtime}, sprintf("%02d:%02d",$t1/60,$t1%60) if $t1<=$t2;
}
# alter Code: hier wurde noch jede Zeitangabe expandiert (rechenzeitintensiv bei Schedules mit kurzem Intervall)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2012-12-15 03:26:20
|
Revision: 1216
http://openautomation.svn.sourceforge.net/openautomation/?rev=1216&view=rev
Author: pfry
Date: 2012-12-15 03:26:13 +0000 (Sat, 15 Dec 2012)
Log Message:
-----------
Mini-Bugfix
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-12-15 03:01:05 UTC (rev 1215)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-12-15 03:26:13 UTC (rev 1216)
@@ -648,8 +648,8 @@
if($t1<=$now && $t2>$now)
{
$t1+=int(($now-$t1)/$period+1)*$period;
- $t1+=$period while $t1<=$now; # darf eigentlich nicht sein
push @{$newtime}, sprintf("%02d:%02d",$t1/60,$t1%60) if $t1<=$t2;
+ plugin_log($plugname, "now=$now, t1=$t1, t2=$t2") if defined $logic{debug} || defined $logic{$t}{debug};
}
# alter Code: hier wurde noch jede Zeitangabe expandiert (rechenzeitintensiv bei Schedules mit kurzem Intervall)
@@ -690,7 +690,7 @@
calendar_week=>$calendar_week,day_of_week=>$day_of_week_no};
add_day_info($today);
- my $time_of_day=`/bin/date +"%T"`;
+ my $time_of_day=sprintf("%02d:%02d",$hour,$minute);
# Schedule-Form standardisieren (alle Eintraege in Listenform setzen und Wochentage durch Zahlen ersetzen)
# dabei gleich schauen, ob HEUTE noch ein Termin ansteht
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2012-12-15 03:35:02
|
Revision: 1217
http://openautomation.svn.sourceforge.net/openautomation/?rev=1217&view=rev
Author: pfry
Date: 2012-12-15 03:34:55 +0000 (Sat, 15 Dec 2012)
Log Message:
-----------
Debug-Output fuer den heutigen Bugfix wieder entfernt
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-12-15 03:26:13 UTC (rev 1216)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-12-15 03:34:55 UTC (rev 1217)
@@ -649,7 +649,6 @@
{
$t1+=int(($now-$t1)/$period+1)*$period;
push @{$newtime}, sprintf("%02d:%02d",$t1/60,$t1%60) if $t1<=$t2;
- plugin_log($plugname, "now=$now, t1=$t1, t2=$t2") if defined $logic{debug} || defined $logic{$t}{debug};
}
# alter Code: hier wurde noch jede Zeitangabe expandiert (rechenzeitintensiv bei Schedules mit kurzem Intervall)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2012-12-30 10:24:45
|
Revision: 1272
http://openautomation.svn.sourceforge.net/openautomation/?rev=1272&view=rev
Author: pfry
Date: 2012-12-30 10:24:39 +0000 (Sun, 30 Dec 2012)
Log Message:
-----------
/bin/date eliminiert, hoffentlich jetzt stabiler...
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-12-29 20:01:29 UTC (rev 1271)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-12-30 10:24:39 UTC (rev 1272)
@@ -11,8 +11,19 @@
# Tools und vorbesetzte Variablen fuer die Logiken
sub limit { my ($lo,$x,$hi)=@_; return $x<$lo?$lo:($x>$hi?$hi:$x); }
-my $date=`/bin/date +"%W,%a,%u,%m,%d,%Y,%j,%H,%M,%T"`;
-plugin_log($plugname, "Datum/Uhrzeit nicht lesbar: '$date'.") unless $date=~/^(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+)$/;
+my $date=strftime("%W,%a,%u,%m,%d,%Y,%j,%H,%M,%T",localtime);
+plugin_log($plugname, "Datum/Uhrzeit nicht lesbar: '$date'.") unless ($date=~/^(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+)$/);
+#my $date=`/bin/date +"%W,%a,%u,%m,%d,%Y,%j,%H,%M,%T"`;
+#unless($date=~/^(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+)$/)
+#{
+# plugin_log($plugname, "Datum/Uhrzeit nicht lesbar: '$date', versuche strftime.");
+# $date=strftime("%W,%a,%u,%m,%d,%Y,%j,%H,%M,%T",time(),0,1,0,0,70,7,0);
+# unless($date=~/^(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+)$/)
+# {
+# plugin_log($plugname, "Datum/Uhrzeit auch bei strftime nicht lesbar: '$date', steige aus.");
+# return;
+# }
+#}
my $calendar_week=$1;
my $day_of_week=$2;
my $day_of_week_no=$3;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2012-12-30 12:52:46
|
Revision: 1273
http://openautomation.svn.sourceforge.net/openautomation/?rev=1273&view=rev
Author: pfry
Date: 2012-12-30 12:52:39 +0000 (Sun, 30 Dec 2012)
Log Message:
-----------
strftime
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-12-30 10:24:39 UTC (rev 1272)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-12-30 12:52:39 UTC (rev 1273)
@@ -7,7 +7,7 @@
# $plugin_info{$plugname.'_cycle'}=0; return 'deaktiviert';
-use POSIX qw(floor);
+use POSIX qw(floor strftime);
# Tools und vorbesetzte Variablen fuer die Logiken
sub limit { my ($lo,$x,$hi)=@_; return $x<$lo?$lo:($x>$hi?$hi:$x); }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2013-01-03 20:49:23
|
Revision: 1292
http://openautomation.svn.sourceforge.net/openautomation/?rev=1292&view=rev
Author: pfry
Date: 2013-01-03 20:49:16 +0000 (Thu, 03 Jan 2013)
Log Message:
-----------
Bugfix betr. Listen in transmit
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2013-01-03 20:35:06 UTC (rev 1291)
+++ wiregate/plugin/generic/Logikprozessor.pl 2013-01-03 20:49:16 UTC (rev 1292)
@@ -149,7 +149,7 @@
{
$transmit=[$transmit] unless ref $transmit;
- for my $trm (@${transmit})
+ for my $trm (@{$transmit})
{
$plugin_subscribe{$trm}{$plugname}=1;
plugin_log($plugname, "\$logic{$t}: Transmit-GA $trm nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$trm};
@@ -206,11 +206,22 @@
{
$transmit=[$transmit] unless ref $transmit;
- for my $trm (@${transmit})
+ for my $trm (@{$transmit})
{
knx_write($trm, $result); # DPT aus eibga.conf
- plugin_log($plugname, "\$logic{$t}{transmit}(Logik) -> $trm:$result") if $debug;
}
+
+ if($debug)
+ {
+ if(ref $logic{$t}{transmit})
+ {
+ $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result";
+ }
+ else
+ {
+ $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ";
+ }
+ }
}
}
}
@@ -366,11 +377,22 @@
{
if(defined $result && defined $transmit)
{
- for my $trm (@${transmit})
+ for my $trm (@{$transmit})
{
knx_write($trm, $result); # DPT aus eibga.conf
- $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> $trm:$result gesendet " if $debug;
}
+
+ if($debug)
+ {
+ if(ref $logic{$t}{transmit})
+ {
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet ";
+ }
+ else
+ {
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ";
+ }
+ }
}
# Cool-Periode starten
@@ -429,11 +451,22 @@
{
$transmit=[$transmit] unless ref $transmit;
- for my $trm (@${transmit})
+ for my $trm (@{$transmit})
{
knx_write($trm, $result); # DPT aus eibga.conf
- plugin_log($plugname, "\$logic{$t}{transmit}(Logik) -> $trm:$result") if $debug;
}
+
+ if($debug)
+ {
+ if(ref $logic{$t}{transmit})
+ {
+ $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result";
+ }
+ else
+ {
+ $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ";
+ }
+ }
}
# Cool-Periode starten
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2013-01-04 11:14:06
|
Revision: 1299
http://openautomation.svn.sourceforge.net/openautomation/?rev=1299&view=rev
Author: pfry
Date: 2013-01-04 11:13:59 +0000 (Fri, 04 Jan 2013)
Log Message:
-----------
Zusaetzliche Warnung, falls transmit und receive gleiche Adressen enthalten
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2013-01-04 09:36:28 UTC (rev 1298)
+++ wiregate/plugin/generic/Logikprozessor.pl 2013-01-04 11:13:59 UTC (rev 1299)
@@ -140,10 +140,12 @@
plugin_log($plugname, "Config err: \$logic{$t}: delay und timer festgelegt, ignoriere delay");
}
+ my $transmit=$logic{$t}{transmit};
+
# transmit-Adresse(n) abonnieren
- if(defined $logic{$t}{transmit})
+ if(defined $transmit)
{
- my $transmit=groupaddress $logic{$t}{transmit};
+ $transmit=groupaddress $transmit;
if($transmit)
{
@@ -152,7 +154,7 @@
for my $trm (@{$transmit})
{
$plugin_subscribe{$trm}{$plugname}=1;
- plugin_log($plugname, "\$logic{$t}: Transmit-GA $trm nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$trm};
+ plugin_log($plugname, "\$logic{$t}: Transmit-GA $trm nicht in %eibgaconf gefunden") unless exists $eibgaconf{$trm};
}
}
}
@@ -164,10 +166,13 @@
set_next_call($t, $debug);
}
+ my $receive=$logic{$t}{receive};
+
# Nun alle receive-Adressen abonnieren (eine oder mehrere)
- if(defined $logic{$t}{receive})
+ if(defined $receive)
{
- my $receive=groupaddress $logic{$t}{receive};
+ $receive=groupaddress $receive;
+ my @doubles=();
if($receive)
{
@@ -176,9 +181,17 @@
for my $rec (@{$receive})
{
$plugin_subscribe{$rec}{$plugname}=1;
- plugin_log($plugname, "\$logic{$t}: Receive-GA $rec nicht in %eibgaconf gefunden") if $debug && !exists $eibgaconf{$rec};
+ plugin_log($plugname, "\$logic{$t}: Receive-GA $rec nicht in %eibgaconf gefunden") unless exists $eibgaconf{$rec};
+
+ if($debug)
+ {
+ my $qrec=quotemeta $rec;
+ push @doubles, $rec if grep /^$qrec$/, @{$transmit};
+ }
}
}
+
+ plugin_log($plugname, "\$logic{$t}: Warnung: ".(join",", @doubles)." sowohl Receive- als auch Transmit-GA.") if $debug && @doubles;
}
# Zaehlen und Logeintrag
@@ -371,7 +384,7 @@
{
$plugin_info{$plugname.'__'.$t.'_timer'}=$systemtime+$logic{$t}{delay};
$plugin_info{$plugname.'__'.$t.'_cool'}=time()+$logic{$t}{delay}+$logic{$t}{cool} if defined $logic{$t}{cool};
- $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> $transmit:$result, zu senden in ".$logic{$t}{delay}."s " if $debug;
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> delay ".$logic{$t}{delay}."s " if $debug;
}
else
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2013-01-06 18:40:27
|
Revision: 1309
http://openautomation.svn.sourceforge.net/openautomation/?rev=1309&view=rev
Author: pfry
Date: 2013-01-06 18:40:21 +0000 (Sun, 06 Jan 2013)
Log Message:
-----------
div kleine Fixes
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2013-01-06 14:45:59 UTC (rev 1308)
+++ wiregate/plugin/generic/Logikprozessor.pl 2013-01-06 18:40:21 UTC (rev 1309)
@@ -292,7 +292,12 @@
# Debuggingflag gesetzt
my $debug = $logic{debug} || $logic{$t}{debug};
+ my $ignore_read_requests=$logic{$t}{ignore_read_requests};
+ # bei mehreren transmit-Adressen per Default Read-Requests ignorieren (wird idR so erwuenscht sein)
+ $ignore_read_requests = ref !$logic{$t}{transmit} && !$logic{$t}{recalc_on_request} && !$logic{$t}{transmit_only_on_request}
+ unless defined $ignore_read_requests;
+
# Sonderfall: Read- und Write-Telegramme auf einer Transmit-Adresse
if($transmit_ga)
{
@@ -301,7 +306,7 @@
# Read-Requests auf die receive-Adressen werden gar nicht beantwortet
if($msg{apci} eq "A_GroupValue_Read")
{
- next if $logic{$t}{ignore_read_requests};
+ next if $ignore_read_requests;
my $result=$plugin_info{$plugname.'_'.$t.'_result'};
@@ -327,6 +332,8 @@
}
elsif(!$receive_ga) # Wenn eine GA sowohl in transmit als auch receive vorkommt, geht receive vor
{
+ next if $ignore_read_requests; # Speichern hat keinen Zweck, wenn wir spaeter sowieso nicht auf read-requests reagieren
+
if(defined $in) # Write/Response-Telegramm auf transmit: das waren moeglicherweise wir selbst, also nicht antworten
{
$plugin_info{$plugname.'_'.$t.'_result'}=$in; # einfach Input ablegen
@@ -435,22 +442,20 @@
# Transmit-GA
my $toor=$logic{$t}{transmit_only_on_request};
my $result=undef;
+ my $reason='';
unless($logic{$t}{timer})
{
- # zu sendendes Resultat = zuletzt berechnetes Ergebnis der Logik
+ # zu sendendes Resultat = zuletzt berechnetes Ergebnis der Logik (delay)
$result=$plugin_info{$plugname.'_'.$t.'_result'};
- $retval.="\$logic{$t}{transmit}(memory):".
- (defined $result?$result.($toor?" gespeichert":" gesendet"):"nichts zu senden")." (delayed) " if $debug;
+ $reason='delayed';
}
else
{
# ...es sei denn, es ist eine timer-Logik. Die muss jetzt ausgefuehrt werden
# Aufruf der Logik-Engine
$result=execute_logic($t, undef, undef);
- $retval.="\$logic{$t}{transmit}(Logik):".
- (defined $result?$result.($toor?" gespeichert":" gesendet"):"nichts zu senden")." (Timer) " if $debug;
-
+ $reason='Timer';
}
# Timer loeschen bzw. neu setzen
@@ -473,11 +478,11 @@
{
if(ref $logic{$t}{transmit})
{
- $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result";
+ $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet ($reason) ";
}
else
{
- $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ";
+ $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ($reason) ";
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2013-04-20 18:29:44
|
Revision: 1690
http://openautomation.svn.sourceforge.net/openautomation/?rev=1690&view=rev
Author: pfry
Date: 2013-04-20 18:29:32 +0000 (Sat, 20 Apr 2013)
Log Message:
-----------
Generell Output besser formatiert, insbesondere in Bezug auf transmit_changes_only und debug
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2013-04-17 19:29:06 UTC (rev 1689)
+++ wiregate/plugin/generic/Logikprozessor.pl 2013-04-20 18:29:32 UTC (rev 1690)
@@ -48,6 +48,11 @@
# Konfigfile seit dem letzten Mal geaendert?
my $conf="/etc/wiregate/plugin/generic/conf.d/$plugname";
$conf.='.conf' unless $conf=~s/\.pl$/.conf/;
+unless(-f $conf)
+{
+ plugin_log($plugname, "Config err: $conf nicht gefunden.");
+ exit;
+}
my $configtime=24*60*60*(-M $conf);
my $config_modified = ($configtime < $plugin_info{$plugname.'_configtime'}-1);
@@ -153,8 +158,14 @@
for my $trm (@{$transmit})
{
- $plugin_subscribe{$trm}{$plugname}=1;
- plugin_log($plugname, "\$logic{$t}: Transmit-GA $trm nicht in %eibgaconf gefunden") unless exists $eibgaconf{$trm};
+ if(defined $eibgaconf{$trm}{ga})
+ {
+ $plugin_subscribe{$trm}{$plugname}=1;
+ }
+ else
+ {
+ plugin_log($plugname, "\$logic{$t}: Transmit-GA $trm nicht in %eibgaconf gefunden");
+ }
}
}
}
@@ -180,8 +191,14 @@
for my $rec (@{$receive})
{
- $plugin_subscribe{$rec}{$plugname}=1;
- plugin_log($plugname, "\$logic{$t}: Receive-GA $rec nicht in %eibgaconf gefunden") unless exists $eibgaconf{$rec};
+ if(defined $eibgaconf{$rec}{ga})
+ {
+ $plugin_subscribe{$rec}{$plugname}=1;
+ }
+ else
+ {
+ plugin_log($plugname, "\$logic{$t}: Receive-GA $rec nicht in %eibgaconf gefunden");
+ }
if($debug)
{
@@ -228,18 +245,18 @@
{
if(ref $logic{$t}{transmit})
{
- $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result";
+ $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet; ";
}
else
{
- $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ";
+ $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet; ";
}
}
}
}
}
- $retval.=$count." initialisiert, ";
+ $retval.=$count." initialisiert; ";
}
if($event=~/bus/)
@@ -318,13 +335,13 @@
if(defined $result)
{
- $retval.="$ga:Lesetelegramm -> \$logic{$t}{transmit}(Logik) -> $ga:$result gesendet. " if $debug;
+ $retval.="$ga:Lesetelegramm -> \$logic{$t}{transmit}(Logik) -> $ga:$result gesendet; " if $debug;
knx_write($ga, $result, undef, 0x40) if defined $result; # response, DPT aus eibga.conf
}
}
else
{
- $retval.="$ga:Lesetelegramm -> \$logic{$t}{transmit}(memory) -> $ga:$result gesendet. " if $debug;
+ $retval.="$ga:Lesetelegramm -> \$logic{$t}{transmit}(memory) -> $ga:$result gesendet; " if $debug;
knx_write($ga, $result, undef, 0x40); # response, DPT aus eibga.conf
}
@@ -355,7 +372,7 @@
# Cool-Periode definiert und noch nicht abgelaufen?
if(defined $plugin_info{$plugname.'__'.$t.'_cool'} && $plugin_info{$plugname.'__'.$t.'_cool'}>time())
{
- $retval.="$ga:$in -> \$logic{$t}{receive}(Cool) " if $debug;
+ $retval.="$ga:$in -> \$logic{$t}{receive}(Cool); " if $debug;
next;
}
@@ -371,18 +388,39 @@
# In bestimmten Sonderfaellen nichts schicken
unless(defined $result) # Resultat undef => nichts senden
{
- $retval.="$ga:$in -> \$logic{$t}{receive}(Logik) -> nichts zu senden " if $debug;
+ $retval.="$ga:$in -> \$logic{$t}{receive}(Logik) -> nichts zu senden; " if $debug;
next;
}
if($logic{$t}{transmit_only_on_request})
{
- $retval.="$ga:$in -> \$logic{$t}{receive}(Logik) -> $transmit:$result gespeichert " if $debug;
+ if($debug)
+ {
+ if(ref $logic{$t}{transmit})
+ {
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gespeichert; ";
+ }
+ else
+ {
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> ".$logic{$t}{transmit}.":$result gespeichert; ";
+ }
+ }
next;
}
- if($logic{$t}{transmit_changes_only} && ($result eq $prevResult)) {
- $retval.="$ga:$in -> \$logic{$t}{receive}(Logik) -> $transmit:$result unver\xE4ndert -> nichts zu senden " if $debug;
+ if($logic{$t}{transmit_changes_only} && ($result eq $prevResult))
+ {
+ if($debug)
+ {
+ if(ref $logic{$t}{transmit})
+ {
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result unveraendert -> nichts zu senden; ";
+ }
+ else
+ {
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> ".$logic{$t}{transmit}.":$result unveraendert -> nichts zu senden; ";
+ }
+ }
next;
}
@@ -391,7 +429,7 @@
{
$plugin_info{$plugname.'__'.$t.'_timer'}=$systemtime+$logic{$t}{delay};
$plugin_info{$plugname.'__'.$t.'_cool'}=time()+$logic{$t}{delay}+$logic{$t}{cool} if defined $logic{$t}{cool};
- $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> delay ".$logic{$t}{delay}."s " if $debug;
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> delay ".$logic{$t}{delay}."s; " if $debug;
}
else
{
@@ -406,11 +444,11 @@
{
if(ref $logic{$t}{transmit})
{
- $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet ";
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet; ";
}
else
{
- $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ";
+ $retval.="$msg{src} $ga:$in -> \$logic{$t}{receive}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet; ";
}
}
}
@@ -478,11 +516,11 @@
{
if(ref $logic{$t}{transmit})
{
- $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet ($reason) ";
+ $retval.="\$logic{$t}{transmit}(Logik) -> [".join(",",@{$logic{$t}{transmit}})."]:$result gesendet ($reason); ";
}
else
{
- $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ($reason) ";
+ $retval.="\$logic{$t}{transmit}(Logik) -> ".$logic{$t}{transmit}.":$result gesendet ($reason); ";
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2013-04-20 21:47:12
|
Revision: 1692
http://openautomation.svn.sourceforge.net/openautomation/?rev=1692&view=rev
Author: pfry
Date: 2013-04-20 21:47:04 +0000 (Sat, 20 Apr 2013)
Log Message:
-----------
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2013-04-20 19:47:25 UTC (rev 1691)
+++ wiregate/plugin/generic/Logikprozessor.pl 2013-04-20 21:47:04 UTC (rev 1692)
@@ -948,7 +948,7 @@
}
else
{
- $input=();
+ $input=[];
for my $rec (@{$receive})
{
if($ga eq $rec)
@@ -957,8 +957,7 @@
}
else
{
- $in=knx_read($rec, (defined $logic{$t}{eibd_cache}?$logic{$t}{eibd_cache}:300));
- push @{$input}, $in;
+ push @{$input}, knx_read($rec, (defined $logic{$t}{eibd_cache}?$logic{$t}{eibd_cache}:300));
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2013-04-21 21:12:51
|
Revision: 1694
http://openautomation.svn.sourceforge.net/openautomation/?rev=1694&view=rev
Author: pfry
Date: 2013-04-21 21:12:44 +0000 (Sun, 21 Apr 2013)
Log Message:
-----------
hatte versehentlcih einen frueheren Bugfix wieder rueckgaengig gemacht
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2013-04-21 19:10:16 UTC (rev 1693)
+++ wiregate/plugin/generic/Logikprozessor.pl 2013-04-21 21:12:44 UTC (rev 1694)
@@ -949,7 +949,7 @@
}
else
{
- $input=();
+ $input=[];
for my $rec (@{$receive})
{
if($ga eq $rec)
@@ -958,8 +958,7 @@
}
else
{
- $in=knx_read($rec, (defined $logic{$t}{eibd_cache}?$logic{$t}{eibd_cache}:300));
- push @{$input}, $in;
+ push @{$input}, knx_read($rec, (defined $logic{$t}{eibd_cache}?$logic{$t}{eibd_cache}:300));
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2015-01-05 21:59:11
|
Revision: 2313
http://sourceforge.net/p/openautomation/code/2313
Author: pfry
Date: 2015-01-05 21:59:03 +0000 (Mon, 05 Jan 2015)
Log Message:
-----------
Bugfix in date=>'von-bis'
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2015-01-04 23:37:36 UTC (rev 2312)
+++ wiregate/plugin/generic/Logikprozessor.pl 2015-01-05 21:59:03 UTC (rev 2313)
@@ -213,7 +213,14 @@
$footnote.="(T)" if $logic{$t}{transmit_only_on_request};
$footnote.="(R)" if $logic{$t}{recalc_on_request};
- $logic{$t}{reply_to_read_requests}=$reply;
+ if(defined $reply)
+ {
+ $logic{$t}{reply_to_read_requests}=$reply;
+ }
+ else
+ {
+ delete $logic{$t}{reply_to_read_requests};
+ }
next unless $reply;
$transmit=[$transmit] unless ref $transmit;
@@ -1102,7 +1109,7 @@
if($ks=~/^([0-9]+)\/([0-9]+)\-([0-9]+)\/([0-9]+)$/)
{
my ($m1,$d1,$m2,$d2)=($1,$2,$3,$4);
- while($m1<$m2 || ($m1==$m2 && $d1<$d2))
+ while($m1<$m2 || ($m1==$m2 && $d1<=$d2))
{
push @{$newlist}, sprintf("%02d\/%02d",$m1,$d1);
if($d1==$days_in_month[$m1]) { $m1++; $d1=1; } else { $d1++; }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2015-01-27 14:00:54
|
Revision: 2353
http://sourceforge.net/p/openautomation/code/2353
Author: pfry
Date: 2015-01-27 14:00:49 +0000 (Tue, 27 Jan 2015)
Log Message:
-----------
transmit_on_config hinzu
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2015-01-25 12:02:03 UTC (rev 2352)
+++ wiregate/plugin/generic/Logikprozessor.pl 2015-01-27 14:00:49 UTC (rev 2353)
@@ -169,7 +169,7 @@
my @keywords=qw(receive fetch trigger transmit translate debug delay timer prowl eibd_cache reply_to_read_requests
ignore_read_requests transmit_only_on_request recalc_on_request state transmit_changes_only
- execute_on_input_changes_only cool rrd transmit_on_startup followup prowl execute_only_if_input_defined);
+ execute_on_input_changes_only cool rrd transmit_on_startup transmit_on_config followup prowl execute_only_if_input_defined);
my $keywords="(".join("|",@keywords).")";
for my $k (keys %{$logic{$t}})
@@ -441,11 +441,19 @@
{
for my $t (grep !/^(debug$|_)/, keys %{$logic})
{
- next unless $logic->{$t}{transmit_on_startup};
- followup({$t=>0});
+ followup({$t=>0}) if $logic->{$t}{transmit_on_startup};
}
}
+# Das Gleiche fuer transmit_on_config
+if($config_modified)
+{
+ for my $t (grep !/^(debug$|_)/, keys %{$logic})
+ {
+ followup({$t=>0}) if $logic->{$t}{transmit_on_config};
+ }
+}
+
# Aufruf durch Bustraffic (d.h. eine Logik wird durch receive=>..., trigger=>... oder auch transmit=>... auf einer GA "getroffen"
if($event=~/bus/)
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2015-01-29 23:15:35
|
Revision: 2355
http://sourceforge.net/p/openautomation/code/2355
Author: pfry
Date: 2015-01-29 23:15:32 +0000 (Thu, 29 Jan 2015)
Log Message:
-----------
Bugfix: wenn Logik mit bereits laufendem Delay-Timer als Followup nochmal aufgerufen wird und dann cancel zurueckgibt, wird Delay-Timer nun (korrekt) geloescht; das hat vorher nicht funktioniert
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2015-01-27 14:01:34 UTC (rev 2354)
+++ wiregate/plugin/generic/Logikprozessor.pl 2015-01-29 23:15:32 UTC (rev 2355)
@@ -673,6 +673,7 @@
if($logic->{$t}{delay} && defined $plugin_info{$plugname.'__'.$t.'_delay'}) # Laufender Delay?
{
$plugin_info{$plugname.'__'.$t.'_result'}=$prevResult; # altes Resultat wieder aufnehmen
+ $retval.=sprintf("(Logik) -> unveraendert, $prevResult wird in %.0f s gesendet; ", $plugin_info{$plugname.'__'.$t.'_delay'}-time()) if $debug;
}
next;
}
@@ -700,16 +701,8 @@
if($logic->{$t}{delay} && defined $plugin_info{$plugname.'__'.$t.'_delay'})
{
$plugin_info{$plugname.'__'.$t.'_result'}=$prevResult; # altes Resultat wieder aufnehmen
-
- if($result eq 'cancel')
- {
- delete $plugin_info{$plugname.'__'.$t.'_delay'};
- $retval.="(Logik) -> wartender Delay-Timer geloescht; " if $debug;
- }
- else
- {
- $retval.=sprintf("(Logik) -> unveraendert, $prevResult wird in %.0f s gesendet; ", $plugin_info{$plugname.'__'.$t.'_delay'}-time()) if $debug;
- }
+ delete $plugin_info{$plugname.'__'.$t.'_delay'};
+ $retval.="(Logik) -> wartender Delay-Timer geloescht; " if $debug;
}
else
{
@@ -717,7 +710,7 @@
}
# Followup durch andere Logik definiert? Dann in Timer-Liste eintragen
- if($result eq 'cancel' && defined $logic->{$t}{followup})
+ if($logic->{$t}{followup})
{
my $followup=$logic->{$t}{followup};
@@ -849,7 +842,7 @@
set_next_call('timer',$t,$logic->{$t}{timer},$year,$day_of_year,$month,$day_of_month,$calendar_week,$day_of_week_no,
$hour,$minute,$time_of_day,$systemtime,$debug);
}
- elsif($reason eq 'delay' || ($reason eq 'followup' && $plugin_info{$timer}==$scheduled_time)) # kein neus Followup
+ elsif($reason eq 'delay' || ($reason eq 'followup' && $plugin_info{$timer}==$scheduled_time)) # kein neues Followup
{
delete $plugin_info{$timer};
}
@@ -859,7 +852,7 @@
{
my $transmit=groupaddress $logic->{$t}{transmit};
- if($transmit)
+ if($transmit && $result ne 'cancel')
{
$transmit=[$transmit] unless ref $transmit;
@@ -887,26 +880,34 @@
}
# Followup durch andere Logik definiert? Dann in Timer-Liste eintragen
- if(defined $result && defined $logic->{$t}{followup})
+ if($result eq 'cancel')
{
- my $followup=$logic->{$t}{followup};
-
- if($result eq 'cancel')
+ if($logic->{$t}{followup})
{
+ my $followup=$logic->{$t}{followup};
+
for my $q (grep !/^(debug$|_)/, keys %{$followup})
{
plugin_log($plugname, "Followup '$q' storniert.")
- if defined $plugin_info{$plugname.'__'.$q.'_followup'} && ($debug || $logic->{$q}{debug} || $followup->{debug});
-
+ if defined $plugin_info{$plugname.'__'.$q.'_followup'} && ($debug || $logic->{$q}{debug} || $followup->{debug});
delete $plugin_info{$plugname.'__'.$q.'_followup'};
+ $retval.="(Logik) -> wartender Followup-Timer geloescht; " if $debug;
}
}
- else
+
+ if(defined $plugin_info{$plugname.'__'.$t.'_delay'})
{
- set_followup($t,$followup,$year,$day_of_year,$month,$day_of_month,$calendar_week,
- $day_of_week_no,$hour,$minute,$time_of_day,$systemtime,$debug);
+ $plugin_info{$plugname.'__'.$t.'_result'}=$prevResult; # altes Resultat wieder aufnehmen
+ delete $plugin_info{$plugname.'__'.$t.'_delay'};
+ $retval.="(Logik) -> wartender Delay-Timer geloescht; " if $debug;
}
}
+ elsif(defined $result && $logic->{$t}{followup})
+ {
+ my $followup=$logic->{$t}{followup};
+ set_followup($t,$followup,$year,$day_of_year,$month,$day_of_month,$calendar_week,
+ $day_of_week_no,$hour,$minute,$time_of_day,$systemtime,$debug);
+ }
}
}
else # noch nicht faelliger Timer
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pf...@us...> - 2015-02-12 12:40:45
|
Revision: 2357
http://sourceforge.net/p/openautomation/code/2357
Author: pfry
Date: 2015-02-12 12:40:43 +0000 (Thu, 12 Feb 2015)
Log Message:
-----------
Logikresultate fuer reply_to_read_requests ueberleben nun auch einen Neustart
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2015-02-09 12:06:50 UTC (rev 2356)
+++ wiregate/plugin/generic/Logikprozessor.pl 2015-02-12 12:40:43 UTC (rev 2357)
@@ -115,7 +115,7 @@
for my $k (grep /^$plugname\_/, keys %plugin_info)
{
next if $k=~m/^$plugname\_last/;
- next unless $k=~m/$plugname\__(.*)_(timer|delay|cool|followup)/ && !defined $logic{$1};
+ next unless $k=~m/$plugname\__(.*)_(timer|delay|cool|followup|result)/ && !defined $logic{$1};
delete $plugin_info{$k};
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|