Jean-Loic POUFFIER

November 3, 2021

My take on home automation

Home automation is my favorite hobby. 
I have been automating my home for almost 7 years.
I started with a few smart lights, excitingly showing to everyone my balcony lighting up from a press of a switch on my phone.
Now I build my own connected objects tailored to my needs. You will discover some of them in this articles.

Over the years, my vision of home automation, my motivations behind it and how I approach things have changed.

In this article, I will share:

  • Why you might want to start: My vision of home automation.
  • How to build things you will truly love and use: My process.
  • Ideas you might try from my favorite projects.


This is not a technical article, in the future I may present technically my set-up.
Think of this article as a sneak peek into my hacker mind.



🎯 My home automation vision


💞 The right motivations

While speaking about the topic, I noticed there is sometimes a confusion between home automation and connected home.

Connecting your home is about being able to control your stuff from a single place (An app, a platform)
⭐️ Automating your home is about removing the need of controlling it in the first place. ⭐️ 

I don't have smart lights to be able to turn them on from my phone, I have smart lights because I don't want to bother with turning them on or off anymore.
I don't have a smart vacuum cleaner to be able to trigger a cleaning from my phone while I am at work, I have a smart vacuum cleaner because I want a clean house without thinking about it.

Don't start home automation because you want to "connect" things, instead think about what problems you would like to solve (I am a product manager after all), what actions are painful to perform, and what could be streamlined by some smart automations.
Connecting a few lights is only fun for a few days 😉.

⭐️ The perfect home automation platform is the platform you don't see. ⭐️ 
It's the platform that works in the shadow, solving problems and optimizing your interaction with your home without ever "getting in the way".

🔥 A critical component of your home? Not for me.

I have a very strict vision of the place of the "automation platform" within the home.
It should be an additional layer, only used to make the lives of humans easier.
It's the cherry on the cake.

If someone comes to my place, I should not have to explain to him how to turn on a light or watch the TV.

As a consequence: It should be expandable.
If it fails, your home should just lose its "Smart" status... But that's it.

If you can't turn off your lights because you are doing an update... You are doing it wrong.

Further reading: The "Perfect Home Automation" vision from the founder of Home Assistant

Implications

Based on my vision, there are certain things that I don't do:

I believe data should be leveraged to enhance your home, as a result I don't really build dashboards if the metrics are not going to be used in a project. 

Similarly, I don't connect stuff if I don't want to solve a problem with it.
My blind covers are not connected, because I have zero issues with them.
I never have to get up to open or close them, the sun does not reflect on my TV, etc.
Connecting my blind covers would be pointless because I would stop halfway in the following journey :
Dumb and not connected 
   => Dumb and connected 
       => Smart (that solves real problems)

If I build something that works 99% of the time and "gets in my way" 1% of the time: I improve it or delete it if I don't find a way.
This is my home and I don't want to feel like a stranger in it. Waking up with the lights on because somewhere some function thought it was a good idea is unacceptable.



⚙️ My process


Prerequisites

Home automation is always about connecting some inputs to some outputs.
  • Inputs can be the temperature inside a room, the state of a light.
  • Outputs can be turning on the TV, playing a sound on a speaker.

I always try to keep myself informed about what is possible, and how easy it is.

I often review what inputs and outputs are currently available on my set-up.
It's a great way to find real-life problems that are easy to solve.
For example:
  • I know that I can detect when the next alarm is going to be on my phone.
  • I know that I can turn on and off almost every light in my apartment.
You may already see a potential automation there - This one is easy because I already have everything at my disposal

I also research what is available on the market, and what may take more "hacking" to create.
For example, my blind covers are not connected, but If one day I need to know the position of a certain cover to trigger something, I know solutions exist.
On the other hand, I have a cat that goes out and If I want to know its precise location, I know it may take a bit more work to get this data.

👊 The process

I often take some time to reflect on the issues or needs I have at home.
I try to prioritize them by how frequent and painful they are.
I don't spend too much time on prioritization, it's a hobby after all.

Once I have a problem to solve (Or a need to fulfill), I draft an initial design.

I stress test it against edge cases.
  • What if I am not home? What if I am at home?
  • What about the other people living with me?
  • What if there are guests?
  • What if it breaks halfway? Will it bother me?
  • Are the inputs used solid? Can I have false positives? False negatives? Will it bother me?

I improve my design.

I make a small dashboard with the input I will use and see the historical data for the last week or month. I check if it's solid and if it's going to work.

I build it.

