Mycodo is a free, open source monitoring & observability project written in Python and released under GPL-3.0. It has 3,285 GitHub stars, 566 forks and 118 open issues, and was last pushed 2 months ago. On this registry it ranks #127 of 271 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.

What is Mycodo?

Mycodo is an open-source environmental monitoring and regulation system for the Raspberry Pi that couples inputs and outputs to sense and manipulate a physical environment, built for growers, cultivators, and hardware builders who want to run that control themselves.

What it is

Mycodo is Python software, licensed GPL-3.0 and distributed as a GitHub project that currently holds 3,285 stars and 566 forks. It runs on Debian-based Linux and is recommended for single board computers with General-Purpose Input-Output (GPIO) pins, tested against Raspberry Pi OS 13 Trixie. At its centre are three abstractions: Inputs, which record measurements from sensors, GPIO pin states, and analog-to-digital converters; Outputs, which switch GPIO pins high and low, generate PWM signals, and execute shell scripts or Python code; and Functions, which couple the two, including PID, Conditional, and Trigger logic. A web interface exposes the whole system for viewing and configuration, and the current release is 8.17.0.

The problem it solves is the fragmentation of small-scale environmental control. Sensing an environment, acting on it, graphing the result, and alerting a human when thresholds are crossed are usually separate hand-written scripts and separate tools. Mycodo consolidates that work into one managed system: the same Inputs, Outputs, and Functions that poll a sensor and drive a relay also feed the dashboards, the threshold-based email alerts, and the setpoint tracking of a PID controller. The README is also explicit that this is a local system first, with the web interface reachable on the local network or from anywhere over the internet.

Key capabilities

  • Inputs record measurements from sensors, GPIO pin states, and analog-to-digital converters, and Custom Inputs can be written for hardware that is not yet supported.
  • Outputs switch GPIO pins high or low, generate PWM signals, and execute shell scripts and Python code, with Custom Outputs available for new action types.
  • Functions couple Inputs and Outputs in defined ways, including PID, Conditional, and Trigger functions, plus Custom Functions.
  • The Web Interface provides secure access from a browser on the local network or over the internet, offering several light and dark themes.
  • Dashboards hold configurable widgets, including interactive live and historical graphs, gauges, output state indicators, and measurements, with Custom Widgets supported.
  • Alert Notifications send email when a measurement reaches or exceeds a user-specified threshold.
  • Setpoint Tracking changes a PID controller setpoint over time, and Cameras provide remote live streaming, image capture, and time-lapse photography.

Who uses it and how

  • Hydroponic and plant growers, indicated by the hydroponic, plants, grow, and cultivation topics, monitor sensors and drive relays and lighting from a single dashboard.
  • Mushroom cultivators, indicated by the mushroom topic, regulate temperature and humidity in enclosed growing environments.
  • Operators running temperature profiles, such as terrariums, reflow ovens, thermal cyclers, and sous-vide cooking, use Setpoint Tracking to move a PID setpoint over time.
  • Remote operators reach the web interface over the internet, watching live and historical graphs and receiving email alerts when thresholds are breached.
  • Builders run it on a single board computer with GPIO pins under Raspberry Pi OS 13 Trixie, extending the supported Inputs, Outputs, Functions, and Widgets through the Custom Module Repository.

Getting started

Install on Debian-based Linux with curl -L https://kizniche.github.io/Mycodo/install | bash, recommended on a single board computer with GPIO pins; the project documents the manual, the v1 API, and a wiki alongside a forum, Discord, and GitHub issues for support.

How it compares

The facts provided name no paid products that Mycodo replaces, and they name no similar tools, so it stands alone in this registry. Its distinguishing facts are the GPL-3.0 licence and a design that runs on hardware the operator owns rather than a hosted service.

When to use it — and when not to

A self-hoster must operate a Debian-based Linux machine on a GPIO-capable board, keep it patched and upgraded, and maintain working mail delivery if threshold email alerts are wanted, since remote access also means exposing the web interface to a network. Anyone without Debian-based GPIO hardware, or who wants a managed cloud service rather than a system to run, should not pick it. The repository carries 118 open issues and the README points to an external manual, wiki, forum, and Discord for documentation, so a prospective user should expect to read outside the README.

project readme (upstream, from github) — read inline

Mycodo

Environmental Regulation System

Latest version: 8.17.0

Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in interesting ways to sense and manipulate the environment.

|Build Status| |Codacy Badge| |Translation Badge| |DOI|

.. contents:: Table of Contents :depth: 1

Quick Install

Prerequisites: Debian-based Linux operating system (tested with Raspberry Pi OS 13 Trixie).

Recommended: Single board computer (SBC) with General-Purpose Input-Output (GPIO) pins.

Install Command:

.. code:: bash

curl -L https://kizniche.github.io/Mycodo/install | bash

See the Install Mycodo __ section for more details.

Support

Documentation


`Mycodo Manual `__

`Mycodo API `__ (Version: v1)

`Mycodo Wiki `__

`Mycodo Custom Module Repository `__

Discussion
~~~~~~~~~~

`Mycodo Issues (Bug Reports/Feature Requests) `__

`Mycodo Forum `__

