EspHoMaTriX version 2: An improved clock/status display

@lubeda How can I display weather information and second screen weather forecast information?
The icons used are the same (i can add individual icons, but the number of icons is limited to 90 for some reason, and I can’t add more).
Maybe it is possible to add an additional word to the icon name, which will identify the screen, but will be discarded when displaying and searching for the icon itself.
Like _add and then if we call to create two screens with icon and icon_add parameter we will get 2 screens with the same icons with icon name?

Or maybe add a optional parameter NAME, which if specified will identify the screen, and if not specified, it will be filled by the value of the parameter ICON, and it will be used to search for the desired screen?

Is it possible to make the clock show in 00 seconds? I.e. at the beginning of each minute if there are no force screens? Or at least at 00 seconds at 00,15,30,45 minutes of each hour?

how are the indicator bars underneath the clock an date screen defined? I don’t want to use them :-). as my two custom screens don’t have them either .

thanks
Jeti

in the yaml

show_dow: false

thanks! i cant find it in the documentation, can you point me the right way where to search for it?

you can configure a lot, details are here: GitHub - lubeda/EspHoMaTriXv2: A simple DIY status display with a 8x32 RGB LED matrix, implemented with esphome.io and Home Assistant.

ah thank you! I was aware of this docu but was searching the whole term… instead of only show_dow
thanks again!
now it works

Looking for some automation that will show me the amount of lighting that is on.

Can someone help with some code please.

What do you mean “the amount of lighting that is on”?

Number of Light on

Looks like you got it then, but are you trying to display this in esphomatrix?

yes. in the automation area

I think this what you are after GitHub - lubeda/EspHoMaTriXv2: A simple DIY status display with a 8x32 RGB LED matrix, implemented with esphome.io and Home Assistant.

Guys, I’ve upgraded to v2 and I’m about to update all my automations (sadly). I’m not able to bring the rindicator to life.
I’ll do it with node red but it’s the same behavior in HA: My servicecall data looks like this:

{
    "r": 100,
    "g": 100,
    "b": 100,
    "size": 3
}

But nothing shows up…

You are using json but correct is yaml:

service: esphome.ulanzi_show_rindicator
data:
  r: 100
  b: 100
  g: 100
  size: 3
1 Like

Thank you for your quick reply. It has to be json since I’m using it from NodeRed. And i discovered it works indeed BUT the rindicator appears only on my custom icon_screen. On the generic Clock and Date Screen, nothing appears.

Is this the normal behavior because an alert should be visible on every screen shouldn’t it?

Hi, see in branch 2023.9.1

always_show_rl_indicators (optional, boolean): If true, always show the r/l indicators on all screens. Default is to not show either on clock, date, full, and bitmap screens, left on icon, or if display gauge displayed. (default = false )

2 Likes

Thanks a lot, helps me really as I show with this colorcorner the Trashbin Sevice :slight_smile

Hi, I am quite new to this Forum.
I’m changing from Pixelit to the EspHoMaTriXv2. So the Hardware already works. My Problem is now that the display dosn’t show the time. I see the bootscreen which then freezes after a couple of seconds. The Wemos D1 mini is still reachable. I am looking for the error now for about a week without finding it. Perhaps sombody could help me here.

Here ist the yaml of the esp.

substitutions:
  devicename: pixeldisplay
  friendly_name: "PixelDisplay"
  board: d1_mini_lite
  matrix_pin: GPIO4 
  
external_components:
- source:
    type: git
    url: https://github.com/lubeda/EspHoMaTriXv2 

animation:
  - id: animation_black
    file: pixeldisplay/1pixel.gif

image:
  - id: image_black
    file: pixeldisplay/1pixel.gif

