Skip to content

Repository files navigation

IndustryGrow

REUSE status

An open-core platform for instrumented, profile-driven crop cultivation that scales — on one architecture — from an apartment-sized cabinet to a several-hundred-square-metre commercial facility.

Start here → Motivation. The gap this project is built to close, stated plainly.

IndustryGrow

Purpose

IndustryGrow turns a growing space into a measured, controllable system. It provides the field hardware, firmware, and edge software that sense a cultivation environment and run its control loops. Its companion platform, IndustryFlow, stores history, runs analytics, and distributes cultivation profiles.

The project is open-core: the same architecture serves community self-builders and commercial managed deployments. Hardware designs and reference firmware are open; the defensible value is not the sensors (commodity) but the expertise to identify a deployment's dynamics and operate it efficiently afterward.

Core concept

  • One architecture, all scales. Apartment cabinet and a 200 m² greenhouse use identical PCB designs, firmware, and data types. Scaling means multiplying node instances across zones — never introducing new node classes.
  • Profile as the single mutation channel. A cultivation profile (signed, versioned JSON) is the only way to change how a deployment behaves. Human edits, ML-generated optimizations, and community contributions all flow through profile versioning — one audit trail, one rollback path.
  • Autonomous edge. The gateway runs control loops locally against a cached profile. The cloud is an observer and profile source, never a real-time commander — plants keep growing through network outages.
  • Safety is hardware, separate from control. The over-temperature interlock at the heating actuator cuts power independently of any software. The profile defines operating parameters; hardware defines survival parameters. The two never overlap.
  • Sensor density is temporal. Dense coverage during an empirical survey, a reduced-order state-space model is identified, then most sensors return to inventory for the lean operating phase. Profiles carry the model alongside the setpoints.

Technology

Layer Choice
Field bus Cyphal application protocol over classic CAN @ 500 kbit/s, linear topology
Smart-node MCU WeAct STM32F4 64-pin Core Board (STM32F405RGT6; F412/F446 drop-in)
Node carrier PCB Custom integration board: CAN transceiver, ATECC608 secure element, sensor-module header
Gateway Raspberry Pi (3B+ minimum, Pi 4/5 for higher traffic) + isolated 2-channel CAN HAT
Gateway software Python / asyncio, SocketCAN + Pycyphal + Nunavut-generated DSDL bindings
Cloud link mTLS to IndustryFlow; gateway is a stateless edge in steady state (audit trail on platform). Pre-cloud, and for buffering/survey, it keeps a bounded local store per ADR-0020
Node firmware Embedded C with libcanard
Identity & security Per-node ATECC608 hardware identity; signed firmware; trusted in-cabinet CAN domain

Hardware design files live in store/ under the ADR-0017 identification scheme (carrier = E0001, v0.0.1 → E0001-000001.*); see REGISTRY.md for the E-number map. PCBs are authored in KiCad 10 (will not open in earlier versions); cabinet distribution schematics (.qet, e.g. E0007) are drawn in QElectroTech.

Sensor module catalog

Seven reusable PCB designs, one functional subsystem each. Instances are specialized by populated-BOM, not by new designs.

Module Subsystem Key sensing
M01-CLIMATE Air environment Temp/RH, gas/VOC, CO₂
M02-LIGHT Photic environment 11-channel spectral, UV-A
M03-ANALYTICS Hydroponic solution pH, EC, solution temperature
M04-PLANT Plant-level Canopy thermal imaging
M05-SAFETY Power & monitoring +12 V bus current, reported cabinet temp, door, leak (report/alert)
M06-VENTILATION Air transport Duct velocity, filter Δp, envelope↔ambient Δp, in-stream T/RH
M07-AMBIENT Boundary conditions Ambient T/RH, barometric pressure, ambient CO₂, irradiance, wind (outdoor, deployment scale)

M01 measures air state at the plant; M06 measures air transport through the cabinet. The split is why airflow is no longer an M01 quantity (ADR-0014 rev 2). M07's "ambient" is whatever the growing enclosure exchanges with one step out — the weather for a greenhouse, the surrounding room for a cabinet — so it ships as indoor and outdoor variants of one design, differing in populated BOM and housing, never in PCB, strap, or firmware. M06 and M07 are defined, not scheduled — neither is laid out or fabricated, and Phase 1 remains the M01–M05 set. Their working specifications live in spec/.

Project status

