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

 找回密码
 立即注册
查看: 3471|回复: 24

[求助] 自制超声波水池液位(tasmota SR-04),超声波数值模板如何c...

[复制链接]

16

主题

239

帖子

2939

积分

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2700
HASS币
0
发表于 2021-12-24 11:16:57 | 显示全部楼层 |阅读模式
本帖最后由 wfx 于 2021-12-24 15:09 编辑

水池高度为200cm(超声波SR-04满量程),假如传感器SR-04测得当前的水位为30cm,实际水深为200cm-30cm=170cm。使用模板怎样把这个表达式写出来?
http://sidweb.nl/tasmota/release-10.1.0/

1

1


2

2




回复

使用道具 举报

16

主题

239

帖子

2939

积分

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2700
HASS币
0
 楼主| 发表于 2021-12-24 11:36:05 | 显示全部楼层
sensor:
  - platform: template
    sensors:
      pv_current_change:
        unit_of_measurement: cm
        device_class: current
        friendly_name: '水池水位'
        value_template: >
          {% set state = states('sensor.tasmota_sr04_distance') %}{{ (state | float / 100) | round(2)}}  这个表达式怎么转换加减数?
回复

使用道具 举报

0

主题

54

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
金钱
303
HASS币
0
发表于 2021-12-24 12:11:40 | 显示全部楼层
没太明白,你是想要 {{( 2-(state | float / 100) )| round(2)}}
回复

使用道具 举报

16

主题

239

帖子

2939

积分

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2700
HASS币
0
 楼主| 发表于 2021-12-24 12:16:01 | 显示全部楼层
pauillac21 发表于 2021-12-24 12:11
没太明白,你是想要 {{( 2-(state | float / 100) )| round(2)}}

{% set state = states('sensor.tasmota_sr04_distance') %}{{ (state | float / 100) | round(2)}}这个表达式我是复制别人的,我的水位传感器是sensor.tasmota_sr04_distance
回复

使用道具 举报

16

主题

239

帖子

2939

积分

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2700
HASS币
0
 楼主| 发表于 2021-12-24 12:21:01 | 显示全部楼层
{{( 200-(state('sensor.tasmota_sr04_distance') | float / 100) )| round(2)}} 这样也不对!
回复

使用道具 举报

0

主题

54

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
金钱
303
HASS币
0
发表于 2021-12-24 12:24:30 | 显示全部楼层
你直接用: {{ ( 2-(states('sensor.tasmota_sr04_distance')  | float / 100) )| round(2) }} ,前面那个2就是你水池深度2m,是这意思么?
回复

使用道具 举报

0

主题

54

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
金钱
303
HASS币
0
发表于 2021-12-24 12:26:14 | 显示全部楼层
wfx 发表于 2021-12-24 12:21
{{( 200-(state('sensor.tasmota_sr04_distance') | float / 100) )| round(2)}} 这样也不对!

你上面/100,我猜传感器是给的CM,转换成了m,你把/100去掉,或者前面200改成2,单位就是CM或者M
回复

使用道具 举报

16

主题

239

帖子

2939

积分

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2700
HASS币
0
 楼主| 发表于 2021-12-24 12:36:02 | 显示全部楼层
pauillac21 发表于 2021-12-24 12:24
你直接用: {{ ( 2-(states('sensor.tasmota_sr04_distance')  | float / 100) )| round(2) }} ,前面那个2 ...

表达式的内容我不懂,呵呵,我是乱写的。sensor.tasmota_sr04_distance这个是我的传感器实体,假如sensor.tasmota_sr04_distance=30cm,水池高度为200cm(sensor.tasmota_sr04_distance的满量程),实际水位怎么写?也就是200cm-30cm=170cm
回复

使用道具 举报

0

主题

54

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
金钱
303
HASS币
0
发表于 2021-12-24 12:43:15 | 显示全部楼层
{{ (200-(state('sensor.tasmota_sr04_distance') )| round(2)}}
这么写把,如果你的传感器给出的是厘米,这个应该给出实际水位厘米的结果,保留了2位小数。如果不想要小数,就把round(2)改成round(0)
回复

使用道具 举报

16

主题

239

帖子

2939

积分

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2700
HASS币
0
 楼主| 发表于 2021-12-24 12:47:40 | 显示全部楼层
C:\Users\Administrator\Desktop\100.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 21:17 , Processed in 0.144147 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表