XCray 发表于 2020-8-2 11:01:30

简单方便的体感温度传感器,不用定制组件、不用代码

本帖最后由 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米/秒)。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一点感想:自以为很聪明、其实恰恰相反的言论真是无处不在啊!
看这个百科条目的讨论看到的:




dscao 发表于 2020-8-2 12:05:38

本帖最后由 dscao 于 2020-8-2 12:44 编辑

这个好,加入代码简单。 刚试了一下,就是重启ha后,米家蓝牙温度计2的上报要等很久才上报,一开始没有值,这个结果为 -3度,等了好久温度计上报后,这里还是没更新。
------------------------------------

发现我把温度传感器填写错了 ,改正后正常刷新了。

XCray 发表于 2020-8-2 14:22:21

dscao 发表于 2020-8-2 12:05
这个好,加入代码简单。 刚试了一下,就是重启ha后,米家蓝牙温度计2的上报要等很久才上报,一开始没有值, ...

:lol

我还在奇怪为啥我用的好好的、到你那儿就不更新了呢?想了很大一会儿,幸好你又编辑帖子把原因找到了,不然我想破脑袋也想不出为啥~

chzyh 发表于 2020-8-2 16:08:02

34.1度91% 湿度   显示43.18 体感温度,这个度数差不多么 ,楼主

XCray 发表于 2020-8-2 16:13:40

chzyh 发表于 2020-8-2 16:08
34.1度91% 湿度   显示43.18 体感温度,这个度数差不多么 ,楼主

数值计算没问题。

至于说这个结果准不准(计算方法准不准),其实是没有标准答案的,体感温度,说的就是感觉。大概参考就是了。

jyz_0501 发表于 2020-8-2 21:02:58

43度的体感温度还不把人热死了!!这得休克了

XCray 发表于 2020-8-3 07:51:20

jyz_0501 发表于 2020-8-2 21:02
43度的体感温度还不把人热死了!!这得休克了

不管算出来的体感温度是多少,气温34.1、湿度91%的环境对绝大多数正常人来说,绝对称得上酷热难耐,在这样的环境待的时间长点儿,中暑、休克都不算意外。

对了,根据NOAA的计算,体感温度是60——更恐怖?

其实不同的模型不同的算法,计算结果差异都是正常现象,感觉的东西,说不上准确两个字。在同一个模型/算法基础上,纵向比较才有意义。

jyz_0501 发表于 2020-8-3 21:48:44

XCray 发表于 2020-8-3 07:51
不管算出来的体感温度是多少,气温34.1、湿度91%的环境对绝大多数正常人来说,绝对称得上酷热难耐,在这 ...

也是哈32度都热到不行

qilihai 发表于 2020-8-6 21:21:50

这个不错,最近正好寻找计算公式

wangshizf 发表于 2020-8-16 21:16:34

感谢楼主。不过为什么加了|round(2) 之后,小数点后还是有很多位?
页: [1] 2 3 4
查看完整版本: 简单方便的体感温度传感器,不用定制组件、不用代码