|
From: <pf...@us...> - 2015-02-15 20:57:13
|
Revision: 2358
http://sourceforge.net/p/openautomation/code/2358
Author: pfry
Date: 2015-02-15 20:57:10 +0000 (Sun, 15 Feb 2015)
Log Message:
-----------
Bugfix betreffend transmit_changes_only in Verbindung mit Neustart, ausserdem impliziert transmit_on_startup nun transmit_on_config
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
wiregate/plugin/generic/conf.d/Logikprozessor.conf_sample
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2015-02-12 12:40:43 UTC (rev 2357)
+++ wiregate/plugin/generic/Logikprozessor.pl 2015-02-15 20:57:10 UTC (rev 2358)
@@ -251,10 +251,10 @@
}
}
+ plugin_log($plugname, "Bei folgende Logiken wurde daher reply_to_read_requests=>0 gesetzt:");
+ plugin_log($plugname, join ", ", keys %changed);
plugin_log($plugname, "(T) - transmit_only_on_request gesetzt");
plugin_log($plugname, "(R) - recalc_on_request gesetzt");
- plugin_log($plugname, "Bei folgende Logiken wurde daher reply_to_read_requests=>0 gesetzt:");
- plugin_log($plugname, join ", ", keys %changed);
}
# Ende Konfiguration pruefen #######################################################
@@ -436,12 +436,14 @@
$eibd_backend_address=$logic->{'_eibd_backend_address'} if defined $logic->{'_eibd_backend_address'};
+#plugin_log($plugname, $event.($event=~/bus/ ? " $msg{dst} $msg{val}":""));
+
# Alle Logiken mit transmit_on_startup=>1 als followup vormerken - dadurch kann uns ein Timeout nicht so sehr treffen...
if($event=~/restart|modified/)
{
for my $t (grep !/^(debug$|_)/, keys %{$logic})
{
- followup({$t=>0}) if $logic->{$t}{transmit_on_startup};
+ followup({$t=>0}) if $logic->{$t}{transmit_on_startup} || $logic->{$t}{transmit_on_config}; # startup impliziert config
}
}
@@ -735,7 +737,7 @@
next;
}
- if($logic->{$t}{transmit_changes_only} && ($result eq $prevResult))
+ if($logic->{$t}{transmit_changes_only} && ($result eq $prevResult) && !($event=~/restart|modified/ || $config_modified))
{
if(ref $logic->{$t}{transmit})
{
@@ -864,7 +866,7 @@
}
if(defined $result && !$logic->{$t}{transmit_only_on_request} && defined $logic->{$t}{transmit}
- && (!$logic->{$t}{transmit_changes_only} || $result ne $prevResult))
+ && !($logic->{$t}{transmit_changes_only} && $result eq $prevResult && !($event=~/restart|modified/ || $config_modified)))
{
my $transmit=groupaddress $logic->{$t}{transmit};
Modified: wiregate/plugin/generic/conf.d/Logikprozessor.conf_sample
===================================================================
--- wiregate/plugin/generic/conf.d/Logikprozessor.conf_sample 2015-02-12 12:40:43 UTC (rev 2357)
+++ wiregate/plugin/generic/conf.d/Logikprozessor.conf_sample 2015-02-15 20:57:10 UTC (rev 2358)
@@ -287,7 +287,7 @@
# Hier wird die zweite Tuer zwei Sekunden spaeter geoeffnet und die dritte drei Sekunden nach der ersten.
# Statt der 2 und 3 koennte da auch stehen '2s', oder '2min', oder '2h'.
# Auch moeglich ist es - in diesem Beispiel vielleicht wenig sinnvoll - eine Definition analog der Option timer zu hinterlegen:
- Tuer1_oeffnen => { transmit=>'Tuer1', translate=>1, followup=>{time=>'08:00', weekday=>1} },
+ Tuer1_oeffnen => { transmit=>'Tuer1', translate=>1, followup=>{'Tuer2_oeffnen'=>{time=>'08:00', weekday=>1}} },
# Hier wuerde die Tur bspw. geoeffnet, wenn das naechste Mal 8 Uhr an einem Wochentag ist.
# Alle Moeglichkeiten der Option timer stehen zur Verfuegung. Ein wichtiger Unterschied zu timer ist aber,
# dass mit dieser followup- Option nur eine EINMALIGE Ausfuehrung der Folgelogik verknuepft ist.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|