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

 找回密码
 立即注册
查看: 5314|回复: 3

[基础教程] [蓝牙定位]利用苹果Owntracks反向定位安卓

[复制链接]

13

主题

159

帖子

1098

积分

论坛技术达人

积分
1098
金钱
929
HASS币
70

教程狂人

发表于 2019-5-23 22:27:33 | 显示全部楼层 |阅读模式
本帖最后由 printusing163 于 2019-5-23 22:43 编辑

背景

由于Owntracks iOS端支持iBeacon协议,所以利用安卓机发送iBeacon信号,可以用旧苹果手机反向定位安卓机,不过目前的Owntracks插件并没有支持这个功能、没法定位多台安卓iBeacon,而且Owntracks插件被内嵌入到webhook中,很难写插件替代,所以就直接针对HA源码做补丁。

直接替换文件,
或者打补丁在home_assistant/components/owntracks/device_tracker.py最后面的async_handle_message函数改为以下代码,安卓机会被现实为devicetracker.beacon<android_id>

不知道大家有没有更好的方案,现在主要问题是没法重用HA中的校验机制。


def _custom_location_info(hass, context, message):
    regions = message.get('inregions', [])
    for region in regions:
        device = "beacon_{}".format(region)
        hass.async_create_task(context.async_see(
            dev_id=device,
            location_name=STATE_HOME,
            source_type=SOURCE_TYPE_BLUETOOTH_LE,
        ))

def _custom_transition(hass, context, message):
    device = "beacon_{}".format(message.get('desc', '').lower())
    event = message.get('event', '')
    event2loc = {
        'enter': STATE_HOME,
        'leave': 'not_home',
    }
    if event not in event2loc:
        return
    hass.async_create_task(context.async_see(
        dev_id=device,
        location_name=event2loc[event],
        source_type=SOURCE_TYPE_BLUETOOTH_LE,
    ))

def _custom_hook(hass, context, message):
    msgtype = message.get('_type')
    if msgtype == 'location':
        _custom_location_info(hass, context, message)
    elif msgtype == 'transition':
        _custom_transition(hass, context, message)
    else:
        return

async def async_handle_message(hass, context, message):
    """Handle an OwnTracks message."""
    msgtype = message.get('_type')

    _LOGGER.debug("Received %s", message)

    handler = HANDLERS.get(msgtype, async_handle_unsupported_msg)

    await handler(hass, context, message)

    _custom_hook(hass, context, message)


device_tracker.py

12.37 KB, 下载次数: 2

评分

参与人数 1金钱 +20 HASS币 +10 收起 理由
+ 20 + 10 厉害了word楼主!

查看全部评分

回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

发表于 2019-5-24 07:40:50 | 显示全部楼层
安卓机定位 好像耗电问题很严重
回复

使用道具 举报

13

主题

159

帖子

1098

积分

论坛技术达人

积分
1098
金钱
929
HASS币
70

教程狂人

 楼主| 发表于 2019-5-24 10:14:09 | 显示全部楼层
xieahui 发表于 2019-5-24 07:40
安卓机定位 好像耗电问题很严重

还好吧,我现在测iBeacon模拟和Tasker的定位方案耗电是最低的,反而Gpslogger耗电会有点厉害
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2019-5-26 09:04:36 | 显示全部楼层
这个 不能放在depts文件夹里吗???
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 00:09 , Processed in 0.174159 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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