thelsing / knx

knx stack (TP, IP and RF) for arduino and linux, Can be configured with ETS
GNU General Public License v3.0
282 stars 98 forks source link

KNX-RF Device #53

Closed mjm987 closed 4 years ago

mjm987 commented 4 years ago

According to ./doc/knx_rf_notes.md I assume it should be possible to build a KNX-RF device using a SAMD21 board but I can't find any rule or example project for this. Could you add some HOWTO notes for dummies like me? (preferably for linux host system) Thx

thelsing commented 4 years ago

Is the problem the software or the hardware part? I didn't code the knx-rf stuff. Thats from @nanosonde . But I can help to create the knx-demo for an samd21 board if this helps.

mjm987 commented 4 years ago

I would be interested in the software part. A knx-demo which supports knx-rf on the samd21 board on cmake/Makefile base would be really great!

thelsing commented 4 years ago

The easiest way to build the software is the arduino-ide. Just add the repository as a lib. Edit knx/config.h and set MEDIUM_TYPE to 2. Then the knx-demo example should build a knx-rf version.

Other people also use platform-io to build firmwares. It should be possible to create a cmake, but I don't know how hard it is to use the arduino-core libs with only a cmake file.

mjm987 commented 4 years ago

ok thanks a lot, this will help :-)

thelsing commented 4 years ago

If you every create a cmake file to build a firmware, please let me know. ;)

mjm987 commented 4 years ago

Partially I had success: After changing media type and removing USE_TP I was able to program the SAMD21 MINI by using Arduino IDE (using "Arduino Zero" board setup and adapting variant.h to use the correct SPI on Pins 10..13).

On ETS5 I installed your example knx-demo-rf.knxprod and tried to Program the device, but it seems the board does not answer as expected. According the error output of ETS5 the device is recognised as set in program mode but programming of the physical address fails. After enabling the log output in rf_data_link_layer.cpp I get following output on the Serial1 line: " progmode on RX LFN: 7 len: 10 data: data: 29 00 10 60 FF FA 12 04 00 80 RX LFN: 0 len: 11 data: data: 29 00 10 60 FF FA 12 04 01 43 00 RX LFN: 1 len: 10 data: data: 29 00 10 60 FF FA 12 04 00 81 RX LFN: 2 len: 16 data: data: 29 00 00 E0 FF FA 00 00 06 01 C8 00 00 00 B0 01 RX LFN: 3 len: 23 data: data: 29 00 00 E0 FF FA 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF RX LFN: 4 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 5 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 6 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 7 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 0 len: 23 data: data: 29 00 00 E0 FF FA 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF RX LFN: 1 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 2 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 3 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 4 len: 17 data: data: 29 00 00 E0 FF FA 00 00 07 03 EC 00 FA 00 00 00 00 "

Do you have any idea what could be wrong?

nanosonde commented 4 years ago

Hi @mjm987,

what are you using to program RF devices? A KNX RF USB stick? A TP-RF coupler? What model? What ETS5 version are you using?

mjm987 commented 4 years ago

I'm using a Weinzierl KNX RF/TP Coupler 672 on ETS 5.7.3

mjm987 commented 4 years ago

When enabling TX debugging as well and ETS Programm Adress only I get this: RX LFN: 6 len: 16 data: data: 29 00 00 E0 11 02 00 00 06 01 C8 00 00 00 B0 01 TX LFN: 0 len: 35 data:1C 44 FF 02 00 FA 00 00 00 00 F4 37 00 00 00 00 00 E0 01 C9 00 00 00 B0 01 00 FA 00 90 0C 00 00 00 FF FF RX LFN: 7 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF RX LFN: 0 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 1 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 2 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 3 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 4 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF RX LFN: 5 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 6 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 7 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 RX LFN: 0 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00

so there is only a single TX package after the first RX ?!

nanosonde commented 4 years ago

The RX packets seem to be fine: https://www.dehof.de/eib/pdfs/EMI-FT12-Message-Format.pdf It just shows a cEMI frame without any additonal info (add info len is 0).

In the KNX spec (03_02_05 Communication Medium RF v01.06.03 AS.pdf) you can see the TX frame format in chapters 6.1.2.4 and 6.1.2.5. RF-info: 0x02 [OK] Serial/Domain Address: 00 FA 00 00 00 00 [default in the code] CRC block1: F4 37 KNX CTRL field: 0x00 [OK] source address: 00 00 destination address: 00 00 LPCI: 0xE0 (SN/DoA is KNX serial, dest. address is group address, RC: 0x6, LFN is 0x0) [OK] APCI type is: 0x01C9 --- data for this APCI: 00 00 00 B0 01 00 FA 00 00 00 00 (there are two further checksums: one in between the data (90 0C) and the final checksum: FF FF)

From here you can see the APCI types. In this case, TX is the SystemNetworkParameterResponse message which is correct as the previous message in RX is SystemNetworkParameterRead.

From a first look, I would say that it looks ok so far.

nanosonde commented 4 years ago

I would like to recommend to get free license for the KNX monitor from Weinzierl: https://www.weinzierl.de/index.php/de/alles-knx1/software-tools/net-n-node

It is really useful while debugging as you can see the message names and the decoded payload immediately.

nanosonde commented 4 years ago

Some other thoughts:

nanosonde commented 4 years ago

Concerning the filtering: Might it be that the coupler filters out system broadcast messages and only accepts normal broadcast messages? (Some coupler security setting that you should be able to change.)

On KNX-RF (and only on open media) you have those two broadcast types. systembroadcast is really a broadcast to all listing KNX-RF devices while normal broadcast is just within your domain (=domain address). That's the reason why you need the additonal domain address. It just "simulates" a closed medium like TP by adding the domain address.

mjm987 commented 4 years ago

Some more debug information - looks like the DomainAddressSerialNumberWrite does not work...

RX LFN: 2 len: 16 data: data: 29 00 00 E0 11 02 00 00 06 01 C8 00 00 00 B0 01 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:SystemNetworkParameterRead NetworkLayer::dataSystemBroadcastRequest TX LFN: 0 len: 35 data:1C 44 FF 02 00 FA 00 00 00 00 F4 37 00 00 00 00 00 E0 01 C9 00 00 00 B0 01 00 FA 00 90 0C 00 00 00 FF FF NetworkLayer::systemBroadcastConfirmation() RX LFN: 3 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberWrite RX LFN: 4 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberRead RX LFN: 5 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberRead RX LFN: 6 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberRead RX LFN: 7 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberRead RX LFN: 0 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberWrite RX LFN: 1 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication:DomainAddressSerialNumberRead RX LFN: 2 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() NetworkLayer::systemBroadcastIndication()

mjm987 commented 4 years ago

Does the device expect packages on the new address after writing the domain address??

mjm987 commented 4 years ago

Concerning the filtering: Might it be that the coupler filters out system broadcast messages and only accepts normal broadcast messages? (Some coupler security setting that you should be able to change.)

On KNX-RF (and only on open media) you have those two broadcast types. systembroadcast is really a broadcast to all listing KNX-RF devices while normal broadcast is just within your domain (=domain address). That's the reason why you need the additonal domain address. It just "simulates" a closed medium like TP by adding the domain address.

At least with some other commercial RF-Devices I had no problem to "program" them. I quickly removed filtering and still same. (btw: I get the packages on the SAMD21 but it does not respond after first reply...)

nanosonde commented 4 years ago

Did you get it working? I am asking, because you closed the issue.

mjm987 commented 4 years ago

no I didn't close but possibly telsing after responding the initial answer

still the same problem...

mjm987 commented 4 years ago

what could be the reason that a ApplicationLayer::dataSystemBroadcastIndication() does not send a confirmation package?

mjm987 commented 4 years ago

The problem is that empty functions of bau.cpp are called in ApplicationLayer::dataSystemBroadcastIndication instead those of Bau27B0.cpp

Here my logging: ApplicationLayer::dataSystemBroadcastIndication: case DomainAddressSerialNumberWrite BusAccessUnit::domainAddressSerialNumberWriteIndication --> empty function

ApplicationLayer::dataSystemBroadcastIndication: case DomainAddressSerialNumberRead BusAccessUnit::domainAddressSerialNumberReadIndication --> empty function

Unfortuantely I have no AVR_ICE adapter to debug but only the Arduino-IDE :-(

Obviously I configured something wrong

thelsing commented 4 years ago

Can you put your sketch somewhere? You probably got the wrong Bau in knx-facade.h

mjm987 commented 4 years ago

The skech I used is the examples/knx_demo/knx-demo.ino with following changes:

Further, according the Map file, the correct Bau (Bau27B0) is used in knx-facade is used: grep KnxFacade /tmp/arduino_build_885568/knx-demo.ino.map | tail -1 vtable for KnxFacade<SamdPlatform, Bau27B0> /tmp/arduino_build_885568/libraries/telsing-knx/knx_facade.cpp.o

But for eg. domainAddressSerialNumberReadIndication both versins are linked according the Mapfile: (but I think this is ok?) Bau27B0::domainAddressSerialNumberReadIndication(Priority, HopCountType, unsigned char) /tmp/arduino_build_885568/libraries/telsing-knx/knx/bau27B0.cpp.o BusAccessUnit::domainAddressSerialNumberReadIndication(Priority, HopCountType, unsigned char const) /tmp/arduino_build_885568/libraries/telsing-knx/knx/bau.cpp.o

The config.h file is defined as follows:

pragma once

ifdef ARDUINO_ARCH_SAMD

define SPI_SS_PIN 10

define GPIO_GDO2_PIN 9

define GPIO_GDO0_PIN 7

endif

define MEDIUM_TYPE 2

define USE_RF

And last but not least, the compiler uses following options eg. when compiling knx-facade.cpp: /home/mm/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/bin/arm-none-eabi-g++ -mcpu=cortex-m0plus -mthumb -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -w -x c++ -E -CC -DF_CPU=48000000L -DARDUINO=10900 -DARDUINO_SAMD_ZERO -DARDUINO_ARCH_SAMD -DSAMD21G18A -DUSB_VID=0x2341 -DUSB_PID=0x804d -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Zero\"" -I/home/mm/.arduino15/packages/arduino/tools/CMSIS/4.5.0/CMSIS/Include/ -I/home/mm/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0/CMSIS/Device/ATMEL/ -I/home/mm/.arduino15/packages/arduino/hardware/samd/1.8.6/cores/arduino -I/home/mm/.arduino15/packages/arduino/hardware/samd/1.8.6/variants/arduino_zero -I/home/mm/Comp/Arduino/libraries/FlashStorage/src -I/home/mm/Comp/Arduino/libraries/telsing-knx/src -I/home/mm/.arduino15/packages/arduino/hardware/samd/1.8.6/libraries/SPI /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.cpp -o /dev/null

Looks all ok to me, doesn't it?

mjm987 commented 4 years ago

If I declare BusAccessUnit::domainAddressSerialNumberWriteIndication() as pure abstract I get following error when compiling the project: In file included from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.cpp:1:0: /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.h: In instantiation of 'KnxFacade<P, B>::KnxFacade() [with P = SamdPlatform; B = Bau27B0]': /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.cpp:11:46: required from here /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.h:36:50: error: invalid new-expression of abstract class type 'Bau27B0' KnxFacade() : _platformPtr(new P()), _bauPtr(new B(_platformPtr)), _bau(_bauPtr)

                                              ^~~~~~~~~~~~~~~~~~~~

In file included from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.h:13:0, from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.cpp:1: /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx/bau27B0.h:12:7: note: because the following virtual functions are pure within 'Bau27B0': class Bau27B0 : public BauSystemB ^~~ In file included from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx/bau_systemB.h:4:0, from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx/bau07B0.h:4, from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.h:12, from /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx_facade.cpp:1: /home/mm/Comp/Arduino/libraries/telsing-knx/src/knx/bau.h:117:18: note: virtual void BusAccessUnit::domainAddressSerialNumberWriteIndication(Priority, HopCountType, const uint8_t, const uint8_t) virtual void domainAddressSerialNumberWriteIndication(Priority priority, HopCountType hopType, const uint8_t* rfDoA, ^~~~~~~~~~~~

mjm987 commented 4 years ago

By the way, same behaviour on the raspberry pi examples/knx-linux platform (no response to DomainAddressSerialNumberRead/Write request).

thelsing commented 4 years ago

I suggest adding some logging to https://github.com/thelsing/knx/blob/894a54fa7f4ca66e8a8b5dd06eb8bedc1a8d4108/src/knx/bau27B0.cpp#L130

I guess the serial number send from ets doesn't match with the configured one in the sketch?

mjm987 commented 4 years ago

Thx for suggesting, but I allready checkt that and the check is passed (both addresses are same).

And the problem is that not Bau27B0::domainAddressSerialNumberReadIndication() is called but BusAccessUnit::domainAddressSerialNumberReadIndication() (from the base class BusAccessUnit instead of the derived class Bau27B0 - see log above.

mjm987 commented 4 years ago

... possibly about different method signature? Some function parameters in Bau27B0 are declared as const but in BusAccessUnit they are declared without const?

thelsing commented 4 years ago

That was wrong indeed. I corrected this in the master branch. Can you try again please?

mjm987 commented 4 years ago

Great, one step further, Bau27B0::domainAddressSerialNumberReadIndication is sent now ;-)

But the ETS5 isn't happy with the answer of domainAddressSerialNumberReadIndication() Could you check what could be wrong with the the response packet at bottom?

(Btw: I requested the KNX monitor from Weinzierl some days ago as @nanosonde suggested but unfortunately Ididn't get a license file yet)

Log at SAMD21 device: ... RX LFN: 7 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF DataLinkLayer::frameRecieved() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication: case DomainAddressSerialNumberWrite Bau27B0::domainAddressSerialNumberWriteIndication RfMediumObject::rfDomainAddress() write <-- 00 FA 51 03 EE AF RX LFN: 0 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 DataLinkLayer::frameRecieved() ApplicationLayer::dataSystemBroadcastIndication ApplicationLayer::dataSystemBroadcastIndication: case DomainAddressSerialNumberRead Bau27B0::domainAddressSerialNumberReadIndication RfMediumObject::rfDomainAddress() read -->00 FA 51 03 EE AF TX LFN: 3 len: 36 data:1D 44 FF 02 00 FA 00 00 00 00 CF A4 00 00 00 00 00 E6 03 ED 00 FA 00 00 00 00 00 FA C8 14 51 03 EE AF 64 69 ^ --- after sending this back, the ETS throws an error and stopps "programming"

nanosonde commented 4 years ago

@mjm987 Could also check the ETS log at: C:\Users\\AppData\Local\KNX\ETS5\Log\ETS5.log? What does it say?

mjm987 commented 4 years ago

ok, see below ...

on TX above I guess the last few bytes are the respose of the Address: TX LFN: ..... ED 00 FA 00 00 00 00 00 FA C8 14 51 03 EE AF 64 69 is this address correct, shouldn't it be: TX LFN: ..... ED 00 FA 00 00 00 00 00 FA 51 03 EE AF ... (FA 51 03 EE AF instead of FA C8 14 51 ... ??)

here the ETS Log: ... 2020-05-03 13:44:35,321 [20] INFO Knx.Ets.Hawk.NetworkFacade - Programming IA 1.2.4 2020-05-03 13:44:35,321 [20] INFO Knx.Falcon.Network - BeginIndividualAddressWriteBySerialNumber with address 1.2.4 and serial number 00FA:00000000 2020-05-03 13:44:35,322 [20] INFO Knx.Falcon.Network - EndIndividualAddressWriteBySerialNumber 2020-05-03 13:44:38,332 [20] WARN Knx.Ets.Hawk.NetworkFacade - LoadIndividualAddressInProgMode failed: Die physikalische Adresse des Geräts kann nicht programmiert werden. 2020-05-03 13:44:38,334 [20] WARN Knx.Ets.Hawk.LoadDeviceTask - Knx.Ets.Hawk.NetworkManagementException: Die physikalische Adresse des Geräts kann nicht programmiert werden. bei acg.fv(Object A_0, Byte[] A_1, UInt16 A_2, IProgress1 A_3, CancellationToken A_4) bei acq.a(aaa A_0, ab5 A_1, IProgress1 A_2, CancellationToken A_3, Nullable1& A_4, Int32& A_5, Action2 A_6, Action1 A_7, Func2 A_8, Func2 A_9, Func2 A_10, Func1 A_11, InternalLoadDeviceOptions A_12, Func1 A_13) bei abl.a(aaa A_0, ab5 A_1, IProgress1 A_2, CancellationToken A_3, Nullable1& A_4, Int32& A_5, Action2 A_6, Action1 A_7, Func2 A_8, Func2 A_9, Func2 A_10, Func1 A_11, InternalLoadDeviceOptions A_12, Func1 A_13) bei abk.a(IProgress1 A_0, CancellationToken A_1, Nullable1& A_2, Int32& A_3, Boolean& A_4) bei abk.db(IProgress1 A_0, CancellationToken A_1) bei aaw.e.e() 2020-05-03 13:44:38,348 [1] ERROR Knx.Ets.ViewModel.OnlineOperations.Download.PendingOperation - Error during executing OnStateChanged method of object abk Knx.Ets.Hawk.NetworkManagementException: Die physikalische Adresse des Geräts kann nicht programmiert werden. bei acg.fv(Object A_0, Byte[] A_1, UInt16 A_2, IProgress1 A_3, CancellationToken A_4) bei acq.a(aaa A_0, ab5 A_1, IProgress1 A_2, CancellationToken A_3, Nullable1& A_4, Int32& A_5, Action2 A_6, Action1 A_7, Func2 A_8, Func2 A_9, Func2 A_10, Func1 A_11, InternalLoadDeviceOptions A_12, Func1 A_13) bei abl.a(aaa A_0, ab5 A_1, IProgress1 A_2, CancellationToken A_3, Nullable1& A_4, Int32& A_5, Action2 A_6, Action1 A_7, Func2 A_8, Func2 A_9, Func2 A_10, Func1 A_11, InternalLoadDeviceOptions A_12, Func1 A_13) bei abk.a(IProgress1 A_0, CancellationToken A_1, Nullable1& A_2, Int32& A_3, Boolean& A_4) bei abk.db(IProgress1 A_0, CancellationToken A_1) bei aaw.e.e() bei System.Threading.Tasks.Task.InnerInvoke() bei System.Threading.Tasks.Task.Execute() bei aaw.a(IAsyncResult A_0) bei Knx.Ets.ViewModel.OnlineOperations.Download.PendingOperation.OnStateChanged(Object sender, StateChangedEventArgs e)

nanosonde commented 4 years ago

ok, see below ...

on TX above I guess the last few bytes are the respose of the Address: TX LFN: ..... ED 00 FA 00 00 00 00 00 FA C8 14 51 03 EE AF 64 69 is this address correct, shouldn't it be: TX LFN: ..... ED 00 FA 00 00 00 00 00 FA 51 03 EE AF ... (FA 51 03 EE AF instead of FA C8 14 51 ... ??)

Whole frame: TX LFN: 3 len: 36 data:1D 44 FF 02 00 FA 00 00 00 00 CF A4 00 00 00 00 00 E6 03 ED 00 FA 00 00 00 00 00 FA C8 14 51 03 EE AF 64 69

The frame format itself is correct. The first block always contains 10 bytes followed by two CRC bytes: CF A4 Serial/DoA field in first block is: 00 FA 00 00 00 00 All following blocks will automatically get a CRC16 (two bytes) inserted after each 16 bytes. Second block starts with: KNX Ctrl field: 00 Src addr: 00 00 Dst addr: 00 00 LPCI: 0xE6 APCI type is: 0x03ED (DomainAddressSerialNumberResponse ) --- data for this APCI: 00 FA 00 00 00 00 00 FA 51 03 EE AF (CRCs removed) (there are two further checksums: one in between the data (C8 14) and the final checksum: 64 69)

If you look at the KNX spec. (03_03_07 Application Layer v01.06.02 AS.pdf) on page 37 (Figure 28), I can see that the response contains the serial number: 00 FA 00 00 00 00 and the domain address: 00 FA 51 03 EE AF. So the response looks correct.

here the ETS Log:

ok, thanks. nothing really interesting the ETS log.

The management procedure for writing the individual address is defined in 03_05_02 Management Procedures v01.09.02 AS.pdf on page 15.

Does the ETS send this error immediately or does it more look like a timeout in the ETS when you see the error?

mjm987 commented 4 years ago

After the last TX, it takes about 3s until ETS reports the error.

When I execute two times "Program address" the behaviour is not same, so setting the domain address seems to works but ETS does not understand the 2nd TX and because ETS does not retry, I guess the result isn't lost but invalid.

1st Time "Program address": RX domain address does not match. Skipping... RX domain address does not match. Skipping... RX LFN: 7 len: 16 data: data: 29 00 00 E0 11 02 00 00 06 01 C8 00 00 00 B0 01 TX LFN: 0 len: 35 data:1C 44 FF 02 00 FA 00 00 00 00 F4 37 00 00 00 00 00 E0 01 C9 00 00 00 B0 01 00 FA 00 90 0C 00 00 00 FF FF RX LFN: 0 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF RX LFN: 1 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 TX LFN: 1 len: 36 data:1D 44 FF 02 00 FA 00 00 00 00 CF A4 00 00 00 00 00 E2 03 ED 00 FA 00 00 00 00 00 FA 84 C6 51 03 EE AF 64 69

2nd time "Program address": RX LFN: 2 len: 10 data: data: 29 00 10 60 11 02 12 04 00 80 RX LFN: 3 len: 11 data: data: 29 00 10 60 11 02 12 04 01 43 00 RX LFN: 4 len: 16 data: data: 29 00 00 E0 11 02 00 00 06 01 C8 00 00 00 B0 01 TX LFN: 2 len: 35 data:1C 44 FF 02 00 FA 00 00 00 00 F4 37 00 00 00 00 00 E4 01 C9 00 00 00 B0 01 00 FA 00 DC DE 00 00 00 FF FF RX LFN: 5 len: 16 data: data: 29 00 00 E0 11 02 00 00 06 01 C8 00 00 00 B0 01 TX LFN: 3 len: 35 data:1C 44 FF 02 00 FA 00 00 00 00 F4 37 00 00 00 00 00 E6 01 C9 00 00 00 B0 01 00 FA 00 FA B7 00 00 00 FF FF RX LFN: 6 len: 23 data: data: 29 00 00 E0 11 02 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA 51 03 EE AF RX LFN: 7 len: 17 data: data: 29 00 00 E0 11 02 00 00 07 03 EC 00 FA 00 00 00 00 TX LFN: 4 len: 36 data:1D 44 FF 02 00 FA 00 00 00 00 CF A4 00 00 00 00 00 E8 03 ED 00 FA 00 00 00 00 00 FA 3B 0B 51 03 EE AF 64 69

So it seams the ETS does not understand the last TX package?

mjm987 commented 4 years ago

Btw: thx for explanation of the KNX package - helped me a lot to understand ;-)

On RX-frames I guess "11 02" is the the physical address of the ETS side, isn't it? Shouldn't it used on TX frame as destination address instead of "00 00" ?

nanosonde commented 4 years ago

I have just revived by KNX RF HW setup that I have used during development. I did a clean install of PlatformIO in Visual Studio Code on Windows 10 and did a fresh checkout of the current master branch. I was able to program the individual address of my DIY KNX RF device with ETS 5.7.4 without any problem.

I will try to capture the packets... BTW: Have you tried to get the free license from Weinzierl? I had recieved it quite fast. My TP/RF coupler is a MDT RF-LK001.02.

nanosonde commented 4 years ago

Debug output while programming the individual address:

start
readMemory
RESTORED FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
saved memory doesn't match manufacturerId, version or hardwaretype
manufacturerId: FFFF FA
version: FFFF 3
hardwareType: FF FF FF FF FF FF
 00 00 00 00 00 00
Partnumber: 0x0
Version   : 0x14
ownaddr 0
progmode on
save saveRestores 3
-10
.
200012DC
-27
.
20001E9C
-33
.
200002C8
save tableobjs 4
-33
.
20001378
-40
.
2000132▒start
readMemory
RESTORED 00 FA 00 00 00 00 00 00 00 03 13 04 00 00 00 01 00 00 01 00 00 00 00 00 00 00 00 00 FA F9 77 F4 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF
manufacturerId, version and hardwareType matches
saverestores 3
-10
.
-27
.
-33
.
restored saveRestores
tableObjs 4
-33
.
-40
.
-47
.
-54
.
restored Tableobjects
Partnumber: 0x0
Version   : 0x14
ownaddr 1304

You can see that device received the address and the MCU was reset. It now has the ownaddr 1304.

nanosonde commented 4 years ago

This is a capture of the same procedure from above captured with Net'n'Node. However, it is not the KNX RF frame format (which is Wireless MBUS based), but the normal cEMI frame format which my KNX interface sees on the TP side after is processed by the TP/RF coupler.


Num | Telegram | Service | Src-Addr | Dest-Addr | H-Cnt | APCI | AL-Data
-- | -- | -- | -- | -- | -- | -- | --
7 | 29 00 B0 E0 11 F3 00 00 06 01 C8 00 00 00 B0 01 | L-Data.ind | 1.1.243 | Broadc | 6 | SystemNwParamRead | ObjType=0(Dev) PID=11(SerNo) TestInfo=01
13 | 29 00 B0 E0 11 F3 00 00 06 01 C8 00 00 00 B0 01 | L-Data.ind | 1.1.243 | Broadc | 6 | SystemNwParamRead | ObjType=0(Dev) PID=11(SerNo) TestInfo=01
17 | 29 00 B0 E0 11 F3 00 00 06 01 C8 00 00 00 B0 01 | L-Data.ind | 1.1.243 | Broadc | 6 | SystemNwParamRead | ObjType=0(Dev) PID=11(SerNo) TestInfo=01
18 | 29 00 BC D0 00 00 00 00 0C 01 C9 00 00 00 B0 01 00 FA 00 00 00 00 | L-Data.ind | 0.0.0 | Broadc | 5 | SystemNwParamResp | ObjType=0(Dev) PID=11(SerNo) TestInfoResp=01 00 FA 00 00 00 00
20 | 29 00 B0 E0 11 F3 00 00 0D 03 EE 00 FA 00 00 00 00 00 FA F9 77 F4 23 | L-Data.ind | 1.1.243 | Broadc | 6 | DomAddrSerWrite | SerNo=00 FA 00 00 00 00 DomAddr=00 FA F9 77 F4 23
21 | 29 00 B0 E0 11 F3 00 00 07 03 EC 00 FA 00 00 00 00 | L-Data.ind | 1.1.243 | Broadc | 6 | DomAddrSerNoRead | SerNo=00 FA 00 00 00 00
23 | 29 00 BC D0 00 00 00 00 0D 03 ED 00 FA 00 00 00 00 00 FA F9 77 F4 23 | L-Data.ind | 0.0.0 | Broadc | 5 | DomAddrSerResp | SerNo=00 FA 00 00 00 00 DomAddr=00 FA F9 77 F4 23
24 | 29 00 B0 E0 11 F3 00 00 0D 03 DE 00 FA 00 00 00 00 13 04 00 00 00 00 | L-Data.ind | 1.1.243 | Broadc | 6 | IndAddrSerNoWrite | SerNo=00 FA 00 00 00 00 NewAddr=0x1304
25 | 29 00 B0 E0 11 F3 00 00 07 03 DC 00 FA 00 00 00 00 | L-Data.ind | 1.1.243 | Broadc | 6 | IndAddrSerNoRead | SerNo=00 FA 00 00 00 00
26 | 29 00 BC D0 13 04 00 00 0D 03 DD 00 FA 00 00 00 00 00 FA F9 77 F4 23 | L-Data.ind | 1.3.4 | Broadc | 5 | IndAddrSerNoResp | SerNo=00 FA 00 00 00 00
27 | 29 00 B0 E0 11 F3 00 00 06 01 C8 00 00 00 B0 01 | L-Data.ind | 1.1.243 | Broadc | 6 | SystemNwParamRead | ObjType=0(Dev) PID=11(SerNo) TestInfo=01
nanosonde commented 4 years ago

So it seams the ETS does not understand the last TX package?

What is the distance between the TP/RF coupler and your KNX RF device? What kind of antenna for the module are you using?

The problem might be that the the coupler gets broken packets quite often.

The whole "physical address" programming procedure does NOT use a connection-oriented approach with automatic repetitions, it just uses broadcasts to address the only device in programming mode. Ok, it repeats the broadcasts packets up to 3(?) times, but if it does not an answer, it stops with an error.

The content of your packets looks good so far. We really need to analyse the packets on TP side which your TP/RF coupler received to see if it received them at all.

From my experience with my own HW setup, I can tell you that I also had some issues with TX (but not RX) because of bad packets, because of the distance. I use my production KNX TP/RF coupler for my experiments and it is located on the other side of the house below a stairway(made from cement).

mjm987 commented 4 years ago

Many thx, seems quite ok compared with your answer. Except in LPCI field where AT=1 which means LTE Group Address whereas on your device AT=0 in answer frame. Is this correct?

Unfortunately Weinzierl didn't send the License file, I asked now again.

mjm987 commented 4 years ago

The distance is ~5m. I guess it is ok because the behaviour on ETS side is different when the device is active or not.

mjm987 commented 4 years ago

Sorry my fault, after applying the code changes from @thelsing, I didn't check again the TP/RF coupler filter table. Now I saw using wireshark that the response from the device didn't pass back. Programming is woking now! Regards and many many thx to both of you!!!!! (and I learned a lot about C++ and KNX protocol!!!)

nanosonde commented 4 years ago

@mjm987 Glad that you have solved it.

The filter table of the TP/RF coupler is something I do not understand completely. In the preview table (ETS) I only see the group addresses, but not any physical address. However, my coupler is configured to do filtering for both address types. How exactly is filtering of physical addresses realized? Is it something under the hood that the ETS does for physical addresses? I guess that there is a dedicated table property for filtering of physical addresses in a coupler, right?

mjm987 commented 4 years ago

If I understand right, ETS should program the filter according defined groupadresses and physical adresses. But on my coupler, System Broadcast Telegram and Broadcast Telegram were barred on each direction but nevertheless all telegrams to the device as well as the SystemNetworkParameterRead response telegram could pass but not the DomainAddressSerialNumberRead Response telegram.

mjm987 commented 4 years ago

Yet I have another problem only on SAMD (the Raspi "Programs" fine Address as well as Appl.)

On SAMD programming the Adress works fine but during ETS-Programming the "Application" the device hangs after hunderts of "MemWrite" and "ProperyValueWrite after receiving following package: L_Data.req 0.0.0->1.2.5 PropValueWrite OX=3 P=5 $02000000000000000000

(Which means Object Index = 3, P=5 --> PID Load State Control)

Btw: OX=4 P=5 just transmitted before works and sends a PropValueResp.

Any idea?

thelsing commented 4 years ago

Can you post a full xml-log of the ets group monitor? The loadstate code is the same for all interface objects, so it should work the same for all off them. It seems that I have to search for my samd board to check if it still works for TP.

mjm987 commented 4 years ago

Here the "Program Application" Log of the samd until it breaks:

<CommunicationLog xmlns="http://knx.org/xml/telegrams/01">
  <Telegram Timestamp="2020-05-05T06:29:33.1028823Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F63D70305100102000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:30.0502896Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F63D70305100102000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:30.0009745Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500CE" />
  <Telegram Timestamp="2020-05-05T06:29:29.9800686Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA064FD60405100101" />
  <Telegram Timestamp="2020-05-05T06:29:29.9347862Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00DE" />
  <Telegram Timestamp="2020-05-05T06:29:29.8547593Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F5FD70405100102000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:29.8008387Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500CA" />
  <Telegram Timestamp="2020-05-05T06:29:29.7794095Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0A4BD6040D100100FAABCE79" />
  <Telegram Timestamp="2020-05-05T06:29:29.7276841Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00DA" />
  <Telegram Timestamp="2020-05-05T06:29:29.6791584Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050A5BD7040D100100FAABCE79" />
  <Telegram Timestamp="2020-05-05T06:29:29.5992568Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500C6" />
  <Telegram Timestamp="2020-05-05T06:29:29.5770356Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA074644005800013501" />
  <Telegram Timestamp="2020-05-05T06:29:29.5326734Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00D6" />
  <Telegram Timestamp="2020-05-05T06:29:29.4710253Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050356040058" />
  <Telegram Timestamp="2020-05-05T06:29:29.4442883Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00D2" />
  <Telegram Timestamp="2020-05-05T06:29:29.3738653Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205075284005800013501" />
  <Telegram Timestamp="2020-05-05T06:29:29.3163946Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500C2" />
  <Telegram Timestamp="2020-05-05T06:29:29.2943919Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0943D60107100100000058" />
  <Telegram Timestamp="2020-05-05T06:29:29.2441652Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00CE" />
  <Telegram Timestamp="2020-05-05T06:29:29.1698249Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205054FD501071001" />
  <Telegram Timestamp="2020-05-05T06:29:29.1359807Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500FE" />
  <Telegram Timestamp="2020-05-05T06:29:29.1137228Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA097E46005C000100010001" />
  <Telegram Timestamp="2020-05-05T06:29:29.0661973Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00CA" />
  <Telegram Timestamp="2020-05-05T06:29:28.9973539Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205034A06005C" />
  <Telegram Timestamp="2020-05-05T06:29:28.9692904Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00C6" />
  <Telegram Timestamp="2020-05-05T06:29:28.9008616Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205094686005C000100010001" />
  <Telegram Timestamp="2020-05-05T06:29:28.8577077Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500FA" />
  <Telegram Timestamp="2020-05-05T06:29:28.8356386Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA097BD6020710010000005C" />
  <Telegram Timestamp="2020-05-05T06:29:28.7656627Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00C2" />
  <Telegram Timestamp="2020-05-05T06:29:28.6916556Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050543D502071001" />
  <Telegram Timestamp="2020-05-05T06:29:28.6580779Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500F6" />
  <Telegram Timestamp="2020-05-05T06:29:28.6346626Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0D764A004C00044F084B084B081300" />
  <Telegram Timestamp="2020-05-05T06:29:28.572486Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00FE" />
  <Telegram Timestamp="2020-05-05T06:29:28.5053536Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205037E0A004C" />
  <Telegram Timestamp="2020-05-05T06:29:28.4762549Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00FA" />
  <Telegram Timestamp="2020-05-05T06:29:28.3996595Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050D7A8A004C00044F084B084B081300" />
  <Telegram Timestamp="2020-05-05T06:29:28.3498222Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500F2" />
  <Telegram Timestamp="2020-05-05T06:29:28.3280548Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0973D6030710010000004C" />
  <Telegram Timestamp="2020-05-05T06:29:28.2797948Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00F6" />
  <Telegram Timestamp="2020-05-05T06:29:28.2126605Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050577D503071001" />
  <Telegram Timestamp="2020-05-05T06:29:28.1703063Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500EE" />
  <Telegram Timestamp="2020-05-05T06:29:28.1470752Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0B6E4800440000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:28.0922735Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00F2" />
  <Telegram Timestamp="2020-05-05T06:29:28.0242478Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050372080044" />
  <Telegram Timestamp="2020-05-05T06:29:27.9964722Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00EE" />
  <Telegram Timestamp="2020-05-05T06:29:27.9219401Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050B6E8800440000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:27.8725409Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500EA" />
  <Telegram Timestamp="2020-05-05T06:29:27.8503681Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA056BD6000E0001" />
  <Telegram Timestamp="2020-05-05T06:29:27.8109032Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00EA" />
  <Telegram Timestamp="2020-05-05T06:29:27.7409476Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205056BD5000E1001" />
  <Telegram Timestamp="2020-05-05T06:29:27.6895914Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500E6" />
  <Telegram Timestamp="2020-05-05T06:29:27.6672459Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0567D6000E0001" />
  <Telegram Timestamp="2020-05-05T06:29:27.6292851Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00E6" />
  <Telegram Timestamp="2020-05-05T06:29:27.5657993Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050567D5000E1001" />
  <Telegram Timestamp="2020-05-05T06:29:27.5003176Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500E2" />
  <Telegram Timestamp="2020-05-05T06:29:27.4791831Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0963D60407100100000044" />
  <Telegram Timestamp="2020-05-05T06:29:27.4308436Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00E2" />
  <Telegram Timestamp="2020-05-05T06:29:27.3581874Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050563D504071001" />
  <Telegram Timestamp="2020-05-05T06:29:27.3228072Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500DE" />
  <Telegram Timestamp="2020-05-05T06:29:27.298979Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA065FD60205100102" />
  <Telegram Timestamp="2020-05-05T06:29:27.255447Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00DE" />
  <Telegram Timestamp="2020-05-05T06:29:27.1804038Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F5FD702051001030B0000000600000000" />
  <Telegram Timestamp="2020-05-05T06:29:27.1231319Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500DA" />
  <Telegram Timestamp="2020-05-05T06:29:27.100528Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA065BD60205100102" />
  <Telegram Timestamp="2020-05-05T06:29:27.0585873Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00DA" />
  <Telegram Timestamp="2020-05-05T06:29:26.9847123Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F5BD70205100101000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:26.9328801Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500D6" />
  <Telegram Timestamp="2020-05-05T06:29:26.9108265Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0657D60105100102" />
  <Telegram Timestamp="2020-05-05T06:29:26.8666482Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00D6" />
  <Telegram Timestamp="2020-05-05T06:29:26.7947132Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F57D701051001030B0000000400000000" />
  <Telegram Timestamp="2020-05-05T06:29:26.7415535Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500D2" />
  <Telegram Timestamp="2020-05-05T06:29:26.7184633Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0653D60105100102" />
  <Telegram Timestamp="2020-05-05T06:29:26.6581767Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00D2" />
  <Telegram Timestamp="2020-05-05T06:29:26.5822762Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F53D70105100101000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:26.5335874Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500CE" />
  <Telegram Timestamp="2020-05-05T06:29:26.5098479Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA064FD60305100102" />
  <Telegram Timestamp="2020-05-05T06:29:26.4656912Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00CE" />
  <Telegram Timestamp="2020-05-05T06:29:26.3846001Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F4FD703051001030B0000000A00000000" />
  <Telegram Timestamp="2020-05-05T06:29:26.3322745Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500CA" />
  <Telegram Timestamp="2020-05-05T06:29:26.3049242Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA064BD60305100102" />
  <Telegram Timestamp="2020-05-05T06:29:26.262544Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00CA" />
  <Telegram Timestamp="2020-05-05T06:29:26.1846403Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F4BD70305100101000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:26.1348214Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500C6" />
  <Telegram Timestamp="2020-05-05T06:29:26.1086387Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0647D60405100102" />
  <Telegram Timestamp="2020-05-05T06:29:26.0657228Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00C6" />
  <Telegram Timestamp="2020-05-05T06:29:25.9942593Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F47D704051001030B0000000800000000" />
  <Telegram Timestamp="2020-05-05T06:29:25.9424535Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500C2" />
  <Telegram Timestamp="2020-05-05T06:29:25.9213829Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0643D60405100102" />
  <Telegram Timestamp="2020-05-05T06:29:25.8799546Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00C2" />
  <Telegram Timestamp="2020-05-05T06:29:25.8089175Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F43D70405100101000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:25.7524241Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500FE" />
  <Telegram Timestamp="2020-05-05T06:29:25.7303638Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA067FD60633100100" />
  <Telegram Timestamp="2020-05-05T06:29:25.6880291Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00FE" />
  <Telegram Timestamp="2020-05-05T06:29:25.6247214Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205067FD70633100100" />
  <Telegram Timestamp="2020-05-05T06:29:25.5881882Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500FA" />
  <Telegram Timestamp="2020-05-05T06:29:25.565583Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA077BD6060110010013" />
  <Telegram Timestamp="2020-05-05T06:29:25.5216711Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00FA" />
  <Telegram Timestamp="2020-05-05T06:29:25.4488778Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205057BD506011001" />
  <Telegram Timestamp="2020-05-05T06:29:25.4014943Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500F6" />
  <Telegram Timestamp="2020-05-05T06:29:25.3798952Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0677D60105100100" />
  <Telegram Timestamp="2020-05-05T06:29:22.3324551Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00F6" />
  <Telegram Timestamp="2020-05-05T06:29:22.2523885Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F77D70105100104000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:22.1972801Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500F2" />
  <Telegram Timestamp="2020-05-05T06:29:22.175912Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0673D60205100100" />
  <Telegram Timestamp="2020-05-05T06:29:22.1333385Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00F2" />
  <Telegram Timestamp="2020-05-05T06:29:22.0765364Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F73D70205100104000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:22.0147607Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500EE" />
  <Telegram Timestamp="2020-05-05T06:29:21.992169Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA066FD60305100100" />
  <Telegram Timestamp="2020-05-05T06:29:21.9476413Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00EE" />
  <Telegram Timestamp="2020-05-05T06:29:21.8763539Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F6FD70305100104000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:21.7957691Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500EA" />
  <Telegram Timestamp="2020-05-05T06:29:21.7723574Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA066BD60405100100" />
  <Telegram Timestamp="2020-05-05T06:29:21.7268773Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00EA" />
  <Telegram Timestamp="2020-05-05T06:29:21.6504003Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F6BD70405100104000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:21.579973Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500E6" />
  <Telegram Timestamp="2020-05-05T06:29:21.5595724Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0567D605050001" />
  <Telegram Timestamp="2020-05-05T06:29:21.5195734Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00E6" />
  <Telegram Timestamp="2020-05-05T06:29:21.4388823Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050F67D70505100104000000000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:21.3375917Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500E2" />
  <Telegram Timestamp="2020-05-05T06:29:21.3162238Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0563D6000F0001" />
  <Telegram Timestamp="2020-05-05T06:29:21.2763763Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00E2" />
  <Telegram Timestamp="2020-05-05T06:29:21.2125037Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050563D5000F1001" />
  <Telegram Timestamp="2020-05-05T06:29:21.1750973Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500DE" />
  <Telegram Timestamp="2020-05-05T06:29:21.1528705Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0B5FD6004E1001000000000000" />
  <Telegram Timestamp="2020-05-05T06:29:21.0992644Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00DE" />
  <Telegram Timestamp="2020-05-05T06:29:21.0234016Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205055FD5004E1001" />
  <Telegram Timestamp="2020-05-05T06:29:20.9886554Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500DA" />
  <Telegram Timestamp="2020-05-05T06:29:20.9674672Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA075BD6001910010003" />
  <Telegram Timestamp="2020-05-05T06:29:20.9235387Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00DA" />
  <Telegram Timestamp="2020-05-05T06:29:20.8395806Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205055BD500191001" />
  <Telegram Timestamp="2020-05-05T06:29:20.8085448Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500D6" />
  <Telegram Timestamp="2020-05-05T06:29:20.7855209Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0757D6000C100100FA" />
  <Telegram Timestamp="2020-05-05T06:29:20.740757Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00D6" />
  <Telegram Timestamp="2020-05-05T06:29:20.6707498Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050557D5000C1001" />
  <Telegram Timestamp="2020-05-05T06:29:20.6385379Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500D2" />
  <Telegram Timestamp="2020-05-05T06:29:20.6143422Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0B53D6000B100100FA00000000" />
  <Telegram Timestamp="2020-05-05T06:29:20.5587953Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00D2" />
  <Telegram Timestamp="2020-05-05T06:29:20.4818826Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050553D5000B1001" />
  <Telegram Timestamp="2020-05-05T06:29:20.4296606Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500CE" />
  <Telegram Timestamp="2020-05-05T06:29:20.4079349Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA084FD9021701140FFF30" />
  <Telegram Timestamp="2020-05-05T06:29:20.3582608Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00CE" />
  <Telegram Timestamp="2020-05-05T06:29:20.2758428Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205044FD8021700" />
  <Telegram Timestamp="2020-05-05T06:29:20.2425336Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500CA" />
  <Telegram Timestamp="2020-05-05T06:29:20.2205215Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA024BD200" />
  <Telegram Timestamp="2020-05-05T06:29:20.188776Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00CA" />
  <Telegram Timestamp="2020-05-05T06:29:20.1234456Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205064BD100FFFFFFFF" />
  <Telegram Timestamp="2020-05-05T06:29:20.0742588Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500C6" />
  <Telegram Timestamp="2020-05-05T06:29:20.053337Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA0747D600381001000F" />
  <Telegram Timestamp="2020-05-05T06:29:16.9761496Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00C6" />
  <Telegram Timestamp="2020-05-05T06:29:16.8971012Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050547D500381001" />
  <Telegram Timestamp="2020-05-05T06:29:16.8591237Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA120500C2" />
  <Telegram Timestamp="2020-05-05T06:29:16.8381295Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA03434027B0" />
  <Telegram Timestamp="2020-05-05T06:29:16.8026105Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BC501205FFFA00C2" />
  <Telegram Timestamp="2020-05-05T06:29:16.7242182Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA1205014300" />
  <Telegram Timestamp="2020-05-05T06:29:16.7001466Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00B060FFFA12050080" />
</CommunicationLog>
mjm987 commented 4 years ago

And if I restart the working Raspi and the failing SAMD I get following report of the saved config data: Raspi: RESTORED 00 FA 00 00 00 00 00 00 00 03 12 04 00 00 00 01 00 00 01 00 00 00 00 00 00 00 00 00 FA 51 03 EE AF 01 00 00 00 44 00 08 01 00 00 00 58 00 04 01 00 00 00 5C 00 08 01 00 00 00 4C 00 0C 00 00 00 00 00 00 SAMD: RESTORED 00 FA 00 00 00 00 00 00 00 03 12 05 00 00 00 01 00 00 01 00 00 00 00 00 00 00 00 00 FA 51 03 EE AF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF

mjm987 commented 4 years ago

Is there a 1:1 correspondance of the parameters in the .knxprod (XML) to the telegram values logged in the Groupmonitor (ObjectIndex? PropertyId? ...?)

thelsing commented 4 years ago

No, There are several interface objects.

mjm987 commented 4 years ago

Thx for explanation! With that in mind I will try to understand the software ;-)