O ano novo está chegando em breve, mas o clima por várias razões às vezes não é o ano novo, e aqui a iluminação do ano novo vem em socorro. Quero falar sobre minha experiência com guirlandas e fitas de LED endereçáveis. É improvável que descubra a América, mas ficou bonito e barato.

Vou considerar duas opções - separadamente, sem a automação residencial existente e trabalhar em conjunto com uma “casa inteligente”.
Muitas informações estruturadas apareceram em fitas LED endereçáveis e, portanto, você pode facilmente fazer uma escolha informada. Por exemplo, antes de comprar, assisti atentamente aos vídeos correspondentes dos canais DrZzs (em inglês) e The Hook Up (em inglês) e tirei conclusões sobre o custo das fitas necessárias - porque o resultado do trabalho das fitas no meu caso é um - destaque colorido.
Ele optou por duas opções baratas da China:
- Fita WS2812B - 300 LEDs - 5 metros.
- WS2811 Garland - 50 LEDs x 3 peças - aproximadamente 10 metros (3 x 3,3 m)

Pixels de endereço no interior de um escritório
Nos dois casos, são necessários 5 volts para alimentar minhas fitas. Não contei com energia, mas instalei a fonte de alimentação Mean Well RS-150-5 existente e acessível.

Fonte de alimentação Mean Well RS-150-5
E a parte mais importante para gerenciar o programa de Ano Novo é o controlador. Escolhi o microcontrolador ESP8266 do fabricante chinês Espressif Systems, ou seja, no meu caso, usei uma miniplaca LOLIN (WEMOS) D1 de baixo custo.

LOLIN (WEMOS) D1 mini-psiquiatra conectado a uma fita na árvore de Natal
Hardware
Para fitas e guirlandas, há uma escolha muito ampla - há um grande número de chipsets diferentes e você precisa procurar para que o controlador suporte as fitas que você vai comprar.
Minha tarefa era usar fitas de pixel de endereço como parte da automação baseada no Home Assistant da plataforma de código aberto. A opção mais acessível para isso é usar o ESP8266. Há um grande banco de dados de controladores fabricados de fábrica compatíveis (seção LED Controller), compilados pelos autores do firmware Tasmota.
Na minha opinião, Tasmota é um bom firmware, mas para pixels controlados e motores de passo não é muito adequado.

LOLIN (WEMOS) D1 mini conectado a uma guirlanda
De software
Opção sem automação residencial
Se você deseja um início rápido "sem registro e SMS", a solução mais razoável é o firmware ESP8266 do projeto WLED (driver de efeitos de iluminação WiFi) . O firmware possui seu próprio aplicativo que permite controlar facilmente os LEDs, além de uma enorme lista de efeitos predefinidos para fitas de endereço e guirlandas. O WLED também suporta muitos protocolos de gerenciamento, incluindo MQTT , se necessário.
A solda para conectar a fita ao WEMOS não é necessária.

Interface WLED (driver de efeitos de iluminação WiFi)
Iluminação direcionada como parte de uma casa inteligente com base no Home Assistant
Note-se que o WLED recentemente (em dezembro de 2019) apareceu integração total para o Home Assistant .
Porém, desde que eu estava envolvido em guirlandas em novembro, antes que essa integração aparecesse, a conexão WLED MQTT do Assistente Doméstico me pareceu um buggy.

Painel de Controle ESPHome
Para o Home Assistant, existe um firmware ESPHome nativo que funciona com o Home Assistant sem MQTT e também suporta LEDs de endereço .
Aqui está uma lista de chipsets suportados.Clockless:
NEOPIXEL
WS2811
WS2811_400 (WS2811 com uma taxa de clock de 400kHz)
WS2812B
WS2812
WS2813
WS2852
APA104
APA106
Gw6205
GW6205_400 (GW6205 com uma taxa de clock de 400kHz)
LPD1886
LPD1886_8BIT (LPD1886 com valores de canal de cores de 8 bits)
PL9823
SK6812
SK6822
TM1803
TM1804
TM1809
TM1829
UCS1903B
UCS1903
UCS1904
UCS2903
SPI:
APA102
Dotstar
LPD8806
P9813
SK9822
SM16716
WS2801
WS2803
Como uso a imagem Hass.io , usei a opção mais simples para compilar o firmware - o complemento ESPHome Hass.io Add-on .

Janela do editor de firmware ESPHome
As guirlandas e fitas de firmware resultantes:
ws2811_string.yamlsubstitutions: devicename: ws2811_string upper_devicename: WS2811 string esphome: name: $devicename platform: ESP8266 board: d1_mini wifi: ssid: "XXX" password: "XXX" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "WS2811 string Fallback Hotspot" password: "XXX" captive_portal: web_server: port: 80 css_url: http://192.168.15.10:8123/local/webserver-v1.min.css # - https://github.com/esphome/issues/issues/648 js_url: http://192.168.15.10:8123/local/webserver-v1.min.js # Enable Home Assistant API api: # Enable OTA Access ota: # Enable verbose logging over serial logger: light: - platform: fastled_clockless chipset: WS2811 pin: D4 num_leds: 150 name: " WS2811" effects: - addressable_rainbow: name: Rainbow Effect With Custom Values speed: 30 width: 150 - addressable_color_wipe: name: Color Wipe Effect With Custom Values colors: - red: 10% green: 10% blue: 100% num_leds: 1 - red: 0% green: 0% blue: 0% num_leds: 1 add_led_interval: 100ms reverse: False - random: name: "My Fast Random Effect" transition_length: 4s update_interval: 5s - strobe: name: Strobe Effect With Custom Values colors: - state: True brightness: 100% red: 100% green: 90% blue: 0% duration: 500ms - state: False duration: 250ms - state: True brightness: 100% red: 0% green: 100% blue: 0% duration: 500ms - addressable_scan: name: Scan Effect With Custom Values move_interval: 60ms - addressable_fireworks: name: Fireworks Effect With Custom Values update_interval: 32ms spark_probability: 10% use_random_color: false fade_out_rate: 120 # sensor: - platform: uptime id: uptime_sec - platform: wifi_signal name: ${upper_devicename} WiFi Signal id: wifis_signal update_interval: 900s text_sensor: - platform: template name: ${upper_devicename} Uptime lambda: |- int seconds = (id(uptime_sec).state); int days = seconds / (24 * 3600); seconds = seconds % (24 * 3600); int hours = seconds / 3600; seconds = seconds % 3600; int minutes = seconds / 60; seconds = seconds % 60; return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() }; icon: mdi:clock-start update_interval: 113s - platform: template name: ${upper_devicename} Wifi Strength icon: "mdi:wifi" lambda: |- if (id(wifis_signal).state > -50 ) { return {"Excellent"}; } else if (id(wifis_signal).state > -60) { return {"Good"}; } else if (id(wifis_signal).state > -70) { return {"Fair"}; } else if (id(wifis_signal).state < -70) { return {"Weak"}; } else { return {"None"}; } update_interval: 900s - platform: version name: ${upper_devicename} Version - platform: template name: ${upper_devicename} MAC Address lambda: 'return {WiFi.macAddress().c_str()};' icon: mdi:fingerprint update_interval: 1d switch: - platform: restart name: ${upper_devicename} Restart
ws2811_strip.yaml substitutions: devicename: ws2811_strip upper_devicename: WS2811 strip esphome: name: $devicename platform: ESP8266 board: d1_mini_lite wifi: ssid: "XXX" password: "XXX" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "WS2811 strip Fallback Hotspot" password: "XXX" captive_portal: web_server: port: 80 css_url: http://192.168.15.10:8123/local/webserver-v1.min.css # - https://github.com/esphome/issues/issues/648 js_url: http://192.168.15.10:8123/local/webserver-v1.min.js # Enable Home Assistant API api: # Enable OTA Access ota: # Enable verbose logging over serial logger: light: - platform: fastled_clockless chipset: WS2811 pin: D4 num_leds: 300 rgb_order: GRB name: " WS2811" effects: - addressable_rainbow: name: Rainbow Effect With Custom Values speed: 30 width: 300 - addressable_color_wipe: name: Color Wipe Effect With Custom Values colors: - red: 10% green: 10% blue: 100% num_leds: 1 - red: 0% green: 0% blue: 0% num_leds: 1 add_led_interval: 100ms reverse: False - random: name: "My Fast Random Effect" transition_length: 4s update_interval: 5s - strobe: name: Strobe Effect With Custom Values colors: - state: True brightness: 100% red: 100% green: 90% blue: 0% duration: 500ms - state: False duration: 250ms - state: True brightness: 100% red: 0% green: 100% blue: 0% duration: 500ms - addressable_scan: name: Scan Effect With Custom Values move_interval: 60ms - addressable_fireworks: name: Fireworks Effect With Custom Values update_interval: 32ms spark_probability: 10% use_random_color: false fade_out_rate: 120 # sensor: - platform: uptime id: uptime_sec - platform: wifi_signal name: ${upper_devicename} WiFi Signal id: wifis_signal update_interval: 900s text_sensor: - platform: template name: ${upper_devicename} Uptime lambda: |- int seconds = (id(uptime_sec).state); int days = seconds / (24 * 3600); seconds = seconds % (24 * 3600); int hours = seconds / 3600; seconds = seconds % 3600; int minutes = seconds / 60; seconds = seconds % 60; return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() }; icon: mdi:clock-start update_interval: 113s - platform: template name: ${upper_devicename} Wifi Strength icon: "mdi:wifi" lambda: |- if (id(wifis_signal).state > -50 ) { return {"Excellent"}; } else if (id(wifis_signal).state > -60) { return {"Good"}; } else if (id(wifis_signal).state > -70) { return {"Fair"}; } else if (id(wifis_signal).state < -70) { return {"Weak"}; } else { return {"None"}; } update_interval: 900s - platform: version name: ${upper_devicename} Version - platform: template name: ${upper_devicename} MAC Address lambda: 'return {WiFi.macAddress().c_str()};' icon: mdi:fingerprint update_interval: 1d switch: - platform: restart name: ${upper_devicename} Restart
Depois de adicionar os dispositivos resultantes ao Assistente Doméstico na interface, você pode ver e definir as opções de efeitos.

