所以,现在我有一个 Home-Assistant(HA)的设置能工作,一个启动的 esp8266 ,我可以写上面的软件。是时候让这两个对话了,并做出在这些有用的基础上做更多的事情。
我选择了最简单的元件,即 DHT22 温度和湿度传感器。
做到这一点需要 5 个步骤:
所以,让我们一步一步来。
它非常简单,没有上拉电阻和电容:
我简单地把它放在我的 esp12f 上的另一个 GPIO 上,但是就是这么多。面包板上的结果如下所示:
就是这样,对于测试,当然,对于最后的传感器,我将不得不比它更清洁。
我开始寻找关于如何使用 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
下一次启动时,传感器固件正处于配置模式。
在之前的文章中,我没有解释如何配置 homie 设备,实际上是因为在这一步里,我没有发现它。我玩了以前的无用的固件,以了解它是如何工作的。
首先值得注意的是,homie-esp8266 文档已经从 github 移动到了 readme.io,在 http json api 页面上,您可以找到 3 个选项,您可以使用它们在配置模式下配置设备:
在任何情况下,你都需要连接到 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 代理。根据 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: "%"
好了,设置完成。
之后,用新配置重新启动 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 上,我知道测试湿度和测试温度传感器出现在第一排。
就这么简单。
观光\评论区