将ESP8266的温度报告给MQTT
{::选项Coderay_line_numbers =“ table” /}
我最近了解到ESP8266,这是一个5美元的芯片,其中包括WiFi,并且是Arduino兼容的。这意味着您所有的DIY项目现在都可以以一小部分价格完成。
在本教程中,我将介绍如何与ESP8266一起使用,获取温度和湿度,并将其报告给MQTT,家庭助理可以在这里接收它。必威是什么
最终设置的图片(+ 2 LED用于装饰)
必威是什么家庭助理将跟踪历史价值,并允许您将其集成到自动化中。
成分
我一直在使用Adafruit进行购物:
除此之外,您还需要通常的硬件原型设备:面包板,一些电线,焊接铁 +电线,串行USB电缆。
备择方案
自从本文发表以来,HDC1008已停止。更新的草图可用于以下替代方案:
连接
在面包板上,将以下连接从ESP8266到HDC1008:
ESP8266 | HDC1008 |
---|---|
gnd | gnd |
3V | Vin |
14 | SCL |
#2 | SDA |
我选了#2
和14
我自己,您可以在草图中配置它们。
准备您的IDE
跟随这些说明关于如何安装和准备ESP8266开发的Arduino IDE。
完成安装后,打开Arduino IDE,在菜单中单击草图
- >包括库
- >管理库
并安装以下库:
- nick’o Leary的pubsubclient
- Adafruit HDC1000
草图
如果您遵循了先前的步骤,那么您都将设定。
- 打开Arduino IDE并创建一个新草图(
文件
- >新的
) - 将以下草图复制到Arduino IDE
- 调整值第6-14行以匹配您的设置
- 可选:如果要连接到没有用户名或密码的MQTT服务器,请调整第62行。
- 要使ESP8266接受我们的新草图,我们必须将其置于上传模式。在ESP8266上,在按下重置按钮时,请按按下GPIO0按钮。红色LED将发光一半明亮,以表明它处于上传模式。
- 按Arduino IDE中的上传按钮
- 打开串行监视器(
工具
- >串行监视器
)查看设备的输出
此草图将连接到您的WiFi网络和MQTT代理。它将每秒读取传感器的温度和湿度。如果自上次报告的值以来的差异为1,它将报告给MQTT服务器。向MQTT经纪人的报告发送,保留设置为真的
。这意味着连接到MQTT主题的任何人都会自动通知最后一个报告的值。
#包括 #包括 #包括 #包括 #define wifi_ssid“您的wifi ssid” #define wifi_password“ wifi密码”#define mqtt_server“ your_mqtt_server_host” #define mqtt_user“ your_username” #define mqtt_password“ your_password”#Define湿度_TOPIC“传感器/湿度” #Define温度_TOPIC“传感器/温度”有效的Espclient;pubsubclient客户((Espclient);adafruit_hdc1000HDC=adafruit_hdc1000();空白设置(){系列。开始((115200);setup_wifi();客户。SetServer((mqtt_server,,,,1883年);//设置SDA和SDL端口金属丝。开始((2,,,,14);//启动传感器如果((呢HDC。开始()){系列。println((“找不到传感器!”);尽管((1);}}空白setup_wifi(){延迟((10);//我们首先连接到WiFi网络系列。println();系列。打印((“连接到”);系列。println((wifi_ssid);无线上网。开始((wifi_ssid,,,,wifi_password);尽管((无线上网。地位()!=wl_connected){延迟((500);系列。打印((“。”);}系列。println((“”);系列。println((“连接WiFi”);系列。println((“IP地址: ”);系列。println((无线上网。localip());}空白重新连接(){//循环直到我们重新连接尽管((呢客户。连接的()){系列。打印((“尝试MQTT连接...”);//尝试连接//如果您不想使用用户名和密码,请将下一行更改为// if(client.connect(“ ESP8266Client”)){如果((客户。连接((“ ESP8266Client”,,,,mqtt_user,,,,mqtt_password)){系列。println((“连接的”);}别的{系列。打印((“失败,RC =”);系列。打印((客户。状态());系列。println((“在5秒内重试”);//等待5秒之前重试延迟((5000);}}}布尔签到((漂浮newValue,,,,漂浮prevvalue,,,,漂浮麦克斯迪夫){返回呢伊斯南((newValue)&&((newValue<prevvalue-麦克斯迪夫||newValue>prevvalue+麦克斯迪夫);}长lastmsg=0;漂浮温度=0.0;漂浮哼=0.0;漂浮差异=1.0;空白环形(){如果((呢客户。连接的()){重新连接();}客户。环形();长现在=米利斯();如果((现在-lastmsg>1000){lastmsg=现在;漂浮newtemp=HDC。读取器();漂浮Newhum=HDC。读书();如果((签到((newtemp,,,,温度,,,,差异)){温度=newtemp;系列。打印((“新温度:”);系列。println((细绳((温度)。C_str());客户。发布((温度_TOPIC,,,,细绳((温度)。C_str(),,真的);}如果((签到((Newhum,,,,哼,,,,差异)){哼=Newhum;系列。打印((“新的湿度:”);系列。println((细绳((哼)。C_str());客户。发布((湿度_TOPIC,,,,细绳((哼)。C_str(),,真的);}}}
配置家庭助理必威是什么
最后一步是将传感器值集成到家庭助理中。必威是什么这可以通过设置家庭助理来连接到MQTT经纪人并订阅传感器主题来必威是什么完成。
mqtt:经纪人:your_mqtt_server_host用户名:您的用户名密码:你的密码传感器:平台:mqtt姓名:“温度”state_topic:“传感器/温度”QoS:0测量单位:“ºC”传感器2:平台:mqtt姓名:“湿度”state_topic:“传感器/湿度”QoS:0测量单位:“%”