|
From: <pf...@us...> - 2012-05-03 09:27:27
|
Revision: 784
http://openautomation.svn.sourceforge.net/openautomation/?rev=784&view=rev
Author: pfry
Date: 2012-05-03 09:27:17 +0000 (Thu, 03 May 2012)
Log Message:
-----------
Modified Paths:
--------------
wiregate/plugin/generic/Szenencontroller.pl
wiregate/plugin/generic/Translator.pl
Modified: wiregate/plugin/generic/Szenencontroller.pl
===================================================================
--- wiregate/plugin/generic/Szenencontroller.pl 2012-05-02 23:37:31 UTC (rev 783)
+++ wiregate/plugin/generic/Szenencontroller.pl 2012-05-03 09:27:17 UTC (rev 784)
@@ -45,7 +45,7 @@
$conf="/etc/wiregate/plugin/generic/conf.d/$conf";
my %scene=();
my $err=read_from_config();
-return "config err" if $err;
+return $err if $err;
# Dynamisch definierte Szenen aus plugin_info einlesen
recall_from_plugin_info();
@@ -88,6 +88,8 @@
return $count." initialisiert";
}
+my $retval='';
+
if($event=~/bus/)
{
# nur auf Write-Telegramme reagieren
@@ -129,18 +131,25 @@
if($cmd eq 'S') # Szene speichern
{
- # Debugging
- plugin_log($plugname, "Szene $z speichern: ".join(',', (sort keys %{$scene{$sc}{gas}})));
+ $retval.="Szene $z speichern: ";
delete $scene{$z};
- for my $ga (keys %{$scene{$sc}{gas}})
+ for my $ga (sort keys %{$scene{$sc}{gas}})
{
my $wga=$scene{$sc}{gas}{$ga}; # auf diese GA muss spaeter geschrieben werden
$wga=$eibgaconf{$wga}{short} if $wga=~/^[0-9\/]+$/ && $use_short_names && defined $eibgaconf{$wga}{short};
$ga=$eibgaconf{$ga}{ga} if $ga!~/^[0-9\/]+$/ && defined $eibgaconf{$ga};
$scene{$z}{$wga}=knx_read($ga,300);
- delete $scene{$z}{$wga} unless defined $scene{$z}{$wga};
+
+ if(defined $scene{$z}{$wga})
+ {
+ $retval.=$wga.'->'.$scene{$z}{$wga}.' ';
+ }
+ else
+ {
+ delete $scene{$z}{$wga};
+ }
}
if($scene{storage} eq 'configfile')
@@ -154,19 +163,20 @@
}
else # Szene abrufen
{
- # Debugging
- plugin_log($plugname, "Szene $z abrufen: ".join(',', (sort values %{$scene{$sc}{gas}})));
+ $retval.="Szene $z abrufen: ";
for my $v (keys %{$scene{$z}})
{
my $ga=$v;
$ga=$eibgaconf{$ga}{ga} if $ga!~/^[0-9\/]+$/ && defined $eibgaconf{$ga};
knx_write($ga,$scene{$z}{$v});
+ $retval.=$ga.'->'.$scene{$z}{$v}.' ';
}
}
}
-return;
+return unless $retval;
+return $retval;
########## Datenpersistenz - Speichern und Einlesen ###############
@@ -176,7 +186,7 @@
my @lines = <CONFIG>;
close CONFIG;
eval("@lines");
- return "config error" if $@;
+ return "config error: $@" if $@;
}
sub store_to_config
Modified: wiregate/plugin/generic/Translator.pl
===================================================================
--- wiregate/plugin/generic/Translator.pl 2012-05-02 23:37:31 UTC (rev 783)
+++ wiregate/plugin/generic/Translator.pl 2012-05-03 09:27:17 UTC (rev 784)
@@ -78,7 +78,7 @@
$count++;
- $plugin_info{$plugname.'_'.$t.'_result'}=undef;
+ delete $plugin_info{$plugname.'_'.$t.'_result'};
if(ref $trans{$t}{state})
{
@@ -123,8 +123,8 @@
my $transmit=$ga;
$transmit=$eibgaconf{$ga}{short} if $use_short_names;
my $result=$plugin_info{$plugname.'_'.$t.'_result'};
- plugin_log($plugname, "memory: $result ($transmit)");
knx_write($ga, $result);
+ return "Memory: $result ($transmit)";
}
return;
}
@@ -136,7 +136,14 @@
# Vorsicht! - das koennten wir selbst gewesen sein, also nicht antworten!
if($cmd eq 'T')
{
- $plugin_info{$plugname.'_'.$t.'_result'}=$input; # einfach Input ablegen
+ if(defined $input)
+ {
+ $plugin_info{$plugname.'_'.$t.'_result'}=$input; # einfach Input ablegen
+ }
+ else
+ {
+ delete $plugin_info{$plugname.'_'.$t.'_result'};
+ }
return;
}
@@ -164,8 +171,14 @@
# erlauben wir nur vorhandene Eintraege
for my $v (keys %{$state})
{
- next unless exists $plugin_info{$plugname.'_'.$t.'_'.$v};
- $plugin_info{$plugname.'_'.$t.'_'.$v}=$state->{$v};
+ if(defined $state->{$v})
+ {
+ $plugin_info{$plugname.'_'.$t.'_'.$v}=$state->{$v};
+ }
+ else
+ {
+ delete $plugin_info{$plugname.'_'.$t.'_'.$v};
+ }
}
}
else # Einfacher Fall - skalare state-Variable
@@ -178,7 +191,14 @@
}
# Ergebnis des letzten Aufrufs zurueckschreiben
- $plugin_info{$plugname.'_'.$t.'_result'}=$result;
+ if(defined $result)
+ {
+ $plugin_info{$plugname.'_'.$t.'_result'}=$result;
+ }
+ else
+ {
+ delete $plugin_info{$plugname.'_'.$t.'_result'};
+ }
# Uebersetzung auf Bus schreiben, ausser im Sonderfall receive==transmit, dann nur auf Anfrage senden
my $receive=$trans{$t}{receive};
@@ -187,11 +207,10 @@
$receive=$eibgaconf{$receive}{ga} if $receive!~/^[0-9\/]+$/ && defined $eibgaconf{$receive};
$transmit=$eibgaconf{$transmit}{ga} if $transmit!~/^[0-9\/]+$/ && defined $eibgaconf{$transmit};
- # Debugging
unless($transmit eq $receive)
{
- plugin_log($plugname, "$input ($receive) -> $result ($transmit)");
knx_write($transmit, $result);
+ return "$input ($receive) -> $result ($transmit)";
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|