Network Binding showing computer ":online" when computer is sleeping. Only goes offline when computer is off

I am trying to detect the status of my computer (sleeping/not sleeping) using the network binding. It had worked before, but for some reason (I think after updating openhab) the computer is always showing online.

It is funny because I can run arping on the openhab server “arping 192.168.1.90” and I see it responding when the computer is asleep. If I do a normal ping it does not.

I have tried many different configurations including setting “binding.network:allowSystemPings=true/false” in my /etc/openhab2/system/network.cfg file.

/etc/openhab2/system/network.cfg
binding.network:allowSystemPings=false
binding.network:allowDHCPlisten=false
binding.network:arpPingToolPath=arping
binding.network:cacheDeviceStateTimeInMS=2000

…/things/things.things
Thing network:pingdevice:halvr2106pingthing “Ping Thing HalVR2016” [ hostname=“192.168.1.90” ]

…/items/computer.items
Switch halvr_status “HalVR Ping Status” { channel=“network:pingdevice:halvr2106pingthing:online” }

It sounds like you have your Network binding configured to use arping then. The point of arping is it can detect devices that are just asleep on the network (e.g. iPhones). For your use case though, you probably need to disable it. Probably the most expedient way to do that would be to set the arPingToolPath to /dev/null or some path that doesn’t exist. The binding will complain when OH first starts but without arping being available it won’t use it to detect your devices, only ping.

At least that is how I read the docs.

1 Like

An alternate approach might be found in the target computer’s BIOS, there may be options to power off the LAN port when sleeping. Assuming you don’t want to use wake-on-lan.

2 Likes

Thank you for the suggestions. I do in fact wake my PC from sleep using openhab.
As suggested I attempted the following in my network.cfg file:

binding.network:allowSystemPings=true
binding.network:allowDHCPlisten=false
binding.network:arpPingToolPath=/dev/null
binding.network:cacheDeviceStateTimeInMS=2000

This worked! It is too bad that this is not configurable per device as I might have issues now with phone devices if I add those in the future.