This custom component integrates Aroma-Link WiFi diffusers with Home Assistant.
Note: The integration appears in Home Assistant as
Aromalink Integrationwith the domainaromalink_ha_integration.
2.0 upgrade note: Version
2.0.0rebrands the integration domain fromaromalink_integration_v1toaromalink_ha_integration. Existing config entries fromaroma_link_integration,dalyem_aroma_link,ha_aromalink, andaromalink_integration_v1are not migrated automatically.
- Control diffuser power state
- Set diffuser work and pause durations
- Save diffuser schedules
- Run a diffuser immediately
- Auto-discover all devices on your Aroma-Link account
- Configure the polling interval from Home Assistant
- Update the repository in HACS or replace the manual install folder with
custom_components/aromalink_ha_integration. - Restart Home Assistant.
- Add the integration named
Aromalink Integration. - Re-enter your Aroma-Link credentials and reapply any options such as the polling interval.
- Update automations or scripts that call
aromalink_integration_v1.*services to usearomalink_ha_integration.*. - Remove the old integration entry after the new one is working.
If HACS still points at the old folder path, remove and re-add the custom repository so it refreshes the package metadata.
- Ensure HACS is installed in Home Assistant.
- Open HACS.
- Click the three-dot menu in the top right.
- Click Custom repositories.
- Paste
https://github.com/dalyem/ha_aromalink. - Select Integration and add it.
- Open the repository entry and click Download.
- Restart Home Assistant.
- Copy the
aromalink_ha_integrationdirectory to<config>/custom_components/. - Restart Home Assistant.
Example:
cp -r custom_components/aromalink_ha_integration <home_assistant_config>/custom_components/- In Home Assistant, go to Settings -> Devices and Services.
- Click Add Integration.
- Search for
Aromalink Integration. - Enter your Aroma-Link username and password.
- Home Assistant will discover all supported devices on the account.
- Polling interval default:
60seconds - Polling interval minimum:
10seconds - Polling interval maximum:
300seconds - Polling interval step:
10seconds - Where to change it: Open the integration and edit the
Polling Intervalcontrol - Work duration minimum:
5seconds - Work duration maximum:
900seconds - Work duration step:
1second - Pause duration minimum:
5seconds - Pause duration maximum:
900seconds - Pause duration step:
5seconds
Set the diffuser scheduler.
Parameters:
work_duration: Required work duration in seconds.pause_duration: Optional pause duration in seconds.week_days: Optional list of weekdays.device_id: Required when multiple devices exist.
Run the diffuser immediately.
Parameters:
work_duration: Optional work duration in seconds.pause_duration: Optional pause duration in seconds.device_id: Required when multiple devices exist.
The integration creates:
- Switch entities for diffuser power
- Button entities for run/save actions
- Number entities for work duration, pause duration, and polling interval
- Sensor entities for runtime and device statistics
- The integration uses the Aroma-Link web and mobile endpoints.
- The package polls cloud state every 60 seconds by default.
- Authentication is maintained with both web-session and app-token flows.
- Verify your Aroma-Link credentials if setup fails.
- Confirm the diffuser is online in the Aroma-Link app.
- If HACS reports
No content to download, verify thatcustom_components/aromalink_ha_integration/manifest.jsonexists on the default branch, then remove and re-add the custom repository if needed. - If you are upgrading from an older domain, install the new integration first and remove the old one after confirming the new entities.
To inspect the Aroma-Link endpoints locally:
- Create a
.env.aromalinkfile in the repository root. - Add
AROMALINK_USERNAMEandAROMALINK_PASSWORD. - Optionally add
AROMALINK_USER_IDandAROMALINK_DEVICE_ID. - Run:
python3 scripts/aromalink_probe.pyUseful options:
python3 scripts/aromalink_probe.py --switch onpython3 scripts/aromalink_probe.py --switch offpython3 scripts/aromalink_probe.py --set-schedulerpython3 scripts/aromalink_probe.py --device-id 408555 --user-id 181605python3 scripts/aromalink_probe.py --skip-web
2.0.0: Rebranded to thearomalink_ha_integrationdomain andAromalink Integrationname, added migration guidance, and removed secret-adjacent debug logging1.5.8: Changed the default work/pause values to10 / 901.5.7: Added a user-configurable polling interval option and improved runtime consistency1.5.6: Switched runtime fallback to the working web device-list endpoints and added the local probe script1.5.1: Added broader app response parsing1.5.0: Renamed the fork to thearomalink_integration_v1domain and package folder1.4.0: Renamed the fork to theha_aromalinkdomain and display name1.3.0: Renamed the fork to theha_aroma_linkdomain1.2.0: Renamed the fork to its own Home Assistant domain1.1.0: Updated to support HACS integration1.0.0: Initial release with automatic device discovery
- A valid Aroma-Link account
- At least one registered diffuser
- Home Assistant 2023.3.0 or newer
- An active internet connection
This integration is provided as-is with no warranties.
