core: OpenWRT luci integration reporting "Method not found"

The problem

I added in my configuration.yaml the following section, according to the docs for the OpenWRT luci integration:

device_tracker:
  - platform: luci
    host: 192.168.1.1
    username: root
    password:

After restarting home assistant I get the following in the logs:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py", line 339, in async_device_tracker_scan
    found_devices = await scanner.async_scan_devices()
  File "/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py", line 806, in async_scan_devices
    return await self.hass.async_add_executor_job(self.scan_devices)
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/luci/device_tracker.py", line 63, in scan_devices
    self._update_info()
  File "/usr/src/homeassistant/homeassistant/components/luci/device_tracker.py", line 91, in _update_info
    result = self.router.get_all_connected_devices(only_reachable=True)
  File "/usr/local/lib/python3.8/site-packages/openwrt_luci_rpc/__init__.py", line 42, in get_all_connected_devices
    return self.router.get_all_connected_devices(
  File "/usr/local/lib/python3.8/site-packages/openwrt_luci_rpc/openwrt_luci_rpc.py", line 161, in get_all_connected_devices
    arp_result = self._call_json_rpc(*self.arp_call)
  File "/usr/local/lib/python3.8/site-packages/openwrt_luci_rpc/openwrt_luci_rpc.py", line 229, in _call_json_rpc
    raise LuciRpcMethodNotFoundError(
openwrt_luci_rpc.exceptions.LuciRpcMethodNotFoundError: ("method: '%s' returned an error '%s' (code: '%s).", 'net.arptable', 'Method not found.', -32601)

My OpenWRT router is a Turring Omnia, the luci-mod-rpc is installed at version git-21.062.76689-a607f9c-1 (the default from the official turris repository).

What is version of Home Assistant Core has the issue?

core-2021.5.4

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant Container

Integration causing the issue

OpenWRT luci

Link to integration documentation on our website

https://www.home-assistant.io/integrations/luci/

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Reactions: 3
  • Comments: 25 (1 by maintainers)

Most upvoted comments

Upstream merged the pull request to fix this issue, can you update the library in home assistant ? @mzdrale

Any news? Still waiting with my Turris router.

On Home Assistant Container 2022.5.5 and OpenWrt 22.03-rc2 with luci-mod-rpc version git-21.020.56896-af422b1, I don’t have that issue if it happens immediately on start so that issue might be one with Turris’ changes to OpenWrt instead of the integration I did check that known_devices.yaml was populated when track_new_devices is on

Since Turris uses lower version numbers than OpenWrt it defaults to the “legacy” method before OpenWrt 18 which causes the Method not found. To fix it, there needs to be a check on “OPENWRT_DEVICE_MANUFACTURER” for “OpenWrt” or “CZ.NIC” then use that to decide on which method to use based on version (3 and lower for legacy)

I have a Turris Omnia router and was hoping to use this integration, but I encountered the same problem:

Traceback (most recent call last): File “/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py”, line 353, in async_device_tracker_scan found_devices = await scanner.async_scan_devices() File “/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py”, line 827, in async_scan_devices return await self.hass.async_add_executor_job(self.scan_devices) File “/usr/local/lib/python3.9/concurrent/futures/thread.py”, line 58, in run result = self.fn(*self.args, **self.kwargs) File “/usr/src/homeassistant/homeassistant/components/luci/device_tracker.py”, line 67, in scan_devices self._update_info() File “/usr/src/homeassistant/homeassistant/components/luci/device_tracker.py”, line 95, in _update_info result = self.router.get_all_connected_devices(only_reachable=True) File “/usr/local/lib/python3.9/site-packages/openwrt_luci_rpc/init.py”, line 42, in get_all_connected_devices return self.router.get_all_connected_devices( File “/usr/local/lib/python3.9/site-packages/openwrt_luci_rpc/openwrt_luci_rpc.py”, line 161, in get_all_connected_devices arp_result = self._call_json_rpc(*self.arp_call) File “/usr/local/lib/python3.9/site-packages/openwrt_luci_rpc/openwrt_luci_rpc.py”, line 229, in _call_json_rpc raise LuciRpcMethodNotFoundError( openwrt_luci_rpc.exceptions.LuciRpcMethodNotFoundError: (“method: ‘%s’ returned an error ‘%s’ (code: '%s).”, ‘net.arptable’, ‘Method not found.’, -32601)

This is with a freshly installed luci-mod-rpc package, git-22.052.50988-1b6c126-1, and Home Assistant core 2022.3.7.