A simple DIY status display with an 8x32 RGB LED

Sorry, you fixed it. My example was wrong.

Out of curiosity, any one tried to use more than one 8x32 led matrix, like two or maybe even three? :stuck_out_tongue:

Yes, kind of…

I have two displays always running. They all show the same content. Therefor i use this script:

description: Send a screen to all active ehmtx devices
fields:
  title:
    description: The title of the notification
    example: State change
  message:
    description: The message content
    example: The light is on!
sequence:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.awtrix_status
            state: 'on'
        sequence:
          - service: esphome.awtrix_screen
            data:
              icon_name: '{{ icon_name }}'
              text: '{{ text }}'
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.ehmtx8266_status
            state: 'on'
        sequence:
          - service: esphome.ehmtx8266_screen
            data:
              icon_name: '{{ icon_name }}'
              text: '{{ text }}'
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.ehmtx32_status
            state: 'on'
        sequence:
          - service: esphome.ehmtx32_screen
            data:
              icon_name: '{{ icon_name }}'
              text: '{{ text }}'
mode: single
alias: EHMTX screen to all
icon: mdi:arrange-bring-forward
1 Like

Each with it’s own esp? I was thinking hooking like two of this 8x32 matrixes on one esp in series to get for example a 16x32 or a 8x64 matrix display?

Each display has 256 pixels so not sure what the limit (probably memory) is for a esp82xx or a esp32 :thinking:

Yes,
but it should be possible.
But there are realy some limitiations in the hardware. E.G. the fontscrolling. Esphome has no method to limit the text to the needed parts so it uses a lot of memory for the text in RAM. Other parts like the icons will also consume a lot of memory 8x8 vs. 16x16 icons == 4 times RAM and flash…

Perhaps i will give it a try but only the 8x64 style…

1 Like

But…
The day indicator needs a rework, also the alarm and indicator on the right side. Also the calculation of the scrolling…

It is still possible but needs more work.

If you like to send screens to your display with notify calls use this EHMTX notify component.

Now you can use it in alert to send messages to your display in a more streamlined way.

1 Like

Since my pull requests to the esphome core are approved now, some important parts of my esphome-component will be officially available with the upcoming esphome release 2022.5! :slight_smile:

Then i am able to clean up a little bit and release the version 1.0 of my component. Then my rgb565-branch will become “main” which makes it much easier to use it.
thanx to @jesserockz

2 Likes

This is really awesome! I just finished putting one of these together and everything is working great so far.

One question: is it possible to disable the date screen and only show the time if there are no other screens active?

Yes, just make these variables equal. show_screen is the duration of each time slot and show_time is the duration of the time display.

ehmtx:
  show_clock: 6
  show_screen: 6

Thanks! Although that’s not quite working for me. If I set both show_clock and show_screen to 6, the date still flashes on the display before moving on to the next screen.

Also, I’m seeing some generally wonky timing for screens. For example, I currently have two screens set up so I’d expect to see the following sequence:

clock (6s)
screen 1 (6s)
screen 2 (6s)
...

Instead what I’m seeing is the following:

clock (12s) 
date (1s) 
screen 1 (14s) 
screen 2 (14s) 
screen 1 (14s) 
screen 2 (14s) 
...

I’m using the date-time branch, if that’s relevant.

Any thoughts on what could be causing this?

I will investigate. The screen_time automatically increases if the text must be scrolled, so the 14s depends on the textlength. But the 12s+1s thing suprises me.

Thanks, let me know if there’s any logs or other config info that would be helpful!

For the 14s screens, only one of those had text long enough to require scrolling. Is the screen duration determined by the longest screen or is it calculated for each screen?

please try the “2022.6.1” branch, there is a new option to disable the display of the date at all.

ehmtx:
  show_clock: 6
  show_screen: 10
  show_date: false

with this config, the clock should be displayed for 6 second (+/- 1 second because of the resolution) an the screens should be displayed for 10 second (+/- 1 second) or more if the text has to be scrolled.

Thanks! The “2022.6.1” branch definitely fixed the date issue, although I’m still seeing some strange screen timing things. Here’s a log output showing the screen switching for me. In this test, I’m using the following config:

show_clock: 6 
show_screen: 10
show_date: false

Log output (with LED Brightness updates removed for clarity):

...
[12:40:32][C][EHMTX:411]: Displaytime (s) clock: 6 screen: 10
[12:40:32][C][EHMTX:413]: show day of week
[12:40:32][C][EHMTX:421]: weekstart: sunday
[12:40:40][D][api:102]: Accepted 192.168.55.150
[12:40:40][D][api.connection:827]: Home Assistant 2022.6.4 (192.168.55.150): Connected successfully
[12:40:40][D][time:041]: Synchronized time: 2022-06-11 12:40:40
[12:40:46][D][EHMTX:092]: icon: alert found id: 0
[12:40:46][D][EHMTX:016]: findfreeslot for icon: 0
[12:40:46][D][EHMTX:118]: display length text: test t: 10.00 default: 10
[12:40:46][D][EHMTX:292]: add_screen icon: 0 iconname: alert text: test duration: 5 alarm: 0
[12:40:52][D][EHMTX:092]: icon: mario found id: 10
[12:40:52][D][EHMTX:016]: findfreeslot for icon: 10
[12:40:52][D][EHMTX:118]: display length text: mario t: 10.00 default: 10
[12:40:52][D][EHMTX:292]: add_screen icon: 10 iconname: mario text: mario duration: 5 alarm: 0
[12:40:53][D][EHMTX:214]: next action: show screen
[12:41:14][D][EHMTX:214]: next action: show screen
[12:41:35][D][EHMTX:208]: next action: show clock
[12:41:56][D][EHMTX:214]: next action: show screen
[12:42:17][D][EHMTX:214]: next action: show screen
[12:42:38][D][EHMTX:208]: next action: show clock
[12:42:59][D][EHMTX:214]: next action: show screen
[12:43:20][D][EHMTX:214]: next action: show screen
[12:43:41][D][EHMTX:208]: next action: show clock

As you can see above, all of my screens (including the clock) are being displayed for 21 seconds despite being set to 10 and 6.

I wonder if this could be a processor specific bug? I’m running this on an ESP8266 currently, but I can try it on an ESP32 as well this evening and see if the behavior is the same.

please try the “2022.6.2” branch this should fix the problem. Finally

1 Like

That fixed it! Thanks for looking into this!

Hey. I have this problem. My display direction is different. What i need to change to match my display rotation? Here is picture:

It is not clear from the picture what you mean, but if I understand correctly, the display shows it in portrait. The only thing I can think of is to change the position.
In the esp configuration look for:

display:
    rotation: 0°

You can change 0, 90, 180, 270

EsphomeMaTrix uses the addressable_light display from esphome. There are multiple configuration options. The easiest one to fix is the rotation, but if the order or the layout of your LEDs is different, you can configure it via a pixel_mapper: Addressable Light — ESPHome