[APP][Pro] Esphome Controller App

**
Test Report: ESPHome Controller - Generic Driver & Light Driver

Hi Ugur,

Detailed test results for the two things you mentioned in your previous reply: generic driver auto-discovery and the Light driver supportedColorModes fix.

Setup

Hardware: Sonoff RE5V1C (ESP8266), ESPHome 2025.12.5, Homey Pro 2023 latest, ESPHome Controller latest beta (app restarted)

ESP exposes 6 entities through Native API (confirmed in ESP web UI log):

Test A — Generic ESPHome Device Driver

ESP entity Visible in Homey? Note
Relay (light.binary) :white_check_mark: On/off works
WiFi RSSI :white_check_mark: Name override: shows “Signal Strength” instead of “WiFi RSSI”
Uptime (raw sec) :cross_mark: Entity is sent but never appears in Homey UI
Uptime Human :white_check_mark: Name override: shows “Uptime” instead of “Uptime Human”, takes the “slot” of the raw Uptime entity
IP Address :cross_mark: Entity sent (template text_sensor), doesn’t appear in Homey UI
Current SSID :cross_mark: Entity sent (template text_sensor), doesn’t appear in Homey UI

Issues:

  1. Text_sensor entities aren’t discovered — three template text_sensors are being sent from the ESP, only one (Uptime Human) shows up in Homey.

  2. Name field is ignored — Homey replaces user-defined names with generic names based on device_class. “WiFi RSSI” → “Signal Strength”, “Uptime Human” → “Uptime”. This breaks the ability to have multiple entities of the same class with meaningful names (which was the original case in my first post — two temperature sensors on the same device as pad_temp and ambient_temp).

  3. Icon metadata is ignoredicon: "mdi:clock-outline" A generic dashed-frame icon is shown. Is this a limitation on Homey’s part or do I need some other approach?

  4. device_class: duration not mapped — raw Uptime with device_class: duration and unit: s doesn’t create any capability in Homey.

Test B — Dedicated “Light Driver”

  • On/off button works :white_check_mark:

  • Brightness slider present — shouldn’t be, binary light exposes only ON_OFF color mode

  • RGB color picker present — shouldn’t exist

  • Cold/Warm (color temperature) slider present — shouldn’t exist

  • No diagnostic entities (WiFi RSSI, Uptime, IP, SSID, Human Uptime) shown

Homey Light driver still shows all four sliders. It seems the supportedColorModes reading doesn’t work as intended.

YAML I’m using (Homey-relevant parts)

light:
  - platform: binary
    id: relay
    name: "Relay"
    output: relay_out
    icon: "mdi:lightbulb"
    restore_mode: RESTORE_DEFAULT_OFF

sensor:
  - platform: wifi_signal
    name: "WiFi RSSI"
    update_interval: 60s
    device_class: signal_strength
    unit_of_measurement: "dBm"
    accuracy_decimals: 0
    entity_category: diagnostic

  - platform: uptime
    name: "Uptime"
    id: uptime_sec
    update_interval: 60s
    device_class: duration
    unit_of_measurement: "s"
    accuracy_decimals: 0
    entity_category: diagnostic

text_sensor:
  - platform: template
    name: "IP Address"
    id: ip_addr
    icon: "mdi:ip-network"
    entity_category: diagnostic
    update_interval: 60s
    lambda: |-
      return {WiFi.localIP().toString().c_str()};

  - platform: template
    name: "Current SSID"
    id: current_ssid
    icon: "mdi:wifi"
    entity_category: diagnostic
    update_interval: 60s
    lambda: |-
      return {WiFi.SSID().c_str()};

  - platform: template
    name: "Uptime Human"
    id: uptime_human
    icon: "mdi:clock-outline"
    update_interval: 60s
    entity_category: diagnostic
    lambda: |-
      if (isnan(id(uptime_sec).state)) {
        return {"starting..."};
      }
      int seconds = (int)id(uptime_sec).state;
      int days = seconds / 86400;
      seconds %= 86400;
      int hours = seconds / 3600;
      seconds %= 3600;
      int minutes = seconds / 60;
      char buf[32];
      sprintf(buf, "%dd %02dh %02dm", days, hours, minutes);
      return {buf};

