【智能家居:四】将MQTT设备加入HA平台

HA平台能兼容MQTT真的是相当关键的一步,很多大佬自制的固件,通过MQTT的方式连接到HA平台,实现各种传感器和电器的接入,成本低,稳定性高。

微信图片_20191009221950.jpg

部署HA中的MQTT服务端

当初之所以花那么大力气装hassio也是为了可以通过这个方便的办法安装各种插件,实际上只是为了MQTT。

安装服务端

1、在左下角点击hass.io,这个是只有装了hassio版本的ha平台才会有的页面,通过其他方式安装的比如python或者docker,就没有了。

点击hass.io,在上面的标签中找到ADD-ON STORE,然后在下面的列表里找到Mosquitto broker,点击install。

65416.png

2、安装完需要配置mqtt服务端的用户名和密码,懒得改的直接复制就行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"logins": [
{
"username": "mqtt",
"password": "mqtt"
}
],
"anonymous": false,
"customize": {
"active": false,
"folder": "mosquitto"
},
"certfile": "fullchain.pem",
"keyfile": "privkey.pem",
"require_certificate": false
}

2.png

3、配置完就点restart重启就行了

3.png

配置HA中的MQTT设置

在HA的configuration中添加MQTT服务端的相关设置

1
2
3
4
5
6
7
8
mqtt:
broker: 192.168.1.200
port: 1883
client_id: home-assistant-1
keepalive: 60
username: pi
password: raspberry
discovery: true

brocker是你MQTT服务端的IP,如果按上述办法安装的话就和树莓派是同一个IP,username和password就是刚刚设置的用户名和密码。

sonoff开关

这东西淘宝上买一个就二三十块,结构也很简单就一块ESP01+继电器。我的sonoff开关连到灯具作为灯具的开关了,所以这里会添加为一个MQTT LIGHT。

买回来之后我刷入了tasmota固件,设置好mqtt服务端、用户名、密码,就连接到刚才设置好的MQTT服务器了。

HA设置

在configuration中添加light

1
2
3
4
5
6
7
8
9
light:
- platform: mqtt
name: "light_jingqiandeng"
state_topic: "stat/jqd/POWER"
command_topic: "cmnd/jqd/POWER"
qos: 1
payload_on: "ON"
payload_off: "OFF"
retain: true

上面出现的jqd,是tasmota固件中MQTT设置里的device topic。

基于ESP8266的各类传感器

这里我用的是espeasy这款开源固件,可以接各种各样的传感器。我用的最多的就是温湿度传感器、人体传感器和超声波测距传感器。

微信图片_20191009221950.jpg

ESPEASY固件安装

我用的是ESP8266 V3这块板子,自带USB口,直接插电脑上然后刷就行了。

espeasy官网可以下载固件和烧录程序,非常简单,像我这样的小白也可以轻松上手。

客户端设置

初始化之后,设置好wifi和MQTT服务器,就可以正常接入了。

1.png

硬件连接这边我就无需多说了,3v3和gnd对准插好就行了,信号线接gpio口,然后在ESPEASY的WEB界面里面设置一下就可以用了。

2.png

举个例子

我的书桌上有个小东西,是一块8266的板子,连了超神波测距传感器、温湿度传感器、人体传感器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 人体传感器
binary_sensor:
- platform: mqtt
name: shufangrenti
state_topic: "/esp3/pir/motion"
payload_on: "1"
payload_off: "0"
qos: 0
device_class: motion
# 超声波测距传感器
sensor:
- platform: mqtt
name: "distance_shuzhuo"
state_topic: '/esp3/sr04/dist'
qos: 1
unit_of_measurement: "cm"
# 温度传感器
sensor:
- platform: mqtt
name: "temp_shufang"
state_topic: '/esp3/dht22/tem'
#value_template: '{{ value_json.Temperature }}'
unit_of_measurement: '°C'

通过人体传感器判定是否有人在书房,夜间可以自动开灯,人离开的时候可以自动关灯。

超声波测距传感器可以确认我是否在书桌前,可以自动开关书桌的台灯。

温湿度传感器就是在夏天自动开冷气或者在冬天自动开暖气的,不过我的书房目前没有暖气。

以上就是MQTT设备的接入,其实还有很多MQTT设备,官网上也可以看到,比如窗帘、定位系统、风扇、空调、各种开关等。

HA平台对MQTT的支持,使得HA的可玩性大大提高,目前有很多大佬都自制了各种MQTT硬件,价格比成品产品便宜质量也不差。