Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 KNX mit ETS

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

  • SebastianObi
    antwortet
    Hallo,

    ich habe das einfrieren/hängen Problem nun weiter analysiert bei dem SAMD21.

    Es ist quasi Architekturbedingt, dass kein EEPROM vorhanden ist und die FlashStorage Library verwendet werden muss wird die Größe "#define EEPROM_EMULATION_SIZE" auch als RAM belegt. Dies führt dann dazu, dass nicht mehr genügend RAM frei ist für die initialisierung der Gruppenadressen. Wenn allerdings zu wenig EEPROM Size definiert ist reicht der Speicher dort wieder nicht.

    Bei folgender Funktion ist ab einer gewissen Anzahl an Gruppenadressen dann kein RAM mehr verfügbar in der For-Schleife.
    bool GroupObjectTableObject::initGroupObjects()
    {
    if (!_tableData)
    return false;

    freeGroupObjects();

    uint16_t goCount = ntohs(_tableData[0]);

    _groupObjects = new GroupObject[goCount];
    _groupObjectCount = goCount;

    for (uint16_t asap = 1; asap <= goCount; asap++)
    {
    GroupObject& go = _groupObjects[asap - 1];
    go._asap = asap;
    go._table = this;

    go._dataLength = go.goSize();
    go._data = new uint8_t[go._dataLength];
    memset(go._data, 0, go._dataLength);

    if (go.valueReadOnInit())
    go.requestObjectRead();
    }

    return true;
    }
    Lässt sich das ändern, dass die Daten zwischendrinn ins EEPROM geschrieben werden und wieder mehr RAM frei ist?
    Zuletzt geändert von SebastianObi; 13.07.2019, 08:37.

    Einen Kommentar schreiben:


  • thesing
    antwortet
    mumpf Die Adressen sind inzwischen größer, da ich den Referenzpunkt um 1024 Bytes nach unten verschoben habe. Hierdurch sollte es nicht mehr zu negativen Adressen kommen. ETS überträgt ja nicht nu die Parameter da kommt schon einiges zusammen. Beim Programmieren entläd ETS nacheinander die Adresstabelle, die Associationstabelle, die Gruppenobjekttabelle, die Parameter und füllt sie dann wieder. Partiell heißt hier nur, dass nur die Parameter übertragen werden, wenn sich die anderen Objekte nicht geändert haben. (Siehe auch die Haken in der Geräteübersicht in ETS.) Man kann daher nicht nur einen Teile der Parameter übertragen. Man könnte die Paramter allerdings auf mehrere Parameterobjekte aufteilen. Allerdings wird der Zugriff im Sketch auf die Parameter dadurch komplizierter. Ich bin mir nicht sicher, ob es das wert ist. Man müsste in der knxprod die LoadProcedure anpassen und auf dem Gerät eine weiter Instanz vom ApplicationprogramObjekt erzeugt.
    Wenn du das probieren willst, kann ich gern Hilfestellung geben.

    Siehe dazu in der MT Hilfe:
    Reference->Device Configuration Procedures -> Default Load Procedures -> System B Default Load Procedure

    Evtl. kann man das auch ab ETS 5.6 über Skripte lösen. Siehe Reference -> Skripting Support
    Damit habe ich mich alledings noch nie beschäftigt. Damit könnte man wahrscheinlich über einen Button in ETS nur einzelne Parameter oder Gruppen von Paramtern schreiben.
    Zuletzt geändert von thesing; 12.07.2019, 21:45.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von SebastianObi Beitrag anzeigen
    Ja, habe ich um einiges erhöht. Hat aber nichts gebracht.
    Hi Sebastian,

    ich habe beim rumprobieren noch entdeckt, dass in der FlashAsEEPROM.h noch folgendes steht:
    Code:
    #define EEPROM_EMULATION_SIZE 1024
    Ich denke, den wirst Du auch erhöhen müssen, und ich auch, ich bin nur noch nicht so weit. Ich musste in der linux_platform.cpp schon ein
    Code:
    #define MAX_MEM 4096
    auf
    Code:
    #define MAX_MEM 32768
    ändern, damit meine Applikation per ETS programmiert werden konnte. Wobei bei mir 32768 sicherlich nicht notwendig sind, 16384 aber nicht ausreichen, obwohl ich es erwartet hätte, da ich nur 8812 Bytes Parameter habe... kann ich mir nicht wirklich erklären!

    Hab da nicht tiefer rein geschaut, falls Du neue Erkenntnisse gewinnst, kannst Du es ja hier anmerken.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Thomas,

    ich hab mal wieder zwei Fragen... ich komm erstmal nicht weiter:

    Die (etwas längere Vorgeschichte): Ich habe mal einen Machbarkeitstest gemacht und die Linux-Variante mit 80 Kanälen / 240 KO getestet. Läuft. Die ETS braucht recht lange für die Applikation, mit IP geht das noch (ca. 60 Sekunden), mit TP kann ich noch nicht testen, erwarte aber wesentlich längere Zeiten. Mein Parameterblock sollte 8812 Bytes umfassen (80*110 Bytes + 12 Bytes), wenn ich aber die ganzen Memory-Zugriffe der ETS betrachte, dann kommt er auf fast das doppelte (Address liegt bei 3D08, wenn ich mich richtig erinnere).

    Frage 1: Verstehst Du das? Ist es irgendwie erklärbar, dass die ETS viel mehr Daten überträgt als Parameter vorhanden sind?

    Dann habe ich mir noch überlegt, dass man bei 80 gleichartigen Kanälen den Parameterspeicher partitionieren könnte und dann könnte die ETS ja beim partiellen Programmieren nur die geänderten Kanäle übertragen. Dann wären das ja nur n*110 Bytes und meistens nicht alle.

    In der knxprod habe ich dafür statt
    Code:
            <ApplicationProgram Id="M-00FA_A-0001-01-0000" ApplicationNumber="1" ApplicationVersion="1" ...>
              <Static>
                <Code>
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00000" Name="Parameters" Offset="0" Size="1002" LoadStateMachine="4" />
                </Code>
                ...
    so was gemacht:
    Code:
            <ApplicationProgram Id="M-00FA_A-0001-01-0000" ApplicationNumber="1" ApplicationVersion="1" ...>
              <Static>
                <Code>
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00000" Name="Parameters" Offset="0" Size="12" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00001" Name="K1" Offset="12" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00002" Name="K2" Offset="122" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00003" Name="K3" Offset="232" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00004" Name="K4" Offset="342" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00005" Name="K5" Offset="452" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00006" Name="K6" Offset="562" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00007" Name="K7" Offset="672" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00008" Name="K8" Offset="782" Size="110" LoadStateMachine="4" />
                  <RelativeSegment Id="M-00FA_A-0001-01-0000_RS-04-00009" Name="K9" Offset="892" Size="110" LoadStateMachine="4" />
                </Code>
    Die 1002 Bytes kommen daher, dass ich es nur mit 9 Kanälen versuch habe. Die Parameter für jeden Kanal haben dann eine passende Memory-Definition (Hier als Beispiel ein Parameter für Kanal 7):
    Code:
        <Parameter Id="M-00FA_A-0001-01-0000_P-7047" Name="f7E2Repeat" ParameterType="M-00FA_A-0001-01-0000_PT-DelaySeconds" Text="Eingang 2 wird alle n Sekunden gelesen (0 = nicht zyklisch lesen)" Value="0">
          <Memory CodeSegment="M-00FA_A-0001-01-0000_RS-04-00007" Offset="35" BitOffset="0" />
        </Parameter>
    Obwohl ich das alles nur als "Schuss ins Blaue" ausprobiert habe, funktioniert es, die Programmierung klappt und nach dem Download stehen die Daten auch an der richtigen Stelle (zumindest funktionierte Kanal 1 und Kanal 9 genau so, wie zuvor). Insofern Hut Ab vor Deiner Leistung, hier die Spec zu implementieren, denn ich gehe mal davon aus, dass Du so was nicht ausprobiert hast!

    Meine Hoffnung, dass die ETS bei einer Änderung nur das Segment verwendet, dass sich geändert hat, hat sich aber nicht erfüllt.

    Frage 2: Hast Du eine Idee, in welche Richtung man schauen könnte, um die partielle Übertragung zu ermöglichen? Ich vermute ja, dass es an dem LoadStateMachine="4" liegt, aber ich hab keine Ahnung, was das macht. Ich habe auch versucht, aus der Anleitung vom Manufacturer Tool schlau zu werden, aber da bin ich nicht weiter gekommen...

    So, das hier bleibt erstmal liegen, ich komme ja nicht weiter. Als nächstes versuche ich mich an den Applikationsversionen, damit ich in der ETS eine Applikation für ein Gerät wechseln kann, ohne es neu parametrieren zu müssen, bei 80 Kanälen macht das nämlich keinen Spaß...

    Dann werde ich mich wieder der Funktionalität und damit dem DPT 9 widmen...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • SebastianObi
    antwortet
    Ja, habe ich um einiges erhöht. Hat aber nichts gebracht.
    Die Frage ist ob es an deiner KNX-Library oder an der FlashStorage-Library liegt.

    Einen Kommentar schreiben:


  • thesing
    antwortet
    SebastianObi Hast du mal versucht den Wert in Memory::ReadMemory zu erhöhen?

    Einen Kommentar schreiben:


  • SebastianObi
    antwortet
    Hallo,

    ich habe mein Problem mit dem einfrieren/hängen bei Applikationsübertragung auf dem SAMD weiter getestet. Es scheint wohl ein Problem mit der Speicherplatzgröße zu sein.
    Wie viele Bytes verbrauchen die Parameter? Genausoviel wie die auch groß sind?
    Wie viel wird je Gruppenadresse benötigt?
    Verwendet sonnst noch jemand den SAMD21 Mikrocontroller?

    Ich habe nur mit der Anzahl/Größe der Gruppenadressen Probleme. Parameter konnte ich genug verwenden.
    Könnte das bitte jemand prüfen/testen?

    Ich habe im Anhang mal die 2 Test Produktdatenbanken.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • thesing
    antwortet
    @mumpf: Ich habe das nicht als Kritik aufgefasst. Alles Ok. Und ich selbst habe noch kein Geräte mit dem Stack dauerhaft in Betrieb In dem Sinn ist er aktuelle eher ein Projekt für andere.

    Die verschiedenen DPTs sind eingentlich IMO ein guter Einstiegspunkt für Patches. Man braucht den gesamten Stack nicht verstehen und muss sich "nur" die KNX_Encode_Value und KNX_Decode_Value in dptconvert.cpp hangeln muss. Der alte Code für Dpt9 ist übirgens noch da:
    https://github.com/thelsing/knx/blob...oint_types.cpp

    Einen Kommentar schreiben:


  • jorues
    antwortet
    Noch ergänzend:
    ich denke das Problem mit dem BME Sketch ist letztendlich genau das Problem mit dem
    DPT 9.0 von Waldemar

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Thomas,

    bitte mein Feedback nicht als negative Kritik verstehen, ich versuche nur die Sachen, die mir auffallen, gleich zu melden, bevor ich sie vergesse. Und da ich mein Logikmodul mit den DPT 1,2,5,6,7,8,9,16,17 und 232 betreiben möchte, habe ich die jetzt alle mal am laufenden Projekt durchgetestet. Ich finde es auch nicht schlimm, dass da potentiell viel zusammen kommt, denn wie Du es schreibst, Du hast das für Dich gemacht und für Deine Fälle läuft es ja.

    Ich hab ja auch ein schlechtes Gewissen, dass ich keine Patches liefere, aber mein C/C++ ist nicht wirklich präsentationsfähig, und ich verstehe in großen Teilen nicht wirklich, was bei Dir abgeht. Dagegen sind die Sachen, die ich mache, echt Kindergarten. Aber ich könnte mal für den Anfang versuchen, den DPT 9 komplett zu debuggen, vielleicht bekomme ich das ja hin...

    Weitere Erkenntnisse zum DPT 9: Die Werte werden korrekt empfangen, aber falsch gesendet. Hab nur mal eine Art Echo gebaut, ein KO, dass einen DPT 9 empfängt, und dann ein KO, das diesen Wert direkt wieder raus sendet. Und dann zur Kontrolle noch ein KO, dass den Wert*100 auch als Integer aussendet, so kann man sehen, was empfangen wurde (natürlich dann nur auf 2 Nachkommastellen genau). Der DPT 9 wird von -400 bis 400 recht genau gesendet, außerhalb dieses Intervalls gibt es immer größere Abweichungen, innerhalb des Intervalls stimmt alles bis auf das Intervall -10.25 bis 10.25. Alle Zahlen von -10.24 bis 10.24 werden als 0 gesendet.

    Das mit der 4-Byte-Gleitkommazahl ist eine nette Idee, aber wenn ich an mein Logikmodul denke, dann muss ich ja einen passenden DPT anbieten, um das Ergebnis der Logik weiterverarbeiten zu können. Und viele prominente Eingänge sind DPT 9 (Temperatur, Lux, mA, ...)

    Die anderen DPT schaue ich mal, wie ich zumindest Feedback geben kann, vielleicht auch was korrigieren.

    Und zum reset: Ich weiß leider nicht genug über die Kommunikation, aber ich könnte schon versuchen, die Befehle nacheinander zu schicken und zwischendurch auf ein Ergebnis prüfen, es muss aus meiner Sicht nicht eine Methode sein. Ich bräuchte nur eine Idee, wie ich da überhaupt dran gehe, gerne auch erstmal low-level, ohne einen Stack-Umbau, wenn Du eine Chance siehst, dass es gehen könnte. Allerdings gebe ich zu, dass ich nicht weiß, wovon ich hier rede... Ich habe nur mein Logikmodul so asynchron wie möglich programmiert, um nichts zu blockieren...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • thesing
    antwortet
    jorues Das BME-Beispiel ist derzeit scheinbar kaputt. Ich muss mir das mal anschauen.

    @mumpf: So viel auf einmal
    - restart: Das ist nicht soo einfach. Du musst erste eine mit TransportLayer.connectRequest eine Verbindung zum Ziel aufmachen. Die steht sobald das ApplicationLayer::connectConfirm kommt. Danach kannst du den restartRequest schicken. Bisher ist der der Stack noch nicht so ganz darauf vorbereitet. Ich muss mal schauen wie man das ansynchrone Zeug in C++ am besten macht.
    - DPT9: kannst du mal schauen ob es klappt wenn du die 11 nur abziehst, wenn >= 11 ? Die Auflösung ist halt nur 16 Bit das sind Differenzen normal. Ggf. kannst du schauen wie ETS den Wert beim Senden kodiert. Wenn wir das Telegramm gleich füllen sind wir so gut wie es geht. Gibt es nicht auch einen 4 Byte-Gleitkommazahl DPT? Der ist ggf. besser wenn die Werte genauer sein sollen.
    - zu den anderen DPT: Ich habe den Code auch nur geklaut und bin da so schlau wie du. Ich bin da für jeglichen Patch dankbar. Vielleicht sollte man wirklich erstmal für alle implementierten DPT und auch deren Komponenten ein enum machen.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Thomas,

    sorry, bin eben am Testen... DPT 16 geht auch noch nicht, allerdings weißt Du das :

    Code:
    int valueToBusValueString(const KNXValue& value, uint8_t* payload, int payload_length, const Dpt& datatype)
    {
        //TODO
        return false;
    }
    Gruß, Waldemar

    P.S.: Zum Abschluss: DPT 17 und 232 funktionieren. Das wären erstmal alle, die ich schreiben will. Morgen kommen dann die, die ich lesen will, dran .
    Zuletzt geändert von mumpf; 07.07.2019, 00:15. Grund: P.S.: zugefügt

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Thomas,

    DPT 7 und 8 klappen, bei DPT 9 gibt es Probleme (hier konkret 9.001). Der Wert 1.23°C wird als 0°C ausgegeben. Ich habe das mal bis zu der Routine debugged:

    Code:
    void float16ToPayload(uint8_t* payload, int payload_length, int index, double value, uint16_t mask)
    {
        bool wasNegative = false;
        if (value < 0)
        {
            wasNegative = true;
            value *= -1;
        }
    
        value *= 100.0;
        unsigned short exponent = ceil(log2(value) - 11.0);
        short mantissa = roundf(value / (1 << exponent));
    
        if (wasNegative)
            mantissa *= -1;
    
        signed16ToPayload(payload, payload_length, index, mantissa, mask);
        unsigned8ToPayload(payload, payload_length, index, exponent << 3, 0x78 & (mask >> 8));
    }
    Log2(123) = 6.94, wenn man davon 11.0 abzieht, ist das -4.06, ceil(-4.06) = -3, das als unsigned short ergibt 65532 = exponent. Und damit ist die Mantisse 0.

    Ich habe auch mal 12345.67 ausgeben wollen, die kam als 12349.44 raus...

    Hier komme ich auch nicht wirklich weiter, da ich nicht weiß, wie ich einen Float-Wert direkt ins KO schreiben soll. Ich versuch es aber weiter. Das komische ist, dass mit Deinem alten Ansatz, als Du noch DPT9 als integer transportiert hast (intern multipliziert mit 100), hat das schreiben funktioniert.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • jorues
    antwortet
    bei mir sendet der BME680-Sketch mit dem aktuellen Code vom git immer noch nur Gruppentelegramme mit Wert = 0

    Das sollte doch noch passen oder?

    Code:
                goRawTemperature.value(iaqSensor.rawTemperature);
                goPressure.value(iaqSensor.pressure);
                goRawHumidity.value(iaqSensor.rawHumidity);
                goGasResistance.value(iaqSensor.gasResistance);
                goIaqEstimate.value(iaqSensor.iaq);
                goIaqAccurace.value(iaqSensor.iaqAccuracy);
                goTemperature.value(iaqSensor.temperature);
                goHumidity.value(iaqSensor.humidity);
                goCo2Ppm.value(iaqSensor.co2Equivalent);
    Grüße

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Thomas,

    ich wollte mal wieder Feedback geben, auch wenn es länger gedacht hat, als ich dachte. Ich habe ja mein Projekt auf die neuen DPT umgestellt und teste. Unter anderem auch Deinen neuen "Restart"-Befehl.

    Zu den DPT: Ich bin mir wirklich nicht sicher, ob ich das korrekt mache, da mir nicht wirklich klar ist, wann man diese "mehrkomponentigen" DPT braucht. Ich konnte erfolgreich DPT 1, 5, 5.001 schreiben, DPT 2 und 6 aber nicht. DPT 2 schreibt bei einer 3 (Priority On) eine 2 auf den Bus (Priority Off), DPT 6 schreibt für jede negative Zahl eine 0 auf den Bus. Mehr DPTs habe ich noch nicht getestet, das kommt noch. Kann ich irgendwas prüfen bzw. was bräuchtest Du, damit ich Dich bei der Korrektur unterstützen kann?

    Hier noch eine Anmerkung: Ich komme auch mit dem "RAW"-Ansatz
    Code:
        uint8_t *valueRef = Ko.valueRef();
        *valueRef = value;
        Ko.objectWritten();
    klar, das liefert mir die erwarteten Werte, ich wollte nur Feedback geben.


    Zum Restart-Befehl:
    Deine neue Methode sendet wirklich ein Restart auf den Bus, aber eben nur dieses Telegramm:
    Code:
     [TABLE]
     	 		[TR]
     			[TD]#[/TD]
     			[TD]Time[/TD]
     			[TD]Service[/TD]
     			[TD]Flags[/TD]
     			[TD]Prio[/TD]
     			[TD]Source Address[/TD]
     			[TD]Source Name[/TD]
     			[TD]Destination Address[/TD]
     			[TD]Destination Name[/TD]
     			[TD]Rout[/TD]
     			[TD]Type[/TD]
     			[TD]DPT[/TD]
     			[TD]Info[/TD]
     		[/TR]
     		[TR]
     			[TD]435[/TD]
     			[TD]06/07/2019 17:21:42,165[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]Low[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]Restart[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     	 [/TABLE]
    Wobei ich hier versuht habe, dass sich das Logikmodul selbst neu startet.
    Das funktioniert nicht. Wenn ich das gleiche mit der ETS mache, sieht das bei einem IP-Gerät so aus:

    Code:
     [TABLE]
     	 		[TR]
     			[TD]#[/TD]
     			[TD]Time[/TD]
     			[TD]Service[/TD]
     			[TD]Flags[/TD]
     			[TD]Prio[/TD]
     			[TD]Source Address[/TD]
     			[TD]Source Name[/TD]
     			[TD]Destination Address[/TD]
     			[TD]Destination Name[/TD]
     			[TD]Rout[/TD]
     			[TD]Type[/TD]
     			[TD]DPT[/TD]
     			[TD]Info[/TD]
     		[/TR]
     		[TR]
     			[TD]419[/TD]
     			[TD]06/07/2019 17:20:24,246[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]T_Connect[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]420[/TD]
     			[TD]06/07/2019 17:20:24,267[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]DeviceDescriptorRead (S=0)[/TD]
     			[TD] [/TD]
     			[TD]DescriptorType=0[/TD]
     		[/TR]
     		[TR]
     			[TD]421[/TD]
     			[TD]06/07/2019 17:20:24,272[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]6[/TD]
     			[TD]T_ACK (S=0)[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]422[/TD]
     			[TD]06/07/2019 17:20:24,292[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]6[/TD]
     			[TD]DeviceDescriptorResponse (S=0)[/TD]
     			[TD] [/TD]
     			[TD]DescriptorType=0, DescriptorData=57 B0[/TD]
     		[/TR]
     		[TR]
     			[TD]423[/TD]
     			[TD]06/07/2019 17:20:24,292[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]T_ACK (S=0)[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]424[/TD]
     			[TD]06/07/2019 17:20:24,360[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]PropertyValueRead (S=1)[/TD]
     			[TD] [/TD]
     			[TD]ObjectIndex=0, PropertyId=56, Count=1, StartIndex=1[/TD]
     		[/TR]
     		[TR]
     			[TD]425[/TD]
     			[TD]06/07/2019 17:20:24,362[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]6[/TD]
     			[TD]T_ACK (S=1)[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]426[/TD]
     			[TD]06/07/2019 17:20:24,383[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]6[/TD]
     			[TD]PropertyValueResponse (S=1)[/TD]
     			[TD] [/TD]
     			[TD]ObjectIndex=0, PropertyId=56, Count=1, StartIndex=1, Data=00 0F[/TD]
     		[/TR]
     		[TR]
     			[TD]427[/TD]
     			[TD]06/07/2019 17:20:24,383[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]T_ACK (S=1)[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]428[/TD]
     			[TD]06/07/2019 17:20:24,405[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]Restart (S=2)[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]429[/TD]
     			[TD]06/07/2019 17:20:24,423[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]6[/TD]
     			[TD]T_ACK (S=2)[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     		[TR]
     			[TD]430[/TD]
     			[TD]06/07/2019 17:20:24,426[/TD]
     			[TD]from bus[/TD]
     			[TD] [/TD]
     			[TD]System[/TD]
     			[TD]0.0.1[/TD]
     			[TD]-[/TD]
     			[TD]0.0.3[/TD]
     			[TD]Lokikmodul[/TD]
     			[TD]6[/TD]
     			[TD]T_Disconnect[/TD]
     			[TD] [/TD]
     			[TD] [/TD]
     		[/TR]
     	 [/TABLE]
    Für ein TP-Gerät ist es etwas einfacher:
    Code:
    #    Zeit    Dienst    Flags     Prio    Quelladresse    Quell-Beschreibung    Zieladresse    Zielname    Rout    Typ    DPT    Info
    42974    06.07.2019 17:24:04,225    zum Bus        System    0.0.0    -    1.0.63    Rauchmelder (10mA)    5    T_Connect        
    42975    06.07.2019 17:24:04,262    zum Bus        System    0.0.0    -    1.0.63    Rauchmelder (10mA)    5    DeviceDescriptorRead (S=0)        DescriptorType=0
    42976    06.07.2019 17:24:04,305    vom Bus        System    1.0.63    Rauchmelder EG:    0.0.0    -    5    T_ACK (S=0)        
    42977    06.07.2019 17:24:04,337    vom Bus        System    1.0.63    Rauchmelder EG:    0.0.0    -    5    DeviceDescriptorResponse (S=0)        DescriptorType=0, DescriptorData=00 12
    42978    06.07.2019 17:24:04,346    zum Bus        System    0.0.0    -    1.0.63    Rauchmelder (10mA)    5    T_ACK (S=0)        
    42979    06.07.2019 17:24:04,615    zum Bus        System    0.0.0    -    1.0.63    Rauchmelder (10mA)    5    Neustarten (S=1)        
    42980    06.07.2019 17:24:04,663    zum Bus        System    0.0.0    -    1.0.63    Rauchmelder (10mA)    5    T_Disconnect
    Bekomm ich noch einen Tipp, wie ich die restlichen Telegramme erzeugen kann?

    Vielen Dank und viele Grüße,
    Waldemar

    Einen Kommentar schreiben:

Lädt...
X