Skip to content

Repository files navigation

Crop Steering for Home Assistant

A Home Assistant irrigation controller with a native operator workspace: see the room, plan each zone, map sensors, and review changes before applying them.

Open interactive demo · Install · Feature checklist

The demo opens directly in your browser with sample rooms, sensor data and editable plans. No login or Home Assistant installation is required; demo changes stay in your browser.

The demo includes clearly labelled synthetic recipes and current/previous runs for exploring comparisons. They demonstrate the software; they are not production recommendations.

Release Home Assistant License

Read the validated feature matrix for tested behavior and installation/commissioning limits. Install matching integration and controller versions; a demo is not proof of physical water delivery.

Crop Steering operator workspace

Start here

  1. Add the integration repository to HACS, download it, and restart Home Assistant.
  2. Add Crop Steering in Devices & services. Choose manual setup and name the first room.
  3. Add the controller app repository, then install and start Crop Steering Controller.
  4. Open Crop Steering in the sidebar. Use Rooms & setup to map equipment and probes, then Sensors to verify readings. Keep the engine off until the installation checks pass.

Home Assistant owns the install/restart confirmations; these links take you directly to the relevant screens. They do not bypass HACS, Supervisor or hardware commissioning. Complete installation and upgrade guide →

See the room at a glance

Overview shows the controller state, mapped valve on/off report and last recorded irrigation for every zone. The graphical tank panel shows fill percentage, pump status, filling status, last recorded fill, EC, pH and temperature.

Map tank sensors in Rooms & setup. Display-only tank quality mappings are separate from feed-water safety gates. Last fill uses a recorded fill timestamp (timestamp sensor or a date-and-time helper), never a sensor update time. Unmapped or unavailable readings are labelled explicitly.

Graphical tank and pump status

The recorded 8 September 2.16.0 live check showed F2 tank 42%, 3.06 mS/cm EC, pH 5.66 and 17.9 °C, plus an explicit recorded-fill source and timezone-aware last-irrigation times. Reviewed MCP tank-mapping proposals applied and read back in both rooms at setup revision 1; healthy controller reports acknowledged revision 1. The native HA sidebar was hidden in the panel, and the Home Assistant button reopened it. These are dated observations, not current readings or proof of physical delivery.

One irrigation plan: Today and Schedule

Irrigation plan brings current targets and dated planning together. Today shows editable current targets when no schedule owns the room; an active schedule shows its effective targets and graph as read-only, with fallback manual inputs hidden. Schedule edits the dated plan for each zone.

The unified navigation and overnight curves are published and verified live in 2.16.1 / controller 0.13.3. Both Today and Schedule opened in the native HA panel, all 398 existing control values matched the pre-upgrade snapshot, and the installed dashboard files matched the public demo. See the release verification. Existing #/strategy and #/grow-plan bookmarks continue to open Today and Schedule respectively.

In Irrigation plan → Schedule, choose a room, zone and day or week. The steering slider updates the VWC/EC planning curve and shows the targets behind it.

Save your own plans in Irrigation plan → Schedule → Recipe library and reuse them as local drafts. The library is kept in this browser, separated by room and demo/live mode. Loading retains the current zone start dates; saving and arming still use the normal review workflow. Recipe library and reference sources →

Combined VWC and EC planning graph with per-zone day and week controls

Reusable user-authored plans in the recipe library

See each change before applying it

Irrigation plan → Today keeps the full-day VWC/EC graph beside the current targets. With no active schedule, raising the P3 emergency threshold moves its draft line immediately while the saved reference remains visible. Review and apply when ready. When a schedule owns the room, Today displays its effective targets and graph without exposing fallback manual controls; use Schedule for dated plan changes.

Manual P3 editing with saved and draft VWC/EC curves

Compare runs aligns recorded day/week/month/run-to-date readings with an earlier run at the same grow age, or with a captured target reference. History availability depends on your Home Assistant Recorder retention. Registering an old run now does not recover its old setpoints.

Recorded VWC and EC comparison against a previous run and target reference

Water cards show zone litres for all plants, average mL per plant today, and estimated water per runtime. Total substrate capacity is labelled separately. For example, 42 plants with one 4 L/h dripper each receive an estimated 133 mL per plant / 5.6 L per zone over 120 seconds; a 60-second cap halves that. These estimates require correct flow settings and do not measure uptake or runoff.

Set up rooms and sensors

Add or archive rooms and zones, map existing Home Assistant entities, and enter each zone's substrate, plants and drippers.

Room and zone setup with sensor mapping

View the mobile dashboard Mobile room overview with responsive navigation

One workspace

Page Purpose
Overview Room condition, controller status, recorded VWC/EC and daily water per zone/per plant
Zones Per-zone readings, active phase, targets and enable controls
Irrigation plan → Today / Schedule Today shows current editable targets or the active schedule’s read-only effective targets; Schedule edits per-zone dated plans, profiles and curves
Compare runs Retained day/week/month/run-to-date history, previous-run alignment and captured target references
Insights Sensor coverage, equipment mapping and local dripper catch-test calculations
Activity Available controller/state activity with explicit evidence limits
Sensors Probe availability, values, units and freshness
Rooms & setup Add, configure, archive and restore rooms/zones; search and map existing HA entities
Settings / Help Connection, inherited HA theme, workflow explanations and limitations

The React/shadcn workspace inherits Home Assistant colors and typography in its same-origin sidebar panel. It bundles Roboto, scripts and styles locally. Standalone use supports light/dark themes; no CDN is needed. Old dashboard addresses redirect into the new workspace.

How steering works

The legacy mode selects separate dryback and EC references. A grow plan replaces those two discrete choices with a 0–100% interpolation between explicit vegetative and generative endpoint profiles, separately scheduled for each zone. Pot size and dripper flow determine estimated water volumes and run times; they cannot determine suitable crop targets by themselves.

The controller runs P0 morning dryback, P1 ramp-up, P2 maintenance and P3 overnight/rescue phases. Dryback is relative to the detected peak: a 60% VWC peak with a 10% dryback target means 54% VWC. The updated planning graph joins the daytime references through lights-off and overnight to the next lights-on. Its dashed EC line interpolates between configured phase anchors; it does not predict salt concentration or the physical EC trajectory. Missing inputs remain gaps. Both curves are planning illustrations, not forecasts of measured plant response.

Plans are saved as drafts, reviewed, and armed for the next local lights-on boundary. Arming never enables pumps or the engine. The controller consumes one versioned plan snapshot; a missing or stale required snapshot holds irrigation. Planning guide →

Documentation

To connect an LLM, install the optional MCP connector. It can inspect rooms, readings, mappings, plans and runs, then prepare specific configuration proposals. Writes require explicit opt-in and review; it does not operate equipment or activate plans.

The integration owns configuration, entities and plans. The companion controller owns irrigation decisions and equipment sequencing. Both are needed for autonomous irrigation. This project does not dose nutrients or control climate.

Old facility YAML, package examples, environment templates, full dashboards and superseded guides are retained with hashes in archive/2026-09-08. Stable entity IDs and the existing controller slug remain compatible.

About

Professional crop steering for Home Assistant - substrate VWC and EC driven P0-P3 irrigation phases with full GUI configuration. No $3,000 controller, no monthly subscription.

Topics

Resources

Stars

20 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages