A custom Home Assistant integration for U by Moen smart shower systems (Alexa/Android version, not HomeKit).
- Climate Control: Control your shower temperature and power through Home Assistant's climate entity
- Preset Activation: Buttons to activate your configured shower presets (e.g., "Jason", "Lauren", "Fill The Tub")
- Outlet Control: Individual switches for each water outlet (shower head, hand shower, tub spout, body spray)
- Status Monitoring: Sensors for current temperature, target temperature, active preset, timer, and more
- Real-time Updates: Uses Pusher WebSocket for instant status updates (coming soon)
- Open HACS in Home Assistant
- Click on "Integrations"
- Click the three dots in the top right corner
- Select "Custom repositories"
- Add this repository URL and select "Integration" as the category
- Click "Install"
- Restart Home Assistant
- Copy the
custom_components/u_by_moenfolder to your Home Assistantconfig/custom_components/directory - Restart Home Assistant
- Go to Settings → Devices & Services
- Click + Add Integration
- Search for "U by Moen"
- Enter your U by Moen account credentials (email and password)
- Click Submit
Your devices will be automatically discovered and added to Home Assistant.
For each U by Moen shower, the integration creates:
- Master Bathroom (Climate)
- Control temperature and turn shower on/off
- Shows current and target temperature
- Master Bathroom Power - Main on/off control
- Master Bathroom Shower Head - Control individual outlet 1
- Master Bathroom Hand Shower - Control individual outlet 2
- Master Bathroom Tub Spout - Control individual outlet 3
- Master Bathroom Body Spray - Control individual outlet 4
- Master Bathroom Jason - Activate Jason preset
- Master Bathroom Lauren - Activate Lauren preset
- Master Bathroom Fill The Tub - Activate Fill The Tub preset
- Master Bathroom Mode - Current mode (off/on/pause)
- Master Bathroom Current Temperature - Current water temperature
- Master Bathroom Target Temperature - Target temperature setting
- Master Bathroom Active Preset - Currently active preset name
- Master Bathroom Time Remaining - Timer countdown (if active)
- Master Bathroom Firmware - Firmware version
Turn on shower at target temperature:
automation:
- alias: "Morning Shower Ready"
trigger:
- platform: time
at: "06:30:00"
action:
- service: climate.set_temperature
target:
entity_id: climate.master_bathroom
data:
temperature: 102
hvac_mode: heatActivate a preset:
automation:
- alias: "Activate Jason's Shower"
trigger:
- platform: state
entity_id: binary_sensor.jason_home
to: "on"
action:
- service: button.press
target:
entity_id: button.master_bathroom_jasonTurn off shower after 15 minutes:
automation:
- alias: "Shower Timeout"
trigger:
- platform: state
entity_id: climate.master_bathroom
to: "heat"
for:
minutes: 15
action:
- service: climate.set_hvac_mode
target:
entity_id: climate.master_bathroom
data:
hvac_mode: "off"type: thermostat
entity: climate.master_bathroomOr a more detailed card:
type: entities
title: Master Bathroom Shower
entities:
- entity: climate.master_bathroom
- entity: sensor.master_bathroom_current_temperature
- entity: sensor.master_bathroom_active_preset
- type: divider
- entity: button.master_bathroom_jason
- entity: button.master_bathroom_lauren
- entity: button.master_bathroom_fill_the_tub
- type: divider
- entity: switch.master_bathroom_shower_head
- entity: switch.master_bathroom_hand_shower
- entity: switch.master_bathroom_tub_spout-
Pusher WebSocket Events: The control commands (turning on/off, changing temperature, activating presets) use Pusher client events. The exact event names are currently based on common patterns and may need to be refined through testing. If controls don't work immediately, we'll need to capture the actual WebSocket messages from the mobile app.
-
Real-time Updates: Status updates currently rely on polling (every 30 seconds). Full Pusher WebSocket integration for instant updates is planned.
- Make sure you've restarted Home Assistant after installation
- Check the Home Assistant logs for any errors
- Verify your email and password are correct
- Make sure you're using the credentials for the Alexa/Android version of U by Moen (not HomeKit)
- Check Home Assistant logs for errors
- The Pusher event names may need adjustment (see Known Limitations)
- Open an issue with debug logs
Add to your configuration.yaml:
logger:
default: info
logs:
custom_components.u_by_moen: debugThis integration uses the Moen IoT API:
- Base URL:
https://www.moen-iot.com - Authentication: Token-based (obtained via email/password)
- Real-time: Pusher WebSocket (app_key:
dcc28ccb5296f18f8eae, cluster:us2)
Contributions are welcome! Please open an issue or pull request.
Come see our other apps and integrations at WeaveHub.
- Clone this repository
- Install dependencies:
pip install -r requirements.txt - Make your changes
- Test with your Home Assistant instance
If you want to help improve the Pusher control commands:
- Use Charles Proxy or similar tool
- Enable SSL proxying for
*.pusher.com - Monitor traffic while using the Moen mobile app
- Capture the
client-*events sent when controlling the shower - Share findings in an issue
MIT License - see LICENSE file for details
Created by Jason Lazerus
This is an unofficial integration and is not affiliated with or endorsed by Moen or Fortune Brands.