Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - 3-Byte-Wert kommt nicht in Plugin an (DPT 232.600)

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

    #16
    sieht so aus, als wird DPT 1 aktzeptiert. Das Log meldet
    Code:
    2014-12-07 12:03:03.040,led1.pl,(BUS) Rohwert: 1, Länge: 1 ENDE
    DPT 9.001 liefert
    Code:
    2014-12-07 12:06:27.858,led1.pl,(BUS) Rohwert: 46.24, Länge: 5 ENDE
    und mit DPT 12.001 krieg ich auch nen Wert.
    Nur mit DPT 232.600 krieg ich nix :-(

    Ich probier jetzt dann mal, ob ich mit DPT 12.001 oder 13.001 was hinkriege.
    Schöner wär's natürlich, wenn man den 232 nehmen könnte, wenn es sowas als DPT schon gibt. Vielleicht äußert sich hier ja noch einer der WG-Gurus dazu ;-)
    CU,
    Mathias

    Kommentar


      #17
      Kurze Info als Gedankenstütze (noch nicht ausgiebig getestet und implementiert):
      - Senden als DPT 232.600
      - Empfang im Plugin als DPT 12

      Sieht so aus, als müsste hier nur noch alles um 8 Bit nach rechts verschoben werden, dann dürfte es passen. (Senden von "0 0 1" führt ohne Bearbeitung zu Empfang von 256 (dez) statt zu 1)
      CU,
      Mathias

      Kommentar


        #18
        Guten Morgen allerseits,

        nun läuft es so, wie es soll:
        • Wert wird als DPT 232.600 auf den Bus geschrieben
        • Plugin liest den Wert als DPT 12 ein (4-Byte-Wert; die oberen 3 Byte enthalten die "Nutzdaten") und rechnet ihn in einzelne 8-Bit-Werte für jede Farbe um
        • diese werden auf einen Bereich 0..1 normalisiert und per ssh an den Raspberry geschickt

        Code:
        if ($gv_event eq EVENT_BUS) {
            if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $ga_rgb){
                dpt232torgb(knx_read($msg{'dst'},0,12));
                rgb($rot/255,$gruen/255,$blau/255)
            } 
        }
        
        sub rgb{
            $cmd = "ssh $user\@$host "
                    . "\""
                    . "echo \\\"$gpio_r=$_[0]\\\"$piblaster"
                    . " && "
                    . "echo \\\"$gpio_g=$_[1]\\\"$piblaster"
                    . " && "
                    . "echo \\\"$gpio_b=$_[2]\\\"$piblaster"
                    . "\""
                    ;
            system($cmd);
            return($cmd);
        }
        
        # Umrechnen von DPT 232.600 in 8-Bit-RGB-Werte
        sub dpt232torgb{
            $rot   = ($_[0] >> 24) & 0xFF;
            $gruen = ($_[0] >> 16) & 0xFF;
            $blau  = ($_[0] >>  8) & 0xFF;
        }
        Vielen Dank für die Unterstützung... :-)
        CU,
        Mathias

        Kommentar


          #19
          Fein, dann mache ich den "gelöst" Haken hin und bitte inständig, das künftig selbst vorzunehmen.

          lg

          Stefan

          Kommentar


            #20
            Zitat von StefanW Beitrag anzeigen
            Fein, dann mache ich den "gelöst" Haken hin und bitte inständig, das künftig selbst vorzunehmen.
            Aargs - ich hab noch dran gedacht und dann nach der ganzen Tipperei vergessen ....
            Ich gelobe Besserung!
            CU,
            Mathias

            Kommentar


              #21
              @gindler: Hattest Du neben $msg{'value'} auch mal $msg{'data'} ausprobiert? Hiermit erhältst Du normalerweise die "Rohdaten" des Telegramms! Dann könntest Du Dir das knx_read sparen.
              Nur mal so als Randbemerkung.

              Kommentar


                #22
                Hi,

                super Idee und ziemlich zielführend, wie mein erster Test gerade gezeigt hat
                Der oben erwähnte Testwert 33 33 33 liefert genau den Hex-Wert 21 21 21 - damit lässt sich doch wunderbar arbeiten!

                Vielen Dank!

                Ich ändere meinen Code, sobald ich dazu komme....
                CU,
                Mathias

                Kommentar


                  #23
                  Sodale, läuft

                  Meine neue Funktion kriegt $msg{'data'} als Parameter übergeben und setzt wie bisher die globalen Variablen für die drei Farben, umgerechnet auf 0..255

                  Code:
                  sub dpt232torgb2{
                      $_[0] =~ /(.*)\s(.*)\s(.*)/;
                      $rot   = hex($1);
                      $gruen = hex($2);
                      $blau  = hex($3);
                  }
                  Damit kann ich mir nun tatsächlich das erneute Lesen des Wertes per knx_read sparen
                  CU,
                  Mathias

                  Kommentar

                  Lädt...
                  X