『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 14680|回复: 23

[技术探讨] 求助关于LEDE X64的ubus的device tracker,希望大神修改下代码

[复制链接]

65

主题

776

帖子

4436

积分

论坛元老

Rank: 8Rank: 8

积分
4436
金钱
3655
HASS币
20
发表于 2018-4-9 13:22:29 | 显示全部楼层 |阅读模式
按照教程一步步的安装完以后,状态里面一直提示这条 (在报错信息里面找不到这个信息),而在known device中也找不到任何信息,于是添加了手动日志,查到了以下信息:
Apr 08 10:40:45 ubuntu hass[31125]: INFO:homeassistant.components.device_tracker.ubus:Checking hostapd
Apr 08 10:40:55 ubuntu hass[31125]: INFO:homeassistant.components.device_tracker.ubus:Checking hostapd
Apr 08 10:41:05 ubuntu hass[31125]: INFO:homeassistant.components.device_tracker.ubus:Checking hostapd
Apr 08 10:41:15 ubuntu hass[31125]: INFO:homeassistant.components.device_tracker.ubus:Checking hostapd

查下源代码,感觉是这段有问题
因为LEDE X64 是没有无线的,会不会时段的原因,但是直接删掉,就报错了


class UbusDeviceScanner(DeviceScanner):
    """
    This class queries a wireless router running OpenWrt firmware.
    Adapted from Tomato scanner.
    """

    def __init__(self, config):
        """Initialize the scanner."""
        host = config[CONF_HOST]
        self.username = config[CONF_USERNAME]
        self.password = config[CONF_PASSWORD]

        self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);")
        self.last_results = {}
        self.url = 'http://{}/ubus'.format(host)

        self.session_id = _get_session_id(self.url, self.username,
                                          self.password)
        self.hostapd = []
        self.mac2name = None
        self.success_init = self.session_id is not None

    def scan_devices(self):
        """Scan for new devices and return a list with found device IDs."""
        self._update_info()
        return self.last_results

    def _generate_mac2name(self):
        """Must be implemented depending on the software."""
        raise NotImplementedError

    @_refresh_on_acccess_denied
    def get_device_name(self, mac):
        """Return the name of the given device or None if we don't know."""
        if self.mac2name is None:
            self._generate_mac2name()
        name = self.mac2name.get(mac.upper(), None)
        self.mac2name = None
        return name

    @_refresh_on_acccess_denied
    def _update_info(self):
        """Ensure the information from the router is up to date.
        Returns boolean if scanning successful.
        """
        if not self.success_init:
            return False

        _LOGGER.info("Checking hostapd")

        if not self.hostapd:
            hostapd = _req_json_rpc(
                self.url, self.session_id, 'list', 'hostapd.*', '')
            self.hostapd.extend(hostapd.keys())

        self.last_results = []
        results = 0
        for hostapd in self.hostapd:
            result = _req_json_rpc(
                self.url, self.session_id, 'call', hostapd, 'get_clients')

            if result:
                results = results + 1
                self.last_results.extend(result['clients'].keys())

        return bool(results)


class DnsmasqUbusDeviceScanner(UbusDeviceScanner):
    """Implement the Ubus device scanning for the dnsmasq DHCP server."""

    def __init__(self, config):
        """Initialize the scanner."""
        super(DnsmasqUbusDeviceScanner, self).__init__(config)
        self.leasefile = None

    def _generate_mac2name(self):
        if self.leasefile is None:
            result = _req_json_rpc(
                self.url, self.session_id, 'call', 'uci', 'get',
                config="dhcp", type="dnsmasq")
            if result:
                values = result["values"].values()
                self.leasefile = next(iter(values))["leasefile"]
            else:
                return

        result = _req_json_rpc(
            self.url, self.session_id, 'call', 'file', 'read',
            path=self.leasefile)
        if result:
            self.mac2name = dict()
            for line in result["data"].splitlines():
                hosts = line.split(" ")
                self.mac2name[hosts[1].upper()] = hosts[3]
        else:
            # Error, handled in the _req_json_rpc
            return


回复

使用道具 举报

6

主题

386

帖子

2045

积分

金牌会员

Rank: 6Rank: 6

