Where We Are Going We Don’t Need Modes

Ok, so that is a lie.

Turns out there is a case to be made for modes within Home Assistant. For example, my wife complained when my collection of presence trackers decided to freak out and start spamming notifications to her phone. I mean, who wouldn’t right. We hit our daily spam quota just opening our email client each day we shouldn’t have to deal with app spam too. So, I added the ability for her to control her notifications via the Home Assistant UI.

I started out looking for how other people implemented say a Vacation Mode in Home Assistant. What I found was that every one I looked at (ok, I didn’t look at them all) solved it with an input boolean. An input_boolean is simple way to mark something as on or off within Home Assistant.

And at first glance that seems the obvious answer. It will keep the state between restarts, as long as you don’t set the initial value, but what if you wanted to a third-party process control the switch and you just happen to have an MQTT broker lying around?

So instead of input_booleans I created some MQTT switches. In the case of giving my wife the ability to suppress her notifications, I set up the following switch:

- platform: mqtt
 name:  Text Notify Kat
 command_topic: kat/notify/text
 state_topic: kat/notify/text
 qos: 1
 payload_on: on
 payload_off: off
 retain: true

Then I just added the switch to my groups to display on my UI. After that, all that was left to do was add the condition to my notification automations:

condition: state
  entity_id: switch.text_notify_kat
  state: on

Then if my wife wanted to kill the text notifications all she had to do was flip the switch and the notifications would stop. For notifications I consider to be security or safety, I just left the condition out of the automation or script.

From there I added a vacation mode, a guest mode, secure mode, and might have a few others. Each one gives me an easy way to control the context of various automations via the UI.

Like I said before you could accomplish all of this via an input_boolean, and if you did it that way you would certainly get the job done. But if you are already using MQTT and this is simply another way of getting the job done.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.