This integration pulls your pool chemistry results from Leslie's Pool and exposes them to Home Assistant. It works for both Leslie's in-store tests and AccuBlue Home tester results.
This component will set up the following platforms.
| Platform | Description |
|---|---|
sensor |
Show info from leslies_pool API. |
The component will set up the following sensors:
Chemistry (PPM unless noted):
- Free Chlorine
- Total Chlorine
- pH
- Total Alkalinity
- Calcium Hardness
- Cyanuric Acid
- Iron
- Copper
- Phosphates (PPB)
- Salt
- TDS
- Bromine
- Biguanides
Test metadata:
- Last Tested - Date
- In Store - True/False
- Test Source - "In-Store" or "AccuBlue Home"
- Days Since Last Test
- Last Test ID
- Pool Sanitizer (e.g. "Salt 3000-4500")
- Pool Size (gallons)
- Pool Name
Each sensor also carries results_id, test_source, and test_timestamp as state attributes so automations can fire when a new test arrives.
- Add this repository URL to HACS custom repositories as an Integration
- Search for "Leslies" and install the integration
- In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "leslies_pool"
- Follow config flow
- Using the tool of choice open the directory (folder) for your HA configuration (where you find
configuration.yaml). - If you do not have a
custom_componentsdirectory (folder) there, you need to create it. - In the
custom_componentsdirectory (folder) create a new folder calledleslies_pool. - Download all the files from the
custom_components/leslies_pool/directory (folder) in this repository. - Place the files you downloaded in the new directory (folder) you created.
- Restart Home Assistant
- In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "leslies_pool"
- Enter the email and password for your Leslie's account.
- If your account has more than one pool, pick which one to track.
- Set a polling rate (seconds).
Your credentials are used once to look up your customer ID and pool list. After that, only the customer ID is sent on data fetches.
3.0 swaps the old HTML-scraping flow for the mobile app's JSON API. The web scraping stopped working in mid-2025 when Leslie's added session scoring to the storefront water-test endpoints.
If you already have an entry configured, the integration migrates it automatically on first load - no manual reconfigure needed. Existing sensor history is preserved (unique IDs are unchanged).
The displayed sensor names drop the Leslies prefix since the device name already provides that context. If your dashboards reference entity IDs (e.g. sensor.leslies_free_chlorine), those still work.
If you want to contribute to this please read the Contribution guidelines
This project was generated from @oncleben31's Home Assistant Custom Component Cookiecutter template.
Code template was mainly taken from @Ludeeus's integration_blueprint template