Skip to content
Switch branches/tags


Environmental Regulation System

Latest version: 8.12.9

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



Mycodo Manual (PDF)

Mycodo API (Version: v1)

Mycodo Wiki

Mycodo Custom Module Repository

Mycodo Support Android App


Mycodo Issues (Bug Reports/Feature Requests)

Mycodo Forum (the old forum is being phased out, registration closed)

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.


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 or donate at


  • 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 controllers, Conditional Controllers, Trigger Controllers, 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.

Figure: Automated Hydroponic System Build


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

My projects


Projects of 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))
  • Fermenting beer, food, and tobacco
  • Controlling reflow ovens
  • Culturing microorganisms
  • Treating agricultural waste water (Archive, Publication)
  • ...and more

Let me know how you use Mycodo and I may include it on this list.


Visit the Screenshots page of the Wiki.

Install Mycodo


Mycodo has been tested to work with Raspberry Pi OS Lite (2020-05-27), and also the Desktop version if using Mycodo version => 8.6.0.


Once you have the Raspberry Pi booted into the Raspberry Pi OS with an internet connection, run the following command in a terminal to initiate the Mycodo install:

curl -L | bash

Install Notes

Make sure the install script finishes without errors. A log of the output will be created at ~/Mycodo/install/setup.log.

If the install is successful, the web user interface should be accessible by navigating a web browser to, replacing with your Raspberry Pi's IP address. Upon your first visit, you will be prompted to create an admin user before being redirected to the login page. Once logged in, check that the time is correct at the top left of the page. Incorrect time can cause a number of issues with measurement storage and retrieval, among others. Also ensure the host name and version number at the top left of the page is green, indicating the daemon is running. Red indicates the daemon is inactive or unresponsive. Last, ensure any java-blocking plugins of your browser are disabled for all parts of the web interface to function properly.

If you receive an error during the install that you believe is preventing your system from operating, please create an issue with the install log attached. If you would first like to attempt to diagnose the issue yourself, see Diagnosing Issues.

A minimal set of anonymous usage statistics are collected to help improve development. No identifying information is saved from the information that is collected and it is only used to improve Mycodo. No other sources will have access to this information. The data collected is mainly what and how many features are used, and other similar information. The data that's collected can be viewed from the 'View collected statistics' link in the Settings -> General page. There is an opt out option on the General Settings page.


The latest API documentation can be found here: API Information and API Endpoint Documentation.

About PID Control

A proportional–integral–derivative (PID) controller is a control loop feedback mechanism used throughout industry for controlling systems. It efficiently brings a measurable condition, such as temperature, to a desired state (setpoint). A well-tuned PID controller can raise to a setpoint quickly, have minimal overshoot, and maintain the setpoint with little oscillation.

PID Animation


The top graph visualizes the regulation of temperature. The red line is the desired temperature (setpoint) that has been configured to change over the course of each day. The blue line is the actual recorded temperature. The green vertical bars represent how long a heater has been activated for every 20-second period. This regulation was achieved with minimal tuning, and already displays a very minimal deviation from the setpoint (±0.5° Celsius). Further tuning would reduce this variability further.

See the PID Controller and PID Tuning sections of the manual for more information.

Supported Inputs and Outputs

All supported Inputs, Outputs, and other devices can be found under the Supported Devices section of the manual.

Custom Inputs, Outputs, and Controllers

Mycodo supports importing custom Input, Output, and Controller modules. you can find more information about each in the manual under Custom Inputs, Custom Outputs, and Custom Functions.

If you would like to add to the list of supported Inputs, Outputs, and Controllers, submit a pull request with the module you created or start a New Issue.

Additionally, I have another github repository devoted to custom Inputs, Outputs, and Controllers that do not necessarily fit with the built-in set and are not included by default with Mycodo, but can be imported. These can be found at kizniche/Mycodo-custom.


