欢迎光临散文网 会员登陆 & 注册

怎样把净水机接入HASS智能家居

2023-03-07 23:30 作者:剑锋所指敌莫敢当  | 我要投稿

最近媳妇要生仔单位给我放了陪产假,一个月的时间实在是不知道除了带娃还能干啥,家里净水机买了2年了最近一测发现水质已经变成TDS80PPM了,正常净水机出来的直饮水的水质在50PPM以下为优秀,这可不能直接喝了,所以想加装一个在线监测模块,用来监测水质曲线,及时提醒更换滤芯

首先得有一个净水器,我是自己手搓组装的净水器,目前家在长江中下游的鱼米之乡,自来水品质在280PPM左右,原装的进口陶氏98%反渗透RO膜在900块左右实在太贵,重新买了国产陶氏95%反渗透RO膜价格在300左右,280x(1-95%)=14PPM是我能接受的脱盐率,在更换RO膜前把在线TDS监测做好是必要的,下面进入正题

首先需要采购TDS模块,ESP系列通讯模块,USB转TTL模块,我购买的是双路输入的TDS水质传感器模块,这样可以同时检测原水和净水的TDS值,并且购买的是带温度传感的版本,这样可以更加精确的计算温度补偿

还需要你的HASSIO内安装了NODE-RED、jupyterlab和MQTT服务器

之后用的手头上的NODEMCU来进行与HASS交互,我使用的是NODEMCU-32S,实际上用ESP8266系列的就可以,但是这种小模块大多是需要3.3V的供电,如果不想单独再买一个3.3V的电源模块(价格3元左右),可以直接买下图这种带USB接口的集成好的模块,更加方便一些当然也贵一些,

刷鞋

刷写固件

东西到手后,首先需要给他刷固件,如果你购买的ESP模块在购买时备注默认是AT固件的,那就可以不用刷固件了

需要的刷机版本在官方连接中自己选择购买的那一款,一般是8266或者ESP32

下载好手首选需要把ESP模块插入电脑中,然后使用刷机工具准备刷机

打开烧写工具flash download tools
加载AT固件
烧写设置

刷机设置记得右下角的COM口改成自己模块的COM口,可能是34567,是乱序的

完成烧写


设置模块

解压sscom v5.13.1,找到exe执行文件,双击运行!之后需要用到USB转TTL模块

如果用的是MCU-ESP32模块,那就需要把IO16接入模块的TX和IO17接入模块的RX

如果用的是MCU-ESP8266模块,就需要把IO15接入模块的TX和IO13接入模块的RX

如果购买的ESP模块是3.3V的,那就设置为使用模式,具体应该是IO0接入GND或者3.3V,然后把TTL模块的RX接到ESP模块TX,TTL模块的TX接到ESP模块RX

再打开串口,弹出如下对话框,在端口号中,选择你计算机对应的端口,本例子我的计算机应用的COM3,所以就选COM3了。波特率选择115200,要注意的是选择的不是一开始USB刷机的那个COM口,而是要选择USB转TTL的那个COM口,正常来说插入电脑后会有一个新的端口,就是那个新的端口

3,在输入框中,输入“AT”

在输入框中,输入“AT”,然后点击发送,文本框中返回了“OK”表示固件烧写成功,并且正常运行。注意要勾选“加回车换行”,还有就是看是否已经打开串口。

4,返回“OK”,刷写成功。

接下来我们要设置TCP串口透传模式

在串口调试助手中首先要输入【AT+CWLAP】,查看你家的WIFI在不在返回的信息中

输入【AT+CWMODE_DEF=1】,把模块改成AP模式

之后设置wifi账号和密码(自行修改):【AT+CWJAP="用户名","密码"】连接WIFI

之后输入【AT+SAVETRANSLINK=1,"node-red的ip地址",3316,"TCP"】(这里的1就是指模块开机就进入透传模式,node-red的ip地址连接到你的tcp服务器,简单来说就是HASS的地址,11111是自己喜欢的数字,不要用常用端口就可以,常用端口是哪些自己可以百度)

再输入【AT+UART_DEF=9600,8,1,0,0】,这个设置是根据TDS传感器的数据来的

这样你就得到一个可以UART透传的ESP模块啦,ESP32的指令略有区别,可以在乐鑫官网查看不同的指令并输入


设置HASSIO系统

首先进入NODERED里面,设置TCP IN,里面的端口就是上面你自己设置的喜欢的端口

TCP IN

设置功能节点,代码复制即可【let arr = [msg.payload];

