资讯详情

WS2812和homeassistant握手

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. 配置变量:

2.2 支持以下选项:

  • 此外,还支持以下两线芯片组(setdata_pinclock_pin):

    • 800KBPS(未明确支持的芯片组推荐通用选项)

    • 400KBPS

    • WS2811

    • WS2812

    • WS2812X

    • WS2813

    • SK6812

    • TM1814

    • TM1829

    • TM1914

    • APA106

    • LC8812

    • WS2801

    • DotStar

    • LPD6803

    • LPD8806

    • P9813

        有些芯片组有两个数据引脚要连接,有些芯片组只有一个。如果只有一行,则只指定pin,否则同时指定clock_pindata_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。01,之一dynamic

  • :ESP32 的另一种方法,它使用 RMT 外设发送数据。可用于所有输出引脚。其他选项:

    • 可选):要使用的 RMT 频道。ESP32 有通道 0-7、ESP32-S2 0-3 和 ESP32-C3 0-1。在 ESP32 上默认为 6,在其他 ESP32 变体上默认为 1。

以下方法仅适用于两线芯片(指定data_pinclock_pin):

  • :使用硬件 SPI 接口传输数据。可在两个 ESP 平台上使用。其他选项:

    • 可选,字符串):在 ESP32s 上可以选择要使用的 SPI 总线。vspi和之一hspi

    •  ( Optional , int): 发送数据的频率。默认为10MHz. , 40MHz20MHz10MHz5MHz2MHz,1MHz之一500KHz

    在 ESP8266 上,只有 GPIO13 可以用于data_pin,只有 GPIO14 可以用于clock_pin.

由于历史原因,该method键还接受由单个值组成的简写语法。不再推荐使用此方法,但在此处记录以供参考。可能的值为:

  • ESP8266_DMA(对于esp8266_dma

  • ESP8266_UART0esp8266_uart在 0 号巴士上)

  • ESP8266_UART1esp8266_uart1号巴士)

  • ESP8266_ASYNC_UART0(用于esp8266_uart启用异步的总线 0)

  • ESP8266_ASYNC_UART1(用于esp8266_uart启用异步的总线 1)

  • ESP32_I2S_0esp32_i2s在 0 号巴士上)

  • ESP32_I2S_1esp32_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点灯握手

NeoPixelBus Light

标签: 10灯条连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台