Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - GA wird nicht gesendet bei Schwellwertschalter-Plugin

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

    [wiregate] - √ - GA wird nicht gesendet bei Schwellwertschalter-Plugin

    Hallo,

    ich brauche hilfe um ein Plugin zu ersellen.
    Was ich bereits habe:
    einen TempSensor mit GA 1/1/10
    Ich habe eine FT1.2 am Wiregate
    Am Bus hängt ein Rolloaktor mit GA 1/1/1

    Jetzt will ich wenn die Temp am Sensor größer als z.B 26°C ist den Rollo abwärts fahren.

    Habe das Plugin:
    # Demo-Plugin Licht schalten abhängig von Temperatur

    Habe die GAs geändert. Jedoch schaltet der Aktor nicht.
    Wenn ich aber über die Konsole den Befehl:
    z.B groupswrite ip:127.0.0.1 1/1/1 1 nehme schaltet der Aktor

    Wer kann mir helfen.
    Gruß
    Mario

    #2
    Magst du dein Plugin mal posten, so wie es bei dir läuft?

    Gruß

    Kommentar


      #3
      Schau dir mal als Grundlage das Beispiel Schwellwertschalter an: https://knx-user-forum.de/code-schni...tschalter.html

      Der tut genau was du als Szenario beschreibst.

      Grüße,
      Julian

      Kommentar


        #4
        Hallo,

        Danke für die Rückmeldungen.
        Es funzt aber immer noch nicht.
        Anbei ein Bild des Sensors.
        Hier der neue Code:

        # Demo-Plugin Schwellwertschalter
        # V1.0 2010-03-19
        ### Definitionen
        # Eigenen Aufruf-Zyklus auf 300 Sekunden setzen
        $plugin_info{$plugname.'_cycle'} = 300;
        my $wert_ga = "1/1/10"; # Gruppenadresse mit dem Wert
        my $schwellwert = 28; # Schwellwert
        my $ziel_ga = "1/1/1"; # Adresse an die Wert bei Unter/überschreitung gesendet wird
        ### Ende Definitionen

        my $luftfeuchte;
        # Plugin an Gruppenadresse "anmelden"
        $plugin_subscribe{$wert_ga}{$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 $wert_ga) {
        $luftfeuchte = $msg{'value'};
        #oder nur falls nicht importiert: $msg{'data'} ist dann leer/undef!
        #$luftfeuchte = decode_dpt9($msg{'data'});
        } else { # zyklischer Aufruf
        # "9" (DPT) kann entfallen falls richtig importiert!
        $luftfeuchte = knx_read($wert_ga,300,9);
        }
        if ($luftfeuchte >= $schwellwert and $plugin_info{$plugname.'_merker_schwellwert1'} ne 1) {
        # Sende an ZielGA den Wert "1" als 1bit-Wert (DPT1)
        # "1" (DPT) kann entfallen falls richtig importiert!
        knx_write($ziel_ga,1,1);
        # und merken
        $plugin_info{$plugname.'_merker_schwellwert1'} = 1;
        } elsif ($luftfeuchte < $schwellwert and $plugin_info{$plugname.'_merker_schwellwert1'} eq 1) {
        # unter Schwellwert,vorher aktiv -> sende 0
        knx_write($ziel_ga,0,1);
        # und merken
        $plugin_info{$plugname.'_merker_schwellwert1'} = 0;
        }
        return;
        # verfügbare Daten in %msg:
        # $msg{'repeated'} 0/1
        # $msg{'sequence'} 0-xxx
        # $msg{'buf'} Rohdaten LPDU
        # $msg{'src'} Quelladresse
        # $msg{'tpdu_type'} T_DATA_XXX_REQ
        # $msg{'data'} rohe Telegrammdaten
        # $msg{'rcount'} Routing-Zähler
        # $msg{'apci'} A_GroupValue_Write,A_GroupValue_Read,A_GroupValue_ Response (u.v.m)
        # $msg{'class'} low/alarm/high/system
        # $msg{'dst'} Zieladresse x/y/z
        # $msg{'datalen'} Datenlänge
        # $msg{'value'} Dekodierter Klartext-Wert (nur falls ESF importiert!)
        Angehängte Dateien

        Kommentar


          #5
          Steht in der GA irgendwas drin? da dein sendezyklus und sende bei wertänderung leer ist??

          zur übersichtlichkeit evtl [Code] benutzen

          Gruß

          Kommentar


            #6
            Was meinst du mit "Steht in der GA irgendwas drin?"

            Der Busmonitor der ETS zeigt nichts an.

            Gruß

            Kommentar


              #7
              Zitat von johnson Beitrag anzeigen
              Der Busmonitor der ETS zeigt nichts an.
              Das würde ja bedeuten, dass der Wert für die Adresse 1/1/10 nicht auf den Bus gesendet wird. Das dürfte dein Problem sein, wenn mich nicht alles täuscht.
              Grüße
              Michael

              Kommentar


                #8
                Jo das meinte ich,

                der Wert des Sensors muss ja auf den Bus kommen,
                dazu sind hinter der Sensor id : "Sendezyklus" und "Sende bei Wertänderung" bei sendezyklus muss ne zeit rein. Oder bei Wertänderung ein Wert (wenn die abweichung größer ist wird der Wert auf den Bus an die entsprechende GA gesendet)

                Gruß

                Edit:

                Versuch mal mit der ETS die Wert_GA auszulesen (1/1/10)

                Kommentar


                  #9
                  Wie immer selber schuld.
                  Hab an den Startargumenten des eibd gespielt.
                  Habe von unix socket (-u) auf ip (-i) umgestellt.
                  Nach dem zurückstellen auf -u läuft das Ding.

                  Hätte dies auch merken müssen, da ich ja geschrieben hab, dass
                  groupswrite ip:127.0.0.1 1/1/1 1 funzt.

                  Nochmals vielen Dank!

                  Gruß
                  Mario

                  Kommentar

                  Lädt...
                  X