|
本帖最后由 roiff 于 2017-8-22 02:02 编辑
这只是一个建议....我们希望更舒服的使用插件
现在被HA的配置文件搞的很烦,浪费很多工作量,其实汉化和分组是有办法在插件预制的,今天闲来说说插件汉化问题。
首先说一下为什么发这个贴!我也尝试了自己去修改各位的插件,但是改了3分钟,决定放弃了,并决定发这个贴!
原因有几点:
第一、我看了几个天气插件,其实内部的资料查阅和排错还是有点工作量的,虽然天气网站有公开的API,在开发难度上不高,但是这么多sensor一一对应,也是需要一些时间的,至少一两天的完善是少不了的了。我首先是想尊重大家的劳动力的。
第二、作为我去修改,有时候的很多工作量是白费的,那么多变量和常量的对应,我首先要搞清楚这些变量和看懂,就要花不少时间,但是如果由你们自己修改的话,因为你们熟悉自己的代码,所以应该是水到渠成的。
第三、也想把更多的心得分享给大家。
再说说一下实现,HA能实现使用中文的字符串作为初始的friendly_name的,为什么很多人在配置文件写了中文名,配件就消失无法显示了呢?这是因为HA内部默认的把一定格式化的friendly name(小写)后,作为设备的entity id使用,中文字符串在这个过程出错了,就无法显示了。
其实HA有相关的函数,独立设置eneity id的,并且这时候的friendly name就可以正常写入了。
具体实现如下,在插件开头调用组件设备初始化的两个函数的其中一个(根据你的插件是否有异步需求,选择,这个我就不多说了)
from homeassistant.helpers.entity import generate_entity_id
from homeassistant.helpers.entity import async_generate_entity_id
在class插件的类初始化中,加入以下函数:
self.entity_id = generate_entity_id('sensor.{}', entity_id, hass=hass)
或者
self.entity_id = async_generate_entity_id('sensor.{}', entity_id, hass=hass)
就可以简单实现自定义的entity id 这时候name属性就会自动变成friendly_name的属性了,可以中文没问题
这两个函数还有其他一个参数,像知道具体的,可自行查阅
顺带说下,其实HA自带的设备属性,其实都可以预置的,包括icon之类的,还有是否在homebridge隐藏和HA界面隐藏
我希望插件能够是傻瓜化一点的,至少如果你写了插件,别人还要花好多时间去设置自定义的好多东西,还不如预置好了,反正再要改,在配置文件依旧会覆盖预置内容的。
下面是我截图的一个例子,是刚刚那三分钟改的和风天气的,因为要匹配变量太麻烦,就号召大家把自己的插件给汉化了,这个其实很节省其他人的工作量...
看得懂的人应该就秒懂了。
说明下,这个icon的属性我也没验证过,只是举了这么个例子,不过基于HA的设计,这样写应该没问题,如果有出入,应该也出入不大,如果各位想要确定方法的,可以留言,我会去看下的
PS:如何把HA本地化,汉化,我也一直有在研究,如果有好东西可能会放出来。
至于那个配置助手,最近还要完善的。
|
评分
-
查看全部评分
|