arr.push(...msg.payload);


msg.payload={

    "Raw_Water_TDS": (256 * arr[2] + 1 * arr[3]) * (1 + (0.02 * ((1 * arr[6]) - 25))),

    "Clean_Water_TDS": (256 * arr[4] + 1 * arr[5]) * (1 + (0.02 * ((1 * arr[7]) - 25))),


    "Raw_Water_Temperature": 1* arr[6],

    "Clean_Water_Temperature": 1 * arr[7]}

return msg;】

功能节点

MQTT节点内的主题是可以变成自己喜欢的主题,但是要和下方爬虫代码的主题一致

MQTT节点

这样我们就得到了温度补偿的TDS数值

接下来把温度补偿的实体加入HASSIO内

首先要安装MQTT的库,输入代码【!pip install paho.mqtt】然后选择你新输入的代码,再点击软件上方的播放按钮

之后输入代码,再点击上方的播放按钮

【#office-sensor

import paho.mqtt.client as mqtt

import time

import random #随机库

HOST = "你的HASSIO地址"

PORT = 1883


def on_message_callback(client, userdata, message):

    print(message.topic+" " + ":" + str(message.payload))


def on_connect(client, userdata, flags, rc):

    print("Connected with result code "+str(rc))

    if(str(rc) == '0'):

        print("start")

        

        client.publish("homeassistant/sensor/Raw_Water_Quality/config",\

                       '{"device_class": "temperature", \

                      "name": "Raw_Water_TDS", \

                       "state_topic": "homeassistant/sensor/Water/state", \

                       "unit_of_measurement": "PMM", \

                       "value_template": "{{ value_json.Raw_Water_TDS}}" }') 

    

        client.publish("homeassistant/sensor/Clean_Water_Quality/config",\

                       '{"device_class": "temperature", \

                       "name": "Clean_Water_TDS", \

                       "state_topic": "homeassistant/sensor/Water/state", \

                       "unit_of_measurement": "PMM", \

                       "value_template": "{{ value_json.Clean_Water_TDS}}" }') 

        

        client.publish("homeassistant/sensor/Raw_Water_Temperature/config",\

                       '{"device_class": "temperature", \

                      "name": "Raw_Water_Temperature", \

                       "state_topic": "homeassistant/sensor/Water/state", \

                       "unit_of_measurement": "°C", \

                       "value_template": "{{ value_json.Raw_Water_Temperature}}" }') 

    

        client.publish("homeassistant/sensor/Clean_Water_Temperature/config",\

                       '{"device_class": "temperature", \

                       "name": "Clean_Water_Temperature", \

                       "state_topic": "homeassistant/sensor/Water/state", \

                       "unit_of_measurement": "°C", \

                       "value_template": "{{ value_json.Clean_Water_Temperature}}" }') 


client = mqtt.Client()

client.connect(HOST, PORT, 60)

client.username_pw_set('你的登录名', '你的密码')

client.on_connect = on_connect

client.on_message = on_message_callback

client.loop_start()】

其中上面橙色框框里面是你的HASSIO地址和MQTT的服务器端口号,默认是1883

红色框框就是和NODERED相同的主题,如果要修改需要两边同时修改

青色 框框里面是你的HASSIO的登录名和密码,需要管理员权限

之后在你的HASSIO内就可以搜索到你刚建立的实体了

最后的接线

之后把TDS传感器的RX接入ESP模块中,同样是

如果用的MCU-ESP32模块,那就需要把IO16接入TDS的TX和IO17接入TDS的RX

如果用的MCU-ESP8266模块,就需要把IO15接入TDS的TX和IO13接入TDS的RX

如果购买的ESP模块是3.3V的,那就设置为使用模式,具体应该是IO0接入GND或者3.3V,然后把TTL模块的RX接到ESP模块TX,TTL模块的TX接到ESP模块RX

之后只需要把传感器接入净水器的自来水进水端和纯净水出水端,相信愿意弄这个的小伙伴应该也不需要教学怎么把模块接入净水器,需要注意的是传感器为3分的大小,一般净水器进水端为3分的水管,出水端一般为2分的水管,记得购买两个3分的三通和两个2分转3分的直通

打包的调试助手和串口驱动器放在这,需要自取

链接:https://pan.baidu.com/s/1TyrK1-WQnYCBI-RYP_gauQ?pwd=ipst 

提取码:ipst

怎样把净水机接入HASS智能家居的评论 (共 条)

分享到微博请遵守国家法律