Home Assistant 教程:ESP8266 + DHT22 + Homie 连接 Home-Assistant

所以,现在我有一个 Home-Assistant(HA)的设置能工作,一个启动的 esp8266 ,我可以写上面的软件。是时候让这两个对话了,并做出在这些有用的基础上做更多的事情。

我选择了最简单的元件,即 DHT22 温度和湿度传感器。

做到这一点需要 5 个步骤:

  • 在测试设置连接 DHT22
  • 找到如何在 Homie 固件中使用它,并烧录它
  • 配置设备
  • 在 Home Assistant 上配置 MQTT,它导致了我重写整个配置
  • 测试一下

所以,让我们一步一步来。

步骤1:连接 DHT22

它非常简单,没有上拉电阻和电容:

ESP12 与 DHT22 连线图

我简单地把它放在我的 esp12f 上的另一个 GPIO 上,但是就是这么多。面包板上的结果如下所示:

ESP12 DHT22 连线图

就是这样,对于测试,当然,对于最后的传感器,我将不得不比它更清洁。

步骤2:Homie 固件

我开始寻找关于如何使用 dht22 与 homie 的代码,有库可以直接用使用,运行:

platformio lib search dht

向我展示了与 esspressif 兼容的 DHT 传感器库,我只需要通过以下方式安装它:

platformio lib install 19

之后,我在网上查找使用它的例子,并且实际上发现了这个代码,它正是我所期望的。 起初,我开始写每一行试图只引入所需的一行。 但是我认为这样做完全接近于最低限度的工作,所以我只是把它重命名为 raton-dht,然后把版本切换到 0.0.1。

题外话,版本号有一个有趣的用途,因为 Homie 支持 OTA,使用非常酷的 homie-ota,其中包括了一系列的固件和清单的设备,它将能非常好的处理你的 homie 设备和更新。他们如果需要的话。 我自己还没有尝试过,但是一旦我在房子里运行真正的设备,我一定会这样做的。这对我来说真的是一个必须的东西。 再次感谢jpmens!

再回到文章里,没有 OTA 设置好的,我简单地把我的 GPIO0 切换到低电平,然后运行:

platformio run -t upload

下一次启动时,传感器固件正处于配置模式。

步骤3:Homie 设置

在之前的文章中,我没有解释如何配置 homie 设备,实际上是因为在这一步里,我没有发现它。我玩了以前的无用的固件,以了解它是如何工作的。

首先值得注意的是,homie-esp8266 文档已经从 github 移动到了 readme.io,在 http json api 页面上,您可以找到 3 个选项,您可以使用它们在配置模式下配置设备:

  • WEB UI
  • Android 应用程序,很显然是一个 webview 直接到 webui(至少这是我的猜测)
  • 一个 curl 例子,但是你需要知道,在专用页面中描述的 config.json 看起来像什么

在任何情况下,你都需要连接到 homie 设备在配置模式下创建的 AP。对于我来说,在工作站上工作,而不是在手边有我的笔记本电脑(并且感觉太懒了,因为它现在不收费,配置另一个无线设备通过 wpa_supplicant),只留下我的android手机。。。但有一个问题:android 会检查:它可以到达外网,实际上让你使用你的无线连接。

我在这里发现,在一个 root 的设备上,你可以运行:

settings put global captive_portal_detection_enabled 0

这对我来说是个诀窍,所以我运行它,连接到 Homie-XXXXX AP,并且发现了找到该设备的 android 应用程序,并允许我对其进行配置,配置非常简单。一旦完成 ,您终于可以在正常模式下重新启动 homie 设备,在那里它连接到您的 AP/路由器,并开始尝试与 mqtt 代理通讯。现在进入 Home Assistant 设置。

Home-Assistant MQTT 配置

正如前一篇文章中所说,我打算在 Home Assistant 中使用嵌入式 MQTT 代理。根据 MQTT 组件页面,要启用 Home Assistant 中的 MQTT 支持,我们必须添加:

mqtt:

对于配置文件,其他参数用于指定代理,使用嵌入式的代理,而不需要进一步的配置,就是这样。重新启动 Home Assistant 以启用 MQTT 代理。

接下来我们需要配置传感器,但是当我开始考虑添加这个时,我意识到我的高可用性配置已经变得非常混乱,只有很少的东西,但是看起来已经非常杂乱无章的东西,只有在开始使用时才有用的注释。所以,我决定去做一个巨大的清理及重写。

第一步,版本控制,我计划分割在多个文件里。如果不在 git中,它将很难处理和维护。所以我创建了一个 ha-cfg 的 GitHub 项目

我从这个 版本的配置到另外一个版本 的配置。

花了一些时间来理解!包括这个不是很明显的用法,但是我对最后的结果很满意。

以下是我的 sensors.yaml:

# temperature test
- platform: mqtt
  state_topic: devices/01397be0/temperature/degrees
  name: "Test temperature"
  qos: 0
  unit_of_measurement: "°C"

# humidity test
- platform: mqtt
  state_topic: devices/01397be0/humidity/relative
  name: "Test humidity"
  qos: 0
  unit_of_measurement: "%"

好了,设置完成。

步骤4:测试

之后,用新配置重新启动 Home Assistant,我再次启动了 esp,可以看到:

** Booting into normal mode **
{} Stored configuration:
  • Hardware device ID: 01397be0
  • Device ID: 01397be0
  • Boot mode: normal
  • Name: dht#1
  • Wi-Fi
    ◦ SSID: SFR-5458
    ◦ Password not shown
  • MQTT
    ◦ Host: 192.168.0.6
    ◦ Port: 1883
    ◦ Base topic: devices/
    ◦ Auth? no
    ◦ SSL? no
  • OTA
    ◦ Enabled? yes
    ◦ Host: 192.168.0.17
    ◦ Port: 80
    ◦ Path: /ota
    ◦ SSL? no
↕ Attempting to connect to Wi-Fi...
✔ Wi-Fi connected
Triggering HOMIE_WIFI_CONNECTED event...
↕ Attempting to connect to MQTT...
Connected
Sending initial information...  OK
Subscribing to topics...  OK
✔ MQTT ready
Triggering HOMIE_MQTT_CONNECTED event...
Calling setup function...
Sending Wi-Fi signal quality (100%)...  OK
Sending uptime (8s)...  OK

而且在 Home Assistant 的 web-ui 上,我知道测试湿度和测试温度传感器出现在第一排。

Home Assistant 展示

就这么简单。

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.