Interface do Assistente Doméstico
Além disso, os efeitos podem ser usados na automação. Por exemplo, quando você abre a porta por 30 segundos, um efeito, 10 segundos, outro efeito e, em seguida, desliga para não distrair. Mas há uma condição: inclusão apenas quando a rua já está no crepúsculo.
automations.yaml ################################################### # # # WS2811 : # # # ################################################### - alias: WS2811 string trigger: - platform: state entity_id: binary_sensor.dver from: 'off' to: 'on' condition: - condition: numeric_state entity_id: 'sensor.osveshchennost_u_okna' below: 1500 # action: - service: homeassistant.turn_on data: entity_id: group.new_year #light.girlianda_ws2811 brightness: 255 effect: Rainbow Effect With Custom Values - delay: '00:00:25' - service: homeassistant.turn_on data: entity_id: group.new_year brightness: 255 effect: Color Wipe Effect With Custom Values - delay: '00:00:13' - service: homeassistant.turn_off entity_id: group.new_year - alias: Table lamp ON trigger: - platform: state entity_id: binary_sensor.dver from: 'off' to: 'on' condition: - condition: numeric_state entity_id: 'sensor.osveshchennost_u_okna' below: 90 # action: - service: homeassistant.turn_on entity_id: switch.potolochnaia_lampa - alias: Table lamp OFF trigger: - platform: state entity_id: binary_sensor.dver from: 'on' to: 'off' condition: [] action: - service: homeassistant.turn_off entity_id: switch.potolochnaia_lampa

Árvore de Natal com fita LED de endereço
Sumário
Como você pode ver, com um pouco de destreza, você pode organizar a iluminação de Ano Novo de maneira barata e ajustá-la ao sistema “smart home” existente ou usá-lo separadamente, sem automação residencial, usando um aplicativo separado em seu smartphone.
Mais detalhes podem ser encontrados no GitHub .
Publicado por: Mikhail Shardin ,
23 de dezembro de 2019