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

Hi,

did somebody solve the issue?
Need the solution on OH4, now…

If you post information about what you tried and did and it did not work maybe someone will help.

I wanted exactly the same as described, but obviously I made a mistake on the KNX side.
When I changed the GA for reception, it worked…

Either use Number:Dimensionless or use a dimmer Channel/Item.