< >
Home » HomeAssistant自动化 » HomeAssistant家庭自动化-应用-使用MQTT作为通讯协议接入DHT22温湿传感器实现获取温湿度数据

HomeAssistant家庭自动化-应用-使用MQTT作为通讯协议接入DHT22温湿传感器实现获取温湿度数据

HomeAssistant家庭自动化-应用-使用MQTT作为通讯协议接入DHT22温湿传感器实现获取温湿度数据

说明:

  • 介绍如何获取DHT22温湿度数据
  • 环境: esphome + MQTT + homeassistant
  • DHT11和DHT22的使用方法类似, 之前使用HA本身的API作为通讯协议来发现相关设备
  • 此文更改为使用MQTT作为发现设备的通讯协议, 需要分别更改esp8266配置和HA的configuration.yaml配置

准备:

  • 显示屏
  • 树莓派4B
  • DHT22温湿度传感器
  • ESP8266串口wifi模块(nodemcu v3)

连线

  • esp8266 插脚图

请输入图片描述

  • 插脚对应表
esp8266 dht22
D1 DATA
3V3 VCC
GND GND
  • 连线图

请输入图片描述

  • esp8266模块通过usb线连接到树莓派4B

启动和访问esphome

  • 假设树莓派的IP为192.168.0.xxx
  • 安装esphome参考文章
  • 树莓派上启动esphome, 假设配置文件放在用户根目录下
cd ~
esphome config/ dashboard
  • PC的浏览器打开网址访问http://192.168.0.xxx:6052/
  • 效果图如:

请输入图片描述

添加设备

  • 点击右下角的 "+ NEW DEVICE", 填写配置文件名称为: esp8266-t94
  • 效果图

请输入图片描述

  • 选择为esp8266板, 下一步
  • 效果图

请输入图片描述

修改配置

  • 在 ~/config/目录,生成一个名为esp8266-t94.yaml文件
  • 可以直接编辑这个文件或在页面上点EDIT,进入编辑
  • 效果图:

请输入图片描述

  • 文件内容如下:
esphome:
  name: esp8266-t94    #制定配置文件名称 

esp8266:
  board: esp01_1m      #指定芯片类型

# Enable logging
logger:                

# Enable Home Assistant API   #与HA整合
api:
  encryption:
    key: "RxXAgCVB1/wnoTchfDZpC66MhV2V8hDJf9FWgI45TtE="


ota:                          #自动升级
  password: "28ebd5e9fde077c53a2d12fc09089acc"

wifi:                         #wifi
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp8266-T94 Fallback Hotspot"
    password: "rbh0zG2bFw5W"

captive_portal:
  • 我们需要连接WIFI, 增加web控制, 整合到Home assistant, 自动升级, 获取温湿度数据
  • 修改配置为:
esphome:
  name: "esp8266-t94"
    
esp8266:
  board: nodemcuv2

# Enable logging
logger:

# Enable Home Assistant API
#api:
#  password: ""
# 关闭HA的API,启用MQTT作为通讯协议
mqtt:
  broker: 192.168.0.44  #指定MQTT Broker的ip地址

ota:
  password: ""

wifi:
  ssid: "xxxxx"              #wifi和密码
  password: "xxxxx"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp8266-t94 Fallback Hotspot"
    password: "VQyWziLnZOXD"
    
  manual_ip:                #设置固定IP
    static_ip: 192.168.0.94
    gateway: 192.168.0.1
    subnet: 255.255.255.0
    
captive_portal:

web_server:  ## web控制,添加了这2行,就可以在网页端打开设备ip;
  port: 80

sensor:                      #设置dht11传感器
  - platform: dht
    pin: D1
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"
    update_interval: 60s    # 数据每60s监测一次
    model: "DHT22"
  • 修改好之后,点击页面上的save,进行保存配置信息

