al-one / hass-xiaomi-miot

Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成
https://miot-spec.com
Apache License 2.0
4.42k stars 618 forks source link

device_tracker.see的服务不可用 #367

Open qiuyuxuan1999 opened 2 years ago

qiuyuxuan1999 commented 2 years ago

先感谢大佬插件,对于某些定位设备,有设备追踪实体,但HA自带的人工更新位置信息的device_tracker.see的service对于咱们的设备追踪实体是不可用的,日志如下。其他的device_tracker实体可以用这个服务。 不知道这个功能可否实现,因为咱们插件接入的device_tracker实体才用的是火星坐标系,需要自己修正纠偏,纠偏后希望通过device_tracker.see讲数据重新写入实体。 当然目前可以用device_tracker.see创建一个新实体来达到目的,但毕竟多了一个没用的不准确的实体在HA里,在地图里还隐藏不掉……

Logger: homeassistant.components.device_tracker Source: components/device_tracker/legacy.py:523 Integration: 设备跟踪器 (documentation, issues) First occurred: 19:22:55 (23 occurrences) Last logged: 20:40:51

The see service is not supported for this entity device_tracker.xiaoxun_sw768_c442_watch

al-one commented 2 years ago

我之前没注意过device_tracker.see这个服务,刚了解了一下,HA开发者文档中已经没有为device_tracker实体提及该服务。且该服务仅存在于HA源码的homeassistant/components/device_tracker/legacy.py文件中,该文件像是一个旧版的device_tracker基类。本插件的device_tracker实体继承homeassistant.components.device_tracker.config_entry.TrackerEntity,这也是开发者文档中所指示的基类。 如果只是为了GPS纠偏,我更倾向于在插件代码中实现,如果你有任何想法,欢迎提交PR来改善插件。

qiuyuxuan1999 commented 2 years ago

我之前没注意过device_tracker.see这个服务,刚了解了一下,HA开发者文档中已经没有为device_tracker实体提及该服务。且该服务仅存在于HA源码的homeassistant/components/device_tracker/legacy.py文件中,该文件像是一个旧版的device_tracker基类。本插件的device_tracker实体继承homeassistant.components.device_tracker.config_entry.TrackerEntity,这也是开发者文档中所指示的基类。 如果只是为了GPS纠偏,我更倾向于在插件代码中实现,如果你有任何想法,欢迎提交PR来改善插件。

感谢大佬,我以为HA给开发者的功能里会有这个只是咱们插件没做呢,既然没有就没办法了。 另外插件代码中进行纠偏肯定最好,小米定位设备的用户都是国内的,小米给的肯定都是用火星坐标系,如果想接入ha肯定都要坐标转换。奈何我是小白一个,代码一丁点都不懂,目前我做的转换是用NR做的,并且没有公式转换,仅仅是做的简单的加减法,网上好像有转换的代码模块,我没尝试,简单加减法在范围不大的情况下满足要求了。所以PR我是没能力提交了,只能留给后面的大神吧。

qiuyuxuan1999 commented 2 years ago

对了,既然说到插件代码了,大神能否受累把修改插件代码实现坐标简单加减法的样例写一个出来,我直接修改插件源代码得了,本人代码小白。 不过这个方法只能根据每个人的偏移量不同自己修改要加减的值,并且每次升级都要重新修改一次。

al-one commented 1 year ago

时隔一年多,本插件终于支持device_tracker是的坐标转换了,请升级至master分支体验。 插件默认会把小寻儿童手表的坐标从火星坐标系(GCJ02)转换为WGS84,当然你有也可以通过自定义选项配置其他设备的原始坐标系,目前支持以下两种坐标系转为WGS84

xiaomi miot device tracker

感谢:

uncle-wong commented 1 year ago

太棒了,大佬辛苦。上面hassbian那个帖子是我的,嘿嘿嘿

wolfit50 commented 1 year ago

能否改为不使用current_address作为state,让HA去判断home/not home以及自定义zone

al-one commented 1 year ago
disable_location_name bool true device_tracker   禁止显示具体地址

@wolfit50 可以通过这个自定义选项禁止使用current_address作为实体状态。