Bunte Adress-LEDs für das neue Jahr ohne Programmieren und Löten

Das neue Jahr steht vor der Tür, aber die Stimmung ist aus verschiedenen Gründen manchmal nicht die des neuen Jahres, und hier kommt die Erleuchtung des neuen Jahres zur Rettung. Ich möchte über meine Erfahrungen mit adressierbaren LED-Girlanden und Bändern sprechen. Es ist unwahrscheinlich, dass ich Amerika entdecke, aber es hat sich als wunderschön und kostengünstig herausgestellt.



Ich werde zwei Optionen betrachten - separat ohne vorhandene Hausautomation und in Verbindung mit einem „Smart Home“ arbeiten.


Auf adressierbaren LED-Bändern sind sehr viele strukturierte Informationen aufgetaucht, sodass Sie leicht eine fundierte Auswahl treffen können. Zum Beispiel habe ich mir vor dem Kauf die entsprechenden Videos aus den Kanälen DrZzs (in Englisch) und The Hook Up (in Englisch) sorgfältig angesehen und Schlussfolgerungen über die Kosten der erforderlichen Bänder gezogen, da das Ergebnis der Arbeit der Bänder in meinem Fall eine einfarbige Hervorhebung ist.


Er entschied sich für zwei preiswerte Optionen aus China:


  1. WS2812B Band - 300 LEDs - 5 Meter.
  2. WS2811 Girlande - 50 LEDs x 3 Teile - ungefähr 10 Meter (3 x 3,3 m)


Adresspixel in einem Büroinnenraum


In beiden Fällen sind 5 Volt erforderlich, um meine Bänder mit Strom zu versorgen. Ich habe nicht mit Strom gerechnet , sondern das vorhandene und kostengünstige vorhandene Mean Well RS-150-5 -Netzteil installiert.



Netzteil Mean Well RS-150-5


Und der wichtigste Teil für die Verwaltung des Neujahrsprogramms ist der Controller. Ich habe mich für den ESP8266-Mikrocontroller des chinesischen Herstellers Espressif Systems entschieden, in meinem Fall also für eine preiswerte LOLIN (WEMOS) D1-Minikarte .



LOLIN (WEMOS) D1 Minischrumpf mit einem Band am Weihnachtsbaum verbunden


Hardware


Für Bänder und Girlanden gibt es eine sehr große Auswahl - es gibt eine große Anzahl verschiedener Chipsätze und Sie müssen darauf achten, dass der Controller die Bänder unterstützt, die Sie kaufen möchten.
Meine Aufgabe bestand darin, Adresspixelbänder als Teil der Automatisierung auf der Basis der Open-Source-Plattform Home Assistant zu verwenden . Die günstigste Option hierfür ist die Verwendung des ESP8266. Es gibt eine große Datenbank kompatibler werkseitig hergestellter Controller (Abschnitt LED-Controller), die von den Autoren der Tasmota-Firmware zusammengestellt wurde.
Meiner Meinung nach ist Tasmota eine gute Firmware, aber für gesteuerte Pixel und Schrittmotoren nicht sehr geeignet.



LOLIN (WEMOS) D1 mini mit einer Girlande verbunden


Software


Option ohne Hausautomation


Wenn Sie einen schnellen Einstieg „ohne Registrierung und SMS“ wünschen, ist die ESP8266-Firmware des WLED-Projekts (WiFi Lighting Effects Driver) die sinnvollste Lösung. Die Firmware verfügt über eine eigene Anwendung, mit der Sie die LEDs einfach steuern können, sowie über eine große Liste vordefinierter Effekte für Adressbänder und Girlanden. WLED unterstützt bei Bedarf auch viele Verwaltungsprotokolle, einschließlich MQTT .
Ein Löten zum Anschließen des Bandes an WEMOS ist nicht erforderlich.



WLED-Schnittstelle (WiFi Lighting Effects Driver)


Gezielte Beleuchtung als Teil eines Smart Homes basierend auf Home Assistant


Es sollte beachtet werden, dass WLED kürzlich (im Dezember 2019) die vollständige Integration für Home Assistant erschien .
Aber da ich im November mit Girlanden beschäftigt war, bevor diese Integration auftrat, schien mir die Verbindung von Home Assistant <-> WLED MQTT fehlerhaft.



ESPHome-Systemsteuerung


Für Home Assistant gibt es eine native ESPHome- Firmware, die mit Home Assistant ohne MQTT zusammenarbeitet und auch Adress-LEDs unterstützt .


Hier ist eine Liste der unterstützten Chipsätze.

Uhrlos:
NEOPIXEL
WS2811
WS2811_400 (WS2811 mit einer Taktrate von 400kHz)
WS2812B
WS2812
WS2813
WS2852
APA104
APA106
Gw6205
GW6205_400 (GW6205 mit einer Taktrate von 400 kHz)
LPD1886
LPD1886_8BIT (LPD1886 mit 8-Bit-Farbkanalwerten)
PL9823
SK6812
SK6822
TM1803
TM1804
TM1809
TM1829
UCS1903B
UCS1903
UCS1904
UCS2903


SPI:
APA102
Dotstar
LPD8806
P9813
SK9822
SM16716
WS2801
WS2803


Da ich das Hass.io- Image verwende, habe ich die einfachste Option zum Kompilieren der Firmware verwendet - das ESPHome Hass.io-Add-On-Add-On .



ESPHome-Firmware-Editorfenster


Die resultierenden Firmware-Girlanden und Bänder:


ws2811_string.yaml
substitutions: 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 

Nachdem Sie die resultierenden Geräte zum Home Assistant in der Benutzeroberfläche hinzugefügt haben, können Sie die Effektoptionen anzeigen und einstellen.



Home Assistant-Schnittstelle


Effekte können auch in der Automatisierung verwendet werden. Wenn Sie beispielsweise die Tür 30 Sekunden lang öffnen, wird ein Effekt, 10 Sekunden lang ein anderer Effekt und dann ausgeschaltet, um nicht abzulenken. Aber es gibt eine Bedingung: Einbeziehung nur, wenn die Straße bereits in der Dämmerung ist.


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 


Weihnachtsbaum mit Streifen der Adresse LED


Zusammenfassung


Wie Sie sehen, können Sie mit etwas Geschick die Beleuchtung für das neue Jahr kostengünstig organisieren und in das vorhandene „Smart Home“ -System einbauen oder diese separat ohne Heimautomatisierung mithilfe einer separaten Anwendung auf Ihrem Smartphone verwenden.


Weitere Details finden Sie auf GitHub .


Gepostet von: Mikhail Shardin ,
23. Dezember 2019

Source: https://habr.com/ru/post/de481566/


All Articles