Thanks for your involvement 
I think the ability to display text goes far beyond my specific use case for this vacuum.
Ideas :
- Block « Today’s birthdays » that would show the names of people to celebrate.
- Block « Personal message » that would change according to needs.
- Block « Maxim of the day » (personally my console always shows me a little Chuck Norris thought, right now it’s « Chuck Norris can destroy the void »).
- Block « Last SMS » that would display the last SMS received.
- Block « Error message » for a specific command (like wakeonlan or another command regularly executed from the Raspberry). It’s impossible to list all errors from all commands and we would lose the ability to specify an error or to display a custom text.
- …
All of this easily set up via MQTT by the dev and without having to touch Gladys’s source code, because :
- It’s complicated.
- We depend on you.
- You need time.
- It’s blocking while it’s being developed.
- It doesn’t make sense to develop personal needs inside Gladys.
In the end, I think you should continue as you’re doing, constants for values, but you should create a Feature « Text » that would allow displaying the text of your choice.
That way, if it’s a specific text you can display it, and if it’s a text that can be turned into a constant, you can display it until the constants and Features are created.
Because yes, it’s nicer to be able to use the proper Feature, with its unit and icon.
To go further, it would also be necessary to develop the ability to use a text value in the scene trigger « Device state change » and « Continue only if ».
And the best would be to allow customizing the icon (yeah I’m annoying to the end
).
My point of view is that you should leave a simple way to display whatever you want so that every junior dev can make their little personal scripts autonomously.
Back to my vacuum, here is the information it can give me :
States that could be defined in Gladys constants :
Value ‹ docked › in the topic ‹ state:state ›.
Value ‹ medium › in the topic ‹ state:fan_speed ›.
Value ‹ Charging › in the topic ‹ attributes:valetudo_state.name ›.
Value ‹ stop › in the topic ‹ command_status:command ›.
Value ‹ state › in the topic ‹ config:schema ›.
Value ‹ ok › in the topic ‹ command_status:message ›.
→ These values can be globally OK but would require handling all values and checking on other vacuums for consistency. The values might depend on the vacuums and the software…
More specific message where you’d have to find all possible values :
Value ‹ No error › in the topic ‹ attributes:last_run_stats.errorDescription ›.
→ Much more specific to my vacuum I think.
Values really specific to my vacuum :
Value ‹ rockrobo › in the topic ‹ config:name ›.
Value ‹ rockrobo › in the topic ‹ config:unique_id ›.
Value ‹ Roborock › in the topic ‹ config:device.manufacturer ›.
Value ‹ roborock.vacuum.s5 › in the topic ‹ config:device.model ›.
Value ‹ rockrobo › in the topic ‹ config:device.name ›.
Value ‹ rockrobo › in the topic ‹ config:device.identifiers ›.
Value ‹ 0.10.9 › in the topic ‹ config:device.sw_version ›.
→ These are just texts that cannot be put into constants.
Here it shows the topics to use, so specific to the software and its config :
Value ‹ valetudo/rockrobo/command › in the topic ‹ config:command_topic ›.
Value ‹ valetudo/rockrobo/state › in the topic ‹ config:state_topic ›.
Value ‹ valetudo/rockrobo/set_fan_speed › in the topic ‹ config:set_fan_speed_topic ›.
Value ‹ valetudo/rockrobo/custom_command › in the topic ‹ config:send_command_topic ›.
Value ‹ valetudo/rockrobo/attributes › in the topic ‹ config:json_attributes_topic ›.
→ These are just texts that cannot be put into constants.
List of possible values for certain commands :
Value ‹ start:pause:stop:return_home:battery:status:locate:clean_spot:fan_speed:send_command › in the topic ‹ config:supported_features ›.
Value ‹ min:medium:high:max:mop › in the topic ‹ config:fan_speed_list ›.
→ Could more or less be put into Gladys but depends on the capabilities of the vacuums.
Date handling (number of milliseconds since 01/01/1970) :
Value ‹ 1676655003668 › in the topic ‹ command_status:updated ›.
Value ‹ 1676655000000 › in the topic ‹ attributes:last_run_stats.startTime ›.
Value ‹ 1676655003000 › in the topic ‹ attributes:last_run_stats.endTime ›.
→ Even if I calculate the date, it’s impossible to display it in Gladys.
→ Yet another Feature idea to develop 
In the end, this requires development on your side while everything could go through a Text Feature.
I really appreciate Gladys, its visuals, its ease of use…
That’s why I’m being picky and I think this kind of generic feature would simplify life and allow you not to waste time on more specific requests (other than mine, which are of course a priority
)
Conclusion : Thank you and long live Gladys !