进入Home Assistant 面板
上一节我们安装 Home Assistant OS 后进入的界面的是 Home Assistant CLI 界面,Home Assistant CLI 为我们提供了一种通过命令行 (CLI) 与 HA 交互的方法。现在我们可以通过同一局域网下的设备的浏览器输入 homeassistant.local:8123/,即可进入 Home Assistant 网页界面,又称为 Home Assistant 前端集成。
创建新用户(新用户默认具有管理员权限)
[Tip] Home Assistant 前端是 渐进式 Web 应用。 这意味着你可以将 Home Assistant 的网页界面像一个独立的手机或电脑应用程序一样安装和使用,并且它具备了许多原生应用才有的优点,比如离线工作、快速加载和推送通知。 |
比如在 macOS 上,通过 Chrome 浏览器将 Home Assistant 作为应用安装
安装后可以直接通过聚焦搜索打开 Home Assistant
使用 ESP32-C3-DevKitM-1 读取传感器数据
在实际应用中,我们不可能使用树莓派这样的设备来读取 SCD41 传感器数据,更合适的解决方案是使用 ESP32 这样成本较低的微控制器平台作主控读取传感器数据并上传。本节将通过 ESP32-C3-DevKitM-1 读取 SCD41 传感器数据并通过 MQTT 协议上传至 Home Assistant。
参考文章:Easily read out Sensirion sensor measurements on ESP32 - Hackster.io |
和文章中有所不同的是,我使用的是 ESP32-C3-DevKitM-1 开发套件(文章中是 ESP32-DevKitC),相比之下 GPIO 更少一些。SCD41 使用 I²C 进行通信,地址为 `0x62`。
软件设置
使用 PlatformIO IDE 开发 ESP32-C3-DevKitM-1 有两种方式,其一是使用 `esp-idf`框架,另一个就是使用 `arduino`框架,这里我们选择 `arduino`框架,PlatformIO IDE 通过配置文件`platformio.ini`设置开发环境和管理依赖,设置如下:
[env:esp32-c3-devkitm-1] platform = espressif32 board = esp32-c3-devkitm-1 framework = arduino monitor_speed = 115200 upload_speed = 921600 lib_deps = Sensirion I2C SCD4x knolleary/PubSubClient @ ^2.8 bblanchon/ArduinoJson @ ^6.21.3 build_flags = -DCORE_DEBUG_LEVEL=0
硬件设置
![]() | ![]() |
ESP32-C3-DevKitM-1 | ESP32-DevKitC V4 |
起初我觉得硬件不同应该不是什么大问题,不过当我找 ESP32-C3-DevKitM-1 I²C 引脚时有点懵,引脚图上没有标 I²C,这哪个才是呢?
别急,来看看 ESP 官方文档 怎么写的。
ESP32 架构包括将一些外围设备配置到任何 GPIOs 引脚的能力,由 IO MUX GPIO 管理。从本质上讲,此功能意味着我们可以使用 IO MUX 和 GPIO 矩阵将内部外围设备路由到不同的物理引脚。 |
官方还给出了一个 Arduino 中改变 I²C 接口的使用示例:
对于 ESP32,I2C 的默认引脚是 SDA (GPIO21) 和 SCL (GPIO22)。如果您需要更改引脚,可以使用其他引脚替代默认引脚。要更改引脚,我们必须在调用 Wire.setPins(int sda, int scl); 之前调用 Wire.begin(); 函数。 |
int sda_pin = 16; // GPIO16 as I2C SDA int scl_pin = 17; // GPIO17 as I2C SCL void setup() { Wire.setPins(sda_pin, scl_pin); // Set the I2C pins before begin Wire.begin(); // join i2c bus (address optional for master) }
也就是说在 ESP32 中,除了一些特殊 GPIO 引脚(比如:被复用为 SPI Flash 的 GPIO 引脚,本例中为 GPIO12~17,被复用为串口的 GPIO 引脚,本例中为 GPIO20~GPIO21)需要特殊的配置。其余的都可以通过上述软件配置的方式指定为 I2C 引脚。
SCD41 传感器引脚 | ESP32 开发板引脚 | 连接说明 | 备注 |
VCC | 3.3 V | 电源正极 | 2.4 V 至 5.5 V |
GND | GND | 电源地线 | 共地连接 |
SDA | GPIO 18 | I2C数据线 | 代码中指定:Wire.begin(18, 19) |
SCL | GPIO 19 | I2C时钟线 | 代码中指定:Wire.begin(18, 19) |
ESP32 此处指 ESP32-C3-DevKitM-1