Zitat von hartwigm
Beitrag anzeigen
In diesem Fall
Code:
$plugin_info{$plugname.'_cycle'} = 0; # Aufruf nur einmalig nach änderung/speichern oder beim starten des daemons
Wie bekomme ich da Plugin dazu nur aktiv zu werden, wenn sich der abonnierte Wert ändert?

Also gehen tut das auch, indem man sich den Wert in $plugin_info merkt aber es soll ja einfach nur bei einem Telegramm reagieren, insofern können wir uns das merken sparen..
$rpm_vorgabe ist eine Plugin-lokale (in dem Fall verzichtbare) Variable, die aber nur befüllt wird, wenn ein Telegramm kommt, ansonsten ist die (pro Aufruf!) erstmal nil/null/undef
Also mal etwas umgeschrieben:
Code:
$plugin_info{$plugname.'_cycle'} = 0; # Aufruf nur einmalig nach änderung/speichern oder beim starten des daemons my $url = 'http://192.168.0.245/cfg.htm?'; my $url_send; my $rpm_wert ='11/1/35'; # GA % Wert my $rpm_soll ='11/1/36'; # GA für Sollwert my $maxdrehzahl =3400; my $drehzahl; # Umgerechnete Wert für die Steuerung my $rpm_vorgabe; # % Wert auf dem Bus #Der Wert ist ein Prozentwert und muß mit der max. Drehzahl von max_drehzahl multipliziert werden if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $rpm_wert) { # Telegramm vom bus $rpm_vorgabe= decode_dpt5($msg{'data'}); $drehzahl = int($rpm_vorgabe * $maxdrehzahl/100); knx_write($rpm_soll,$drehzahl,9); # der wert drehzahl wird nun der Website mit dem parameter ?rpmmax=$drehzahl übergeben my $url_send = $url."rpmmax=".$drehzahl."&saveconfig=Save"; my $ret = encode("utf8",get($url_send)); return "Werte: $drehzahl, $rpm_vorgabe, $maxdrehzahl, $url_send -> $ret"; } else { # initaler Aufruf $plugin_subscribe{$rpm_wert}{$plugname}=1; return; # nix passiert, nur an die GA subscribed }
P.S.: Code in CODE-Tags, macht Copy-Paste mit Einrückung und so einfacher

Kommentar