Hallo zusammen,
für bestimmte Arten von Logiken - die ich zufälligerweise in meinem Haus brauche - ist dieses Plugin hilfreich.
Was es tut und wie es konfiguriert wird, erklärt wieder einfach das Konfigurationsfile selbst:
Ab sofort im SVN!
VG, Fry
für bestimmte Arten von Logiken - die ich zufälligerweise in meinem Haus brauche - ist dieses Plugin hilfreich.
Was es tut und wie es konfiguriert wird, erklärt wieder einfach das Konfigurationsfile selbst:
Code:
#!/usr/bin/perl
#
# Translator.pl - Konfiguration
%trans=(
# 1. Alle Werte, die auf einer GA gesendet werden, werden mit 2 multipliziert auf einer anderen GA weitergegeben
mal2 => { receive=>'9/5/201', transmit=>'9/5/202', translate => sub { my ($state,$input)=@_; 2*$input; }, },
# 2. Die Werte auf der ersten GA werden aufsummiert, das Ergebis auf der anderen GA gesendet.
# Damit kann man bspw aus einem relativen Dimmwert einen absoluten Dimmwert machen.
sum => { receive=>'9/5/207', transmit=>'9/5/208', translate => sub { my ($state,$input)=@_; $state+$input; }, },
# $state enthaelt das jeweils letzte Ergebnis.
# 3. Wie oben, aber das Ergebnis limitiert auf den Bereich 0-100
lsum => { receive=>'1/2/7', transmit=>'1/2/8', translate => sub { my ($state,$input)=@_; limit(0,$state+$input,100); }, },
# 4. Schliesslich eine Memory-Funktion: wenn receive==transmit, so wird nur auf eine Leseanfrage gesendet.
# Hier speichert Translator also den Input ab und sendet den errechneten (=gespeicherten) Wert NUR AUF ANFRAGE
memory => { receive=>'1/2/9', transmit=>'1/2/10', translate => sub { my ($state,$input)=@_; $input; }, },
# 5. Ein komplexerer Fall: hier besteht der Status des Translators aus mehreren Werten.
# Es wird immer die Summe aus letztem, vorletztem und aktuellem Wert gesendet.
complex => { receive=>'9/5/205', transmit=>'9/5/206', state => {val1=>0, val2=>0},
translate => sub { my ($state,$input)=@_;
$state->{val2}=$state->{val1}; $state->{val1}=$state->{result};
$state->{val2}+$state->{val1}+$input; }, },
# Wenn state ein Hash ist, wird der letzte gesendete Wert in $state->{result} gespeichert.
# 6. Schlussendlich wieder mal Werbung fuer die GA-Kurznamen. Setzt man im Skript Translator.pl $use_short_names=1
# und verwendet GA-Namen mit eindeutigem Kuerzel (=erstes Wort des Namens), so funktioniert auch das folgende:
D_SZ_Decke => { receive=>'LR_SZ_Decke', transmit=>'LK_SZ_Decke',
translate => sub { my ($state,$input)=@_; limit(0,$state+20*$input,100); }, },
# ist doch leserlicher, oder? Hier wird ein relativer Dimmwert durch Skalierung und Summierung
# in einen absoluten Wert umgewandelt
);
VG, Fry


Kommentar