Hallo Zusammen
Ich bin blutiger Anfänger in sachen Wiregate und Pearl, aber seit ich das Teil vor ein paar Tagen gestartet habe hats mich gepackt :-)
Nun wollte ich mir das Schwellwert Plugin laden, um die 8bit Rückmeldung je Kanal meines DuoDMX in ein 1bit Status auszugeben (zB >=20 ergibt Lampe ein, darunter Lampe aus)
Und nun meine wahrscheinlich dumme Frage; muss ich das Plugin für jede GA einzeln anlegen, oder das gleiche für mehrere Schwellwerte? (Total werdens sicher 24)
Schon mal Danke für eure Antworten
Gruess Markus
Ich bin blutiger Anfänger in sachen Wiregate und Pearl, aber seit ich das Teil vor ein paar Tagen gestartet habe hats mich gepackt :-)
Nun wollte ich mir das Schwellwert Plugin laden, um die 8bit Rückmeldung je Kanal meines DuoDMX in ein 1bit Status auszugeben (zB >=20 ergibt Lampe ein, darunter Lampe aus)
Und nun meine wahrscheinlich dumme Frage; muss ich das Plugin für jede GA einzeln anlegen, oder das gleiche für mehrere Schwellwerte? (Total werdens sicher 24)
Schon mal Danke für eure Antworten
Gruess Markus
Code:
[TABLE="class: highlight tab-size js-file-line-container"] [TR] [TD="class: blob-code blob-code-inner js-file-line, bgcolor: #F8EEC7"]# Demo-Plugin Schwellwertschalter[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# V1.0 2010-03-19[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]### Definitionen[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# Eigenen Aufruf-Zyklus auf 300 Sekunden setzen[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]$plugin_info{$plugname.'_cycle'} = 300;[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]my $wert_ga = "5/2/79"; # Gruppenadresse mit dem Wert[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]my $schwellwert = 35; # Schwellwert[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]my $ziel_ga = "14/6/10"; # Adresse an die Wert bei Unter/überschreitung gesendet wird[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]### Ende Definitionen[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]my $luftfeuchte;[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# Plugin an Gruppenadresse "anmelden"[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]$plugin_subscribe{$wert_ga}{$plugname} = 1;[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# Nun kommt es darauf an, ob das Plugin aufgrund eines eintreffenden Telegramms[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# oder zyklisch aufgerufen wird! Wir wollen beides..[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# Bei eintreffenden Telegrammen reagieren wir gezielt auf "Write" (gibt ja auch Read/Response)[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# und die spezifische Gruppenadresse, das Plugin könnte ja bei mehreren "angemeldet" sein.[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $wert_ga) {[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]$luftfeuchte = $msg{'value'};[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]#oder nur falls nicht importiert: $msg{'data'} ist dann leer/undef![/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]#$luftfeuchte = decode_dpt9($msg{'data'});[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]} else { # zyklischer Aufruf[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# "9" (DPT) kann entfallen falls richtig importiert![/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]$luftfeuchte = knx_read($wert_ga,300,9);[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]}[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]if ($luftfeuchte >= $schwellwert and $plugin_info{$plugname.'_merker_schwellwert1'} ne 1) {[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# Sende an ZielGA den Wert "1" als 1bit-Wert (DPT1)[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# "1" (DPT) kann entfallen falls richtig importiert![/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]knx_write($ziel_ga,1,1);[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# und merken[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]$plugin_info{$plugname.'_merker_schwellwert1'} = 1;[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]} elsif ($luftfeuchte < $schwellwert and $plugin_info{$plugname.'_merker_schwellwert1'} eq 1) {[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# unter Schwellwert,vorher aktiv -> sende 0[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]knx_write($ziel_ga,0,1);[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# und merken[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]$plugin_info{$plugname.'_merker_schwellwert1'} = 0;[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]}[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]return;[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# verfügbare Daten in %msg:[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'repeated'} 0/1[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'sequence'} 0-xxx[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'buf'} Rohdaten LPDU[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'src'} Quelladresse[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'tpdu_type'} T_DATA_XXX_REQ[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'data'} rohe Telegrammdaten[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'rcount'} Routing-Zähler[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'apci'} A_GroupValue_Write,A_GroupValue_Read,A_GroupValue_Response (u.v.m)[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'class'} low/alarm/high/system[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'dst'} Zieladresse x/y/z[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'datalen'} Datenlänge[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"]# $msg{'value'} Dekodierter Klartext-Wert (nur falls ESF importiert!)[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"] [/TD] [TD="class: blob-code blob-code-inner js-file-line"] [/TD] [/TR] [/TABLE]
Kommentar