Network Binding 2.4

  • Platform information:
    • Hardware:
    • OS: Ubuntu 16.04
    • Java Runtime Environment: Zulu 8.33.0.1-linux64
    • openHAB version: 2.4
  • Issue of the topic: Network Binding

Quick history. Exploring home automation for a home remodel next year. Installed 2.3 and walked through tutorials. Started with Network Binding, and it discovered everything on my network. Had issues with Nest binding (set point), so moved to 2.4 snapshot. 2.4 stable released and I switched to that. Lots of success and learning about Groups, HABPanel, etc. Everything great and enjoying the exploration. As my config is still just testing with a couple wall wort plugs, a Z-Stick, Nest, Harmony Hub, and LG TV, I decided to purge everything and start again. After reinstalling, all is still working except Network Binding doesn’t find anything. In fact, at install it seems to hang (as well as uninstall) with just round circle spinning in Add-Ons>Binding. I was just beginning to play with iPhone presence and rules when I found this problem. Anyone else having this problem?

I noticed as well for 2.5 snapshot!

allowSystemPings = true, allowDHCPListen = true ?
Are you using arping with a proper path (/usr/sbin/arping usually, but YMMV) ?

Where do you put such settings in? the networking binding under paper ui?
What would be the arping path for openhabianpi?

In Paper UI you find this in the “binding” section. A binding itself can have configurations (not only the exposed Things). The network binding seem to be broken for many in the default configuration since the last patch round early December. I need to investigate there soon when I find time.

arping does not come with openhabian, it needs to be installed on your UNIX and you should use its pathname.

Yes to both

install arping. changed the path as well. Still does find any network devices

I’m running OH 2.4 stable and use the network binding for iPhone detection. This is what I have in my network.cfg file.

binding.network:allowSystemPings=true
binding.network:allowDHCPlisten=false
binding.network:arpPingToolPath=arping
binding,network:cacheDeviceStateTimeInMS=2000
uses_arp_pings=yes

I am an absolute Newbie - having only having installed OpenHab yesterday - v2.4.0 on a Raspbery Pi 3 using the Openhabian image. Much joy with the bindings I’ve tried except for Network.

Reading the forums I realise there are possible problems with 2.4. I don’t know if my observations on a clean install from the openhabian image will help debug the problem.

I have added ‘log:set DEBUG org.openhab.binding.network’ via the Karaf console. Here’s what I am seeing:

arping is present and correct on the system, it is callable from the linux shell and also if I manually add a network entry from the paperui the entry is added correctly.

On PaperUI/Configuration/Bindings I have Network Binding installed but there is permanently an edit ‘pencil’ icon on the RHS of the entry.

If I save or change the network binding configuration entry via paperui then I get a notification in the log

2018-12-30 13:31:43.736 [DEBUG] [org.openhab.binding.network ] - ServiceEvent MODIFIED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={cacheDeviceStateTimeInMS=2000, service.id=122, allowSystemPings=true, service.bundleid=198, service.scope=bundle, allowDHCPlisten=true, arpPingToolPath=arping, service.pid=binding.network, component.name=org.openhab.binding.network.internal.NetworkHandlerFactory, component.id=12} - org.openhab.binding.network

I have no network files (neither network.config nor network.cfg) in /var/lib/openhab2/config/org/openhab but have the following network.config in /var/org/openhab2/config/org/eclipse/smarthome

primaryAddress=“192.168.1.66/24”
service.pid=“org.eclipse.smarthome.network”
useIPv6=B"true"
useOnlyOneAddress=B"false"

The modify date on that file is last boot time.

Checking recently modified files I find /var/lib/openhab2/config/binding/network.binding is the file being updated when I save the binding configuration, it has values:

allowDHCPlisten=B"true"
allowSystemPings=B"true"
arpPingToolPath=“arping”
cacheDeviceStateTimeInMS=“2000”
service.pid=“binding.network”

When I do a scan from inbox using network binding I see no log entries.

I can see no file ‘network.cfg’ anywhere under /var subdirs

Hope this helps.

You can always just add a manual network ping thing and enter the IP.
The automatic discovery does not work with OH 2.4 right now according to many reports.

Thanks David, manual works fine. Was aware of the problem with automatic discovery. Just wondered if my clean newbie setup might help with diagnostics (no cruft or user mods to obscure the problem)

HI @David_Graeff, I got a question about Network Binding

Is there any option on each thing which is iOS Detect way or not? as I found no matter what I set, property always report Yes to uses_ios_wakeup = Yes,
also, can I choice arping only on iOS thing and other network device can chooice system ping?

What is arp_state? Does presence_detection_type should come with any info as I never see any info on this line.

Last, there is a issue on Networking Binding, as my RPI have Eth0 plus 2 vLan, I found arping will ping same ip to all (3) network interface at same time, will it able to allow user manually set default network interface on thing property?

arp_state Disabled
dhcp_state off
icmp_state IPUTILS_LINUX_PING
presence_detection_type
uses_ios_wakeup |Yes|

Can’t answer all your questions about the binding but you can change settings in the Things configuration as most need to tweak the retry, timeout, etc…

Example:

Thing network:pingdevice:SiPhone [ hostname="10.0.1.29", uses_ios_wakeup=1, uses_arp_pings=1, retry=30, timeout=15000, refreshInterval=60000 ]

Thanks for your response, I tried,
uses_ios_wakeup=0, uses_arp_pings=0
and it doesn’t make any changes, I also tried
uses_ios_wakeup=false, uses_arp_pings=false
before earlier post.

In the network.cfg file what happens if you change settings there?

Example

binding.network:allowSystemPings=false
binding.network:allowDHCPlisten=false
binding.network:arpPingToolPath=arping
binding,network:cacheDeviceStateTimeInMS=2000
uses_arp_pings=no

yes, I do, but as I said, I got iPhone devices, and I got other network devices to detect as well, like PC or router, so arping would only be usage on iOS devices and I think system ping to other network devices is more reliable.

The network binding works as best as it can without configuration. You shouldn’t actually configure anything, that will probably render the binding unusable.

The binding tries all concepts it knows about and which are installed on the system. The iOS wakeup is just a UDP packet. A ping is an icmp ping, arp ping is an ethernet IPv4 arp ping.

Ideally you also use the dhcp packet detection as explained in the readme.

Please note that most modern devices make it hard to reliably detect them because of security concerns and battery conservation.

Hi David, Thanks for your response, I like your concept, what I try to say before is, in the binding, It offer options in binding setting for phone detection, but it don’t have to be one option for all, it’s not handy, as I found when I use arping to normal network device eg, PC, Server, it will packet loss sometimes but it’s not happening on normal ping,
iOS as well, it only necessary for iOS devices, as 1 thing already got 6 items can be config, will u consider add few more option let user choice best option for each device?

anyway, will further be able let user set network interface for each thing?

Best and Regards
Ham

No that is NOT an option. That is a status report. It tells you which detection mechanisms are available. Disabling those options is not documented.

Is there a reason why you want to disable a detection mechanism?

Network binding will use BOTH at the same time. One positive return renders the device online.

That can be added of course. I don’t have time for that though. It’s a very niche requirement, most people only have one network interface.

Cheers, David