# 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](https://cropsteering.growlabs.nz/roadmap).

Terms used here: [entity](https://cropsteering.growlabs.nz/glossary#entity), [integration](https://cropsteering.growlabs.nz/glossary#integration), [controller](https://cropsteering.growlabs.nz/glossary#controller), [hold](https://cropsteering.growlabs.nz/glossary#hold), [catch test](https://cropsteering.growlabs.nz/glossary#catch-test). [Full glossary](https://cropsteering.growlabs.nz/glossary)

## How to check your device (2 minutes)

Home Assistant already shows the two things that matter: the entity type and the unit.

1. In Home Assistant, open **Developer tools › States** and type part of the device's name into the filter.
2. Read the start of its entity id, before the dot: `sensor.`, `switch.` or `valve.`. That is its kind.
3. Under its attributes, read `unit_of_measurement`: for example `%` for moisture or `mS/cm` for EC.
4. 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

*Each role, whether you need it, what Home Assistant must show, and what Crop Steering does with it*

| 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. |

[Every entity Crop Steering creates](https://cropsteering.growlabs.nz/docs/entities)

## 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.

*How devices usually become Home Assistant entities*

| Route into Home Assistant | Typical entities | Note |
| --- | --- | --- |
| ESPHome Wi-Fi boards running local firmware | sensors, switches, valves, dosing number + button | Many grow sensors and relays are built this way. |
| Zigbee Low-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-Wave Mesh radio devices | switches, valves, sensors | — |
| MQTT Devices that publish to a message broker | any type the device declares | — |
| Modbus Wired industrial meters and controllers | sensors, switches, binary sensors | Common for wired industrial meters. |
| Vendor integrations The device maker's own Home Assistant integration | whatever it exposes | Prefer local integrations. A cloud dependency is a reliability risk for watering. |
| Helpers and templates Home 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

1. 01 A 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.
2. 02 One switch or valve entity for the zone. A smart plug or a solenoid is enough for the “Zone valves only” layout.
3. 03 One moisture probe. A sensor that reads in % or m³/m³.
4. 04 Lights hours. Lights-on and lights-off set at different hours.
5. 05 Plant 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](https://cropsteering.growlabs.nz/is-it-for-me) [Why ppm is not accepted](https://cropsteering.growlabs.nz/faq#ppm-meters) [Pumps, sharing and flow meters](https://cropsteering.growlabs.nz/docs/water-supply) [Dosing pumps in detail](https://cropsteering.growlabs.nz/docs/dosing) [How the safety checks use your hardware](https://cropsteering.growlabs.nz/safety)

[Next Try the live demo](https://cropsteering.growlabs.nz/demo)

## 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](https://cropsteering.growlabs.nz/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.

[Start a conversation](https://github.com/JakeTheRabbit/HA-Irrigation-Strategy/discussions/new?category=general)

[Entity reference](https://cropsteering.growlabs.nz/docs/entities) [MCP and the API envelope](https://cropsteering.growlabs.nz/docs/mcp) [AI setup](https://cropsteering.growlabs.nz/docs/ai-setup) [System overview](https://cropsteering.growlabs.nz/docs/system-overview) [Feature matrix](https://cropsteering.growlabs.nz/docs/feature-matrix) [System map](https://cropsteering.growlabs.nz/system-map)

Source: https://cropsteering.growlabs.nz/hardware
