Venho compartilhar dessa vez minha experiência com fitas LEDs, mais especificamente leds WS2812B.
Para poder integrar com o HA você vai precisar de uma placa ESP8266 ou ESP32 e 3 jumpers macho x femêa. Não precisa soldar.
Eu já tinha fita LED integrada com o meu HA, mas são fitas leds 3528 ou 5050 (modelos mais simples), e integro com o dispositivo wifi através do APP Magic Home
Porém, meu interesse dessa vez era integrar fita led WS2812B, que nada mais é que fita com led endereçável.
Fitas LEDs Endereçável
Seu diferencial é que possui LEDs que acendem verde, vermelho e azul. Utilizando a bilbioteca apropriada para Arduino é possível mixar as três cores para se obter qualquer cor no espectro RGB e por contar com LEDs WS2812B é possível controlar qual LED deve acender, qual deve apagar e qual cor cada um dos LEDs deve mostrar de forma totalmente independente dos demais LEDs.
A fita led endereçável tem alguns modelos como: WS2815, WS2813, WS2812B e WS2811. Ainda existem os modelos SK6812 e APA102 que desconheço e não sei dizer se são compostos por led endereçável.
- A luz de tira do WS2813 é uma versão atualizada do WS2812B, semelhante à forma como o WS2812B é uma versão aprimorada do WS2811, mas com a função de interrupção contínua, enquanto um IC está quebrado, o sinal ainda pode passar.
- A luz de tira WS2815 é entrada DC12v em vez de entrada DC5v, é a principal diferença,
- Com entrada de 12v, a faixa de LED WS2815 pode ser maior que a faixa de luz WS2812B devido a uma menor queda de tensão.
A fita led que comprei foi a modelo WS2812B, com 2 metros de comprimento e 30 leds por metro. Isso porque queria testar antes de investir. Comprei na Aliexpress.
WLED
Quando chegou a fita led, ainda não sabia quais opções eu poderia utilizar para integrar com o HA, e foi onde começou a saga pelo alternativa mais adequada e com algumas dicas do pessoal do Grupo do Telegram, descobri o WLED.
WLED é um projeto para uma implementação rápida e rica em recursos de um servidor da Web ESP8266/ESP32 para controlar os LEDs NeoPixel (WS2812B, WS2811, SK6812, APA102) disponibilizado no github para quem tiver interesse.
Link do projeto: GitHub - Aircoookie/WLED: Control WS2812B and many more types of digital RGB LEDs with an ESP8266 or ESP32 over WiFi!
Instalação
Para aplicar o flash, utilizo o programa esphomeflasher, mas você pode utilizar outro de sua preferência.
Download: Releases · esphome/esphome-flasher · GitHub
Após baixar o programa, você precisa baixar o arquivo binário do WLED.
Download: Releases · Aircoookie/WLED · GitHub
Durante a criação desse artigo, a versão atual é a WLED version 0.8.6, e se você perceber tem várias versões, como usei o ESP8266, baixei uma versão para esse ESP.
Mesmo assim, term várias opções e eu não encontrei em algum local que mostrasse a diferença entre um e outro, inclusive testei mais de um modelo e todos funcionaram, mas a versão que deixei no meu foi a WLED_0.8.6_ESP8266.bin.
Com o arquivo para aplicar o flash e o arquivo .bin baixados no seu PC, vamos iniciar o flash que é muito simples. Basta conectar seu ESP no seu PC, identificar a porta que está conectado, executar o esphomeflasher, selecionar o arquivo .bin WLED e iniciar o flash. Simples!
Após finalizar, com o ESP ligado na energia (5v)/PC, você pode acessar via interface web pelo IP 4.3.2.1 (http://4.3.2.1).
Interface WEB
Dentro da Interface, você pode controlar a sua fita led (porém você ainda não conectou no seu ESP) e você pode ajustar as configurações conforme o modelo da sua fita.
Abaixo, segue as configurações que precisei realizar para funcionar de forma correta o controle da fita led.
WIFI
LEDS
Você também pode baixar um APP e fazer o controle através do APP, basta adicionar o IP que seu ESP estará conectado. Android.
Conectar o ESP com a fita LED WS2812B
Como dito anteriormente, a fita WS2812B é alimentada por 5v, então não precisei colocar nenhum conversor ou adaptador para ligar do ESP.
A única coisa que você precisa realizar, é ligar os pinos corretamente no seu ESP conforme a imagem abaixo.
- Conecte a faixa DIN de led ao GPIO2 (NodeMCU / Weos pin D4).
- Conecte a faixa GND de led ao GND (qualquer um).
- Conecte a faixa 5v de led ao 3v3.
Não soldei e funcionar sem nenhum problema.
Com a fita led conectado ao ESP e alimentado por uma fonte 5v, e tudo configurado conforme as explicações anteriores, você já consegue controlar sua fita led através do WLED (Interface web ou APP).
Você pode testar trocando cores, brilho, aplicando efeitos, etc.
Se tudo está OK, podemos começar a integrar com o HA. A integração será realizado através do MQTT, para isso você precisa ter o Broker configurado, no meu caso utilizo o Mosquitto através do Add-on do Hass.io.
Dentro da interface do WLED (menu Sync Interfaces), você precisa configurar as informações do seu MQTT para poder integrar com seu HA.
Código para o MQTT
Agora que está tudo configurado, abaixo compartilho o código para você colocar dentro do light:
e criar sua fita led no seu HA.
- platform: mqtt
name: "Fita Led"
state_topic: "wled/b40141/g"
command_topic: "wled/b40141/api"
rgb_state_topic: "wled/b40141/c"
rgb_command_topic: "wled/b40141/col"
brightness_command_topic: "wled/b40141"
brightness_state_topic: "wled/b40141/g"
brightness_value_template: "{{value }} "
rgb_command_template: "{{ '#%02x%02x%02x' | format(red, green, blue)}}"
rgb_value_template: "{{ value[1:3] | int(base=16) }},{{ value[3:5] | int(base=16) }},{{ value[5:7]| int(base=16) }}"
qos: 2
optimistic: true
on_command_type: "first"
payload_on: "T=1"
payload_off: "T=0"
effect_list:
- "[FX=00] STATIC"
- "[FX=01] BLINK"
- "[FX=02] BREATH"
- "[FX=03] COLOR_WIPE"
- "[FX=04] COLOR_WIPE_RANDOM"
- "[FX=05] RANDOM_COLOR"
- "[FX=06] COLOR_SWEEP"
- "[FX=07] DYNAMIC"
- "[FX=08] RAINBOW"
- "[FX=09] RAINBOW_CYCLE"
- "[FX=10] SCAN"
- "[FX=11] DUAL_SCAN"
- "[FX=12] FADE"
- "[FX=13] THEATER_CHASE"
- "[FX=14] THEATER_C_RAINBOW"
- "[FX=15] RUNNING_LIGHTS"
- "[FX=16] SAW"
- "[FX=17] TWINKLE"
- "[FX=18] DISSOLVE"
- "[FX=19] DISSOLVE_RANDOM"
- "[FX=20] SPARKLE"
- "[FX=21] FLASH_SPARKLE"
- "[FX=22] HYPER_SPARKLE"
- "[FX=23] STROBE"
- "[FX=24] STROBE_RAINBOW"
- "[FX=25] MULTI_STROBE"
- "[FX=26] BLINK_RAINBOW"
- "[FX=27] ANDROID"
- "[FX=28] CHASE_COLOR"
- "[FX=29] CHASE_RANDOM"
- "[FX=30] CHASE_RAINBOW"
- "[FX=31] CHASE_FLASH"
- "[FX=32] CHASE_FLASH_RANDOM"
- "[FX=33] CHASE_RAINBOW_WHITE"
- "[FX=34] COLORFUL"
- "[FX=35] TRAFFIC_LIGHT"
- "[FX=36] COLOR_SWEEP_RANDOM"
- "[FX=37] RUNNING_COLOR"
- "[FX=38] RUNNING_RED_BLUE"
- "[FX=39] RUNNING_RANDOM"
- "[FX=40] LARSON_SCANNER"
- "[FX=41] COMET"
- "[FX=42] FIREWORKS"
- "[FX=43] RAIN"
- "[FX=44] MERRY_CHRISTMAS"
- "[FX=45] FIRE_FLICKER"
- "[FX=46] GRADIENT"
- "[FX=47] LOADING"
- "[FX=48] DUAL_COLOR_WIPE_IN_OUT"
- "[FX=49] DUAL_COLOR_WIPE_IN_IN"
- "[FX=50] DUAL_COLOR_WIPE_OUT_OUT"
- "[FX=51] DUAL_COLOR_WIPE_OUT_IN"
- "[FX=52] CIRCUS_COMBUSTUS"
- "[FX=53] HALLOWEEN"
- "[FX=54] TRICOLOR_CHASE"
- "[FX=55] TRICOLOR_WIPE"
- "[FX=56] TRICOLOR_FADE"
- "[FX=57] LIGHTNING"
- "[FX=58] ICU"
- "[FX=59] MULTI_COMET"
- "[FX=60] DUAL_LARSON_SCANNER"
- "[FX=61] RANDOM_CHASE"
- "[FX=62] OSCILLATE"
- "[FX=63] PRIDE_2015"
- "[FX=64] JUGGLE"
- "[FX=65] PALETTE"
- "[FX=66] FIRE_2012"
- "[FX=67] COLORWAVES"
- "[FX=68] BPM"
- "[FX=69] FILLNOISE8"
- "[FX=70] NOISE16_1"
- "[FX=71] NOISE16_2"
- "[FX=72] NOISE16_3"
- "[FX=73] NOISE16_4"
- "[FX=74] COLORTWINKLE"
- "[FX=75] LAKE"
- "[FX=76] METEOR"
- "[FX=77] METEOR_SMOOTH"
- "[FX=78] RAILWAY"
- "[FX=79] RIPPLE"
- "[FX=80] TWINKLEFOX"
- "[FX=81] Twinklecat"
- "[FX=82] Halloween Eyes"
effect_command_topic: "wled/b40141/api"
effect_state_topic: "wled/b40141/api"
effect_value_template: "{{ value }}"
Atualmente o projeto WLED tem 82 efeitos configurados, mas como podem ver, há várias versões já lançadas e sempre vem aumentando esse número de efeitos, então pode vir surgir mais opções, mas os 82 efeitos configurados já da para interagir bastante.
Observação: Para fitas com mais de 5 metros, sugiro verificar a instalação de um profissional, pois a maioria já exige uma fonte mais adequada.
Se você tem esse projeto configurado, compartilhe sua experiência, quem sabe pode ter mais detalhes que possam ajudar a todos que tem interesse.
Agradecimentos ao @Leonardo que ficou na saga me ajudando a configurar. Obrigado!