I am having some trouble getting my presence detection ( item Online) working an it is sometimes hit or miss detecting Computers and phones. Not sure if this has to do with APPING or not, and not sure if I have this set up correctly.
In my Logs I am getting this warning …
2022-06-15 15:09:02.796 [WARN ] [rg.openhab.core.io.net.exec.ExecUtil] - Timeout occurred when executing commandLine '[H:\openHAB\userdata\etc\arp-ping.exe, --help]'
2022-06-15 15:09:03.322 [WARN ] [rg.openhab.core.io.net.exec.ExecUtil] - Failed to execute commandLine '[arping, --help]'
Once restart the OpenHAB Service, the detection will work for a little, then it’ll stop detecting certain things.
H:\openHAB\userdata\etc\arp-ping.exe is the file location of the executable that I downloaded and here are my settings.
Any ideas why this would be not reliably working?
What is the output of the exe if you run the command with the switch --help ?
In the source code one can see that the binding runs the exe with option --help to distinguish between different implementation of the arping tool:
/**
* Return true if the external arp ping utility (arping) is available and executable on the given path.
*/
public ArpPingUtilEnum determineNativeARPpingMethod(String arpToolPath) {
String result = ExecUtil.executeCommandLineAndWaitResponse(Duration.ofMillis(100), arpToolPath, "--help");
if (result == null || result.isBlank()) {
return ArpPingUtilEnum.DISABLED_UNKNOWN_TOOL;
} else if (result.contains("Thomas Habets")) {
if (result.matches("(?s)(.*)w sec Specify a timeout(.*)")) {
return ArpPingUtilEnum.THOMAS_HABERT_ARPING;
} else {
return ArpPingUtilEnum.THOMAS_HABERT_ARPING_WITHOUT_TIMEOUT;
}
} else if (result.contains("-w timeout") || result.contains("-w <timeout>")) {
return ArpPingUtilEnum.IPUTILS_ARPING;
} else if (result.contains("Usage: arp-ping.exe")) {
return ArpPingUtilEnum.ELI_FULKERSON_ARP_PING_FOR_WINDOWS;
}
return ArpPingUtilEnum.DISABLED_UNKNOWN_TOOL;
}
In case you get a timeout warning it looks like the execution takes langer than 100ms.
If that just happens from time to time I would assume that load of your host is higher so thatit takes longer to execute the task.