KNX 2.x (after KNX 1.x): no read data from ga

Hello!
I’ve been running KNX 1.x on my previous setup for some years and had no problems. now i recently set up a new system and i’m having trouble with KNX.
as far as i understand all items with reading address (lights, raffstore) work fine. but i can’t read “simple” switches…

this is my old config (well, a short excerpt):
knx.cfg:

ip=192.168.178.230
type=TUNNEL
localIp=192.168.178.173

items:

Switch Licht_Buero  "Licht Büro"       {knx="2/1/9+<2/1/109"}
Switch sq_B2	    "Squeeze Button 1" {knx="0/6/2"}

when i press anye of these “hardware”-knx-switches openhab reads the command:

2020-07-14 00:28:39.578 [ome.event.ItemCommandEvent] - Item 'Licht_Buero' received command OFF
2020-07-14 00:28:39.636 [vent.ItemStateChangedEvent] - Licht_Buero changed from ON to OFF

2020-07-14 00:30:41.000 [ome.event.ItemCommandEvent] - Item 'sq_B2' received command ON
2020-07-14 00:30:41.014 [vent.ItemStateChangedEvent] - sq_B2 changed from NULL to ON

this is how my config looks on the new setup:
knx.things:

//TUNNEL

Bridge knx:ip:bridge [  
    type="TUNNEL", 
    ipAddress="192.168.178.230", 
    portNumber=3671, 
    autoReconnectPeriod=60
] {

    Thing device generic [
    ]  {
        Type switch : Licht_Buero  "Licht Büro"            [ga="2/1/9+<2/1/109" ]
        Type switch : sq_B2        "Squeeze Button 2"      [ga="0/6/2" ]
    }
}

items:

Switch          Licht_Buero            "Licht Büro"                 (gLichter_EG)                                               {channel="knx:device:bridge:generic:Licht_Buero", autoupdate="false" }
Switch          sq_B2                  "Squeeze Button 2"                                                                       {channel="knx:device:bridge:generic:sq_B2", autoupdate="false" }

and here’s the log of my new setup (same events):

// no Licht_Buero received command OFF entry
2020-07-14 00:28:39.580 [vent.ItemStateChangedEvent] - Licht_Buero changed from ON to OFF
// absolutely no entries for sq_B2

as i’m having this problem for a while now i have searched a bit but could find a solution. i tried with switch-control as mentioned by @Udo_Hartmann in some threads

        Type switch-control        : sq_B2                 "Squeeze Button 2"          [ga="0/6/2" ]

but that doesn’t help either…

i have some switches that are read only (and with current setup are absolutely useless because i don’t get any information)

i’ve read that knx1 didn’t behave as it should have, but for me “not correct” worked better :upside_down_face:

can anyone tell me what to do with these things / channels / items?

for now… good night!

Peter

The main difference between switch and switch-control is, for switch you will get state but no command and for switch-control you will get command, but no state.

I’m using Group Addresses without any device other than a wall switch successfully to control my virtual squeezeboxes, so there must be another mistake.

When you say “read only”, what do you mean by that? A switch is never read only, you can press the button and the switch will send the GA. It’s very likely that the switch won’t answer to a read request, as a wall switch is normally not the state master.

Did you restart openHAB after changing the switch channel to switch-control? Because when changing *.things files, this does not take effect instantly…

1 Like

Hi!
switch-control was just one of many guesses… not sure if it makes sense at all in this case…

i used to control my squeezebox as well (with KNX1), but somehow i lost the “Item ‘sq_B2’ received command…” when i “upgraded” to KNX2…

do you see anything wrong with my new config of things and items?

edit: yes, i restartet openhab many times.

Sure it does. If the wall switch is exclusively used for a non knx receiver, use switch-control to receive commands in openHAB. This is the big difference between knx1 and knx2, in knx1 you get commands and also state updates for the very same knx telegram (and this is not the correct behavior).

1 Like

okay, after another reboot i finally get

Item 'sq_B2' received command ON

but openHAB / KNX2 binding does not read value from BUS (so with autoupdate = “false”) the items is not updated. with KNX1 and the config in first post this was different.
for this switch (sq_B2) it’s not a big problem because i really use this only to command a squeezebox so the state of the item is basically irrelevant.

this is different for our gate…

KNX1:

Switch Tor_Auf "Tor Auf" { knx="0/3/10", autoupdate="false" }
Switch Tor_Zu "Tor Auf" { knx="0/3/11", autoupdate="false" }
Switch Tor_RM "Tor Status" { knx="0/3/12" }

if Tor_RM (no commands FROM openhab to this Item = read only) changed openhab/KNX1 “got” the message from the KNX Bus, now the item won’t update…
thing:

Type switch                 : Tor_RM       "Tor Status"                [ga="0/3/12" ]

items:

Switch          Tor_RM                 "Tor Status"                                                                             {channel="knx:device:bridge:generic:Tor_RM", autoupdate="false"}

also tried with, [ga="<0/3/12" ], didn’t work either: Giving up reading datapoint 0/3/12, the number of maximum retries (3) is reached.

tried also with switch-control, still no updates…

well, for now i get nothing, so i hope i have config-problems and this is not how it’s supposed to be…
with my old setup KNX on startup somehow read all values from the KNX bus, now i just just get the values from the items with “<” reading address…

That’s what you configured it to do.

A KNX xxx-control type channel issues openHAB commands. That makes it similar behaviour to clicking a UI button, etc.

Setting autoupdate="false" on an Item stops autoupdate from listening for openHAB commands and predicting a state update for the Item. That’s an internal function of openHAB, not related to KNX.

This is all working as intended.

If for some reason you do want the Item state updated by the command, you can remove autoupdate="false" and so allow autoupdate to do its work by default.

Note, that in the case of a KNX xxx-control type channel, the channel will “listen” for state updates and I think may send out a KNX message. That could be used for an inndicator LED at the switch panel, for example.
It’s the opposite behaviour to non-control channel types, which only send out commands.

Sorry, I have no idea about your second device.

You can’t simply read everything what you like from knx bus. You need a device which is configured to answer the read request. That is, the R-flag (L-flag in german) is set.

A knx wall switch normally does not provide a state (as said above) and the R-flag is not set.

If defining a channel as *-control channel, openHAB will act as an actuator, i.e. it will receive commands. But as openHAB now is the actuator, there is absolutely no point to read the state from knx, because openHAB now is holding the state. Furthermore openHAB is answering read requests from the bus.

knx1 also did only read the GA marked with a <, there is absolutely no change about that.