Supported hardware
Crop Steering works with hardware you already own, as long as Home Assistant can see it. This page covers what you need and what will not work.
How compatibility works
Crop Steering does not talk to devices directly. It reads and switches Home Assistant entities. For each one it checks two things: the kind of entity (a switch, a valve, a sensor) and the unit (moisture in % or m³/m³, EC in mS/cm). If both match, it can be used. How the device got into Home Assistant does not matter.
Not every device is tested
We have not tested every device. A switch that is slow to report its state, or a probe that reads unevenly, can still cause holds and alerts. A list of verified devices is on the roadmap.
Terms used here: entity, integration, controller, hold, catch test. Full glossary
How to check your device (2 minutes)
Home Assistant already shows the two things that matter: the entity type and the unit.
- In Home Assistant, open Developer tools › States and type part of the device's name into the filter.
- Read the start of its entity id, before the dot:
sensor.,switch.orvalve.. That is its kind. - Under its attributes, read
unit_of_measurement: for example%for moisture ormS/cmfor EC. - Find its role in the table below. If the kind and the unit match, Crop Steering can use it. A switch should also show its new state within a few seconds of being switched: after a shot, the controller waits up to 6 s for each switch to read off.
Required and optional hardware
| Role | Needed? | Entity types accepted | Units | What Crop Steering does with it |
|---|---|---|---|---|
| Moisture (VWC) probe | Required, at least one per zone | sensor | %, m³/m³ | Several probes per zone become one reading (median by default). Silent or out-of-range probes are left out. |
| Zone valve | Required, one per zone | switch, valve, input_boolean | — | Opens and closes it for each shot, and reads it back. |
| Pump, main-line valve | If your plumbing has them | switch, valve, input_boolean | — | Pump on first, main line next, valve last; off in reverse. The plumbing layout you choose must match the switches you map. |
| Substrate EC probe | Recommended | sensor | mS/cm, dS/m, µS/cm | EC steering. Without it, watering runs on moisture and EC rules pause. |
| Feed EC and pH probes | Recommended | sensor | EC units above; pH | Safety checks on the water you feed. |
| Tank level or low float | Optional | sensor (distance), binary_sensor | mm and other distance units | Holds watering below the tank minimum. |
| Flow meter | Optional | sensor | — | Each shot checked against the meter; water with no zone open raises a leak alert. Alerts only, never holds. |
| Dosing pumps | Optional, up to 8 per room | volume number + start button (or script) | — | Batch-tank dosing and opt-in pH correction. The pump's own firmware times each dose. |
| Waste valve | Optional | switch | — | Only ever switched off (closed) for a shot. |
| Lights | Optional | light, switch | — | Checked against your schedule. Opt-in dimming when the substrate is dry: never off, never below 30 %. |
| Air temperature, humidity, VPD; AC and dehumidifier state | Optional | sensor, climate, switch | °C, °F, K | Read only, for records and the runoff estimate. |
| External interlocks | Optional | any entity | — | Shots hold while one is on. |
| CO2, light level, camera, leaf and root-zone temperature | Optional | sensor, camera | — | Shown on the dashboard only. |
Hardware by category
How each type of device usually reaches Home Assistant. The brand and model do not matter.
Substrate probes
Usually reaches Home Assistant through ESPHome boards, Modbus, MQTT or a vendor integration.
Becomes: sensor in % or m³/m³; EC in mS/cm, dS/m or µS/cm
Relays and smart plugs
Usually reaches Home Assistant through Zigbee, Z-Wave, ESPHome or MQTT.
Becomes: switch
Solenoid and motorised valves
Usually reaches Home Assistant through a relay or plug, or the valve's own integration.
Becomes: switch or valve
Pumps
Usually reaches Home Assistant through a relay or contactor Home Assistant can switch.
Becomes: switch
Flow meters
Usually reaches Home Assistant through ESPHome pulse counting or Modbus.
Becomes: sensor
Tank level and float switches
Usually reaches Home Assistant through ESPHome, Zigbee or a wired input.
Becomes: sensor (distance) or binary_sensor
Dosing pumps
Usually reaches Home Assistant through firmware that times its own dose, often ESPHome.
Becomes: number (volume) and button or script (start)
Feed EC and pH transmitters
Usually reaches Home Assistant through Modbus, ESPHome or a vendor integration.
Becomes: sensor (EC units; pH)
Climate sensors
Usually reaches Home Assistant through any route; most climate sensors already appear in Home Assistant.
Becomes: sensor or climate (read only)
Lights
Usually reaches Home Assistant through the light's own integration or a relay.
Becomes: light or switch
How devices connect to Home Assistant
These are Home Assistant features, not Crop Steering features. Home Assistant's own documentation covers pairing and setup.
| Route into Home Assistant | Typical entities | Note |
|---|---|---|
| ESPHomeWi-Fi boards running local firmware | sensors, switches, valves, dosing number + button | Many grow sensors and relays are built this way. |
| ZigbeeLow-power mesh radio devices | switches, plugs, valves, leak and float sensors | Some plugs report their state slowly; the controller allows up to 6 s, then sends off again and waits 10 s more before it holds the room. |
| Z-WaveMesh radio devices | switches, valves, sensors | — |
| MQTTDevices that publish to a message broker | any type the device declares | — |
| ModbusWired industrial meters and controllers | sensors, switches, binary sensors | Common for wired industrial meters. |
| Vendor integrationsThe device maker's own Home Assistant integration | whatever it exposes | Prefer local integrations. A cloud dependency is a reliability risk for watering. |
| Helpers and templatesHome Assistant's built-in helpers | virtual switches, numbers, dates | A virtual switch can stand in for a valve while you test. |
Minimum setup for one zone
- 01A Home Assistant host, 2024.10 or newer. Home Assistant OS or Supervised for the controller app; Container or Core plus Docker for the controller container.
- 02One switch or valve entity for the zone. A smart plug or a solenoid is enough for the “Zone valves only” layout.
- 03One moisture probe. A sensor that reads in % or m³/m³.
- 04Lights hours. Lights-on and lights-off set at different hours.
- 05Plant count and dripper flow. So each shot can be sized. Measure the dripper flow with a catch test.
Physical safety devices you still need
Caution
- Valves that close when power is lost.
- A float switch or timer that can stop the pump without software.
- A physical shutdown you can reach.
What is not supported (at 3.18.1)
- Pairing devices or flashing firmware. Home Assistant does that.
- EC probes that only report ppm or ppt. ppm is a display unit only.
- Valves, pumps or main lines exposed as anything other than a switch, valve or virtual switch (for example a cover or a fan).
- Dosing pumps that cannot time their own dose from a volume and a start.
- Watering several zones at the same moment. The controller opens one zone at a time.
- Lights on 24 hours (equal on and off hours). This is on the roadmap.
- Climate, CO2 or light on/off control.
- More than 24 zones per room, 32 probes per reading per zone, or 8 dosing pumps per room.
- AI or MCP control of pumps, valves, engine switches or plan activation.
- Yield or potency scores.
- Release 3.18 has not yet been run on real plumbing. Start on one zone with a catch test.
- The software is not an emergency stop.
Take the fit check Why ppm is not accepted Pumps, sharing and flow meters Dosing pumps in detail How the safety checks use your hardware
For hardware makers and integrators
- To work with Crop Steering, a device only has to appear in Home Assistant as the right entity type with a supported unit, report its state promptly, and go unavailable (not stale) when it loses contact.
- Crop Steering exposes 95 services. Each response service can return a versioned envelope (
api: 2) with the room, revision, read-back and event ids, and typed errors. - Every shot, hold, dose, phase change and setting change is written to one event journal you can read through services and the dashboard.
- An MCP connector lets AI assistants read setup and status and prepare changes for a person to approve: 22 tools, none of which run hardware.
- Planned: a versioned device contract per role and a public device list in three tiers (verified, community-reported, should work). See the roadmap.
Contact the maintainer about a device
Send:
- the device, and how it reaches Home Assistant (its integration, ESPHome, Zigbee, MQTT and so on);
- each entity it creates, with its kind and unit, as in the 2-minute check above;
- how quickly its states update, and whether you have run it on a zone.
The maintainer replies there. No device is listed as verified yet: the three-tier device list is planned. If you would rather talk privately, say so in a short post without details, and the maintainer will reply with a private way to reach them.
Entity reference MCP and the API envelope AI setup System overview Feature matrix System map