Summary list:

  1. Light driver - binary light should show only on/off without any sliders

  2. Generic driver - template text_sensor discovery

  3. Generic driver - device_class: duration mapping

  4. Generic driver - respect for name field - instead of overriding with a generic name

  5. Generic driver - icon metadata - If this is possible

I would like you to suggest to me if there is a different approach, feel free to point that out.

Happy to test the new beta with these fixes and send logs + screenshots. And let me know if you need a different YAML setup

@Aco_Mihaljevic @Silicon

  1. Fixed Light Driver: Resolved an issue where binary lights (ON/OFF only) incorrectly displayed brightness, color temperature, and RGB sliders. Stale capabilities are now cleanly removed, preventing UI clutter.
  2. Enhanced Text Sensors: The generic driver now supports all text_sensor entities (e.g., IP Addresses, SSID names), not just “uptime” sensors.
  3. Duration Sensor Support: Sensors utilizing the duration device class or time-based units (s, min, h) are now properly discovered and mapped to generic measurements.
  4. Preserved Entity Names: Fixed an issue where custom sensor names defined in ESPHome YAML were overwritten by Homey’s default localized capability titles (e.g., forcing “Signal Strength” instead of “WiFi RSSI”). Custom names are now strictly respected.
  5. Ratgdo v32 Enhancements: Added dedicated matching rules for Ratgdo v32 garage controllers. vehicle_detected, vehicle_arriving, and vehicle_leaving are now correctly mapped to Presence sensors. vehicle_distance_actual and other distance inputs are natively supported as numeric measurements.

This seems to match when adding a generic ESPHome device but not when adding as a ratgdo, and I think there is an issue with not using the base ratgdo yaml.

Edit: also I’m not sure it is a yaml issue… I’m not getting cards I might expect like vehicle arriving to use in flows, but I can see the status when viewing the device.

Hi Ugur,

Tested the new beta 1.1.24. Here is what I found

What is fixed :white_check_mark:

Dedicated Light driver no longer shows the RGB color picker or Cold/Warm slider for binary light.
All good, thanks!


Test A — Generic ESPHome Device Driver

What works: Relay on/off button, Signal Strength display, Uptime Human display.

What doesn’t work:

  1. name field override inconsistent — respected on some entities, not on others — from my ESP I’m sending:

    • name: "WiFi RSSI" → Homey shows “Signal Strength” (overridden)

    • name: "Uptime Human" → Homey shows “Uptime Human” (name respected), GOOD

    So name is read for some entities but not others. The logic isn’t clear. The same logic should apply to all entities.

  2. Template text_sensor entities invisible — IP Address and Current SSID are sent from the ESP (confirmed in the log), but don’t appear in Homey UI:

   [D][text_sensor:097] 'IP Address': Sending state '192.168.50.2'
   [D][text_sensor:097] 'Current SSID': Sending state 'mitardobriNet'
  1. Raw Uptime (sensor with device_class: duration) invisible — sent from the ESP, doesn’t show up in Homey UI:
   [D][sensor:135] 'Uptime': Sending state 12191.79 s
  1. Icon metadata ignoredicon: "mdi:clock-outline" and other icons don’t get applied. A generic dashed-frame icon is shown.

  2. Brightness slider present — the generic driver shows a brightness slider for binary light even though the hardware is a relay (on/off only). My YAML uses the simplest binary light platform which exposes only the on/off capability — no brightness support. The slider can be moved but doesn’t do anything.


Test B — Dedicated Light Driver

What works: Relay on/off button, RGB and Cold/Warm sliders are gone (that’s the fix from last round).

What doesn’t work:

  1. Brightness slider still present — same issue as in Test A. Binary light has no brightness capability since the hardware is a relay. The slider should disappear for on/off-only devices just like you removed RGB and Cold/Warm.

  2. Diagnostic sensors completely missing — when I add the ESP as “ESPHpmeLight” none of the WiFi RSSI / Uptime / IP Address / Current SSID / Uptime Human sensors show up in the UI. I also checked the tools.developer - they are not there either.
    For comparison, any Shelly devices (Lights, 1PM, RGB) in Homey show all diagnostics on the device dashboard (signal strength, uptime, etc.) alongside the main control. It would be really useful if the dedicated Light driver did the same — sensors on the dashboard next to the on/off control.


UI Bug — Buttons disappear when switching between devices

[screenshot: empty dashboard]

Happens on both drivers (Generic and Light). Steps to reproduce:

  1. Click and open the ESPHome device in Homey UI

  2. Click on another device in Homey

  3. Go back to the ESPHome device

Result: All buttons (ON/OFF and Brightness) disappear. Dashboard on Generic i OK. The page has to be refreshed to get the buttons back


It seems we are doing well :raising_hands:

Well done, thanks!

Thank you for the tests you’ve conducted and your feedback.

Ratgdo Fix: Enabled full visibility for all entities in the Ratgdo driver, including vehicle sensors, distance measurements, and secondary switches. New Sensor Support: Added support for previously missing entities like IP Address, SSID, Gas, and Frequency sensors. UI Bug Fix: Resolved the issue where control buttons and sliders would disappear when switching between device cards. Binary Light Fix: Removed redundant brightness sliders for simple On/Off lights (e.g., status LEDs). Naming Consistency: User-defined entity names from ESPHome YAML are now fully respected over generic translations. Icon Mapping: Added automatic icon mapping for common sensors like Uptime, Distance, and RSSI. Core Stability: Refactored driver architecture for more robust connections and consistent state updates across all device types.

Hi Ugur,

Tested v1.2.1. Big progress, thanks!

Fixed :white_check_mark:

Binary light brightness slider, UI bug with disappearing buttons, raw Uptime now visible, IP Address now visible, Signal Strength has wifi icon, Dedicated Light shows diagnostic sensors.


Test A — Generic ESPHome Device Driver

Works: Relay on/off, Signal Strength, Sensor Value (Uptime), Uptime Human, IP Address.

Doesn’t work:

  • Current SSID invisible — ESP sends it (confirmed in log), doesn’t show in Homey UI

  • Entity mapping / naming issue (below will be explained)

  • Icons from YAML not woriking


Test B — Dedicated Light Driver

Works: Same as Test A

Doesn’t work: Same issues as Test A


Main remaining issue — entity mapping

Changelog says “User-defined entity names from ESPHome YAML are now fully respected”, but some entities are being remapped into generic Homey capabilities entirely — not just renamed:

ESP sends Homey shows Value
name: "Uptime Human" “Uptime Human” :white_check_mark: “1d 04h 46m”
name: "IP Address" “IP Address” :white_check_mark: “192.168.50.2”
name: "WiFi RSSI" (device_class: signal_strength) “Signal Strength” :cross_mark: -76 dBm
name: "Uptime" (device_class: duration) “Sensor Value” :cross_mark: 103626.1 s

The “Sensor Value” label on raw Uptime is revealing — the value (103626 s) matches the uptime, but the entity got mapped to a generic “Sensor Value” capability instead of keeping its name.

This affects the multi-instance use case from my original post. For a device with two temperature sensors:

yaml

- name: "Pad Temperature"
  device_class: temperature
- name: "Cat Body Temperature"
  device_class: temperature

If the same logic applies, both would collapse into one generic measure_temperature capability and lose their distinct names. Your earlier reply mentioned sub-capabilities via object_id (e.g., measure_temperature.pad_temp) are already supported — but that doesn’t seem to be happening for duration or signal_strength.

Ideally: always use YAML name as display title, or properly implement sub-capabilities per object_id.


Icons

Changelog mentions auto icon mapping for Uptime, Distance, RSSI. RSSI works, but Uptime (raw and Human) still shows a dashed-frame instead of a timer/clock icon.

