最开始接入这些传感器是使用 ESPEasy 的,但后来发现莫名其妙的死机,一直没有找到原因,尝试更换 MQTT 和修改无线网信道也没有解决,我推断可能是我发送的数据量过大导致模块无法响应(一秒钟大概发送三四条数据),后来就接入一个传感器(一秒钟发送一条数据)但这样还是维持不到几天又死机了,不得已就放弃了 ESPEasy, 于是就有了下面的 ESPHome,这次我没有使用 MQTT 而是直接使用 API。
ESPHome 是为 ESP8266 / ESP32 板创建自定义固件的完美解决方案。
人体传感器、光线传感器和超声波传感器在自动化中起到了比较重要的作用,通过人体传感器的状态切换可以执行一系列的自动化,比如开关灯,通过光线传感器的具体数值范围也可以开关灯。
言归正传
准备:
ESP8266 开发板
BH1750
HC-SR04
DHT11
人体传感器
首先安装 ESPHome,ESPHome 的安装环境需要依赖 Python2.7, 对于 Linux 和 Mac 用户就比较方便了,只需要几条命令即可
#安装tornado
sudo pip install tornado==5.1.1
#安装esphome
sudo pip2 install esphome
#开启esphome的web访问
esphome esphome_config/ dashboard
打开浏览器输入本地 IP:6052点击 + 号开始添加配置第一步输入配置名称
第二步选择合适的设备类型
第三步输入 wifi 名称和密码
第四步点击 submit 提交,选择实际的 USB 口然后点击下面的 upload 就会自动开始下载依赖打包编译上传固件,当然也可以先编译下载下来然后用 Flashesp8266 或者 esptool 等工具上传
点击 EDIT 写入相关传感器配置
esphome:
name: chuangtou
platform: ESP8266
board: nodemcuv2
wifi:
ssid: "######"
password: "########"
manual_ip:
static_ip: 192.168.123.56
gateway: 192.168.123.1
subnet: 255.255.255.0
# Enable logging
logger:
# Enable Home Assistant API
api:
password: 'admin'
ota:
password: 'admin'
i2c:
sda: 4
scl: 5
scan: True
sensor:
- platform: bh1750
name: "lux"
address: 0x23
update_interval: 1s
- platform: ultrasonic
trigger_pin: D7
echo_pin: D6
name: "sr04"
update_interval: 1s
- platform: dht
pin: D5
temperature:
name: "tem"
humidity:
name: "hum"
update_interval: 1s
model: DHT11
binary_sensor:
- platform: gpio
pin: D3
name: "ctrenti"
device_class: motion
- platform: status
name: "esp1_status"
接线:
BH1750:
VCC——————3V
SCL——————D1
SDA——————D2
GND——————GND
HC-SR04:
VCC——————3V
Trig—————D7
Echo—————D6
GND——————GND
DHT11:
VCC——————3V
DATA—————D5
GND——————GND
人体传感器:
VCC——————VU
OUT—————D3
GND——————GND
在 HomeAssistant 集成里配置 ESPHonme
效果图
叨叨几句... NOTHING