I agree. I don’t care about the “front end” interface either. That’s the interesting thing about these projects. Everyone can focus on their own areas of interest. And you’re right, the “automation” part is key to me as well. A “smart” home should get “smarter” on its own. Application of deterministic /stochastic models and AI “learning” will eventually allow Home Assistant to function well as a “smart” assistant. Best of luck to you.
Yes, but his is only for a specific thing you use it for, which only uses a fragment of the available options and features of HA, right? I assume your “main” HA instance doesn’t run such an old version?
Hmmm !
With a name like Burningstone I expect to see something burning !
What’s the new avatar ?
An award for building a high tech bird feeder ?
As a contributor and a PR reviewer, I can guarantee that my fellows and I do not set out with the mindset of, “Who cares, I’ll just make a breaking change.” Every time we submit PRs, we give careful thought to the experience, weigh the pros/cons, etc.
Let’s use an example of mine from 0.105.0: https://github.com/home-assistant/home-assistant/pull/30567
In this case, I learned more about SimpliSafe’s undocumented cloud API than I knew before. Based on this new knowledge, I realized that existing functionality wouldn’t work in the way I’d thought. To fix it, I had to make a drastic change (replace several individual services with a single one). I hate that red Breaking Change
label, but I applied it, knowing that the ultimate experience would be better.
Every breaking change is like that. We would love to avoid them, but truthfully, there are so many factors (speed of development, inclusion of integrations that rely on undocumented APIs, etc.) that make it difficult to envision a future where they are limited more than they already are.
As an aside, I can say that of the dozens of HASS installations I’ve performed in our home, quite a few had breaking changes that impacted integrations we use. Every single time, a careful, slow reading of the release notes has enabled me to prep for them before deploying a new HASS version. Additionally, I’ve taken the time to put my entire config in a GitHub repo (with an associated CI/CD process) that allows me to check things before I roll them out, roll them back as needed, etc.
I certainly understand and respect that my circumstances may be unique (and that not everyone can have a similar experience); I also understand and respect that I may put more effort into my system than others have time or patience for. However, I must admit I’m shocked when I continually see so many loud messages about how badly someone’s installation was ruined because of breaking changes. I’ve never experienced that and I’ve been a HASS user for a long time.
Tell us how we can help. Give us tactical ideas, rather than well-intentioned-but-ultimately-not-helpful admonitions about “needing a better user experience.” We’ll tell you if solutions aren’t feasible, but we certainly won’t chastise you for offering them.
You’re laggin behind man
I knew that you will ask
It’s a record player that my brother built for me
My Borg friend, I’m happy to lag behind in ALL areas, (I like others doing the difficult stuff and me gathering the fruits of their labour’s )
Though you are kinda running low of everything else (I guess you must use switches for lights looking at those numbers too)
But you need to tell us what version you run to give an idea of your confidence versus complexity. - I think I’ll go back and change the image to give an overall look at my hub … Hmmmm !
@Burningstone, in that case you’ll have to change your name to Turningstone
That’d be correct
I plan to add about 20+ more switches over the next 12 months
Marius has me beat or more than just numbers
haha, well if you insist:
see now I forgot to take out the deprecated history_graphs and weblinks. few entities less…and media_player count is incorrect, must check that
edit
well, what do you know, this little bit of jest helped me find a stupid error in the config:
count_media_players:
entity_id: sensor.date
value_template: >
{{ states.input_media_player | count }}
duh…
Ha Ha Ha … I have to ‘massage’ the numbers a bit too. My fibaro lights, report 2 for 1 (there’s a second virtual switch in each of which I’m only using 2) so my count = total/2 +2 = display value
I had to use one of petro’s templates to get ALL my light entities to find why the hell my number was so wrong
AND your laziness (lack of pruning) is central to the core of this thread in that ‘something’ had to force you to look at your config. Double Kudos
Device Trackers : - Are you tracking everybody in your Village ? Uncle Marius is watching YOU !
Haha, yep. people are warned
guess it is just the result of IOT. And believe it or not, did a clean install with the new device_tracker architecture, integrations not using known_devices any more… These just popped up, using Nmap device_tracker.
on my lights count, I should use
{{ expand('group.all_lights_only')|count }}
which group I maintained already before the demise of groups.all…
I guess the ultimate solution would be that the config would automatically be updated to allow for the changes, how that would work would be the tricky bit.
That actually happens with the UI integrations. It doesn’t happen with yaml. The point i’ve been trying to make is that these changes are going into affect. But it still won’t mitigate all breaking changes. At some point, people are going to have to make changes to their configuration. The easiest way to see these change before they go into affect is to perform the following search on github… it’s pretty simple.
Here’s a link to all up coming breaking changes.
Currently there are 7. Is it really asking for a lot to weigh in on the breaking changes?
And you’d better get that header changed before the naming police get you.
How about posting an example of your button config too. That looks a lot better than my glance card.
And no, I’m neither ashamed or proud of my numbers
bingo nr 3 this afternoon, you guys are waking me up here today…
here you go:
type: vertical-stack
cards:
- type: 'custom:button-card'
name: Hassio counters
template: button_default_title
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body
entity: sensor.entities_uun
state:
- operator: template
value: >
[[[
return entity.state == 0;
]]]
styles:
state:
- color: 'green'
# card:
# - color: 'green'
# - background: '#F0C209'
icon:
- color: 'green'
- operator: default
styles:
# card:
# - color: 'red'
# - background: '#555B65'
state:
- color: 'red'
icon:
- color: 'red'
- type: custom:button-card
color_type: blank-card
- type: custom:button-card
color_type: blank-card
- type: custom:button-card
color_type: blank-card
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body
entity: sensor.overview_entities
styles:
state:
- color: green
- type: custom:button-card
template: button_body
entity: sensor.overview_components
styles:
state:
- color: green
- type: custom:button-card
template: button_body
entity: sensor.overview_domains
# name: Domains
# icon: mdi:domain
styles:
state:
- color: green
- type: custom:button-card
template: button_body
entity: sensor.ha_domains
# name: Domains
# icon: mdi:domain
styles:
state:
- color: green
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_alerts
# name: Alerts
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_automations
# name: Automations
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_binary_sensors
# name: Binary sensors
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_cameras
# name: Cameras
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_scripts
# name: Scripts
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_device_trackers
# name: Device trackers
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_groups
# name: Groups
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_input_booleans
# name: Input booleans
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_input_datetimes
# name: Input Datetimes
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_input_numbers
# name: Input numbers
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_input_selects
# name: >
# [[[
# function capitalizeFirstLetter(string) {
# return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
# }
# var id = entity.entity_id.split('.')[1].slice(6).replace('_',' ');
# return capitalizeFirstLetter(id);
# ]]]
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_input_texts
# name: Input texts
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_lights
# name: Lights
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_media_players
# name: Media players
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_proximities
# name: Proximities
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_scenes
# name: Scenes
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_scripts
# name: Scripts
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_sensors
# name: Sensors
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_switches
# name: Switches
#
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_timers
# name: Timers
- type: horizontal-stack
cards:
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_variables
# name: Variables
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_weathers
# name: Weathers
- type: custom:button-card
template: button_body_no_action
entity: sensor.count_zones
# name: Zones
- type: custom:button-card
color_type: blank-card
- type: custom:button-card
template: vertical-filler
and the button templates:
button_body:
color: auto
size: 30%
aspect_ratio: 1/1
show_state: true
show_label: true
tap_action:
action: more-info
haptic: light
hold_action:
action: more-info
haptic: success
styles:
icon:
- color: grey
lock:
- color: red
card:
- color: 'var(--primary-color)'
- background-color: 'var(--paper-card-background-color)'
- padding-left: 5px
name:
- text-overflow: unset
- white-space: unset
- word-break: break-word
- text-align: start
- justify-self: start
- font-weight: bold
- font-family: Helvetica
- font-size: 13px
label:
- text-align: start
- font-size: 11px
- font-family: Helvetica
- justify-self: start
state:
- text-align: start
- font-size: 11px
- font-family: Helvetica
- justify-self: start
- text-transform: capitalize
- font-weight: bold
grid:
- grid-template-areas: '"i" "n" "s" "l"'
- grid-template-columns: 1fr
- grid-template-rows: 1fr min-content min-content
img_cell:
- justify-content: start
- align-items: start
button_body_no_action:
color: auto
size: 30%
aspect_ratio: 1/1
show_state: true
show_label: true
tap_action:
action: none
hold_action:
action: none
name: >
[[[
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
var id = entity.entity_id.split('count_')[1].replace('_', ' ');
return capitalizeFirstLetter(id);
]]]
styles:
icon:
- color: 'var(--primary-color)'
lock:
- color: red
card:
- color: 'var(--primary-color)'
- background-color: 'var(--paper-card-background-color)'
- padding-left: 5px
name:
- text-overflow: unset
- white-space: unset
- word-break: break-word
- text-align: start
- justify-self: start
- font-weight: bold
- font-family: Helvetica
- font-size: 13px
label:
- text-align: start
- font-size: 11px
- font-family: Helvetica
- justify-self: start
state:
- text-align: start
- font-size: 11px
- font-family: Helvetica
- justify-self: start
- text-transform: capitalize
- font-weight: bold
- color: green
grid:
- grid-template-areas: '"i" "n" "s" "l"'
- grid-template-columns: 1fr
- grid-template-rows: 1fr min-content min-content
img_cell:
- justify-content: start
- align-items: start
the latter could be simplified and compressed using a state or styles template probably, but this works for now.
new setup:
start using those unused entities already
Would you mind sharing the icons you use for the different entities (automation, binary sensors, …)? I assume its mdi icons?