Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin Anfängerfrage

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

    [wiregate] Plugin Anfängerfrage

    Wie bekomme ich es hin, dass ein Plugin nur abläuft wenn sich der Wert einer GA ändert?

    Mein Plugin startet in Abhängigkeit des $plugname_.cycle Wertes.

    $plugin_info{$plugname.'_cycle'} = 60


    Ich möchte aber des Plugin starten wenn ein neuer Wert eintrifft

    $plugin_subscribe{$quadra_windrichtung}{$plugname} =1;
    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $rpm_wert) {
    $quadra_windrichtung= decode_dpt9($msg{'data'});
    Gruß Hartwig

    #2
    Hallo,

    so in etwa:
    Code:
    $plugin_info{$plugname.'_cycle'} = 0
    ...

    Der Rest passt ja dass er nachsieht ob das Telegram für Ihn war. Und das dass Plugin an die GA subscribed.
    Oder hab ich dass Problem falsch verstanden?

    Gruß

    Edit:

    Ja hab ich.
    wenn du den wert in plugin_info speicherst und bei jedem Start den gespeicherten wert mit dem neuen vergleichst...
    evtl so?
    Code:
    $wert_neu=$msg{'value'};
    my $wert_alt = $plugin_info{$plugname.'_wert'};
    if ($wert_alt =! $wert_neu) {
     $plugin_info{$plugname.'_wert'} = $wert_neu; 
    ....
    }
    else { 
    return "keine aenderung";
     }

    Kommentar


      #3
      Ich hoffe die Frage ist damit beantwortet;
      - nicht das es nicht geht (plugin_info oder Plugin: statesave,.. ) sich etwas zu merken - aber das ist regelmässig keine gute Idee, sich einen Zustand zu merken, den man nicht kennt..
      Besser ist zyklisch senden, wissen statt meinen und wenn nicht ggfs. Alarm..

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #4
        "Besser ist zyklisch senden, wissen statt meinen und wenn nicht ggfs. Alarm."


        Naja, ..

        In meiner Anwendung würde ich gerne alle 10sec die Website der Pumpe abfragen um zu wissen, was da läuft.

        Dann schicke ich mit knx_write alle 10sec 12 Werte auf den Bus, die in 99.9% identisch mit den alten Werten ist.

        Was mir da fehlt ist eine sbc Funktion (oder vielleicht sollte ich sagen, ich aber diese bislang nicht gefunden)
        Gruß Hartwig

        Kommentar


          #5
          Einfach den Wert ansehen und sich den letzten in $plugin_info{$plugname.'_meinWert'} merken; also (mal ganz allgemein) sowas wie

          Code:
          my $meinWert = $wasAuchImmer;
          if ($plugin_info{$plugname.'_meinWert'} != $meinWert) {
            $plugin_info{$plugname.'_meinWert'} = $meinWert;
            # und jetzt was sinnvolles, Wert hat sich geändert..
            return "neuer Wert $meinWert";
          } else {
            #Wert hat sich nicht geändert, tue nichts
            return;
          }
          # das else ist eigentlich überflüssig
          return;
          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            Geht das Speichern nur für bestimmte Datentypen?

            Die Werte haben sich zwischenzeitlich verändert aber die einzige
            Plugin Debug Variabel die gespeichert wird ist die 'software_version' DT 16!

            reddevil_software_version 1.2rc7


            [INFORMATION]if ($plugin_info{$plugname.'_power_consumption'} != $power_consumption) {
            $plugin_info{$plugname.'_power_consumption'} = $power_consumption;
            knx_write($pumpenleistung, $power_consumption,9);
            }

            if ($plugin_info{$plugname.'_grid_current'} != $grid_current) {
            $plugin_info{$plugname.'_power_consumption'} = $grid_current;
            knx_write($stromstaerke, $grid_current,9);
            }

            if ($plugin_info{$plugname.'_software_version'} != $software_version) {
            $plugin_info{$plugname.'_software_version'} = $software_version;
            knx_write($programm_version, $software_version,16);
            }

            [/INFORMATION]
            Gruß Hartwig

            Kommentar


              #7
              Nee, der DPT ist dem plugin_info egal, das ist ein ganz banaler String bzw. internes Perl-Magic - je nachdem.
              Evtl. mal eins oder beides in '' setzen bzw. mit return ausgeben lassen und vergleichen.

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar

              Lädt...
              X