Phase Scope State
Phase 1 Hardware + firmware bring-up; the 5 sensor nodes M01–M05 + gateway; standalone, no cloud In progress
Phase 2 Cloud integration: mTLS ingestion, profile sync, audit trail Blocked on IndustryFlow prerequisites
Phase 3 Community profile registry, predictive ML, multi-cabinet coordination Planned

The dependency-ordered build sequence (14 stages, with the real cross-stage dependencies) lives in project/ROADMAP.md.

Documentation

Read For
MOTIVATION.md Why — the gap IndustryGrow is built to close
project/RESEARCH.md What's open — the research directions (L1–L7) the gap opens
project/ROADMAP.md When — the dependency-ordered build sequence
Architecture decision records How — the design decisions, the source of truth
spec/ Module specifications — sensor complement, power, bus, thermal and mechanical, per module class. As-built for built modules (M05), pre-schematic for the rest
REGISTRY.md The hardware E-number / instance map

Architecture decision records

ADRs are the source of truth for the design. Present in this repository:

  • ADR-0000 (rev 1) — Decision records and the single-source-of-truth discipline (adds the cross-project ADR namespace) · Accepted
  • ADR-0001 (rev 1) — Project framing: open-core cultivation platform on IndustryFlow · Accepted
  • ADR-0002 (rev 3) — Field bus architecture · Accepted
  • ADR-0003 — Strawberry day-neutral cultivation profile (reference profile) · Proposed
  • ADR-0004 (rev 1) — Gateway host hardening & stateless-edge operation · Accepted
  • ADR-0005 (rev 1) — DSDL foundation: industryflow.greenhouse vocabulary, standard-type reuse, port-ID allocation · Accepted
  • ADR-0007 (rev 1) — PKI, hardware identity, and provisioning (ATECC608 secure element; adds identity across operators) · Accepted
  • ADR-0014 (rev 2) — Sensor node taxonomy and module decomposition (adds M06-VENTILATION and M07-AMBIENT; module-ID field exhausted) · Accepted
  • ADR-0015 — Gateway profile caching and local control loops · Accepted
  • ADR-0016 (rev 1) — Empirical survey and state-space modeling · Proposed
  • ADR-0017 (rev 2) — Component, document, and instance identification scheme (firmware F layer rooted on the carrier; extends the taxonomy to M01–M07) · Accepted
  • ADR-0018 (rev 1) — Cabinet-level power distribution and consumption metering · Proposed
  • ADR-0019 — Purchased-part (SP) identification · Accepted
  • ADR-0020 — Gateway persistence model (local store as lifecycle-dependent data sink) · Accepted
  • ADR-0021 (rev 3) — Instance-and-integration ERP: the pre-cloud system of record (where it runs; machine identity binding) · Accepted
  • ADR-0022 (rev 1) — Instance-and-integration ERP: the machine- and operator-facing API (machine binding route; the pull is a pure read) · Accepted
  • ADR-0023 — The type registry as a machine-readable interface · Accepted
  • ADR-0024 — Operator CA bootstrap and the root-key ceremony · Accepted
  • ADR-0025 — Deployment-profile signing and gateway verification · Accepted
  • ADR-0026 — ERP backup and restore across two stores · Accepted

Status follows the lifecycle in ADR-0000 (decision 7); the project maintainers are the accepting authority.

Planned / not yet written: ADR-0006 (mechanical/hydroponic), ADR-0008 (deployment topology), ADR-0009 (profile schema), ADR-0010 (commercial operations), ADR-IF-0001 (IndustryFlow production_unit).

Licensing

Open-core; license per part of the repo — see LICENSE.md for the authoritative mapping, with full texts in LICENSES/.

  • Hardware designs in store/ (carrier + sensor modules): CERN-OHL-S-2.0
  • ADRs & documentation (ADR/, README, REGISTRY.md, spec/): CC-BY-SA-4.0
  • Reference firmware (firmware/, node sources): AGPL-3.0-or-later
  • DSDL protocol layer (firmware/dsdl/): Apache-2.0
  • ERP application (erp/) and operator CA tooling (pki/): AGPL-3.0-or-later
  • DSDL / protocol layer (firmware/dsdl/, the industryflow.greenhouse.* types): Apache-2.0
  • WeAct core board snapshot retained under its upstream open-hardware license

About

Open-core platform for instrumented, profile-driven crop cultivation — one architecture from an apartment cabinet to a commercial greenhouse.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages