Attemping to figure out the topology of a existing KNX setup

Hi,

I have a KNX-based setup in my home, including a eibport device used as KNX interface.

The KNX setup was pre-installed when I bought the house and I don’t have the admin password for the EibPort device. The company which installed the setup no longer exists, so I can’t get the password from them.

I could probably just factory reset the EibPort and start from scratch, but I would prefer not having to do that at this time.

Instead, I’d like to integrate my KNX devices into HA. The only problem is that I don’t have a list of all of the group adresses assigned to the various KNX devices.

Using ETS I was able to connect to the KNX bus through my EibPort and monitor the traffic there. This way, I could pretty easily figure out the adresses assigned to simple devices such as lights.
However, this approach doens’t seem viable for the more advanced devices such as climate controls and blinds, as these have multiple adresses associated.

The next approach I tried was having a look at the traffic sent from the built-in web interface of the EibPort. This way I was able to find json payloads representing the various devices and corresponding states. The following is an example of a json object representing a light:



                {
                  "id": 34958,
                  "type": "switch",
                  "title": "Korridoren",
                  "dashboard_category": 2,
                  "fav_status": 0,
                  "fav_rank": 1,
                  "ga_switch": [
                    2309
                  ],
                  "ga_fb_switch": [
                    22789
                  ],
                  "ga_dim": [],
                  "ga_fb_dim": [],
                  "ga_consumption": [],
                  "icon": "light",
                  "dimming_telegram_count": 2,
                  "datatype_consumption": 100140000,
                  "format_consumption": "0 W",
                  "factor_consumption": 1,
                  "offset_consumption": 0,
                  "dimming_type": "none"
                }

My assumption is that the ga_switch element is a decimal representation of the group adress corresponding to this light.
By monitoring the trafic on the KNX bus I confirmed that this particular light has the group adress 1/1/5.
If I could figure out how to convert the decimal group adress back to the normal ‘x/y/z’ form, I could easily write a script to parse the topology representation and extract the adresses. So far I’ve not been able to figure out how do that, though.

Does anybody here happen to know how to go about this? Any advice would be greatly appriceated

Without the KNX project file its gonna be alot of reverse enginering to figure out the group addresses.
You might want to look around for an installer, with some software it is possible to rebuild the ETS project. Be it in nameless groups and some devices that are non-ETS standard might not be readable. Maybe worth a shot.

As for the EibPort, i have never worked with that. I do however know alot of programmers are lazy and will not change the default password.

admin
eibPort

But you can at least us it as a tunnel device for interacting with HA KNX - Home Assistant

Like you said, you can gather some info from ETS monitoring.
Lets say you want to “rebuild” a device:

  1. Locate the device physically and press its programming button.
  2. In Diagnostics, under - Individual Addresses select Programming Mode This will show you the device its address.
  3. Select Device Info and read out the info with group addresses. This will give you the group addresses at each data point.
  4. Import the device into the project (You will encounter different device versions, try to match it with the version you can see in step 3)
  5. You should be able to compare the datapoints of the device with the info from the read device and reverse engineer it.

All this works most of the time, if you have the correct versions of the device in ETS. There are going to be some that wont show datapoints till you go into parameters and enable functions.
All in all its gonna be some work, and having someone with the Reconstruct addon for ETS will help alot.

I have rebuild my share of ETS projects and till now not failed :joy: (worst case i just rebuild everything by hand :innocent:)
But by far is finding the original ETS project the best way. Maybe mail/call them if they can still be reached somehow. Or check if they ever send you something.

In HA you can just use these raw numbers to assign GAs. If you want to convert it here is how you’d do that: xknx/address.py at d5496b9803616a051904ee2fe98108aa377d8180 · XKNX/xknx · GitHub
… or just

from xknx.telegram import GroupAddress

raw_int = 2309
ga = GroupAddress(raw_int)
print(str(ga))

Ah, thank you very much, Sir. This should allow me to extract all of the group adresses from the json topology representation. And from there, it’s just a matter of adding everything to my HA config.

I’ve been able to confirm that the integration itself works by adding one of the lights for which I already found the group adress using the following config:

knx:
  tunneling:
    host: 192.168.88.241
    port: 3671
    local_ip: 192.168.88.128
  light:
    - name: 'Korridoren'
    address: '1/1/5'

Again, thanks alot for the quick reply :slight_smile:

Either you are using 2+ years old HA version or you have invalid configuration there. Connection config in yaml isn’t a thing anymore.

Here you could just use address: 2345 (2345 just being an example) instead of converting before, if you like.

Ah yes you’re right. I was experimenting with various config variants yesterday and the tunneling stuff indeed turned out not to work. I got the integration to work with auto discovery in the end.

Using the decimal group address values does indeed work - I just managed to get a light to work that way and a climate control to atleast partially work so far.