KNX Values are updated but then changed back quickly without reason

Tags: #<Tag:0x00007f7456572430>

Dear all,
I face a weird problem with KNX2 Binding on Openhab 2.5M2 and the latest Openhab 2.5 Snapshot. It runs on a BeagleBoard x15 under ubuntu and is connected via an MDT IP Gateway.

First of all the knx2 Binding works well for my system and I am able to read the actual temperatures of my temperature sensors as well as setting the temperaturs of my heating actor (MDT AKH).

Below you can see my setup:
knx.things:

Bridge knx:ip:bridge [
type=“TUNNEL”,
ipAddress=“192.168.100.1”,
portNumber=3671,
localIp=“192.168.100.2”,
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
autoReconnectPeriod=60,
localSourceAddr=“1.0.250”
]
{
Thing device generic [
address=“1.0.16”,
fetch=true,
pingInterval=300,
readInterval=3600
] {
//Sollwerte
Type number : K_Soll_Temp “Küche Sollwert Heizung” [ ga=“9.001:11/5/3+<11/5/4” ]
Type number : WC_Soll_Temp “Dusche/WC Sollwert Heizung” [ ga=“9.001:15/5/3+<15/5/4” ]
//Heizungsmodus
Number HVAC_Mode “Modus Heizkreisverteilung” { channel=“knx:device:bridge:generic:HVAC_Mode”, autoupdate=“True” }
Number HVAC_Mode_Status “Modus Heizkreisverteilung Status [MAP(de_HVAC_Vert.map):%s]” { channel=“knx:device:bridge:generic:HVAC_Mode_Status”, autoupdate=“false” }
}

knx.items:

//Sollwerte
Type number : K_Soll_Temp “Küche Sollwert Heizung” [ ga=“9.001:11/5/3+<11/5/4” ]
Type number : WC_Soll_Temp “Dusche/WC Sollwert Heizung” [ ga=“9.001:15/5/3+<15/5/4” ]
//Heizungsmodus
Number HVAC_Mode “Modus Heizkreisverteilung” { channel=“knx:device:bridge:generic:HVAC_Mode”, autoupdate=“True” }
Number HVAC_Mode_Status “Modus Heizkreisverteilung Status [MAP(de_HVAC_Vert.map):%s]” { channel=“knx:device:bridge:generic:HVAC_Mode_Status”, autoupdate=“false” }

When I change temperatures via UI everything works well, the temperatures are set and displayed as they should. Do I change the HVAC_Mode in Order to set all temperatures to another level (7° C for Building protection) I face a weird behavior. While the Item WC_Soll_Temp is setted correctly, the Item for K_Soll_Temp is changed for about half a second and then immediately changed back to the value before.

All adresses and settings within the ETS are the same for both channels and now further message on the bus is created by this change. All parts outside of Openhab show the right temperatures (MDT BE-GBZW).
I am puzzled as I have checked all configurations for all channels twice and still can’t see any reason why one control is working and the other not. Please note that the problem persists if I add more rooms or actors. There are two actors with 8 Channels and only the one with WC_Soll_Temp is working as it should.

Thanks in advance for you help.
Tschibi

Comment- autoupdate is enabled by default

Your code is a mess :wink:

Please use code fences when posting code, configurations or logs.

The part “knx.items” is a copy of the last lines of knx.things (which can’t be correct. I guess that’s copy&paste error)
The code should look like this:

knx.things:

Bridge knx:ip:bridge [
    type="TUNNEL",
    ipAddress="192.168.100.1",
    portNumber=3671,  // please comment out, as it is default
    localIp="192.168.100.2", // please try to comment out, as it should not be necessary
    readingPause=50,  // please comment out, as it is default
    responseTimeout=10,  // please comment out, as it is default
    readRetriesLimit=3,  // please comment out, as it is default
    autoReconnectPeriod=60,  // please comment out, as it is default
    localSourceAddr="1.0.250"
 ] {
Thing device generic [  // is it a generic device? then please 
    address="1.0.16", // do not set address
    fetch=true,  // that is experimental, please do not use it
    pingInterval=300, // does only work for real devices
    readInterval=3600 // please do not use this parameter if not explicitly needed
 ] {
//Sollwerte
Type number : K_Soll_Temp "Küche Sollwert Heizung" [ ga="9.001:11/5/3+<11/5/4" ]
Type number : WC_Soll_Temp "Dusche/WC Sollwert Heizung" [ ga="9.001:15/5/3+<15/5/4" ]
}

knx.items:

//Heizungsmodus
Number HVAC_Mode "Modus Heizkreisverteilung" { channel="knx:device:bridge:generic:HVAC_Mode", autoupdate="True" }
Number HVAC_Mode_Status "Modus Heizkreisverteilung Status [MAP(de_HVAC_Vert.map):%s]" { channel="knx:device:bridge:generic:HVAC_Mode_Status", autoupdate="false" }

Because of the copy&paste error, the items do not match with the given channels. But at least:
autoupdate can’t be set to “True”, it’s either “true” or “false”.

1 Like

Thanks for your help and sorry for the mess …

At first I adapted you improvements regarding the Bridge and the knx generic device. Clearing the initial to the initial problem
knx.items

Bridge knx:ip:bridge [
type="TUNNEL",
ipAddress="192.168.100.1",
localSourceAddr="1.0.250"] {
Thing device generic [
] {
// Change HVAC Mode
Type number : HVAC_Mode        "Heizungsverteilung HVAC Mode"               [ ga="5.005:<10/5/7" ]
Type number : HVAC_Mode_Status "Heizungsverteilung HVAC Mode Status"               [ ga="5.005:<10/5/6" ]

// set point for room temperatures
Type number : K_Soll_Temp "Küche Sollwert Heizung" [ ga="9.001:11/5/3+<11/5/4" ]
Type number : WC_Soll_Temp "Dusche/WC Sollwert Heizung" [ ga="9.001:15/5/3+<15/5/4" ]   
}

knx.items

//HVAC Mode
Number        HVAC_Mode            "Modus Heizkreisverteilung" <heating>                     { channel="knx:device:bridge:generic:HVAC_Mode" }
Number        HVAC_Mode_Status     "Modus Heizkreisverteilung Status [MAP(de_HVAC_Vert.map):%s]" <heating>   { channel="knx:device:bridge:generic:HVAC_Mode_Status", autoupdate="false" }
// Set Points
Number        K_Soll_Temp          "Sollwert Küche [%.1f °C]"              <light>          { channel="knx:device:bridge:generic:K_Soll_Temp", autoupdate="false" }
Number        WC_Soll_Temp         "Sollwert Dusche/WC [%.1f °C]"              <light>          { channel="knx:device:bridge:generic:WC_Soll_Temp" }

With this code I run into the following problem: Whenever I change K_Soll_Temp or WC_Soll_Temp by hand everything works fine. The values are set right on the Bus, the Actor as well as the Openhab Sitemap. The HVAC_Mode causes the Actor to chage the temperature values (e.g. from comfort with 22°C to Building protection 7°C). This changes can be seen on the bus as well as within the actor (checked with ETS).
Only within Openhab K_Soll_Temp and WC_Soll_Temp behave differently. While WC_Soll_Temp is changed in the right way. K_Soll_Temp is changed to the right value (about half a second) and then immediately changed back to the value before.

Thanks for your help again

Greetings
Tschibi

Would you show us your events.log for this, please?

Of course:

2019-08-21 20:59:19.541 [ome.event.ItemCommandEvent] - Item 'HVAC_Mode' received command 4
2019-08-21 20:59:19.587 [nt.ItemStatePredictedEvent] - HVAC_Mode predicted to become 4
2019-08-21 20:59:19.604 [vent.ItemStateChangedEvent] - HVAC_Mode changed from 1.0 to 4
2019-08-21 20:59:19.868 [vent.ItemStateChangedEvent] - HVAC_Mode_Status changed from 1.0 to 4.0
2019-08-21 20:59:19.932 [vent.ItemStateChangedEvent] - K_Soll_Temp changed from 22.0 to 7.0
2019-08-21 20:59:20.037 [vent.ItemStateChangedEvent] - WC_Soll_Temp changed from 24.0 to 7.0
2019-08-21 20:59:20.108 [vent.ItemStateChangedEvent] - K_Soll_Temp changed from 7.0 to 22.0
2019-08-21 20:59:20.837 [vent.ItemStateChangedEvent] - K1_Soll_Temp changed from 22.0 to 7.0
2019-08-21 20:59:20.902 [vent.ItemStateChangedEvent] - K1_Soll_Temp changed from 7.0 to 22.0
2019-08-21 20:59:20.934 [vent.ItemStateChangedEvent] - W_Soll_Temp changed from 22.0 to 7.0
2019-08-21 20:59:21.005 [vent.ItemStateChangedEvent] - W_Soll_Temp changed from 7.0 to 22.0
2019-08-21 20:59:21.835 [vent.ItemStateChangedEvent] - K2_Soll_Temp changed from 22.0 to 7.0
2019-08-21 20:59:21.905 [vent.ItemStateChangedEvent] - K2_Soll_Temp changed from 7.0 to 22.0
2019-08-21 20:59:21.934 [vent.ItemStateChangedEvent] - G_Soll_Temp changed from 22.0 to 7.0
2019-08-21 20:59:22.001 [vent.ItemStateChangedEvent] - G_Soll_Temp changed from 7.0 to 22.0
2019-08-21 20:59:22.836 [vent.ItemStateChangedEvent] - B_Soll_Temp changed from 24.0 to 7.0
2019-08-21 20:59:22.903 [vent.ItemStateChangedEvent] - B_Soll_Temp changed from 7.0 to 24.0

Please Note, that the oterh *_Soll_Temp things show the same error (except the WC_Soll_Temp which works fine even though there are no differences in programming)

Okay, that rules out autoupdate interfering with ‘predictions’. I did not realize that no openHAB commands are sent to the setpoint devices, and something else is doing that.

I know nothing of KNX but it sounds like you get a status report back before the setpoint update takes place.

Is 10/5/7 a GA which controls more than one HVAC?

Hello,
@Udo_Hartmann
10/5/7 controls all HVAC’s Channels of my two actors (MDT AKH-0400.02 and MDT AKH-0600.02). All summed up there are 8 channles in use, each of them can be controlled separately by a single HVAC GA. As I only wanted one HVAC Status for the whole building (and not a single status for every room) the adresses 10/5/7 and 10/5/6 are connected to every channel in use.
Checking by ETS this seemed to work … (but I can do retests if needed)

hello

i think i have the same problem with raspberypi (or test with linux), openhab 2.4.0, knx2.

i have an actuator 8 ways for my rollerchutter and they open or close alone.

no problem whith openhab 2.2.0 . knx1

No, that’s not correct.

  1. a Device will only send on the first GA listed in the communication object.
  2. a read request will also only be answered on the first GA. so, a communication object, which is configured like this: 1/1/1, 1/1/2 will only send 1/1/1, never 1/1/2
  3. it’s not allowed to use more than one status per GA, as there is no way to differentiate between the devices.
  4. you want the status per HVAC, not per building (of course you can calculate an average or something similar, but you need to know that every HVAC has switched to the desired mode.

So that means I will have to create 8 GA’s for HVAC Status instead of only one … does this apply to the switching object itself too, or can I use here one for all?

hello,

i have the same problem and i have good configuration with one GA per status and one ga per object. i think the problem come when i reboot my raspberry (but i’m not sure)
i configured to a mapdb.persist but with no success.

A status is always exclusive for an actuator channel. think about two light channels. Now, when using the same GA for both channel statuses, when changing one channel to ON and the other to OFF, which would be the correct status?

As you need the status per actuator anyway (to get the current status when starting openHAB), there is no point to complain about the mass of necessary group addresses.

You will also need one GA per temperature (is-status, set-command) per HVAC and another GA for outdoor temperature (this one will be linked to all HVAC, like time/date).
You will need another GA pair for HVAC Mode (set and status) and some more GA for central set mode and central set temperature.

Of course you can use openHAB to control the group of HVAC through openHAB Groups.

OK,
I got that point and changed all GA according to your suggestions. Unfortunately this did solve the problem … Is there any way to track the icomming messages from KNX?

Maybe you lost a not in your text?

You can use ETS Groupmonitor and/or Busmonitor to monitor the knx bus. Maybe you have other issues in your knx configuration.

@Tschibi - Check in ets the ga objekt - flags
knx2 config seams to be ok for me. I use the same heating actors. Works fine here.