Hallo,
ich habe ein Plugin geschrieben, das auf den KNX-Bus lauscht und immer, wenn bestimmte GAs über den Draht schwirren, diese GAs an ein anderes Programm weiter gibt, in diesem Beispiel an 'echo'.
Es ist als allgemeines Plugin für alle Fälle gedacht, in denen Daten aus dem Bus an die Shell resp. ein Programm resp. ein Script übergeben werden sollen.
Könntet ihr mal drauf schauen, ob das so passt, auch mit mehreren (>50) GAs einigermaßen performant ist und ob ich sonst was übersehen habe? Das Script scheint zu funktionieren, aber ich habe kaum Perl-Kenntnisse und hab das so gut wie es ging (dieser Thread hier war eine große Hilfe!) zusammen gefrickelt.
ich habe ein Plugin geschrieben, das auf den KNX-Bus lauscht und immer, wenn bestimmte GAs über den Draht schwirren, diese GAs an ein anderes Programm weiter gibt, in diesem Beispiel an 'echo'.
Es ist als allgemeines Plugin für alle Fälle gedacht, in denen Daten aus dem Bus an die Shell resp. ein Programm resp. ein Script übergeben werden sollen.
Könntet ihr mal drauf schauen, ob das so passt, auch mit mehreren (>50) GAs einigermaßen performant ist und ob ich sonst was übersehen habe? Das Script scheint zu funktionieren, aber ich habe kaum Perl-Kenntnisse und hab das so gut wie es ging (dieser Thread hier war eine große Hilfe!) zusammen gefrickelt.
Code:
$plugin_info{$plugname.'_cycle'} = 86400; ##################################################################### # Definitions ##################################################################### my $GA_Data; # List all GAs here my @GA_Array; push @GA_Array, { GA => "0/5/201" }; push @GA_Array, { GA => "0/5/203" }; push @GA_Array, { GA => "0/5/205" }; push @GA_Array, { GA => "0/5/207" }; ##################################################################### # Read GAs ##################################################################### foreach my $element (@GA_Array) { my $GA_Variable = ($element->{GA}); # Subscribe this GA = actively listen for messages from this GA $plugin_subscribe{$GA_Variable}{$plugname} = 1; # If this GA is coming in then... if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $GA_Variable) { # ...decode the supplied data from this GA $GA_Data = decode_dpt14($msg{'data'}); # Hand over this data to the shell system("echo $GA_Variable - $GA_Data >> /root/test.log"); } } return 0;
Kommentar