A Home Assistant custom integration that manages an "onboard roster" keyed by HA Users and automatically keeps entities and notification groups in sync as users are added/removed.
- Automatic User Discovery: Automatically discovers and syncs Home Assistant users
- Per-User Control Entities: Creates onboard/notify switches, role selector, and notifiers sensor for each user
- Aggregate Sensors: Provides sensors listing active notifiers for all users or by role
- Notification Groups: Creates
notify.*services for users, roles, and all active users - Persistent Storage: All data persists via integration storage (no YAML helpers needed)
- Role Management: Define custom roles with easy configuration
- Repository type: HACS Integration (Custom Repository)
- Installation mode: repository-based (
zip_release: false) - Add directly in HACS via the one-click badge above or by URL:
https://github.com/eburi/hass_onboard_manager
- Copy the
custom_components/onboard_managerdirectory to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration
- Search for "Onboard Manager"
- Open HACS in Home Assistant
- Click on "Integrations"
- Click the three dots in the top right and select "Custom repositories"
- Add
https://github.com/eburi/hass_onboard_manageras an Integration - Search for "Onboard Manager"
- Click Install
- Restart Home Assistant
- Add the integration via the UI
- Enter roles as comma-separated values (e.g., "Crew, Passenger, Guest")
- The integration will automatically:
- Discover all Home Assistant users
- Create entities for each user
- Create notification groups
To edit roles after setup:
- Go to Settings → Devices & Services
- Find "Onboard Manager" and click "Configure"
- Edit the roles (comma-separated)
- Users assigned to removed roles will be reassigned to the first role
For each Home Assistant user, the following entities are created:
switch.onboard_manager_onboard_<shortid>- Controls if user is onboardswitch.onboard_manager_notify_<shortid>- Controls if user receives notificationsselect.onboard_manager_role_<shortid>- Select user's rolesensor.onboard_manager_notifiers_<shortid>- Lists user's configured notifiers
sensor.onboard_manager_active_notifiers_all- All active notifiers (onboard + notify enabled)sensor.onboard_manager_active_notifiers_role_<role>- Active notifiers per role
notify.onboard_manager_user_<shortid>- Send to specific user's notifiersnotify.onboard_manager_all- Send to all active usersnotify.onboard_manager_role_<role>- Send to all active users in a role
Active users = users with both onboard and notify switches enabled.
Update user settings.
Fields:
user_id(optional): Home Assistant user IDusername(optional): Username (alternative to user_id)onboard(optional): Boolean - set onboard statusnotify(optional): Boolean - enable/disable notificationsrole(optional): String - role slug or label
Example:
service: onboard_manager.set_user
data:
username: anna
onboard: true
notify: true
role: crewManage user's notification services.
Fields:
user_id(optional): Home Assistant user IDusername(optional): Username (alternative to user_id)notifiers(required): List or comma-separated string of notifier servicesmode(optional):replace(default),add, orremove
Example (Replace):
service: onboard_manager.set_user_notifiers
data:
username: anna
notifiers:
- notify.mobile_app_anna
- notify.telegram_anna
mode: replaceExample (Add):
service: onboard_manager.set_user_notifiers
data:
username: anna
notifiers: "notify.email_anna"
mode: addExample (Remove):
service: onboard_manager.set_user_notifiers
data:
username: anna
notifiers: "notify.telegram_anna"
mode: removeForce re-sync of Home Assistant users.
Example:
service: onboard_manager.reload_usersExport current state via service response (for debugging).
Example:
service: onboard_manager.export_state
response_variable: stateList all available notification services registered in Home Assistant.
Returns response data, making it easy to discover which notify.* services
can be passed to set_user_notifiers.
Fields:
domain_filter(optional): Filter results by keyword (e.g.mobile_app)
Example (all notifiers):
service: onboard_manager.list_notifiers
response_variable: resultExample (only mobile app notifiers):
service: onboard_manager.list_notifiers
data:
domain_filter: mobile_app
response_variable: resultResponse:
{
"notifiers": [
{"service": "notify.mobile_app_anna"},
{"service": "notify.mobile_app_bob"}
],
"count": 2
}Send a notification to all active crew members:
automation:
- alias: "Alert Crew"
trigger:
- platform: state
entity_id: binary_sensor.intrusion_detected
to: "on"
action:
- service: notify.onboard_manager_role_crew
data:
message: "Intrusion detected!"
title: "Security Alert"Send to a specific user:
automation:
- alias: "Notify Anna"
trigger:
- platform: time
at: "08:00:00"
action:
- service: notify.onboard_manager_user_a1b2c3d4
data:
message: "Good morning!"Send to all active users:
automation:
- alias: "Broadcast Message"
trigger:
- platform: state
entity_id: binary_sensor.fire_alarm
to: "on"
action:
- service: notify.onboard_manager_all
data:
message: "Fire alarm activated!"
title: "EMERGENCY"Use the aggregate sensors for Alert2 notifier lists:
alert2:
intrusion_alert:
name: "Intrusion Alert"
condition: binary_sensor.intrusion_detected
notifiers:
- notifier: "{{ state_attr('sensor.onboard_manager_active_notifiers_all', 'notifiers') }}"
reminders:
- minutes: [5, 10, 15]Or for a specific role:
alert2:
maintenance_alert:
name: "Maintenance Required"
condition: binary_sensor.maintenance_needed
notifiers:
- notifier: "{{ state_attr('sensor.onboard_manager_active_notifiers_role_crew', 'notifiers') }}"Use the service to configure which notification services a user should receive:
script:
setup_anna_notifiers:
sequence:
- service: onboard_manager.set_user_notifiers
data:
username: anna
notifiers:
- notify.mobile_app_anna_phone
- notify.telegram_anna
- notify.email_annaCreate a dashboard to manage who is onboard:
type: entities
title: Onboard Roster
entities:
- entity: switch.onboard_manager_onboard_a1b2c3d4
- entity: switch.onboard_manager_onboard_b2c3d4e5
- entity: switch.onboard_manager_onboard_c3d4e5f6Data is stored in .storage/onboard_manager:
{
"roles": [
{"label": "Crew", "slug": "crew"},
{"label": "Passenger", "slug": "passenger"}
],
"users": {
"<user_id>": {
"user_id": "<user_id>",
"name": "Anna",
"onboard": true,
"notify": true,
"role": "crew",
"notifiers": ["notify.mobile_app_anna", "notify.telegram_anna"]
}
}
}When a new Home Assistant user is detected:
onboard:falsenotify:truerole: First configured rolenotifiers:[](empty list)
The integration syncs with Home Assistant users:
- Every 5 minutes (automatic via coordinator)
- On integration startup
- When
reload_usersservice is called
When users are removed from Home Assistant, their entities are automatically removed.
A user's notifiers are included in "active" lists when:
onboardswitch is ONnotifyswitch is ON
- User groups (
notify.onboard_manager_user_*): Respect thenotifyflag but ignoreonboard - Role groups (
notify.onboard_manager_role_*): Only include active users (both flags enabled) - All group (
notify.onboard_manager_all): Only include active users (both flags enabled)
When roles are modified:
- Users with invalid roles are reassigned to the first role
- New role notification groups and sensors are created automatically
- Removed role entities become unavailable
- Check that Home Assistant users exist and are active
- Run
onboard_manager.reload_usersservice - Check logs for errors
- Verify the user's
notifyswitch is ON - For aggregate groups, verify
onboardswitch is also ON - Check that notifiers are configured:
sensor.onboard_manager_notifiers_* - Verify the underlying notify services exist and work
- Use the integration's options flow (Configure button)
- After saving, the coordinator will automatically update
- Check that users were reassigned correctly
custom_components/onboard_manager/
├── __init__.py # Integration entry point
├── manifest.json # Integration metadata
├── const.py # Constants
├── config_flow.py # Config/options flow
├── coordinator.py # Data update coordinator
├── storage.py # Storage management
├── user_registry.py # User sync and utilities
├── services.py # Service handlers
├── sensor.py # Sensor platform
├── switch.py # Switch platform
├── select.py # Select platform
├── notify.py # Notify platform
├── services.yaml # Service definitions
├── strings.json # UI strings
└── translations/
└── en.json # English translations
MIT License - See LICENSE file for details
Created by eburi for the hass-onboard-manager project.