Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit Plug-in "Schwellwert"

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Probleme mit Plug-in "Schwellwert"

    Hallo,

    bereits seit einiger Zeit ahbe ich das Wiregate mit ca. 20 Sensoren vollkommen stabil am laufen. Nun habe ich mich an ein neues Plug-in gewagt.
    Ich habe mir aus der Plug-in-Datenbank das Plug.in Schwellwerte heruntergeladen und leicht angepasst, um aus Werten eines Helligkeitssensors am Wiregate eine Wahr-/Falsch-Aussage zu erzeugen.

    Wenn die Helligkeit unter 5 Lux fällt, soll eine 1 an eine Gruppenadresse gesendet werden, bei mehr als 5 Lux eine 0.

    Das Plug-in ist folgendes:
    ### Definitionen
    # Eigenen Aufruf-Zyklus auf 300 Sekunden setzen
    $plugin_info{$plugname.'_cycle'} = 300;
    my $helligkeit_dach_ost = '10/1/20';
    my $schwellwert_ost = 5;
    my $daemmerungsgrenze_ost = '10/1/25';

    ### Ende Definitionen


    my $daemmerung_ost;
    # Plugin an Gruppenadresse "anmelden"
    $plugin_subscribe{$helligkeit_dach_ost}{$plugname} = 1;



    # Nun kommt es darauf an, ob das Plugin aufgrund eines eintreffenden Telegramms
    # oder zyklisch aufgerufen wird! Wir wollen beides..
    # Bei eintreffenden Telegrammen reagieren wir gezielt auf "Write" (gibt ja auch Read/Response)
    # und die spezifische Gruppenadresse, das Plugin könnte ja bei mehreren "angemeldet" sein.
    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $helligkeit_dach_ost) {
    $schwellwert_ost = $msg{'value'};
    #oder nur falls nicht importiert: $msg{'data'} ist dann leer/undef!
    #$daemmerung_ost = decode_dpt9($msg{'data'});

    } else { # zyklischer Aufruf
    # "9" (DPT) kann entfallen falls richtig importiert!
    $daemmerung_ost = knx_read($helligkeit_dach_ost,300,);
    }

    if ($daemmerung_ost >= $schwellwert_ost and $plugin_info{$plugname.'_merker_schwellwert_ost'} ne 1) {
    # Sende an ZielGA den Wert "1" als 1bit-Wert (DPT1)
    # "1" (DPT) kann entfallen falls richtig importiert!
    knx_write($daemmerungsgrenze_ost,1,1);
    # und merken
    $plugin_info{$plugname.'_merker_schwellwert_ost'} = 1;
    } elsif ($daemmerung_ost < $schwellwert_ost and $plugin_info{$plugname.'_merker_schwellwert_ost'} eq 1) {
    # unter Schwellwert,vorher aktiv -> sende 0
    knx_write($daemmerungsgrenze_ost,0,1);
    # und merken
    $plugin_info{$plugname.'_merker_schwellwert_ost'} = 0;
    }

    return "Schwellwerte ausgeführt";
    return 0;
    Das Plug-in läuft stabil und tut eigentlich, was es soll (vor allem wenn die Helligkeit unter 5 Lux liegt, dann wird die 0 an die Gruppenadresse gesendet.
    Ist die Helligkeit über 5 Lux, so wird abwechselnd (in viel zu geringen Abständen, das Plug-in soll nur alle 5 Minuten laufen oder bei neuem Wert) abwechselnd eine 0 oder 1 gesendet.
    Wenn ich dann das ganze im Bus-Monitor vergleiche, sieht es so aus:

    Code:
    [COLOR=#333333]2015-11-30 15:27:20.147,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0[/COLOR]  
     2015-11-30 15:28:42.156,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:31:05.740,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:33:44.279,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:36:06.819,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:38:46.986,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:41:07.716,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:43:48.921,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:46:09.512,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:48:50.481,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:51:10.419,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:53:51.030,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:54:56.188,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:58:52.155,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 15:59:57.244,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:03:53.733,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:04:57.909,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:08:56.243,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:11:14.466,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:13:57.609,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:14:59.824,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:18:59.812,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:22:30.880,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:24:00.559,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:26:16.256,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:29:05.394,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:30:01.885,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:34:07.630,A_GroupValue_Write,0.0.0,10/1/25,01,,,,0,low,7,T_DATA_XXX_REQ,0 2015-11-30 16:35:03.144,A_GroupValue_Write,0.0.0,10/1/25,00,,,,0,low,7,T_DATA_XXX_REQ,0
    Sobald die Helligkeit unter die 5 Lux fällt, verhält sich das Plug in, wie es soll.

    Wo ist mein Fehler im Plug-in?

    Viele Grüße
    Jürgen

    #2
    Auf den ersten Blick scheint die Zuweisung der $msg{'value'} falsch zu sein:
    Code:
    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $helligkeit_dach_ost) {
    [B][COLOR=#FF0000]$schwellwert_ost[/COLOR][/B] = $msg{'value'};
    Das müsste hier sicherlich $daemmerung_ost sein. Ob sich weitere Fehler eingeschlichen haben, habe ich nicht geprüft.

    Kommentar


      #3
      Vielen Dank für die Hilfe.

      Hat funktioniert (das Plug-in tut jetzt genau, was es soll.

      Kommentar

      Lädt...
      X