I review if it's useful after a few weeks.



🔥 Some of my favorite projects


Once again, this article is not technical, however, I do want to share the problems/needs I faced, and the solutions I put in place to solve them.
My goal is twofold:
  • Give some ideas to other hackers like me 
  • Share the pitfalls I faced and how I solve them

This is not an exhaustive list either.
These are just the projects I think are worth sharing.



🎥 And action! (or: How to handle edge cases)

🤔 I want my lights to turn off when I watch a movie.

Super simple on paper!
  • TV playing = Lights off
  • TV paused = lights dimmed 
  • TV stopped = Lights on 

I implemented it, it was horrible 🤦🏼

Issue #1: The lights were turning on and off when the sun was up.
So I added a condition to only run the automation if the sun is set.

Issue #2: The state of the TV was a too vague concept to drive the TV lights.
Playing a 30 seconds YouTube video or listing to a Spotify playlist was transitioning the TV into "playing".
So I only whitelisted certain applications to drive the lights. 

Issue #3: Timing. I am getting sample data from my TV every second in average.
Sometimes when I was finishing a Netflix episode, I was returning to the home screen of my android TV "too fast".
I was only getting two data points :
  • Playing from Netflix: The lights were turned off
  • Idle from "The home screen": The app is not whitelisted, so the lights were not turning on again.
So I saved the "old app" and ran the whitelisting logic on both the old and current apps.
Here is a simple timeline of the use-case "Closing Netflix too fast after an episode"
  • Start the episode 
    • old_app: ✅Netflix
    • new_app; ✅Netflix
    • state: ▶️playing
    • Outcome: Lights are turning off
  • Stop the episode and return to the android home screen quickly
    • old_app: ✅Netflix
    • new_app : ❌home_screen
    • state: idle
    • Outcome: Lights are turning on

I never had a false positive or false negative ever since.

(Code available here)



🏃🏻‍♂️ Let's booboo (or: How to think outside the box)

🤔 My phone provides some very smart notifications, including one that is telling me when to leave home to reach work on time... but I hate looking at my phone in the morning 😊

I created a physical prop... A "Navigation arrow", reminiscent of the Android Auto icon.
I put some LEDs and connected them to the Waze API.
  • Green = I will reach work before 8 am
  • Orange = I will reach work before 8:20 am
  • Red = I will reach work after 8:20 am
It turns on when my phone alarm is triggered and turns off at 8:20.
The color is computed every minute.

It sits where I drink my coffee at home.
It's always visible, but never "in my face".
It's the perfect balance for me.
 
(Code available here)

20211103_225352-COLLAGE.jpg




☕️ Coffee break (or: How to think outside the box, level 2)

🤔 Remote work is super convenient, but you need to actively think about informing your colleagues about what you do because they can't see you (Coffee breaks, meetings, lunch, deep work).

I love physical props! 
The feeling of interacting with something real to drive something digital is amazing.
I created a cube that drives my slack channel.

It is battery-powered and only turns on when movement is detected.
It drives my slack status based on the face that is up.
  • Here
  • Lunch break
  • Coffee
  • Meeting
  • Do Not Disturb
  • Away

(Code inside the cube available here, running on my hub here)

PXL_20211103_212234866 (1).jpeg




😱 Did I leave the stove one? (or: How sometimes, Less is More)

No. I did not connect my stove 😅.
I don't think we could forget it (At least we never faced the problem).

Nevertheless, leaving the apartment with the feeling that something may be on is real.

Easy to solve right?
Turn off everything that can be turned off when the apartment is empty: Lights, TV, A/C, coffee maker...

But careful about edge cases!
  • What if the presence detection logic fails?
  • What if you have "untracked" guests at home?
  • What if you really want to keep a light on just once?

And more importantly: Are you really leaving things on on a daily/weekly basis? Is it a real problem?

I chose a simpler (and in my opinion more elegant) path: I did not do anything automatically.
 
If my home detects something turned on when I leave, it simply warns me with an actionable push notification on my phone.
I decide if I act on it, or not.
(Code available here)

Screenshot_20211103-231718.png




Conclusion


I hope you liked this small digression into other topics.
Product management related blog posts will resume soon 🤓.
I really enjoyed writing about one of my passion.

If you are interested in starting home automation, I suggest you the fantastic project called Home Assistant.

On my side, I will continue to be the user, the UX researcher, the designer, the developer, and the PM of my own apartment.
What a perfect hobby to understand the interactions between the different skills at work 😉.

JLo @jlpouffier