Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi Fehlerlog Interpretation RAW?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Edomi Fehlerlog Interpretation RAW?

    Hallo zusammen,

    ich gebe zu, dass ich lange versucht habe mich an die wiederkehrenden Fehler zu gewöhnen.
    Aber langsam nervt es mich einfach.
    Leider kann ich mit der Fehlermeldung nicht viel Anfangen. Im Forum stehen einige Tipps dazu, aber ich würde als erstes gerne wissen, welche Nachricht eigentlich dahinter steckt?!

    image.png

    Kann mir jemand von euch erklären, wie ich aus dem RAW:
    "0610042000170411eb002900bce0110533010300800424",ggf. die Gruppenadresse heraus bekomme?
    Das würde mir zumindest helfen eine mögliche Fehlerquelle einzukreisen.

    Danke im Voraus!

    #2
    Ich würde die Sequence Counter Fehlermeldungen in der EDOMI Konfiguration ausschalten.

    HIER wurde mal analysiert wo die Ursachen liegen. Demnach wird es schwierig ohne ein Update durch Christian, diese Fehler komplett auszumerzen.

    Kommentar


      #3
      Okay danke für den Hinweis. Ist denn bekannt, wie man die Daten aus dem RAW Feld zu parsen hat?

      Kommentar


        #4
        Ich habe mir dafür mal einen Parser geschrieben:

        Als file speichern und mit php -f filename.php "RAW..." ausführen

        PHP-Code:
        <?php
        function byte($n$pos) {
            return 
        intval(ord(substr($n$pos 11)));
        }

        function 
        chars($n$pos$anz) {
            return 
        substr($n$pos 1$anz);
        }

        function 
        hexToBytes($n) {
            return 
        pack('H*'$n);
        }

        function 
        rawToPA($raw) {
            if (
        strlen($raw) == 2) {
                
        $i intval(byte($raw1) * 256 byte($raw2));
                return ((
        $i >> 12) & 0x0f) . '.' . (($i >> 8) & 0x0f) . '.' . (($i >> 0) & 0xff);
            }
            return 
        false;
        }

        function 
        rawToGA($raw) {
            if (
        strlen($raw) == 2) {
                
        $i intval(byte($raw1) * 256 byte($raw2));
                return ((
        $i >> 11) & 0x1f) . '/' . (($i >> 8) & 0x07) . '/' . (($i >> 0) & 0xff);
            }
            return 
        false;
        }

        function 
        bytesToHex($n) {
            
        $nn unpack('H*'$n);
            return 
        array_shift($nn);
        }

        $response hexToBytes($argv[1]);

        $receiveRtg byte($response9);
        $receiveMsgTyp byte($response11); //0
        $receivePA rawToPA(chars($response152)); //4
        $receiveGA rawToGA(chars($response172));
        $receiveSize byte($response19);
        $receiveRawData bytesToHex(chars($response21$receiveSize));

        echo 
        "receiveRtg: " $receiveRtg " Hex: " dechex($receiveRtg) . "\n";
        echo 
        "receiveMsgTyp: " $receiveMsgTyp " Hex: " dechex($receiveMsgTyp) . "\n";
        echo 
        "receivePA: " $receivePA "\n";
        echo 
        "receiveGA: " $receiveGA "\n";
        echo 
        "receiveSize: " $receiveSize "\n";
        echo 
        "rawSize: " strlen($response) . "\n";
        echo 
        "receiveRawData: " $receiveRawData "\n";
        ?>
        Zuletzt geändert von philipp900; 10.10.2023, 08:53.

        Kommentar


          #5
          Danke dir, dass könnte helfen

          Kommentar


            #6
            Zitat von olej Beitrag anzeigen
            ggf. die Gruppenadresse heraus bekomme?
            Das würde mir zumindest helfen eine mögliche Fehlerquelle einzukreisen.
            Das wird dir nix nützen. Ein falscher Sequence counter entsteht nur zwischen deinem IP Interface und dem Client. Das deutet eher auf ein Netzwerkproblem oder so hin - Gruppenadressen sind dann erst höhere Layer.

            Aber wenn du's wirklich wissen willst - hier ein Beispiel wie man das mit xknx (Python) parsen kann:
            Code:
            In [4]: from xknx.knxip import KNXIPFrame
            
            In [5]: KNXIPFrame.from_knx(bytes.fromhex("0610042000170411eb002900bce0110533010300800424"))
            Out[5]:
            (<KNXIPFrame <KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="TUNNELLING_REQUEST" TotalLength="23" /> body="<TunnellingRequest communication_channel_id="17" sequence_counter="235" cemi="2900bce0110533010300800424" />" />,
             b'')
            
            In [6]: from xknx.cemi import CEMIFrame
            
            In [7]: CEMIFrame.from_knx(bytes.fromhex("2900bce0110533010300800424"))
            Out[7]: <CEMIFrame code="L_DATA_IND" info="CEMIInfo("")" data="CEMILData(src_addr="IndividualAddress("1.1.5")" dst_addr="GroupAddress("6/3/1")" flags="1011110011100000" tpci="TDataGroup()" payload="<GroupValueWrite value="<DPTArray value="[0x4,0x24]" />" />")" />​
            Zuletzt geändert von meti; 10.10.2023, 21:52.

            Kommentar

            Lädt...
            X