How do I send a percent value to the KNX bus from openHAB2 rule

I need your help. I have a KNX heating actor which receives % (procent) values to open & close the valves.
The configuration of this item is like this:

Number Heizung_Stellwert_Buero             "Stellwert Büro         [%d %%]" <heating>	   (Heizung_Stellwerte,Heizung_Stellwerte_Chart)  { knx="<5.001:7/0/1" }

within a rule I now want/need to send a x% value to this item, but on the KNX side I can not see the value received, so I assume my value is not send.

This is my rule:


rule "Stellwert Heizung Buero"
when
	Item Temperatur_OG_Buero_Ist received update
then
    var float temp_temperatur_differenz=(Temperatur_OG_Buero_Soll.state as DecimalType).floatValue-(Temperatur_OG_Buero_Ist.state as DecimalType).floatValue
    
    if       (temp_temperatur_differenz>=1) 
    {
    	Heizung_Stellwert_Buero.postUpdate(99 as DecimalType)
		say("Case 1  " + " .")
    }  
    else if  (temp_temperatur_differenz>=0.5)   say("Case 2 - Die aktuelle Differenz Soll / Ist Temperatur ist " + temp_temperatur_differenz + " .")

end

I do hear the “Case 1”, so I am sure the Command has been executed. But I do not see “99%” on the bus monitor.
Any idea how to do this?

Thanks!

not 100% sure, but you have to use sendCommand to trigger an action. postUpdate just changes the the state of an item - see https://github.com/openhab/openhab1-addons/wiki/Actions#event-bus-related-actions

As @rikky stated, you have to use .sendCommand instead.

  • .postUpdate() should only change the state of the item within openHAB but without sending anything to any binding.
  • .sendCommand() should only send a command to all bindings bound to the item without changing the state within openHAB.
    This is only true, if the item is set to autoupdate="false". Otherwise, openHAB will do a .postUpdate() right after the .sendCommand() without waiting for response.

I did try out 3 different ways to update/send the value to the bus.

I did use as described above:

Heizung_Stellwert_Buero.postUpdate(99 as DecimalType)

I also did

Heizung_Stellwert_Buero.sendCommand(new PercentType(90))

and I had tried

sendCommand(Heizung_Stellwert_Buero, 90)

For the number I tried out several ways like PercentType, DecimalType, as String or als plan characters … nothing seems to have changed anything.

Is anyone of you sending 5.001 telegrams and can see them on the bus?

And you did not try

Heizung_Stellwert_Buero.sendCommand(90)

?
The definition as % is made in knx, in openHAB this will be a normal integer (or maybe a float… 100/256=25/64)

And yes, I’m sending loads of DPT5.001 from openHAB…

Yes I did try 99 or 0.99 or new PercentType(90) or (99 as DecimalType) - so far nothing has worked.
What version of openHAB do you have running?

I am on version 2.1 with knxd and have the “feeling” I was working in 1.8.3 and the eibd, but I can not check anymore as the host running this version now is shut down.

Hello,

I have the same problem. I try to send a percentage value to knx 5.001 dpt, but failed.

item:
Number Bad_DG_Thermostat_Set “Vorgabe Thermostat [%d]” {knx=“5.001:4/7/0”}
or
Number Bad_DG_Thermostat_Set “Vorgabe Thermostat [%d %%]” {knx=“5.001:4/7/0”}

I also can receice 5.001 dpt information from KNX to OH2.
item:
Number Bad_DG_Status_Thermostat “Status Thermostat Bad DG [%d %%]” {knx=“5.001:4/0/0”}

I also can send and receive 5.005 dpt temperature values from OH2 to KNX as well as basic 1.001 dpt.

Any idea!

regards
Udo