Thanks for using and supporting Mycodo, however depending where you found this documentation, you may not have the latest version or it may have been altered, if not obtained through an official distribution site. You should be able to find the latest version on github or my web site at the following links.


See License.txt

Mycodo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Mycodo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

A full copy of the GNU General Public License can be found at

This software includes third party open source software components. Please see individual files for license information, if applicable.


Translation Table

By default, mycodo will display the default language set by your browser. You may also force a language in the settings at [Gear Icon] -> Configure -> General -> Language

If you would like to improve the translations, you can make changes at, submit a pull request with an amended .po file from ~/Mycodo/mycodo/mycodo_flask/translations/, or start a New Issue detailing the corrections.


The native language used in the software.


Mycodo is een geautomatiseerd monitoring- en regelsysteem dat is gebouwd om op de Raspberry Pi te draaien (versies Zero, 1, 2, 3 en 4).

Oorspronkelijk ontworpen om eetbare paddenstoelen te kweken, is Mycodo uitgegroeid tot het vermogen om veel meer te doen, waaronder het kweken van planten, het kweken van micro-organismen, het onderhouden van bijenbijen bij de bijen, het incuberen van dieren en eieren, het onderhouden van aquatische systemen, het ouder worden van kazen, het fermenteren van voedsel en tabak, het koken eten (sous-vide) en meer.

Het systeem bestaat uit een backend (daemon) en een frontend (gebruikersinterface). De backend voert metingen uit van sensoren en apparaten, coördineert vervolgens een diverse reeks antwoorden op die metingen, inclusief het vermogen om outputs te moduleren (relais, PWM, draadloze outlets), omgevingsomstandigheden te regelen met elektrische apparaten onder PID-regeling (gestage regeling of omschakeling tijd), timers plannen, foto's maken en video streamen, acties activeren wanneer metingen aan bepaalde voorwaarden voldoen (relais moduleren, opdrachten uitvoeren, per e-mail op de hoogte stellen, etc.) en meer. De frontend is een webinterface die gemakkelijke navigatie en configuratie mogelijk maakt vanaf elk apparaat met een browser.


Mycodo est un système de surveillance et de régulation automatisé conçu pour fonctionner sur le Raspberry Pi (versions zéro, 1, 2, 3 et 4).

Conçu à l'origine pour cultiver des champignons comestibles, Mycodo s'est développé pour inclure la capacité de faire beaucoup plus, notamment la culture de plantes, la culture de micro-organismes, le maintien de l'homéostasie du rucher des abeilles, la mise en incubation des animaux et des œufs, la maintenance des systèmes aquatiques, le vieillissement des fromages, la fermentation nourriture (sous vide), et plus.

Le système comprend un serveur (démon) et une interface utilisateur (interface utilisateur). Le système effectue des mesures à partir de capteurs et d’appareils, puis coordonne un ensemble divers de réponses à ces mesures, notamment la possibilité de moduler les sorties (relais, PWM, prises sans fil), de réguler les conditions environnementales avec des appareils électriques sous contrôle PID (régulation continue ou basculement temps), planifiez des minuteries, capturez des photos et des flux vidéo, déclenchez des actions lorsque les mesures répondent à certaines conditions (moduler des relais, exécuter des commandes, notifier par courrier électronique, etc.), etc. L'interface Web est une interface Web qui facilite la navigation et la configuration à partir de tout appareil compatible avec le navigateur.


Mycodo ist ein automatisiertes Überwachungs- und Regulierungssystem, das für den Raspberry Pi (Versionen Zero, 1, 2, 3 und 4) entwickelt wurde.

Ursprünglich für die Kultivierung von Speisepilzen konzipiert, hat Mycodo die Fähigkeit zu weitaus mehr erweitert, darunter die Kultivierung von Pflanzen, die Kultivierung von Mikroorganismen, die Aufrechterhaltung der Homöostase der Bienenhaus-Bienenhäuser, die Inkubation von Tieren und Eiern, die Aufrechterhaltung von Wassersystemen, das Altern von Käse, das Gären von Lebensmitteln und Tabak sowie das Kochen Essen (Sous-Vide) und mehr.

