本帖最后由 XCray 于 2021-5-10 10:54 编辑
看到有朋友顶出一个老帖子:《室内体感温度插件,可用于空调自动化》https://bbs.hassbian.com/thread-4940-1-1.html
原作者是以插件(custom_component)的方式实现的。
感谢原作者yinjiong,这个创意很好、也很实用。但其实现方式明显不是最优选项。
其实体感温度的计算只是用到了温度和湿度数值,计算也并不复杂,没必要动用程序代码,template就可以搞定——只需要在yaml里配置即可。
******新版本配置语法******
没注意自哪个版本开始,官方推荐的基于模板的实体配置语法发生了改变,按照新版要求修改如下:
template:
- sensor:
- name: apptempbt
device_class: temperature
unit_of_measurement: °C
state: >
{% set st = states('sensor.bttemp') | float %}
{% set sh = states('sensor.bthumi') | float %}
{{(st*1.07 + sh/500*6.105*e**(st*17.27/(st+237.7)) - 3)|round(1)}}
另,这个论坛的嵌入代码功能绝逼有bug,经常擅自把插入的代码修改的莫名其妙,为避免误导,再附个图片:
保存后也无需重启HA,在 ”配置、服务控制、配置重载“ 那儿点击 ”模板实体“ 即可。
******旧版本配置语法******
这么配置虽然能用,但说不定哪个版本开始就不行了,推荐采用新语法。
另,这个论坛的嵌入代码功能绝逼有bug,经常擅自把插入的代码修改的莫名其妙,下面的大家看个意思就行了
配置方法如下(放在sensor下面,把其中的btTemp和btHumi替换成自己的温湿度传感器):
<u><font color="#2f4f4f"> - platform: template
sensors:
apptemp:
device_class: temperature
unit_of_measurement: °C
value_template: "{{states('sensor.btTemp')|float*1.07 + states('sensor.btHumi')|float/500*6.105*e**(states('sensor.btTemp')|float*17.27/(states('sensor.btTemp')|float+237.7)) -3}}"</font></u>
如果不喜欢小数点后那么多没啥意义的数字,可以加个括号括起来然后 |round(2),这样:
<u><font color="#2f4f4f">"{{(states('sensor.btTemp')|float*1.07 + states('sensor.btHumi')|float/500*6.105*e**(states('sensor.btTemp')|float*17.27/(states('sensor.btTemp')|float+237.7)) -3)|round(2)}}"</font></u>
保存、重启即可。
计算方法来自度娘百科:
中央气象局御用的算法,应该也算权威了。
我把后面的“-0.65V-2.7”合并为 -3,即假设室内有一点点空气流动(风速约0.46米/秒)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一点感想:自以为很聪明、其实恰恰相反的言论真是无处不在啊!
看这个百科条目的讨论看到的:
|