Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Auswerten Luxwertes, Wandlung Datentyp 9.004

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

    [wiregate] - √ - Auswerten Luxwertes, Wandlung Datentyp 9.004

    Hallo,

    ich bräuchte mal die Hilfe von einem Perl-Profi.

    Möchte in einem Plugin einen Luxwert vom PM auswerten und damit eine
    Dämmerungsschaltung ansteuern. Irgendwie bekomme ich den
    Datentyp aber nicht richtig gewandelt.

    Code Fragment:

    my $Luxwert = 0,0;
    $Luxwert = $msg{'data'};
    plugin_log($plugname, sprintf("Aktueller Luxwert: %4.2f", $Luxwert) );


    Aus so einer Nachricht
    A_GroupValue_Write,1.1.4,4/4/2,34 EC,806.4,,9.004,0,low,5,T_DATA_XXX_REQ,0

    Wird Logeintrag:
    2013-04-05 13:16:25.273,Fasadenlicht,Aktueller Luxwert: 35.00

    Wie muss ich das richtig wandeln ?

    #2
    Ok,

    bitte erstmal die Variable richtig initialisieren, weil ein Komma ist hier ein Separator. Und dann den bereits interpretierten Wert vom Bus lesen, also '
    value' anstatt die uninterpretierte Variante mit 'msg':

    my $Luxwert = 0
    $Luxwert = $msg{'value'};
    plugin_log($plugname, sprintf("Aktueller Luxwert: %4.2f", $Luxwert) );


    lg

    Stefan

    Kommentar


      #3
      Warum $msg{'data'} und nicht $msg{'value'}?

      A_GroupValue_Write,1.1.4,4/4/2,34 EC,806.4,,9.004,0,low,5,T_DATA_XXX_REQ,0

      $msg{'data'} = 34 EC
      $msg{'value'} = 806.4

      Sollte so sein. Die GA muss lediglich im WireGate eingetragen/importiert sein.
      Umgezogen? Ja! ... Fertig? Nein!
      Baustelle 2.0 !

      Kommentar


        #4
        Kaum macht man`s richtig schon funktionierts

        2013-04-05 14:37:22.766,Fasadenlicht,Aktueller Luxwert: 737.92

        Danke Euch, und mein Häuschen kann nun heute Abend von allein das Außenlicht anschalten

        Kommentar


          #5
          @twinturbo
          Kannst du den kompletten Code zur verfügung stellen?
          Ich wollte mit dem Code probieren Datentyp 1.001 in 16.001 zu wandeln.
          Gruß
          Christian

          Kommentar


            #6
            Hi, ich habe mal den relevanten Part rausgekramt und Dir etwas abgespeckt hier aufbereitet.

            Wichtig ist, dass Du die GA im Wiregate auch korrekt angelegt hast.
            EIB/KNX Buszugriff (eibd) --> KNX Gruppenadressen bearbeiten:

            Neuen Eintrag für die GA erzeugen, bei mir ist die für den Luxwert wie folgt angelegt:

            GA: 4/4/2
            Name: Carport Luxwert
            Datentyp: 9.004

            Code:
            #Variablen
            my $ga_luxwert = "4/4/2";
            my $Luxwert = 0;
            my $Schaltschwelle = 5;
            
            #Plugin auf einer GA anmelden
            $plugin_subscribe{$ga_luxwert}{$plugname} = 1;
            plugin_log($plugname,sprintf("Per subscribe auf Gruppenadresse %s angemeldet.", $ga_luxwert));
            
            #Auswerten ob angemeldete GA aufgerufen wurden
            if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga_luxwert)
               {
                $Luxwert = $msg{'value'};
                plugin_log($plugname, sprintf("Expliziter Aufruf, aktueller Luxwert: %4.2f, vorgegebene Schaltschwelle ist %d Lux.", $Luxwert, $Schaltschwelle) );
            
                 if ($Luxwert <= $Schaltschwelle )
                    {
                     # MACH HIER IRGENDWAS!
                    }
                }
            Angehängte Dateien

            Kommentar

            Lädt...
            X