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_uart
1号巴士)
-
ESP8266_ASYNC_UART0
(用于esp8266_uart
启用异步的总线 0)
-
ESP8266_ASYNC_UART1
(用于esp8266_uart
启用异步的总线 1)
-
ESP32_I2S_0
(esp32_i2s
在 0 号巴士上)
-
ESP32_I2S_1
(esp32_i2s
1号巴士)
-
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点灯握手