`Mycodo Discord `__

Bug in the Mycodo Software

If you believe there is a bug in the Mycodo software, first search through the github Issues __ and see if your issue has already recently been discussed or resolved. If your issue is novel or significantly more recent than a similar one, you should create a New Issue __. When creating a new issue, make sure to read all information in the issue template and follow the instructions. Replace the template text with the information being requested (e.g. "step 1" under "Steps to Reproduce the issue" should be replaced with the actual steps to reproduce the issue). The more information you provide, the easier it is to reproduce and diagnose the issue. If the issue is not able to reproduced because not enough information is provided, it may delay or prevent solving the issue.

Donate

I have always made Mycodo free and I don't intend on changing that. However, if you find Mycodo useful and would like to support its continued development, please consider becoming a sponsor at github.com/sponsors/kizniche __ or donate at kylegabriel.com/donate __.

Features

  • Inputs __ that record measurements from sensors, GPIO pin states, analog-to-digital converters, and more (or create your own Custom Inputs ). See all Supported Inputs .
  • Outputs __ that perform actions such as switching GPIO pins high/low, generating PWM signals, executing shell scripts and Python code, and more (or create your own Custom Outputs ). See all Supported Outputs .
  • Functions __ that perform tasks, such as coupling Inputs and Outputs in interesting ways, such as PID , Conditional , Trigger , to name a few (or create your own Custom Functions ). See all Supported Functions __.
  • Web Interface __ for securely accessing Mycodo using a web browser on your local network or anywhere in the world with an internet connection, to view and configure the system, which includes several light and dark themes.
  • Dashboards __ that display configurable widgets, including interactive live and historical graphs, gauges, output state indicators, measurements, and more (or create your own Custom Widgets ). See all Supported Widgets .
  • Alert Notifications __ to send emails when measurements reach or exceed user-specified thresholds, important for knowing immediately when issues arise.
  • Setpoint Tracking __ for changing a PID controller setpoint over time, for use with things like terrariums, reflow ovens, thermal cyclers, sous-vide cooking, and more.
  • Notes __ to record events, alerts, and other important points in time, which can be overlaid on graphs to visualize events with your measurement data.
  • Cameras __ for remote live streaming, image capture, and time-lapse photography.
  • Energy Usage Measurement __ for calculating and tracking power consumption and cost over time.
  • Upgrade System __ to easily upgrade the Mycodo system to the latest release to get the newest features or restore to a previously-backed up version.
  • Translations __ that enable the web interface to be presented in different Languages __.

.. image:: https://kylegabriel.com/projects/wp-content/uploads/sites/3/2020/06/Screenshot_2020-04-25-hydra-Default-Dashboard-Mycodo-8-4-0-dashboard_2.png :target: https://kylegabriel.com/projects/wp-content/uploads/sites/3/2020/06/Screenshot_2020-04-25-hydra-Default-Dashboard-Mycodo-8-4-0-dashboard_2.png

Figure: Automated Hydroponic System Build __


Uses

Originally developed to cultivate edible mushrooms, Mycodo has evolved to do much more. Here are a few things that have been done with Mycodo:

Projects by Kyle Gabriel (core developer)


-  `Mushroom Cultivation Automation `__ (`Archive `__)
-  `Hydroponic System Automation `__ (`Archive `__)
-  `Mushroom cultivation `__ (`Archive `__)
-  `Ground-based plant cultivation `__
-  `Maintaining honey bee apiary homeostasis `__ (`Archive `__)
-  `Maintaining humidity in an underground artificial bat cave `__ (`Archive `__)
-  `Remote radiation monitoring and mapping `__ (`Archive `__)
-  `Cooking sous-vide `__ (`Archive `__)
-  `Maintaining a light schedule and regulating humidity `__, ramping from 90 % to 50 % over a 4 week period to acclimatize micropropagated American chestnut plantlets from laboratory to ambient outdoor conditions (`Archive `__)

Featured Projects
~~~~~~~~~~~~~~~~~

.. image:: https://kylegabriel.com/projects/wp-content/uploads/sites/3/2021/09/MushroomCultivation_512x288.jpg
   :target: https://www.youtube.com/watch?v=z41Wy5ZF4O8

.. image:: https://kylegabriel.com/projects/wp-content/uploads/sites/3/2020/07/VID_PROJ_HYDRO_512x288.jpg
   :target: https://www.youtube.com/watch?v=nyqykZK2Ev4

Projects by Others
~~~~~~~~~~~~~~~~~~

-  Maintaining aquatic systems (e.g. fish, hydroponic, aquaponic)
-  Maintaining terrarium, herpetarium, and vivarium environments
-  Incubating young animals and eggs
-  Aging cheese
-  Dry-aging, curing, and smoking meat (`Link 1 `__ (`Archive `__), `Link 2 `__ (`Archive `__

readme truncated — read the full docs on github

Frequently asked questions

Is Mycodo free to use?

Mycodo is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Mycodo do?

An environmental monitoring and regulation system

What is Mycodo written in?

Mycodo is primarily written in Python. Its source is publicly available at https://github.com/kizniche/Mycodo, and it has 3,285 GitHub stars.