Michaela Merz's personal blog site

Home Assistant – Love It – Hate It

Home Assistant – Love It – Hate It

HA is cool and I love it. It also drives me nuts and I hate it.

Years ago, I built “Lumosur” , a smart home environment that doesn’t leak the status of my bedroom light to Amazon or Google. It worked well, but it required ESP8266/ESP32 devices to be flashed to the Lumosur protocol and that severely limited the type of devices I could use. So I switched to Home Assistant. And it opened a whole new world.

But the honeymoon ended very soon. I am a senior software engineer and I have been developing massive environments since before Linux was a thing. It is just very difficult to accept the fact that the HA developers disregard so many details that would not only be logical, but would make the HA environment into an environment that not only tinkerers can use.

Don’t get me wrong – I sincerely appreciate the work they are doing. They built something great. But unfortunately, it seems, they lost themselves in details. The “bigger picture” got out of focus in order to add a few more bells and whistles.

Let me give you an example:

Say you have an android tablet (or a jail-broken Amazon device) and install the Home Assistant Companion app. Wow – now you can control your home on that device. Cool. But you can’t play any audio on it, because the companion app doesn’t have a media player. You can talk to the tablet and it answers (audio), but you can’t play music.

Am I really the only person in the world scratching her head and go … what?

And, because it’s completely logical, you can’t use the deviceId of your brand new device within the programming environment. So you can’t have ONE button to turn the light on depending on the device where the button was pressed, you have to have a button for every room.

And than – there’s .. yaml – a human-readable data serialization language that home assistant uses for … everything. Boy … that reminds me on the way we did things 20 years ago. You need to use indentations (just like in COBOL) to get this right. But with Python ruling the world now (because a real programming language seems to be too complicated nowadays), tab-ing keywords into the right indentation spot is the new favorite thing it seems. I sure hope we get a few other trends back from the past: whitewall tires maybe, disco or people wearing decent clothing when they go out shopping.

And what about the updates? Every week. If you add modules from repositories, you may get even more updates. Using the formula

Let a = Time saved through Home Assistant Automation
Let b = Time spent on design + administration

Total time saved = a – b

I am not so sure that a > 0 .

As a matter of fact, it feels like HA is an environment that constantly requires, reminds and invites you to try something else. Sure, there are many, many add-ons that one can use as band-aids to fix this or that problem, but that not only requires one to install more or less unverified software into a somewhat sensitive environment, it also creates bloat which requires more RAM, more resources, more administration and more backups.

On the other hand – it does the work, supports gazillions of devices and is .. fun. It’s kind of like a drug that makes you happy when the thing you were working on finally does what it is supposed to, but at the same time you realize that there are tons of other issues yet unresolved. A dashboard (the area where button, gauges etc. are positioned to be visible) is never ready.

So – unless somebody forks HA or turns it into something more stable, more mom / pop / grandma minded, it will remain an environment for crazy people like me. People who are willing and able to acknowledge a high stress level leading to an early coronary in order to get that fix, the rush when something like this finally works:

- type: custom:bubble-card
                entity: switch.power_plug_jukebox
                card_type: button
                slider_fill_orientation: left
                slider_value_position: right
                icon: mdi:radio
                button_action:
                  tap_action:
                    action: call-service
                    service: automation.trigger
                    target:
                      entity_id: automation.kitchen_radio_hr1
                  hold_action:
                    action: none
                  double_tap_action:
                    action: none
                name: Radio HR1 Jukebox
                styles: |
                  .bubble-button-container,
                  .bubble-button-background {
                     opacity: 1 !important;
                     color: #eee !important;
                     background-color: ${
                     hass.states['media_player.lva_b827eb99684c_media_player']?.state === 'playing' &&
                     hass.states['switch.power_plug_jukebox']?.state === 'on'
                       ? '#e1f000'
                       : 'rgba(255,255,255,0.1)'
                       } !important;
                    color: ${
                     hass.states['media_player.lva_b827eb99684c_media_player']?.state === 'playing' &&
                     hass.states['switch.power_plug_jukebox']?.state === 'on'
                       ? '#333'
                       : '#eee'
                       } !important;
                     }
                  .bubble-icon-container {
                    opacity: 1 !important;
                    background-color: ${
                      hass.states['switch.power_plug_jukebox']?.state === 'on'
                        ? 'green'
                        : '#eee'
                        } !important;
                    border-radius: 50% !important;
                    }
                  .bubble-icon, 
                  .bubble-icon ha-icon,
                  .bubble-icon ha-state-icon {
                     opacity: 1 !important;
                     color: ${hass.states['switch.power_plug_jukebox']?.state === 'on'
                       ? '#eee'
                       : 'var(--secondary-text-color)'
                       } !important;
                    --card-mod-icon: ${hass.states['input_boolean.kiteo_starting']?.state === 'on' ? 'mdi:timer-sand' : 'mdi:radio-fm'} !important;
                    }

I love it and I sincerely, passionately hate it.

So – now, if you please excuse me. I have to figure out how to be able to play music on that tablet. Maybe if I run fully and the companion app in parallel? Too much load on the tablet. Maybe voice-assistant? Another github install without any verification? Or I continue to use the companion app and add vlc to play music? Maybe there’s a lightweight mediaplayer that I can install ..

Michaela Merz is an entrepreneur and first generation hacker. Her career started even before the Internet was available. She invented and developed a number of technologies now considered to be standard in modern web-environments. She is a software engineer, a Medical Rescue volunteer, an Advanced Emergency Medical Technician, a FAA Part 61 (PPL , IFR) , Part 107 certified UAS pilot and a licensed ham . More about Michaela ..

Leave a Reply

Your email address will not be published. Required fields are marked *