A custom Home Assistant integration for Poollab/LabCom Cloud API, allowing you to monitor your pool water quality parameters directly in Home Assistant.
- 🏊 Multiple Pools Support - Monitor all your pools/devices with a single integration
- 🏖️ Monitor pH levels
- 💧 Track chlorine levels (free, total, combined, unbound, and CYA-bound)
- 🌡️ Monitor water temperature
- ⚗️ Alkalinity tracking
- 🛡️ Stabilizer (CYA) monitoring
- 🧂 Salt level monitoring
- ☁️ Cloud-based GraphQL API integration
- 🔄 Automatic updates every 5 minutes
- ✅ Data validation — out-of-range values are discarded automatically
- Open HACS in Home Assistant
- Go to Integrations
- Click the three-dot menu → "Custom repositories"
- Add
https://github.com/stefanh12/poollabwith category "Integration" - Search for "Poollab" and install
- Restart Home Assistant
- Download the latest release
- Copy the
poollabfolder tocustom_components/in your Home Assistant config directory - Restart Home Assistant
- Go to Settings → Devices & Services → Integrations
- Click "Create Integration" and search for "Poollab"
- Get your personal API token:
- Visit: https://labcom.cloud
- Your token is in the URL:
?token=YOUR_PERSONAL_TOKEN - Copy the entire token string
- Paste your personal token into the Home Assistant config
- The integration will automatically discover all your devices/pools
- Configuration complete!
Each LabCom account has a unique personal token that grants access to your specific device(s).
-
Visit the token interface:
- Go to: https://backend.labcom.cloud/graphiql
- You'll be automatically redirected with your personal token in the URL
-
Find your token in the URL:
- Look at your browser's address bar
- Your token is the long string after
?token= - Example:
https://backend.labcom.cloud/graphiql?token=TOKEN...
-
Copy your personal token:
- Highlight the entire token string (the long alphanumeric sequence)
- Copy it to clipboard
- Don't include the
?token=part, just the token itself
-
Use in Home Assistant:
- When adding the Poollab integration, paste your personal token
- Home Assistant will store it securely
- Never share your personal token - it's like a password for your account
If your LabCom account has multiple pools or devices:
- Automatic Discovery: The integration automatically discovers ALL your pools when you add it
- One Integration Entry: You only need to enter your token once per account
- Separate Device Entries: Each pool appears as a separate device in Home Assistant
- Named Devices: Sensors are named with your pool name (e.g., "Backyard Pool pH", "Front Pool Temperature")
- Manage Separately: You can enable/disable sensors per pool in Home Assistant settings
The integration creates the following sensors for each pool/device:
| Sensor | Description | Unit | Valid Range |
|---|---|---|---|
| pH | Current pool pH | — | 0 – 14 |
| Chlorine | General chlorine level (legacy) | ppm | 0 – 10 |
| Free Chlorine | Active chlorine available for sanitization | ppm | 0 – 10 |
| Total Chlorine | Free + combined chlorine | ppm | 0 – 10 |
| Combined Chlorine | Chloramines — calculated (Total − Free) | ppm | 0 – 5 |
| Unbound Chlorine | Free chlorine from ActiveChlorine model — calculated | ppm | 0 – 5 |
| Chlorine Bound to CYA | Chlorine sequestered by stabilizer — calculated | ppm | 0 – 5 |
| Temperature | Pool water temperature | °C | 0 – 50 |
| Alkalinity | Total alkalinity | ppm | 0 – 300 |
| Stabilizer (CYA) | Cyanuric acid level | ppm | 0 – 200 |
| Salt Level | Salt concentration | ppm | 0 – 3600 |
| Sensor | Description |
|---|---|
| Measurement Count | Total number of measurements stored for the device |
| Last Measurement | Timestamp of the most recent measurement |
The integration provides detailed chlorine measurements:
- Free Chlorine (Active Chlorine): The chlorine available for sanitization. Ideal range: 1–3 ppm.
- Total Chlorine: All chlorine in the pool (free + combined).
- Combined Chlorine: Automatically calculated as (Total − Free). Represents chloramines and water quality. Should be < 0.5 ppm.
- Unbound Chlorine / Bound to CYA: Calculated by the LabCom
ActiveChlorineAPI using your pH, temperature, chlorine, and CYA readings. Requires at least pH and free chlorine measurements to be available.
See CHLORINE_CHEMISTRY.md for detailed guidance on interpreting these values and using them in automations.
The integration validates all measurement values from the API against the physical ranges listed in the table above. Values outside these ranges (e.g. a pH reading of −1 or 99) are treated as invalid and the sensor reports unavailable instead, with a warning logged. The same validation applies to inputs used for the ActiveChlorine calculation — if any required input is out of range, the calculation is skipped for that update cycle.
This integration requires:
- Valid Labcom API token
- At least one Poollab device registered in your account
- Internet connectivity for API communication
- Verify your API token is correct
- Check the token at https://backend.labcom.cloud/graphiql
- Ensure your Labcom account is active
- Check your internet connection
- Log in to your Labcom account
- Verify you have a Poollab device registered
- Ensure the device is associated with your account
- Check network connectivity
- Verify API token is still valid
- Check Home Assistant logs for error messages
- If a specific sensor is unavailable, verify the measurement type is supported by your Poollab device model
- A value that is out of the valid range listed above will also cause the sensor to report unavailable (a warning will appear in the logs)
For issues, feature requests, or questions, please visit: https://github.com/stefanh12/poollab/issues
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.