Das System besteht aus einem Backend (Daemon) und einem Frontend (Benutzeroberfläche). Das Backend führt Messungen von Sensoren und Geräten durch und koordiniert dann eine Vielzahl von Reaktionen auf diese Messungen, einschließlich der Möglichkeit, Ausgänge (Relais, PWM, drahtlose Ausgänge) zu modulieren und Umgebungsbedingungen mit elektrischen Geräten unter PID-Steuerung zu regulieren (stetige Regelung oder Umschaltung) Zeit), Zeitpläne planen, Fotos aufnehmen und Videos streamen, Aktionen auslösen, wenn Messungen bestimmte Bedingungen erfüllen (Relais modulieren, Befehle ausführen, per E-Mail benachrichtigen usw.) und vieles mehr. Das Frontend ist eine Weboberfläche, die eine einfache Navigation und Konfiguration von jedem Browser-fähigen Gerät aus ermöglicht.


Mycodo è un sistema di monitoraggio e regolazione automatico che è stato creato per funzionare sul Raspberry Pi (versioni Zero, 1, 2, 3 e 4).

Originariamente progettato per coltivare funghi commestibili, Mycodo è cresciuto fino a comprendere la capacità di fare molto di più, coltivando piante, coltivando microrganismi, mantenendo l'omeostasi delle api apistiche del miele, incubando animali e uova, mantenendo sistemi acquatici, formaggi stagionati, alimenti fermentati e tabacco, cucinando cibo (sous-vide) e altro ancora.

Il sistema comprende un backend (demone) e un frontend (interfaccia utente). Il back-end esegue misurazioni da sensori e dispositivi, quindi coordina un insieme diversificato di risposte a tali misurazioni, inclusa la possibilità di modulare le uscite (relè, PWM, prese wireless), regola le condizioni ambientali con dispositivi elettrici sotto controllo PID (regolazione costante o commutazione tempo), programmare i timer, acquisire foto e trasmettere video, attivare azioni quando le misurazioni soddisfano determinate condizioni (modulazione di relè, esecuzione di comandi, notifica via e-mail, ecc.) e altro. Il frontend è un'interfaccia web che consente una facile navigazione e configurazione da qualsiasi dispositivo abilitato per il browser.


Mycodo er et automatisert overvåkings- og reguleringssystem som ble bygget for å kjøre på Raspberry Pi (versjoner Zero, 1, 2, 3 og 4).

Mycodo er opprinnelig utviklet for å dyrke spiselige sopp, og har vokst til å inkludere muligheten til å gjøre mye mer, inkludert dyrking av planter, dyrking av mikroorganismer, opprettholder honningbi apiary homeostasis, inkubering av dyr og egg, opprettholde akvatiske systemer, aldrende oster, fermenterende matvarer og tobakk, matlaging mat (sous-vide) og mer.

Systemet består av en backend (daemon) og en frontend (brukergrensesnitt). Backend utfører målinger fra sensorer og enheter, og koordinerer deretter et mangfoldig sett med svar på disse målingene, inkludert muligheten til å modulere utganger (reléer, PWM, trådløse uttak), regulere miljøforhold med elektriske enheter under PID-kontroll (stabil regulering eller endring over tid), planlegge timere, ta bilder og streame video, utløse handlinger når målingene oppfyller visse forhold (modulere reléer, utføre kommandoer, varsle via e-post, etc.) og mer. Frontend er et webgrensesnitt som gjør det enkelt å navigere og konfigurere fra hvilken som helst nettleseraktivert enhet.


Mycodo to zautomatyzowany system monitorowania i regulacji, który został zbudowany do pracy na Raspberry Pi (wersje Zero, 1, 2 i 3).

Pierwotnie zaprojektowany do uprawy grzybów jadalnych, Mycodo rozwinęło się, aby umożliwić znacznie więcej, w tym uprawę roślin, hodowlę mikroorganizmów, utrzymanie homeostazy pszczół miodnych, inkubację zwierząt i jaj, utrzymanie systemów wodnych, dojrzewanie serów, fermentację żywności i tytoniu, gotowanie jedzenie (sous-vide) i nie tylko.

System składa się z zaplecza (demona) i frontendu (interfejsu użytkownika). Backend przeprowadza pomiary z czujników i urządzeń, a następnie koordynuje zróżnicowany zestaw odpowiedzi na te pomiary, w tym możliwość modulacji wyjść (przekaźniki, PWM, wyjścia bezprzewodowe), regulację warunków środowiskowych za pomocą urządzeń elektrycznych pod kontrolą PID (regulacja stała lub przełączanie czas), ustawianie timerów, robienie zdjęć i strumieniowanie wideo, wyzwalanie działań, gdy pomiary spełniają określone warunki (modulacja przekaźników, wykonywanie poleceń, powiadamianie przez e-mail itp.) i nie tylko. Frontend to interfejs sieciowy, który umożliwia łatwą nawigację i konfigurację z dowolnego urządzenia obsługującego przeglądarkę.


O Mycodo é um sistema automatizado de monitoramento e regulação que foi construído para rodar no Raspberry Pi (versões Zero, 1, 2, 3 e 4).

Originalmente concebido para cultivar cogumelos comestíveis, o Mycodo cresceu para incluir a capacidade de fazer muito mais, incluindo cultivar plantas, cultivar microorganismos, manter a homeostase do apiário de abelhas, incubar animais e ovos, manter sistemas aquáticos, queijos envelhecidos, fermentar alimentos e tabaco, cozinhar comida (sous-vide) e muito mais.

O sistema compreende um backend (daemon) e um frontend (interface de usuário). O backend conduz medições a partir de sensores e dispositivos e coordena um conjunto diversificado de respostas a essas medições, incluindo a capacidade de modular saídas (relés, PWM, tomadas sem fio), regular as condições ambientais com dispositivos elétricos sob controle PID (regulação estável ou troca tempo), agendar cronômetros, capturar fotos e transmitir vídeo, acionar ações quando as medições atenderem a determinadas condições (modular relés, executar comandos, notificar por e-mail etc.) e muito mais. O frontend é uma interface da web que permite fácil navegação e configuração a partir de qualquer dispositivo habilitado para navegador.


Mycodo - это автоматизированная система мониторинга и регулирования, созданная для работы на Raspberry Pi (версии Zero, 1, 2, 3 и 4).

Первоначально разработанный для выращивания съедобных грибов, Mycodo вырос и теперь способен делать гораздо больше, включая выращивание растений, выращивание микроорганизмов, поддержание гомеостаза пасеки медоносных пчел, инкубацию животных и яиц, поддержание водных систем, старение сыров, ферментацию продуктов и табака, приготовление пищи. еда (sous-vide) и многое другое.

Система включает в себя бэкэнд (демон) и интерфейс (пользовательский интерфейс). Бэкэнд проводит измерения от датчиков и устройств, затем координирует разнообразный набор ответов на эти измерения, включая возможность модулировать выходы (реле, ШИМ, беспроводные выходы), регулировать условия окружающей среды с помощью электрических устройств под управлением ПИД (постоянное регулирование или переключение). время), планировать таймеры, захватывать фотографии и потоковое видео, запускать действия, когда измерения соответствуют определенным условиям (модулировать реле, выполнять команды, отправлять уведомления по электронной почте и т. д.) и многое другое. Интерфейс представляет собой веб-интерфейс, который обеспечивает простую навигацию и настройку с любого устройства с поддержкой браузера.