esphome:
  comment: "EHMTXv2 TEXT from LuBeDa 8266"
  name: $devicename 
  on_boot:
    lambda: |-
      id(rgb8x32)->show_rindicator(255,100,50,2);
      id(rgb8x32)->hide_rindicator();
      id(rgb8x32)->show_lindicator(255,100,250,2);
      id(rgb8x32)->hide_lindicator();
      id(rgb8x32)->show_alarm(255,0,150,3);
      id(rgb8x32)->hide_alarm();
      id(rgb8x32)->icon_screen("error","Hallo Text",false,237,20,100,200,150);
      id(rgb8x32)->force_screen("error");
      id(rgb8x32)->del_screen("error");
      id(rgb8x32)->del_screen("error",5);
      id(rgb8x32)->rainbow_icon_screen("error","Hallo Text",true,237,20);
      id(rgb8x32)->get_status();
      id(rgb8x32)->set_display_on();
      id(rgb8x32)->rainbow_text_screen("ÜÖÄüöä°C°F€--℉-℃-₿-₩-Ξ",30);
      id(rgb8x32)->set_display_off();
      id(rgb8x32)->hold_screen();
      id(rgb8x32)->show_gauge(100,0,200);
      id(rgb8x32)->hide_gauge();
      id(rgb8x32)->set_today_color(200,100,50);
      id(rgb8x32)->set_weekday_color(200,100,50);
      id(rgb8x32)->full_screen("scale");
      id(rgb8x32)->rainbow_icon_screen("error","Oh ein Text");
      id(rgb8x32)->text_screen("text",30);
      id(rgb8x32)->rainbow_text_screen("text",30);
      id(rgb8x32)->clock_screen(30,5);
      id(rgb8x32)->rainbow_clock_screen(30,5);
      id(rgb8x32)->date_screen(30,5);
      id(rgb8x32)->rainbow_date_screen(30,5);
      id(rgb8x32)->blank_screen(30,5);
      id(rgb8x32)->set_brightness(20);

esp8266:
  board: $board

font:
  - file: pixeldisplay/mateine.ttf
    size: 16
    id: default_font
    glyphs:  |
      !?"%()+*=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnÖÄÜöäüopqrstuvwxyz@<>ߧ€/
  
binary_sensor:
  - platform: status
    name: "$devicename Status"

logger:

api:

ota:
  password: !secret ota

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

light:
  - platform: neopixelbus
    id: ehmtx_light
    type: GRB
    internal: true
    variant: WS2812
    pin: $matrix_pin
    num_leds: 256
    color_correct: [30%, 30%, 30%]
    gamma_correct: 2.0
    name: "$devicename Light"
    restore_mode: ALWAYS_OFF
 
time:
  - platform: homeassistant
    id: ehmtx_time

display:
  - platform: addressable_light
    id: ehmtx_display
    addressable_light_id: ehmtx_light
    width: 32
    height: 8
    pixel_mapper: |-
      if (x % 2 == 0) {
        return (x * 8) + y;
      }
      return (x * 8) + (7 - y);
    rotation: 0°
    update_interval: 16ms
    auto_clear_enabled: true
    lambda: |-
      id(rgb8x32)->tick();
      id(rgb8x32)->draw();
      
ehmtxv2:
  id: rgb8x32
  icons2html: true
  matrix_component: ehmtx_display
  time_component: ehmtx_time
  time_format: "%H:%M"
  date_format: "%d.%m."
  scroll_small_text: true
  default_clock_font: true
  allow_empty_screen: true
  blend_steps: 16
  default_font_id: default_font
  special_font_id: default_font 
  icons: 
    - id: error
      lameid: 40530
  on_next_screen:
    - homeassistant.event:
        event: esphome.new_screen
        data_template:
          iconname: !lambda "return icon.c_str();"
          text: !lambda "return text.c_str();"
  on_add_screen:
    - homeassistant.event:
        event: esphome.new_screen
        data_template:
          iconname: !lambda "return icon.c_str();"
          mode: !lambda "return mode;"
  on_next_clock:
    - homeassistant.event:
        event: esphome.new_screen
        data_template:
          iconname: "Hallo"
  on_expired_screen:
    - homeassistant.event:
        event: esphome.new_screen
        data_template:
          iconname: !lambda "return icon.c_str();"
          text: !lambda "return text.c_str();"
  on_icon_error:
    - homeassistant.event:
        event: esphome.new_screen
        data_template:
          iconname: !lambda "return icon.c_str();"