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

标题: 请教如何修改时间单位和网速单位 [打印本页]

作者: xiaoma5015369    时间: 2022-10-25 22:36
标题: 请教如何修改时间单位和网速单位
本帖最后由 xiaoma5015369 于 2022-10-26 13:42 编辑

我添加了openwrt的插件,但是显示的时间是秒,怎么改成小时呢?还有网速单位是kb,怎么改成mb呢
从yaml里改,只是改了单位的名称,并无法更改单位,
请问怎么更改呢


谢谢一楼大佬已解决,下面把命令发出来,给新手使用
在configuration.yaml文件里添加

template:
  - sensor:
      - name: "OPEBWRT 接收"
        unit_of_measurement: "MB/s"
        state: "{{states('sensor.openwrt_router_kib_s_received')|float * 0.001 }}"
      - name: "OPENWRT 发送"
        unit_of_measurement: "MB/s"
        state: "{{ states('sensor.openwrt_router_kib_s_sent')|float * 0.001 }}"
      - name: "OPENWRT运行时间"
        unit_of_measurement: "小时"
        state: "{{ states('sensor.openwrt_router_uptime')|float/3600 }}"


原理就是新建一个实体,替换原来的实体,然后首页新建实体即可

作者: relliky    时间: 2022-10-25 23:15
>>显示的时间是秒,怎么改成小时呢?
自己写一个新的模板传感器除以3600加上新的单位就好了

https://bbs.hassbian.com/thread-18160-1-1.html



作者: xiaoma5015369    时间: 2022-10-26 13:39
relliky 发表于 2022-10-25 23:15
>>显示的时间是秒,怎么改成小时呢?
自己写一个新的模板传感器除以3600加上新的单位就好了

谢谢大佬,成功了,就是还有一个小问题,什么命令能控制显示的位数,现在显示到小数点后第8位了,我想显示到第三位
作者: relliky    时间: 2022-10-26 22:12
本帖最后由 relliky 于 2022-10-26 22:16 编辑

用round()

  state: "{{ states('sensor.openwrt_router_uptime')|float/3600| round(3) }}"
模板用的语言叫jinja2,有点难学,https://jinja.palletsprojects.com/en/3.1.x/

有问题在啃jinja2官方文档前尽量多搜索和看看HA文档的例子吧。
https://bbs.hassbian.com/thread-18160-1-1.html
https://www.home-assistant.io/integrations/template/



作者: cw4774    时间: 2023-7-11 23:45
relliky 发表于 2022-10-26 22:12
用round()

  state: "{{ states('sensor.openwrt_router_uptime')|float/3600| round(3) }}"

用了这个代码还是显示不到第三位
作者: relliky    时间: 2023-7-12 01:59
cw4774 发表于 2023-7-11 23:45
用了这个代码还是显示不到第三位

你第三位是0当然就不显示了啊,自己可以试试下面的代码

{{1.2345678 | round(3)}} 显示的是1.235
{{1.2301234 | round(3)}} 显示的是1.23


作者: cw4774    时间: 2023-8-24 16:28
relliky 发表于 2023-7-12 01:59
你第三位是0当然就不显示了啊,自己可以试试下面的代码

{{1.2345678 | round(3)}} 显示的是1.235

        state: "{{ states('sensor.mikrotik_router_uptime')|1.2301234 | round(3)}}"    换了代码   不显示了呢
大佬这个怎么换啊
作者: cw4774    时间: 2023-8-24 16:42
cw4774 发表于 2023-7-11 23:45
用了这个代码还是显示不到第三位

他还是显示这么多位  

作者: Xi11    时间: 2023-8-24 16:57
我先用nodered转换,再通过mqtt导入ha
作者: relliky    时间: 2023-8-24 17:18
cw4774 发表于 2023-8-24 16:28
state: "{{ states('sensor.mikrotik_router_uptime')|1.2301234 | round(3)}}"    换了代码    ...

你为啥有1.2301234 ,这个是我给的例子的一个实际数字。。
你应该用
state: "{{ states('sensor.mikrotik_router_uptime')| round(3)}}"
作者: cw4774    时间: 2023-8-24 23:35
本帖最后由 cw4774 于 2023-8-24 23:46 编辑
relliky 发表于 2023-8-24 17:18
你为啥有1.2301234 ,这个是我给的例子的一个实际数字。。
你应该用
state: "{{ states('sensor.mikrotik_ ...

显示
73.7877777777778   小数点后面显示那么多位数

作者: relliky    时间: 2023-8-24 23:49
cw4774 发表于 2023-8-24 23:35
显示73.7877777777778   小数点后面显示那么多位数

你应该自己在模板里面试试看再用在yaml里
自己试试吧,这是个很好的查错工具


[attach]50928[/attach]

作者: cw4774    时间: 2023-8-25 00:02
relliky 发表于 2023-8-24 23:49
你应该自己在模板里面试试看再用在yaml里
自己试试吧,这是个很好的查错工具

还是很多位数   大佬帮下我谢谢

作者: cw4774    时间: 2023-8-25 00:49
relliky 发表于 2023-8-24 17:18
你为啥有1.2301234 ,这个是我给的例子的一个实际数字。。
你应该用
state: "{{ states('sensor.mikrotik_ ...

这个还没有转换小时呢
作者: cw4774    时间: 2023-8-25 00:50
xiaoma5015369 发表于 2022-10-26 13:39
谢谢大佬,成功了,就是还有一个小问题,什么命令能控制显示的位数,现在显示到小数点后第8位了,我想显 ...

我和你一样   显示很多位数
作者: relliky    时间: 2023-8-25 01:47
本帖最后由 relliky 于 2023-8-25 01:51 编辑
cw4774 发表于 2023-8-25 00:49
这个还没有转换小时呢

https://stackoverflow.com/questi ... filter-not-rounding

语法遇到问题可以谷歌

这个round 优先级比较高,所以它round到3600上去了。

所以你要用括号把它包起来

{{ (states('sensor.openwrt_router_uptime')|float/3600) | round(3) }}

不好意思,我没有测试过我之前给的答案

作者: involute    时间: 2023-8-25 02:40
relliky 发表于 2023-8-25 01:47
https://stackoverflow.com/questi ... filter-not-rounding

语法遇到问题可以谷歌

你可真有耐心
作者: relliky    时间: 2023-8-25 04:37
involute 发表于 2023-8-25 02:40
你可真有耐心

哈哈,今天比较闲,希望能授人以渔吧
作者: cw4774    时间: 2023-8-25 04:51
relliky 发表于 2023-8-25 04:37
哈哈,今天比较闲,希望能授人以渔吧

先谢谢你    复制了那个代码     还是不行   算了不搞了   




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