Мицодо је аутоматски систем за надзор и регулацију који је направљен да ради на Распберри Пи (верзије Зеро, 1, 2, 3 и 4).

Оригинално дизајниран за узгајање јестивих гљива, Мицодо је нарастао на могућност да уради много више, укључујући култивирање биљака, култивисање микроорганизама, одржавање хомеостазе пчелињег меда, инкубирање животиња и јаја, одржавање водених система, старење сирева, ферментисање хране и дуван, кухање храна (соус-виде), и више.

Систем садржи бацкенд (даемон) и фронтенд (кориснички интерфејс). Бацкенд врши мерења од сензора и уређаја, затим координира различите одговоре на та мерења, укључујући могућност модулације излаза (релеји, ПВМ, бежичне утичнице), регулисање услова околине са електричним уређајима под ПИД контролом (стална регулација или промена време), распоред времена, снимање фотографија и стримовање видео снимака, акције покретања када мерења испуњавају одређене услове (модулација релеја, извршавање команди, обавештавање путем е-поште, итд.), и још много тога. Фронтенд је веб интерфејс који омогућава једноставну навигацију и конфигурацију са било ког уређаја са омогућеним претраживачем.


Mycodo es un sistema automatizado de monitoreo y regulación que fue creado para ejecutarse en la Raspberry Pi (versiones cero, 1, 2, 3 y 4).

Originalmente diseñado para cultivar hongos comestibles, Mycodo ha crecido para incluir la capacidad de hacer mucho más, incluido el cultivo de plantas, el cultivo de microorganismos, el mantenimiento de la homeostasis de las abejas, la incubación de animales y huevos, el mantenimiento de los sistemas acuáticos, el envejecimiento de los quesos, la fermentación de alimentos y el tabaco, la cocina. comida (sous-vide), y más.

El sistema comprende un backend (daemon) y un frontend (interfaz de usuario). El backend realiza mediciones desde sensores y dispositivos, luego coordina un conjunto diverso de respuestas a esas mediciones, incluida la capacidad de modular salidas (relés, PWM, salidas inalámbricas), regular las condiciones ambientales con dispositivos eléctricos bajo control PID (regulación constante o cambio tiempo), programe temporizadores, capture fotos y transmita videos, active acciones cuando las mediciones cumplan ciertas condiciones (module relés, ejecute comandos, notifique por correo electrónico, etc.) y más. La interfaz es una interfaz web que permite una fácil navegación y configuración desde cualquier dispositivo con navegador.


Mycodo är ett automatiserat övervaknings- och reglersystem som byggdes för att springa på Raspberry Pi (versioner noll, 1, 2, 3 och 4).

Mycodo har ursprungligen utformats för att odla ätliga svampar, och har därmed ökat möjligheten att göra mycket mer, inklusive odling av växter, odlingsmikroorganismer, upprätthållande av honeybee apiary homeostasis, inkubering av djur och ägg, upprätthållande av vattenlevande system, åldrande ostar, jäsning av mat och tobak, matlagning mat (sous-vide) och mer.

Systemet innefattar en backend (daemon) och en frontend (användargränssnitt). Bakgrunden utför mätningar från sensorer och enheter och samordnar sedan en mängd olika svar på dessa mätningar, inklusive möjligheten att modulera utgångar (reläer, PWM, trådlösa uttag), reglera miljöförhållandena med elektriska enheter under PID-kontroll (ständig reglering eller byte över tid), schemalägg timer, ta bilder och strömma video, utlös åtgärder när mätningar uppfyller vissa villkor (modulera reläer, utföra kommandon, meddela via e-post etc.) och mer. Frontend är ett webbgränssnitt som möjliggör enkel navigering och konfiguration från alla webbläsaraktiverade enheter.


Mycodo是一个自动监控和调节系统,可在Raspberry Pi上运行(版本为Zero,1,2,3和4)。