lubeda / EsphoMaTrix

A simple DIY status display with an 8x32 RGB LED panel implemented with esphome.io and Home Assistant
MIT License
217 stars 23 forks source link

Feature Requests: Allow setting text color as rainbow / set text a number of times #46

Closed pplucky closed 1 year ago

pplucky commented 1 year ago

Hello.

Recently bought an Ulanzi clock and glad to have EsphoMaTrix working on it.

While using awtrix, there are 2 things which I REALLY miss in EsphoMaTrix (and which I think that fits in its different purpose compared to awtrix), which is to:

Would this be something potentially implementable in the future?

Thanks in advance.

lubeda commented 1 year ago

You can get similar results with the color-actions

So i think, this does not belong to the component, instead you can do it yourself with epshome in your yaml.

pplucky commented 1 year ago

You can get similar results with the color-actions

Fair enough, I'll consider that option.

  • allow to set a text to show on display only a specified number of times.

What about this? It would be useful, wouldn't it?

lubeda commented 1 year ago

Hi, the "number of times" to display is a problem. Think of only one screen in the queue. If you then specify 2 times its gone after some seconds. So i think the duration is the best way to limit the display time.

For your color idea i tried this:

time:
  - platform: homeassistant
    on_time:
      # Every 1 second
      - seconds: /1
        then:
         # logger.log: Hallo
         lambda: |-
          id(rgb8x32)->set_text_color(rand() % 255, rand() % 255, rand() % 255);
          id(rgb8x32)->set_clock_color(rand() % 255, rand() % 255, rand() % 255);

it changes the color randomly each seconds.

jrspowers commented 1 year ago

hello, I just tested the color change, works fine, but it's a pity that he also takes the message in that color with him, is it possible to have this only on the clock?

jrspowers commented 1 year ago

@lubeda is this possible what i ask above?

lubeda commented 1 year ago

From the above sample: this line changes the text color on each tick id(rgb8x32)->set_text_color(rand() % 255, rand() % 255, rand() % 255); this line changes the clock color on each tick id(rgb8x32)->set_clock_color(rand() % 255, rand() % 255, rand() % 255);

In the upcoming 2023.3.4 release

there are some other possibilities for the clock color: this changes the clock color for a whole "show_screen" intervall (see diagram in the README.md).

ehmtx:
  ....
  on_next_clock:
    lambda: |-
      id(rgb8x32)->set_clock_color(rand() % 255, rand() % 255, rand() % 255);
      id(rgb8x32)->set_weekday_color(rand() % 255, rand() % 255, rand() % 255);
      id(rgb8x32)->set_today_color(rand() % 255, rand() % 255, rand() % 255);

For a rainbox like color change you have to create a lambda on your own, but the possibilies are there!
jrspowers commented 1 year ago

hello this works very nicely now i have it in my cofig like this

time:
  - platform: homeassistant
    on_time:
      # Every 1 second
      - seconds: /1
        then:
         # logger.log: Hallo
         lambda: |-
          id(rgb8x32)->set_clock_color(rand() % 255, rand() % 255, rand() % 255);
          id(rgb8x32)->set_weekday_color(rand() % 255, rand() % 255, rand() % 255);
          id(rgb8x32)->set_today_color(rand() % 255, rand() % 255, rand() % 255);