积分
2045
金钱
1657
HASS币
0
发表于 2018-4-17 02:40:27 | 显示全部楼层
跟楼主同样的问题。。没法解决。。luci又很不准确。。也是蛋疼
回复

使用道具 举报

65

主题

776

帖子

4436

积分

论坛元老

Rank: 8Rank: 8

积分
4436
金钱
3655
HASS币
20
 楼主| 发表于 2018-4-17 07:55:42 | 显示全部楼层
apple4105 发表于 2018-4-17 02:40
跟楼主同样的问题。。没法解决。。luci又很不准确。。也是蛋疼

我用了两级路由搞定了。。就是麻烦点,端口啥的都要做两次,用了爱快的snmp
我发现lede的snmp也是非常的不准
回复

使用道具 举报

6

主题

386

帖子

2045

积分

金牌会员

Rank: 6Rank: 6

积分
2045
金钱
1657
HASS币
0
发表于 2018-4-17 10:27:11 | 显示全部楼层
guitengyue 发表于 2018-4-17 07:55
我用了两级路由搞定了。。就是麻烦点,端口啥的都要做两次,用了爱快的snmp
我发现lede的snmp也是非常的 ...

实在是不太想搞两级路由,如你所说,端口都要做两次。晚上再试试刷别的固件。
回复

使用道具 举报

65

主题

776

帖子

4436

积分

论坛元老

Rank: 8Rank: 8

积分
4436
金钱
3655
HASS币
20
 楼主| 发表于 2018-4-17 12:21:11 | 显示全部楼层
apple4105 发表于 2018-4-17 10:27
实在是不太想搞两级路由,如你所说,端口都要做两次。晚上再试试刷别的固件。 ...

我发现ikuai的snmp和lede也是一样的不准
回复

使用道具 举报

65

主题

776

帖子

4436

积分

论坛元老

Rank: 8Rank: 8

积分
4436
金钱
3655
HASS币
20
 楼主| 发表于 2018-4-17 12:26:47 | 显示全部楼层
apple4105 发表于 2018-4-17 02:40
跟楼主同样的问题。。没法解决。。luci又很不准确。。也是蛋疼

你的ubus的情况和我也是一样的吗??我用的是koolshare的lede x64
回复

使用道具 举报

15

主题

192

帖子

2057

积分

论坛技术达人

积分
2057
金钱
1845
HASS币
0

卓越贡献

发表于 2018-4-17 12:47:50 | 显示全部楼层
guitengyue 发表于 2018-4-17 12:21
我发现ikuai的snmp和lede也是一样的不准

我用ikuai的 snmp,非常准确的
回复

使用道具 举报

65

主题

776

帖子

4436

积分

论坛元老

Rank: 8Rank: 8

积分
4436
金钱
3655
HASS币
20
 楼主| 发表于 2018-4-17 12:50:22 | 显示全部楼层
syjjx 发表于 2018-4-17 12:47
我用ikuai的 snmp,非常准确的

奇怪,我昨天晚上刚弄好ikuai,挂在LEDE下面做了2级路由,然后发现今天早上我妈出门,他的手机仍是在线;然后我自己手机昨天测试wifi开断,倒是准的;就和我之前用LEDE直接用snmp一模一样,有时候出门就不准了
回复

使用道具 举报

65

主题

776

帖子

4436

积分

论坛元老

Rank: 8Rank: 8

积分
4436
金钱
3655
HASS币
20
 楼主| 发表于 2018-4-17 13:01:01 | 显示全部楼层
syjjx 发表于 2018-4-17 12:47
我用ikuai的 snmp,非常准确的

我看了下ikuai的终端里面已经没有了这个设备,但是在ha里面仍显示home
回复

使用道具 举报

6

主题

386

帖子

2045

积分

金牌会员

Rank: 6Rank: 6

积分
2045
金钱
1657
HASS币
0
发表于 2018-4-17 13:46:49 | 显示全部楼层
guitengyue 发表于 2018-4-17 12:26
你的ubus的情况和我也是一样的吗??我用的是koolshare的lede x64

我是斐讯k2,刷的潘多拉。刚重新刷了个版本,ubus依然不行,但是luci可以,而且测试基本可用了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-9-24 17:18 , Processed in 0.099608 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表