Mycodo — Open-Source Environmental Monitoring and Regulation System
Summary
Mycodo is a mature open-source (GPL-3.0) Python platform for the Raspberry Pi and other single-board computers that couples sensor inputs and control outputs via PID loops, conditionals, and triggers, with a secure web interface, dashboards, alerting, and setpoint tracking. First released in 2015 and actively maintained (about 3.3k GitHub stars, releases through 2025), it was originally built for mushroom cultivation and is now widely used for hydroponic and aquaponic automation, aquatic systems, incubation, fermentation, and research environmental control. It supports MQTT for distributed stations, a REST API, and translations, and has been cited in peer-reviewed work. For new learners it is the gentlest serious control system in its class — excellent documentation (manual, wiki, FAQ, forum) and a GUI-first experience let you log your first sensor without writing code. For advanced users, the plugin-style custom module system is the standout: write a Python class and your sensor, relay, or logic becomes first-class, and MQTT scales from one jar to multiple rooms.
Guiding Principles
- Open Source — GPL-3.0 copyleft, community-driven development, open hardware orientation.
- Modularity — extensible architecture: custom Inputs, Outputs, Functions, and Widgets written in Python.
- Community Self-Sufficiency — local-first data ownership; local-only storage by default with no mandatory cloud.
Learning Outcomes & Transferable Skills
Learners gain Electronics (sensor and relay integration), Coding (custom Python modules, REST API, MQTT), Data Literacy (time-series logging and dashboards), and Systems Thinking (control theory in practice — PID tuning and setpoint profiling). Because Mycodo appears in peer-reviewed literature, methods sections can cite it directly, making it a vehicle for reproducible experimental environments.
How to Replicate or Build On It
- Install on a Raspberry Pi (~$50 upward with sensors/relays) following the documentation site; log your first sensor from the web UI without writing code.
- Configure regulation with PID loops, conditionals, and triggers; set up dashboards and alerting.
- Extend with custom Python modules (Inputs/Outputs/Functions/Widgets) for unsupported hardware or logic.
- Scale out with MQTT for distributed monitoring stations; integrate via the REST API.
Considerations & Constraints
- Cost: Software free; a Raspberry Pi plus sensors/relays starts around $50.
- Skill Level: Moderate — the web UI is approachable, but PID tuning and custom modules require process-control and Python knowledge.
- Space/Climate: Anywhere a Pi can run; enclosure and weatherproofing are on the builder.
- Tools Required: Raspberry Pi or other SBC, sensors/relays, and a microSD card.
- Ongoing Maintenance: Moderate — SD-card wear and backup planning are needed for long-running installs.
- Access Barriers: GPL-3.0 copyleft applies to derivatives; no commercial cloud tier — self-hosting is the model.
Prerequisites
Basic Raspberry Pi literacy; Python and process-control knowledge only needed for advanced customization.
Primary Source
https://github.com/kizniche/Mycodo (documentation and install: https://kizniche.github.io/Mycodo/)