我正在研究一个项目,在我的楼梯的每个步骤上都有带有WS2812B LED的ESP32。我选择了在Docker中的HA下运行的Esphome来使用PIR传感器运行序列。该项目总共有796个LED分为14个分区(可变Lenghts)。
我现在正在工作多天,以摆脱我遇到的问题,但无法摆脱困境。基本上,创建的YAML文件在封闭式集成中起作用。相关代码块:
灯: - 平台:fastled_clockless芯片组:WS2812B RGB_ORDER:GRB内部:true PIN:gpio4 num_leds:796名称:“楼梯” ID:楼梯
和
#为每个步骤创建14个分区#LED带WS2812B,总计796 LED#步骤1:52 LED- LED 0到LED 51-平台:分区名称:“ step1” ID:step1 id:step1内部:真实段: -1至:50
和
#从下部到顶部运行灯 - ID:LightDownUp然后: - light.turn_on:id:step1 transition_length:!lambda | - 返回ID(transition);亮度:!lambda | - 返回ID(亮度);红色:!lambda | - 返回ID(红色);绿色:!lambda | - 返回ID(绿色);蓝色:!lambda | - 返回ID(蓝色);- light.turn_on:id:step2 ....等,
跳过进一步的代码,因为它不会导致问题。
首先,我确实经历了许多其他主题中所描述的经常认可的闪烁。当监视“对数”功能以及通过API连接到HA时,这些故障会增加。没有,闪烁是相当有限的。正如我所看到的,可以在中断手柄中找到原因。
为了解决这个问题,我试图踏上Neopixelbus:
灯: - 平台:Neopixelbus类型:GRB变体:WS2812X方法:ESP32_I2S_1 PIN:GPIO4 NUM_LEDS:796名称:“楼梯” ID:楼梯
这种LED数量有限,但是,我很清楚,在使用超过350 LED时,Neopixelbus或不与分区螺丝钉结合。
我进行了无休止的尝试来解决这些问题。
玩不同的Neopixelbus和封闭式库(当然不是同时):
Platformio_options:
lib_deps:
-NeopixelBus@2.6.0(顺便说一句,当前标准的分散2.5.7根本不起作用)
( - 异步)
( - fastled@3.4.0)
他们都没有解决这个问题。
我周围看到的最终建议是使用中断处理,例如在上面包括以下一个#包括fastled_light.h中的“ fastled.h”:
#定义fastled_interrupt_retry_count
#定义fastled_allow_interrupts 0
不幸的是,这样做并不容易,因为随后的库(在这种情况下,fastled_light.h)每次与源基础的库时都会被覆盖,该库是从源基础上进行编译的,该库在Esphome Docker容器中位于某个地方。
因此,在解释我有一些问题之后,有人可以回答:
我更喜欢Neopixelbus,因为它通过DMA或其他基于非间歇性的方法将输出处理为LED的输出,这是根解决方案。是否可以在ESPHOME的ESP32中完美地描述上面描述的方式来解决〜800 LED?如何?
如果是剩下的选项(本身功能,但与故障相关),我该如何使用上述包含#Defines对于封闭式中断,我不知道如何更改HA Esphome容器之外的源基础。
欢迎任何其他解决方案,如果您需要其他信息,请在我不在这里的创造力时表达式...