刷固件

  • 保存之后,点页面上install,显示可选择的刷固件方式
  • 支持四种刷机方式
  • 第一种,已经成功刷机后,通过wifi自动升级方式刷机
  • 第二种,设备连接到树莓派,通过直连方式刷机
  • 第三种,通过esphome的web方式刷机
  • 第四种,通过下载固件,实际刷机
  • 目前最有效的方式第一种和第三种。
  • 效果如图:

请输入图片描述

  • 选择第三种刷机方法,第一次刷固件必须要连线,esp8266通过usb线连到树莓派4B
  • 第二次之后可以选择wifi方式,远程升级
  • 效果图:

请输入图片描述

  • 选择对应的端口,即可进行刷机操作,等一回之后,提示刷机成功
  • 刷机日志如下: 
NFO Reading configuration config/esp8266-t94.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing esp8266-t94 (board: nodemcuv2; framework: arduino; platform: platformio/espressif8266 @ 3.2.0)
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- ESPAsyncTCP-esphome @ 1.2.3
|-- ESPAsyncWebServer-esphome @ 2.1.0
|   |-- ESPAsyncTCP-esphome @ 1.2.3
|   |-- Hash @ 1.0
|   |-- ESP8266WiFi @ 1.0
|-- DNSServer @ 1.1.1
|-- ESP8266WiFi @ 1.0
|-- ESP8266mDNS @ 1.2
|-- ArduinoJson @ 6.18.5
Compiling .pioenvs/esp8266-t94/src/main.cpp.o
Linking .pioenvs/esp8266-t94/firmware.elf
RAM:   [====      ]  40.4% (used 33092 bytes from 81920 bytes)
Flash: [====      ]  40.5% (used 422589 bytes from 1044464 bytes)
Building .pioenvs/esp8266-t94/firmware.bin
esp8266_copy_factory_bin([".pioenvs/esp8266-t94/firmware.bin"], [".pioenvs/esp8266-t94/firmware.elf"])
========================= [SUCCESS] Took 19.06 seconds =========================
INFO Successfully compiled program.
esptool.py v3.3.1
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: c4:5b:be:73:c8:32
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x00068fff...
Compressed 426736 bytes to 297977...
Wrote 426736 bytes (297977 compressed) at 0x00000000 in 6.9 seconds (effective 492.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
INFO Successfully uploaded program.
INFO Starting log output from /dev/ttyUSB0 with baud rate 115200
  • 刷机自动连接上wifi之后,显示如下

请输入图片描述

整合到home assistant

  • 安装home assistant参考文章
  • 增加MQTT支持方法一: 添加MQTT集成
  • 依次点击:配置——>集成——>点击右下角加号——>搜索MQTT

请输入图片描述

  • 增加MQTT支持方法二:修改配置
  • 修改home assistant的configuration.yaml则更加MQTT定义
vim ~/.homeassistant/configuration.yaml
  • 增加内容如下: 
# MQTT配置
mqtt:
  broker: 192.168.0.44     # MQTT服务器地址
  port: 1883               # MQTT端口,默认是1883
  # 配置自动发现
  discovery: true
  # 自动发现使用的主题位置前缀,缺省为homeassistant
  discovery_prefix: homeassistant
  • 树莓派上启动home assistant
cd ~/hass-new
source bin/activate
hass
  • PC的浏览器访问地址http://192.168.0.44:8123/
  • 进入界面之后,会自动提示发现设备,都挂在MQTT集成下

请输入图片描述

  • 点击对应的配置,再点提交即可

  • 成功之后,可以选择区域

  • 显示为1个设备2个实体,一个设备为对应一个esp8266板子,实体分别为一个湿度一个温度

  • 点击设备就可以看到相关温湿度

请输入图片描述

  • 添加到仪表盘

请输入图片描述

  • 查看仪表盘

请输入图片描述

参考:

  • https://esphome.io/components/sensor/dht.html

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: homeassistant家庭自动化