Astable switch and problems

Hello.
I am fighting with readout PowerSupply diagnostic data over KNX
I have power supply with following diagnostic : Current, Voltage, Bus load.
I want to avoid sneding it periodical to KNX bus, but I want to read all these parameters when button on sitemap is pressed.

  1. Is it possible to read it one by one from KNX bus ?

I found also one channel in my PowerSupply that triggers once to send all these 3 parameters to KNX bus.

I’ve made something like this :

Things :

Bridge knx:ip:bridge [  
    type="TUNNEL", 
    ipAddress="192.168.0.100", 
    portNumber=3671, 
    localIp="192.168.0.21",
    readingPause=50, 
    responseTimeout=10, 
    readRetriesLimit=3, 
    autoReconnectPeriod=60,
    localSourceAddr="0.0.0"
] {
    Thing device  PowerSupply "PowerSupply" [ address="1.1.1", fetch=true, pingInterval=30, readInterval=0 ]
    {
        Type number   : Voltage              "Voltage"           [ ga="9.020:0/0/1"   ]
        Type number   : Current              "Current"           [ ga="7.012:0/0/2"   ]
        Type number   : Traffic              "Traffic"           [ ga="5.001:0/0/3"   ]
        Type number   : Overtemp             "Overtemp"          [ ga="1.005:0/0/4"   ]
        Type switch   : DataRequest          "DataRequest"       [ ga="1.001:0/0/10" ]
    }
}

Items :

Number    GF_PRozdz_SupplyVolt   "Bus voltage [%d mV]"          <energy>        {channel="knx:device:bridge:PowerSupply:Voltage"}
Number    GF_PRozdz_SupplyCurr   "Bus current [%d mA]"          <energy>        {channel="knx:device:bridge:PowerSupply:Current"}
Number    GF_PRozdz_Traffic      "Traffic [%.2f %%]"            <pressure>      {channel="knx:device:bridge:PowerSupply:Traffic"}
Number    GF_PRozdz_Overtemp     "Overtemp [%d]"                <temperature>   {channel="knx:device:bridge:PowerSupply:Overtemp"}
Switch    GF_PRozdz_DataRequest  "Data request"                 <switch>        {channel="knx:device:bridge:PowerSupply:DataRequest", expire="2s, command=OFF"}

Sitemap :

sitemap shome label="MyHome" {

    Text label="Diagnostic" icon="pressure" {
        Default item=GF_PRozdz_SupplyVolt
        Default item=GF_PRozdz_SupplyCurr
        Default item=GF_PRozdz_Traffic
        Default item=GF_PRozdz_Overtemp            
        Switch  item=GF_PRozdz_DataRequest mappings=[ON="Update"] 
    }
}

After this my Switch looks very nice but he is also sending OFF command, what isn’t need.

  1. How to simply block sending OFF messages to the KNX bus, when switch is falling back?

I found something but is seems to be a tricky and if someone know something simpler then please share.

Modified Things with one button not placed on sitemap :

Switch    GF_PRozdz_DataRequest   "Data request"  <switch>   {/*channel="knx:device:bridge:PowerSupply:DataRequest",*/ expire="2s, command=OFF"}
Switch    GF_PRozdz_DataRequest_X "Data request"  <switch>   {channel="knx:device:bridge:PowerSupply:DataRequest"}

And rule :

rule PowerSupplyDiagnosticUpdate

when 
    Item GF_PRozdz_DataRequest changed from OFF to ON
then
    GF_PRozdz_DataRequest_X.sendCommand("ON")
end

I need to split it between two items GF_PRozdz_DataRequest : graphical item for sitemap not binded to KNX thing and GF_PRozdz_DataRequest_X binded to KNX thing and message source for this item is only rule PowerSupplyDiagnosticUpdate.

  1. Is it good solution ?

One way would be to not send an OFF command

Switch GF_PRozdz_DataRequest  "Data request"  <switch>  {channel="knx:device:bridge:PowerSupply:DataRequest", expire="2s, state=OFF"}

Thanks. Works perfectly.

One question left. The first one. But AFAIK it is not possible to send ReadRequest to KNX bus ( binding )

While openHAB in general supports the concept of issuing REFRESH commands to Items, what might happen is very technology dependent.

So far as I know, there is no concept of an “interrogatory” query going backwards up a sensor channel in KNX? You either configure your sensor to report periodically, or you send it a specific instruction that triggers a report, as you have implemented.