I finally automated my morning routine the way I want - utilizing espresense, a local web server and some code I wrote. Equipment includes a Moen U shower controller, ESP32's (obviously), iphone, 2021 Toyota 4runner, Shower lights, bath fan, vizio tv, alexa and wttr.in.
If I walk into the bathroom with my phone in the morning, like I always do, the below happens when I double tap the light switch beside the shower:
- Turn on the shower to 107 degrees
- Turn on the shower downlights to 5%
- Turn on the bath fan
- Switch the bathroom TV speaker off to allow for sound to come only through the bluetooth speaker in the shower (if I feel like listening to the news).
Then, when I turn off the shower:
- Switch the TV audio back to internal speaker (works whether or not the TV is on)
- If the time is between 4am and 9am, and the outdoor temperature is below 45 degrees F, and the fuel range is above 25 miles, wait 10 minutes and start my truck
- Wait 15 minutes and turn the lights and bath fan back off
Conversely, if my wife double taps the same switch, the shower turns on to 105 degrees, the lights come on to 50%, and the tv speaker switches off. And obviously my truck won't start when she turns off the shower,
For the Moen shower, I wrote a simple web page and script that can be polled for shower status - I did this a long time ago - and it works for status only. I control the shower using alexa as a "proxy". I need to revisit this as it's been a couple years, and someone may have figured out how to control the moen directly.
For the TV, I did something similar - wrote scripts to control the TV - again several years ago, but I'm guessing this can possibly be done through the community vizio app.
For espresense, I obviously just stuck with the HA/HADB approach, but may consider writing a driver for this utilizing a separate MQTT broker. But not sure it's worth the effort - I only use HA for 2 things - espresense and genmon.
For the 4Runner, I initially tried the HA integration, but that proved a bit cumbersome, and the lock and door position status were completely unreliable. So, utilizing the existing python toyota-na client, I wrote a couple simple local web pages and scripts that can be polled for status or control the locks, remote start and hazards ("find my car").
ps. additionally, a single indicator LED on the HS-WX300 on my side of the bed illuminates a different color when the truck is unlocked (solid red), remote started and running (solid green), door(s) open (blinking red), tire pressure low (solid magenta), fuel range below 50 miles (solid yellow), and toyota-na health status is bad (blinking red). This now works more reliably than the HA Toyota-NA integration, and definitely doesn't require reauthentication as often as the Toyota ios app. I have had to re-login to the toyota app 3 times in the last 2 weeks, and not once through the python client.
Edit: I have since added an NFC sticker behind the switch plate in the adjacent toilet room… so now tapping my phone to that bottom of that switch plate also activates my shower automation.