A custom Home Assistant integration for the GrowCube smart planter. Monitor soil moisture, track watering events, get alerts when plants need water, and build automations—all from your Home Assistant dashboard.
- Features
- Prerequisites
- Installation
- Configuration Reference
- Entities & Attributes
- Lovelace Examples
- Troubleshooting
- Advanced Usage
- Contributing
- License
- Soil Moisture Sensor: Real‐time percentage reading of soil moisture
- Last Watered Sensor: Timestamp of the most recent watering event
- Needs Water Binary Sensor: Flags when moisture falls below your threshold
- GUI Setup: Native Config Flow (no YAML needed)
- HACS-Ready: One-click install + automatic updates
- Translatable: JSON-based language files
- Home Assistant 2025.4.0 or newer
- GrowCube device accessible on your LAN
- API key for your GrowCube (see your device’s docs)
To install via HACS:
- Open HACS in Home Assistant.
- Navigate to "Integrations".
- Click the "+" button and search for "GrowCube".
- Follow the prompts to install.
- Clone or download this repo
- Copy
custom_components/growcube/into your HAconfig/folder - Confirm structure:
config/ └── custom_components/ └── growcube/ ├── __init__.py ├── manifest.json ├── config_flow.py ├── sensor.py └── translation/ └── en.json - Restart Home Assistant
Note: Config Flow is preferred; YAML is still supported for advanced users.
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
| Host | string | yes | — | IP or hostname of your GrowCube |
| API Key | string | yes | — | Your device’s API key |
| Poll Interval | integer | no | 300 | Seconds between updates |
| Moisture Threshold | integer | no | 30 | % moisture below which the Needs Water sensor turns on |
growcube:
host: 192.168.1.50
api_key: YOUR_API_KEY_HERE
poll_interval: 600 # poll every 10 minutes
moisture_threshold: 25 # alert when < 25%Add the following to your configuration.yaml:
growcube:
username: your_username
password: your_password| Entity ID | Type | Description |
|---|---|---|
sensor.growcube_moisture |
Sensor | Current soil moisture (%) |
• .state |
string | Moisture reading (e.g. “42”) |
• .attributes.battery_level |
integer | Device battery (%) (when available) |
sensor.growcube_last_watered |
Sensor | Timestamp of last watering event |
• .state |
datetime | e.g. “2025-05-19T18:22:00+00:00” |
binary_sensor.growcube_needs_water |
Binary Sensor | on if moisture < threshold; otherwise off |
type: entities
title: GrowCube Status
entities:
- entity: sensor.growcube_moisture
name: Soil Moisture
- entity: binary_sensor.growcube_needs_water
name: Needs Water
- entity: sensor.growcube_last_watered
name: Last Wateredtype: custom:apexcharts-card
graph_span: 24h
header:
show: true
title: Soil Moisture (Last 24 h)
series:
- entity: sensor.growcube_moisture
name: Moisture %
type: column(Requires apexcharts-card)
-
Integration Not Found
- Verify
custom_components/growcube/manifest.jsonexists - Check HA logs: Settings → System → Logs
- Verify
-
Invalid Host/API Key
- Ping your GrowCube from the HA host
- Test with
curl http://<host>/api/status?api_key=<key>
-
Sensor Unavailable or
unknown- Increase
poll_intervalif your device sleeps - Update GrowCube firmware to latest version
- Increase
-
InfluxDB + Grafana
influxdb: reports: - entity: sensor.growcube_moisture - entity: sensor.growcube_last_watered
Import this Grafana dashboard JSON for ready-made charts.
-
Automation Blueprint
Save underblueprints/automation/growcube/needs_water.yamland invoke to send notifications when your plants need watering.
- Fork the repo & create a branch
git checkout -b feature/my-feature
- Add tests if you add or change logic
- Submit a PR with a clear changelog entry
Please follow Semantic Versioning and update version in manifest.json.
This project is licensed under the MIT License. See LICENSE for details.
If you found this useful, you can support future work here: