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

标题: 如何获取数据平均值(Moving average)(解决) [打印本页]

作者: xybu    时间: 2023-3-21 10:04
标题: 如何获取数据平均值(Moving average)(解决)
本帖最后由 xybu 于 2023-3-21 14:35 编辑

原因:数据为风向角度,约5分钟更新一次,变化较大,想获取一个平均值。刚好apexcharts-card有这个功能,我设置为40分钟的平均值,如下图及代码。
请教:如何获取到这个平均数(152.4°),我要用于控制家中设备

解决方法在三楼

[attach]46532[/attach]

  1. type: custom:apexcharts-card
  2. locale: zh-cn
  3. apex_config:
  4.   chart:
  5.     height: 300px
  6. graph_span: 12h
  7. header:
  8.   show: false
  9.   title: 风向
  10.   show_states: true
  11.   colorize_states: true
  12. series:
  13.   - entity: sensor.guan_zhou
  14.     name: 官洲
  15.     stroke_width: 2
  16.     group_by:
  17.       duration: 40min
  18.       func: avg
  19.     show:
  20.       in_chart: true
  21.       extremas: true
  22.   - entity: sensor.guan_zhou
  23.     name: 官洲1
  24.     stroke_width: 2
  25.     show:
  26.       in_chart: true
  27.       extremas: true
复制代码






作者: dscao    时间: 2023-3-21 12:45
风向角度用平均值应该不太好吧?
比如北风,在350度至10度之间摆动,平均一下变成180度了,还以为是南风了。哈哈,不知我这理解的对不对呀。
作者: xybu    时间: 2023-3-21 13:53
本帖最后由 xybu 于 2023-3-21 14:33 编辑

当然不会只取在最新的两个数据的平均数,如上面设置是40分钟内数据会一起影响,应该是最新数据影响更大吧,我查到一种函数“Moving average”,但是不会用啊!
如果能用Node-red解决也可以!
找到一个官方的: 统计 - 家庭助理 (home-assistant.io)

搞定,代码如下:
  1.   - platform: statistics
  2.     name: "guan_zhou_wind"
  3.     entity_id: sensor.guan_zhou
  4.     unique_id: guan_zhou_wind
  5.     state_characteristic: average_linear
  6.     max_age:
  7.       minutes: 40
复制代码








欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5