老早就有想法以后买房家里搞装修的时候能不能把自来水的用量信息也接入hass平台。搜索了一遍论坛的,发现也有大佬在弄这个东西。https://bbs.hassbian.com/thread-7316-1-1.html,我也是先看看这个帖子的教程才有初步的了解然后先入手了霍尔水流传感器先行试验的。
跟着大佬的教程一步一步的操作最终也是达到了一个效果。
我买的这个是6分的带温度传感器的一个版本,所以有4根线。比普通版的多一个温度检测,价钱嘛也是贵一点,我在某宝买的,当时记得是花了35元钱。因为尺寸比4分的大,然后有温度传感器,所以要贵这么多。
当初是考虑到这个霍尔水流传感器加在主水管上,多多少少都会影响水压,所以索性买大一点的,通过活接头来连接主水管。拿到实物发现也是没错,虽然是6分,但是进水口确实有点小,如果是4分的话岂不是更小了。
商品的详细图有介绍这个具体的数据。有几个关键的数据确实是要用到,接线定义,传感器规格,霍尔传感器特性等。这些都用的到。
实物到手就长这样,水流有标注方向。
然后就是借助关键字搜索来学习如何接入这个设备了。
通过nodeMCU2开发板搭接线路测试。
根据参数定义,红黑是电源输入,参数介绍是dc输入电压不低于4.5v,不超过20v,所以在这里就直接取5v的电压了,黄线是霍尔输出脉冲信号线,绿线是温度传感器线,跟黑线GND共用。
基本的教程也是通过esphome里学来的。
这里跟其他的贴子介绍的不一样的就是多一个温度传感器,用的是ntc热敏电阻,所以代码只能靠自己学习摸索怎么接入了。https://www.esphome.io/components/sensor/ntc.html?highlight=ntc。这个官方教程写的比较全面,ntc热敏电阻通过esp8266测量温度的原理很简单,就是一个欧姆定律。这个还是初中的物理公式了,nodemcu有一个ADC引脚,可以测量电压,就是这个引脚电压碰到一个很大的坑,因为esp12f芯片ADC的电压范围是0-1v,问题是根据分压电路计算输出的电压都基本超过2v多了。所以一直都是温度显示不对,研究了好一阵,一直以为是电阻阻值有问题,借助万用表测量也数值没错,就是esphome读取到的有问题,看到log运行日志才发现,adc输入电压被等比例缩小了。白忙活了好久。总是以为电路搭建有问题。
在此通过这个接入ntc温度传感器学到了很多知识。认识到了一个分压电路的基础用法。
好在esphome官方教程写的很详细,在此我这个英语学渣都是借助浏览器机器翻译来了解这些知识的,机翻的缺点就是有些翻译的名称有些莫名其妙。好在有跳转链接可以进一步了解知识。
我是用的10k参考电阻,通过分压电路可以知道,因为电流要通过参考电阻和ntc电阻,所以官方教程的后半段也是重点介绍了如何处理这个电阻长期通电自热的问题。这点很奇妙。通过一个gpio引脚通断就能很好的解决这个问题。
在此我把我的yaml配置写法贴出来供大家学习,也就是有网上这么多无私奉献的人让我们这些喜欢折腾的人学到了很多。
注:参数配置有些许写法或设置不对的请多多指正。
sensor:
- platform: pulse_counter
pin: D1
name: "shui_liu_su_du"
id: water
unit_of_measurement: 'L/Min'
update_interval: 5s #上报时间间隔
filters:
- multiply: 0.00303030303030303 #一升水330个脉冲1/330=0.00303030303030303
- platform: total_daily_energy
name: "今日用水量"
power_id: water
unit_of_measurement: 'm³'
filters:
- multiply: 0.06 #1分钟换算成一秒,升换算成方=1*60/1000
- platform: ntc
sensor: resistance_sensor
calibration:
b_constant: 3950 #B值
reference_temperature: 25°C
reference_resistance: 50kOhm #热敏电阻阻值
name: water Temperature
# Example source sensors:
- platform: resistance
id: resistance_sensor
sensor: source_sensor
configuration: DOWNSTREAM
resistor: 10kOhm #参考电阻阻值
#name: Resistance Sensor
- platform: adc
id: source_sensor
pin: A0
filters:
- multiply: 3.3 #电压转换,MCU开发板的adc电压是0-3.3v
update_interval: never
switch:
- platform: gpio
pin: D0
id: ntc_vcc
interval:
- interval: 10s #参考电阻通电切换
then:
- switch.turn_on: ntc_vcc
- component.update: source_sensor
- switch.turn_off: ntc_vcc
time:
- platform: sntp
id: my_time
配置文件见附件:nodemcuv2.zip
nodemcuv2.zip
(1.06 KB, 下载次数: 70)
注:主管安装这个水流传感器只需买两个活接头就好接上,网上搜索关键字6分活接头就有好多。
大概就长这样。
|