Would be great if the app read the icon field directly from ESPHome metadata — that way users could pick any of 7000+ MDI icons via YAML ( Material Design Icons - Icon Library - Pictogrammers ) without needing hardcoded mappings.


UX note — Duplicate Device Data block

This is now. Tried adding the same ESP as both Generic and Light in parallel (for side-by-side comparison) — app blocked it with “Duplicate Device Data” error. Makes sense for end users, but an override option or warning instead of hard block would help for testing and advanced use, but OK.

Sorry if I’m intruding with suggestions. I work on the product team, which is my professional deformation :sweat_smile:
This is really great progress. Thanks!

Also, feel free to suggest what needs to be tested

thank you again for the very detailed retest — it helped a lot.

I’ve pushed a new beta update focused on the remaining items from your latest report:

  • Fixed: Current SSID text_sensor now shows up correctly (Generic + Dedicated Light).
  • Fixed: device_class: duration now maps to a dedicated duration capability instead of falling back to generic “Sensor Value”.
  • Improved: entity mapping now prefers per-entity sub-capabilities for sensor/text/alarm/meter classes, so entities are less likely to collapse into one generic capability.
  • Improved: cleanup of stale legacy capabilities (old generic mappings) after reconnect/refresh.
  • Improved: uptime capabilities now use a clock icon (both text uptime and numeric duration uptime).
  • Improved: basic icon hinting from ESPHome metadata (e.g. clock/timer-like icons) where possible.

Notes:

  • “Duplicate Device Data” protection is still intentional to prevent accidental duplicate device IDs.
  • Full direct rendering of arbitrary MDI icons from YAML is still limited by Homey capability icon handling, but icon mapping/hints are improved.

If you have time, could you please run this checklist on the new beta?

  1. Generic driver:

    • Verify Relay, WiFi RSSI, Uptime (raw seconds), Uptime Human, IP Address, Current SSID all appear.
    • Confirm each keeps a distinct title and does not collapse into a single generic tile.
  2. Dedicated Light driver (binary light):

    • Confirm only On/Off is shown for binary relay light.
    • Confirm no brightness/RGB/CCT controls appear.
    • Confirm diagnostic sensors are visible as expected.
  3. UI stability:

    • Open ESPHome device card, switch to another device, return again.
    • Confirm controls/sensors remain visible (no disappearing buttons).

If possible, please share:

  • one screenshot from Generic
  • one screenshot from Light
  • app diagnostic log right after opening both cards

Thanks again — your testing quality is excellent and super helpful.

Hi Ugur,

Cleaned up everything (deleted devices, uninstalled old beta, installed 1.2.3 fresh, re-added devices).

1. Generic ESPHome Driver

Entity Status
Relay button :cross_mark: Missing
WiFi RSSI :cross_mark: Missing
Uptime (raw) :white_check_mark: Shows as “Duration”, not as name from Yaml
Uptime Human :cross_mark: Missing
IP Address :white_check_mark:
Current SSID :white_check_mark:

2. Dedicated Light Driver

Entity Status
Relay (on/off) :white_check_mark:
Brightness/RGB/CCT :white_check_mark: Not shown (correct for binary light)
WiFi RSSI :cross_mark: Missing
Uptime (raw) :white_check_mark: Shows as “Duration”, not as name from Yaml
Uptime Human :cross_mark: Missing
IP Address :white_check_mark:
Current SSID :white_check_mark:

3. UI stability

All good - stay visible when switching between devices

Regressions vs 1.2.1

  • Relay button is missing in Generic driver (worked in 1.2.1)

  • WiFi RSSI is missing in both drivers (showed as “Signal Strength” in 1.2.1)

  • Uptime Human (template text_sensor) is missing in both drivers (worked in 1.2.1)

ESP is sending all of these (confirmed in ESP web UI log), but they don’t appear in Homey UI

About the diagnostic log

I was not able to find this log in Homey UI. I also looked in tools.developer.homey.app but couldn’t find any logs specific for the app or the device
Give me the instructions and Im happy to send it once I know where to look :raising_hands:

Thanks!