1. 简介
2. 配置变量:
2.1 基本选项:
2.2 支持以下选项:
2.3 引脚选项:
3. 使用方法
4. 实验验证
5. 实验效果
6. 总结
1. 简介
灯光neopixelbus允许您在平台上 ESPHome 中为 NeoPixel 或 WS2812 创建可以单独寻址的灯光 RGB 灯光。
它与FastLED Light平台非常相似。事实上,通过这两个照明平台,大多数可找到的照明都得到了支持。区别在于它们使用不同的库:尽管 fastled 平台使用FastLED但是,它集成在内部使用NeoPixelBus库。

关键代码属于传感器类NeoPixel 库,端口是RX(gpio3),灯数16,实体温湿度传感器
# Example configuration entry light: - platform: neopixelbus type: GRB variant: WS2811 pin: GPIO3 num_leds: 16 name: "NeoPixel Light" 2. 配置变量:
-
(,字符串):灯的名称。
-
(,int):连接的 LED 数量。
-
(Optional, string): 照明类型。这是用来指定的 RGBW 还是 RGB 灯光和颜色的顺序。
GRB.如果您有带白色通道的灯和/或颜色顺序错误,请更改此设置。
2.2 支持以下选项:
-
此外,还支持以下两线芯片组(set
data_pin和clock_pin):-
800KBPS(未明确支持的芯片组推荐通用选项) -
400KBPS -
WS2811 -
WS2812 -
WS2812X -
WS2813 -
SK6812 -
TM1814 -
TM1829 -
TM1914 -
APA106 -
LC8812 -
WS2801 -
DotStar -
LPD6803 -
LPD8806 -
P9813
-
-
此外,还支持以下两线芯片组(set
data_pin和clock_pin):-
WS2801 -
DotStar -
LPD6803 -
LPD8806 -
P9813
-
-
(可选,字符串):用于传输数据的方法。默认情况下,ESPHome 将尝试使用适用于此芯片组、ESP 平台和给定引脚的最佳方法。有关详细信息,请参阅方法。
-
(可选,布尔值):反转数据输出,用于 n 型晶体管。默认为
no.
有些芯片组有两个数据引脚要连接,有些芯片组只有一个。如果只有一行,则只指定pin,否则同时指定clock_pin和data_pin。
在 ESP8266 上,强烈建议将灯带连接到引脚 GPIO3 以减少闪烁。
3. 使用方法
NeoPixelBus 支持不同的方法将像素数据传输到灯条,具体取决于芯片组、ESP 平台和引脚。这些中的每一个在稳定性和速度方面都有自己的优点/缺点。默认情况下,ESPHome 将选择设备上可用的最佳选项。但是,您可以通过手动提供方法选项来覆盖它。
light:
- platform: neopixelbus
# ...
method:
type: esp8266_uart
bus: 0
async: false
使用type配置变量选择使用的方法。其他配置设置因方法而异:
-
:最简单的方法,适用于所有平台。但是,它会产生相当多的闪烁,因此不建议使用。在 ESP8266 上,支持引脚 GPIO0-GPIO15,在 ESP32 上支持引脚 GPIO0-GPIO31。
-
:ESP8266s 的推荐方法。仅在引脚 GPIO3 上可用。
-
:ESP8266s 的另一种方法,它使用 UART 外设发送数据。可用于总线 0 的引脚 GPIO1 和总线 1 的 GPIO2。其他选项:
-
(可选,int):要使用的UART总线。如果为 0,则记录器baud_rate选项必须设置为 0,并且通过 USB/串行记录将不起作用。
-
( Optional , boolean): 使用异步传输。默认为false. 如果启用,即使使用总线 1,也必须禁用记录器。
-
:ESP32 的推荐方法。可用于所有输出引脚。其他选项:
-
(可选):要使用的 I2S 总线。ESP32 有总线 0 或 1 可用,但 ESP32-S2 只有总线 0。0, 1,之一dynamic。
-
:ESP32 的另一种方法,它使用 RMT 外设发送数据。可用于所有输出引脚。其他选项:
-
(可选):要使用的 RMT 频道。ESP32 有通道 0-7、ESP32-S2 0-3 和 ESP32-C3 0-1。在 ESP32 上默认为 6,在其他 ESP32 变体上默认为 1。
以下方法仅适用于两线芯片(指定data_pin和clock_pin):
-
:使用硬件 SPI 接口传输数据。可在两个 ESP 平台上使用。其他选项:
-
(可选,字符串):在 ESP32s 上可以选择要使用的 SPI 总线。vspi和之一hspi。
-
( Optional , int): 发送数据的频率。默认为10MHz. , 40MHz, 20MHz, 10MHz, 5MHz, 2MHz,1MHz之一500KHz。
在 ESP8266 上,只有 GPIO13 可以用于data_pin,只有 GPIO14 可以用于clock_pin.
由于历史原因,该method键还接受由单个值组成的简写语法。不再推荐使用此方法,但在此处记录以供参考。可能的值为:
-
ESP8266_DMA(对于esp8266_dma)
-
ESP8266_UART0(esp8266_uart在 0 号巴士上)
-
ESP8266_UART1(esp8266_uart1号巴士)
-
ESP8266_ASYNC_UART0(用于esp8266_uart启用异步的总线 0)
-
ESP8266_ASYNC_UART1(用于esp8266_uart启用异步的总线 1)
-
ESP32_I2S_0(esp32_i2s在 0 号巴士上)
-
ESP32_I2S_1(esp32_i2s1号巴士)
-
BIT_BANG(对于bit_bang)
4. 实验验证
我采用的硬件是esp8266,实验跟着ESPHome 和 Home Assistant点灯握手做的,完整代码如下
需要修改wifi和密码
esphome:
name: nodemcu
esp8266:
board: nodemcuv2
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
password: "73260d7b7227a21d2f841e7afb746e84"
wifi:
ssid: "J09 502"
password: "qwertyuiop111"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Nodemcu Fallback Hotspot"
password: "2RzZYd7gW4hb"
captive_portal:
# Enable switch gpio2(D4)
switch:
- platform: gpio
name: "Living Room Dehumidifier"
pin: 2
# Example configuration entry(RX)
light:
- platform: neopixelbus
type: GRB
variant: WS2811
pin: GPIO3
num_leds: 16 ##WS2812B 灯珠数目,根据实际情况填写
name: "Bedroom RGB_light" ##名称自定义
effects:
- addressable_rainbow: ##下面是效果
- addressable_color_wipe:
- addressable_scan:
- addressable_twinkle:
- addressable_random_twinkle:
- addressable_fireworks:
- addressable_flicker:
点击install, 选择wirelessly(记住需要你的设备完成上一实验才能OTA升级,并且保持设备在线,这样就可以上传成功啦)
5. 实验效果
选择nodemcu
点击一个设备
即可远程监控,可以添加到仪表盘,方便查阅
效果如下
6. 总结
本文学习了WS2812和homeassistant握手,后期会分享更多有趣物联网的操作从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。
参考文献:
开始使用 ESPHome ESPHome 和 Home Assistant点灯握手