Mycodo

Mycodo

开源树莓派环境监控与调节系统

Mycodo是一款开源的树莓派环境监控与调节系统。它支持多种传感器输入、设备输出控制、PID调节、条件触发等功能,并提供Web界面进行配置和监控。系统可应用于水培、恒温恒湿、发酵等多种场景,是一个功能丰富、灵活的环境控制解决方案。Mycodo通过智能耦合输入和输出,实现对环境的精确感知和调控。

Mycodo环境调节系统树莓派开源软件传感器Github开源项目

Mycodo

环境调节系统

最新版本: 8.15.13

Mycodo是一款开源软件,适用于Raspberry Pi,可以通过有趣的方式将输入和输出耦合在一起,以感知和操控环境。

|构建状态| |Codacy徽章| |翻译徽章| |DOI|

.. contents:: 目录 :depth: 1

快速安装

先决条件:基于Debian的Linux操作系统(apt)。

推荐:带有通用输入输出(GPIO)引脚的单板计算机(SBC)。

安装命令:

.. code:: bash

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

更多详细信息请参阅"安装Mycodo"部分。

支持

文档


`Mycodo手册 <https://kizniche.github.io/Mycodo>`__

`Mycodo API <https://kizniche.github.io/Mycodo/mycodo-api.html>`__ (版本: v1)

`Mycodo Wiki <https://github.com/kizniche/Mycodo/wiki>`__

`Mycodo自定义模块存储库 <https://github.com/kizniche/Mycodo-custom>`__

讨论
~~~~~~~~~~

`Mycodo问题(错误报告/功能请求) <https://github.com/kizniche/Mycodo/issues>`__

`Mycodo论坛 <https://forum.radicaldiy.com>`__

`Mycodo Discord <https://discord.gg/kmDNky4ZHZ>`__

Mycodo软件中的错误

如果您认为Mycodo软件中存在错误,请首先搜索github上的问题 <https://github.com/kizniche/Mycodo/issues>,看看您的问题是否已经最近被讨论或解决。如果您的问题是新的或比类似问题更近期,您应该创建一个新问题 <https://github.com/kizniche/Mycodo/issues/new>。创建新问题时,请务必阅读问题模板中的所有信息并按照说明操作。用所请求的信息替换模板文本(例如,"重现问题的步骤"下的"步骤1"应替换为实际重现问题的步骤)。您提供的信息越多,就越容易重现和诊断问题。如果由于提供的信息不足而无法重现问题,可能会延迟或阻碍解决问题。

捐赠

我一直免费提供Mycodo,并且我不打算改变这一点。但是,如果您觉得Mycodo有用并想支持它的持续开发,请考虑在github.com/sponsors/kizniche <https://github.com/sponsors/kizniche>__成为赞助人或在kylegabriel.com/donate <https://kylegabriel.com/donate>__进行捐赠。

特性

  • 输入 <https://kizniche.github.io/Mycodo/Inputs/>:记录来自传感器、GPIO引脚状态、模数转换器等的测量值(或创建您自己的自定义输入 <https://kizniche.github.io/Mycodo/Inputs/#custom-inputs>)。查看所有支持的输入 <https://kizniche.github.io/Mycodo/Supported-Inputs-By-Measurement/>__。
  • 输出 <https://kizniche.github.io/Mycodo/Outputs/>:执行操作,如切换GPIO引脚高/低、生成PWM信号、执行shell脚本和Python代码等(或创建您自己的自定义输出 <https://kizniche.github.io/Mycodo/Outputs/#custom-outputs>)。查看所有支持的输出 <https://kizniche.github.io/Mycodo/Supported-Outputs/>__。
  • 功能 <https://kizniche.github.io/Mycodo/Functions/>:执行任务,如以有趣的方式耦合输入和输出,例如PID <https://kizniche.github.io/Mycodo/Functions/#pid-controller>条件 <https://kizniche.github.io/Mycodo/Functions/#conditional>触发器 <https://kizniche.github.io/Mycodo/Functions/#trigger>等(或创建您自己的自定义功能 <https://kizniche.github.io/Mycodo/Functions/#custom-functions>)。查看所有支持的功能 <https://kizniche.github.io/Mycodo/Supported-Functions/>
  • Web界面 <https://kizniche.github.io/Mycodo/About/#web-interface>__:通过在本地网络或世界任何地方的互联网连接上使用网络浏览器安全访问Mycodo,查看和配置系统,包括多种浅色和深色主题。
  • 仪表板 <https://kizniche.github.io/Mycodo/Data-Viewing/#dashboard>:显示可配置的小部件,包括交互式实时和历史图表、仪表、输出状态指示器、测量值等(或创建您自己的自定义小部件 <https://kizniche.github.io/Mycodo/Widgets/#custom-widgets>)。查看所有支持的小部件 <https://kizniche.github.io/Mycodo/Supported-Widgets/>__。
  • 警报通知 <https://kizniche.github.io/Mycodo/Alerts/>__:当测量值达到或超过用户指定的阈值时发送电子邮件,对于立即知道问题出现非常重要。
  • 设定点跟踪 <https://kizniche.github.io/Mycodo/Methods/>__:随时间改变PID控制器的设定点,用于terrarium、回流炉、热循环器、sous-vide烹饪等。
  • 笔记 <https://kizniche.github.io/Mycodo/Notes/>__:记录事件、警报和其他重要的时间点,可以叠加在图表上以可视化您的测量数据中的事件。
  • 相机 <https://kizniche.github.io/Mycodo/Camera/>__:用于远程实时流媒体、图像捕获和延时摄影。
  • 能源使用测量 <https://kizniche.github.io/Mycodo/Energy-Usage/>__:计算和跟踪一段时间内的功耗和成本。
  • 升级系统 <https://kizniche.github.io/Mycodo/Upgrade-Backup-Restore/>__:轻松将Mycodo系统升级到最新版本以获取最新功能,或恢复到先前备份的版本。
  • 翻译 <https://kizniche.github.io/Mycodo/Translations/>__:使web界面能够以不同的语言 <https://github.com/kizniche/Mycodo#features>__呈现。

.. 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

图:自动化水培系统搭建


用途

Mycodo最初是为培育食用蘑菇而开发的,但现在已经发展到可以做更多的事情。以下是使用Mycodo完成的一些事情:

Kyle Gabriel(核心开发者)的项目

- `蘑菇培养自动化 <https://kylegabriel.com/projects/2021/09/mushroom-cultivation-automation.html>`__ (`存档 <https://archive.is/HUtdp>`__)
- `水培系统自动化 <https://kylegabriel.com/projects/2020/06/automated-hydroponic-system-build.html>`__ (`存档 <http://archive.is/mB2zc>`__)
- `蘑菇培养 <https://kylegabriel.com/projects/2015/04/mushroom-cultivation-revisited.html>`__ (`存档 <http://archive.is/J92Xa>`__)
- `地面植物培养 <https://www.youtube.com/watch?v=QNCx_VE7D-8>`__
- `维持蜜蜂养殖场的稳态 <https://kylegabriel.com/projects/2015/12/environmentally-controlled-apiary.html>`__ (`存档 <http://archive.is/RLo6n>`__)
- `维持地下人工蝙蝠洞的湿度 <https://kylegabriel.com/projects/2015/10/artificial-bat-cave.html>`__ (`存档 <http://archive.is/QIJ5G>`__)
- `远程辐射监测和绘图 <https://kylegabriel.com/projects/2019/08/remote-radiation-monitoring.html>`__ (`存档 <http://archive.is/PF44Z>`__)
- `真空低温烹饪 <https://hackaday.io/project/11997-mycodo-environmental-regulation-system/log/45733-sous-vide-pid-tuning-and-the-unexpected-electrical-fire>`__ (`存档 <http://archive.is/Mx52U>`__)
- `维持光照计划和调节湿度 <https://fieldstation.kennesaw.edu/summer-days-2020.php#2020_07_16_gabriel_chestnut>`__,在4周内将湿度从90%逐步降低到50%,以使微繁殖的美国栗树幼苗从实验室环境适应到室外环境 (`存档 <http://archive.is/Jp60P>`__)

特色项目
~~~~~~~

.. 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

其他人的项目
~~~~~~~~~~

- 维护水生系统(如鱼类、水培、水产养殖)
- 维护生态缸、爬虫箱和生态箱环境
- 孵化幼年动物和蛋类
- 陈化奶酪
- 干式熟成、腌制和烟熏肉类 (`链接1 <http://www.charcuterie-worst.nl/forum/index.php/topic,425.0.html>`__ (`存档 <http://archive.is/NHKqp>`__), `链接2 <https://www.floriske.nl/wordpress/2019/06/meat-curing-cabinet/>`__ (`存档 <https://archive.ph/57ouJ>`__))
- 发酵啤酒、食品和烟草
- 控制回流焊炉
- 培养微生物
- `处理农业废水 <https://projects.sare.org/project-reports/gne17-158/>`__ (`存档 <http://archive.is/enJQs>`__, `出版物 <https://pubs.acs.org/doi/pdf/10.1021/acsestwater.0c00234>`__)
- ...等等

如果你使用Mycodo的方式有所不同,`请告诉我 <https://kylegabriel.com/contact/>`__,我可能会将其添加到这个列表中。

截图
----

访问Wiki的 `截图 <https://github.com/kizniche/Mycodo/wiki/Screenshots>`__ 页面。

安装Mycodo
---------

前提条件
~~~~~~

必需:

- 基于Debian的操作系统
- 活跃的互联网连接

推荐:

- `树莓派 <https://www.raspberrypi.org>`__ 单板计算机:3、4或5(不再推荐Zero、1和2)
- `树莓派操作系统 <https://www.raspberrypi.com/software/>`__ 刷入微型SD卡或SSD

Mycodo已经在树莓派OS 12(Bookworm版本)上进行了测试,包括Lite和Desktop版本,32位和64位。

安装命令
~~~~~~

一旦树莓派启动,登录并在终端中运行以下命令,将Mycodo安装到/opt/Mycodo:

.. code:: bash

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


安装注意事项
~~~~~~~~~~

确保安装脚本无错误完成。安装输出日志将创建在 ``/opt/Mycodo/install/setup.log``。

如果安装成功,可以通过在网络浏览器中导航到 ``https://127.0.0.1/`` 来访问Web用户界面,将 ``127.0.0.1`` 替换为你安装系统的IP地址。首次访问时,系统会提示你创建一个管理员用户,然后重定向到登录页面。登录后,检查页面左上角的时间是否正确。不正确的时间可能会导致时间序列数据库中的测量存储和检索出现一系列问题。另外,确保页面左上角的主机名和版本号为绿色,表示守护进程正在运行。如果是红色,则表示守护进程处于非活动状态或无响应。最后,确保禁用浏览器的任何Java阻止插件,以便Web界面的所有部分都能正常运行。

如果在安装过程中遇到错误,你认为这阻碍了系统正常运行,请 `创建一个问题 <https://github.com/kizniche/Mycodo/issues>`__,并附上安装日志。如果你想先尝试自己诊断问题,请参阅 `诊断问题 <#diagnosing-issues>`__。

系统会收集一些最小的匿名使用统计数据,以帮助改进开发。不会保存任何可识别的信息,收集的信息仅用于改进Mycodo。除开发团队外,没有人能访问这些信息,这些信息也永远不会被出售。收集的数据主要是使用了哪些功能以及使用频率,以及其他类似信息。可以在 ``设置 -> 常规`` 页面的"查看收集的统计数据"链接中查看收集的数据。如果你想关闭此功能,可以在常规设置页面上选择退出。

测量数据库
~~~~~~~~

Mycodo目前支持InfluxDB作为存储测量数据的时间序列数据库。支持1.x版本(用于32位系统)和2.x版本(用于64位系统)。在安装过程中,系统会提示你安装1.x、2.x或不安装(如果你希望自己设置,无论是本地还是远程)。安装后可以重新配置数据库设置。

Docker
~~~~~~

Docker支持仍处于实验阶段,但如果你想尝试,请阅读docker `README.md <https://github.com/kizniche/Mycodo/blob/master/docker/README.md>`__。还有一个 `Docker问题(#637) <https://github.com/kizniche/Mycodo/issues/637>`__ 在github上,欢迎那些希望帮助开发的人参与。

REST API
--------

最新的API文档可以在这里找到:`API信息 <https://kizniche.github.io/Mycodo/API/>`__ 和 `API端点文档 <https://kizniche.github.io/Mycodo/mycodo-api.html>`__。

关于PID控制
----------
比例-积分-微分(PID)控制器是一种在工业中广泛使用的控制回路反馈机制,用于控制系统。它能有效地将可测量的条件(如温度)调整到所需状态(设定点)。一个调校良好的PID控制器可以快速达到设定点,几乎不会出现过冲,并能以很小的振荡维持设定点。

顶部图表展示了温度调节的过程。红线是设定的目标温度(设定点),已被配置为每天变化。蓝线是实际记录的温度。绿色垂直条表示每20秒周期内加热器的激活时间。这种调节仅通过最小的调整就实现了,并且已经显示出与设定点的极小偏差(±0.5摄氏度)。进一步调整可以进一步减少这种变化。

有关更多信息,请参阅手册中的PID控制器和PID调优部分。

支持的输入和输出

所有支持的输入、输出和其他设备可以在手册的支持设备部分找到。

自定义输入、输出、功能、动作和小部件

Mycodo支持导入自定义输入、输出、功能、动作和小部件模块。你可以在手册的自定义输入、自定义输出、自定义功能、自定义动作和自定义小部件部分找到更多相关信息。

如果你想增加支持的输入、输出、功能、动作和小部件列表,请提交包含你创建的模块的拉取请求或开启一个新问题。

此外,我还有另一个专门用于自定义模块的GitHub仓库,这些模块不一定适合内置集合,默认情况下不包含在Mycodo中,但可以导入。这些可以在kizniche/Mycodo-custom找到。

链接

感谢使用和支持Mycodo,但根据你获取这份文档的位置,你可能没有最新版本或者文档可能已被更改,如果不是从官方发布网站获取的话。你应该能在GitHub上找到最新版本。

许可证

请参阅License.txt

Mycodo是自由软件:你可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发或修改它,可以选择使用该许可证的第3版或(由你选择)任何更新的版本。

Mycodo的分发希望它能有用,但不提供任何保证;甚至不提供适销性或特定用途适用性的隐含保证。更多详细信息,请参阅GNU通用公共许可证。

GNU通用公共许可证的完整副本可以在http://www.gnu.org/licenses/gpl-3.0.en.html找到。

这个软件包含第三方开源软件组件。请查看各个文件中的许可信息(如果适用)。

语言

Mycodo已被翻译成多种语言。现在使用Weblate,所以任何人都可以为翻译做出贡献。但是,由于新增加的语言数量不断增加且未被翻译,只有完成度至少达到50%的语言才会被包含在Mycodo的翻译选项中。

安装脚本会提示你选择一种语言。这将是你首次打开Web用户界面时设置的语言。你可以稍后在设置页面的"[齿轮图标] -> 配置 -> 一般 -> 语言"中更改这个设置。

如果你想为翻译做出贡献,可以在http://translate.kylegabriel.com上进行。请阅读"如何为Mycodo的语言翻译做出贡献"以获取更多信息。

致谢

Mycodo的实现在一定程度上要归功于下面这些优秀的开源库。
- `Alembic <https://alembic.sqlalchemy.org>`__
- `Argparse <https://pypi.org/project/argparse>`__
- `Bcrypt <https://pypi.org/project/bcrypt>`__
- `Bootstrap <https://getbootstrap.com>`__
- `Daemonize <https://pypi.org/project/daemonize>`__
- `Date Range Picker <https://github.com/dangrossman/daterangepicker>`__
- `Distro <https://pypi.org/project/distro>`__
- `Email_Validator <https://pypi.org/project/email_validator>`__
- `Filelock <https://pypi.org/project/filelock>`__
- `Flask <https://pypi.org/project/flask>`__
- `Flask_Accept <https://pypi.org/project/flask_accept>`__
- `Flask_Babel <https://pypi.org/project/flask_babel>`__
- `Flask_Compress <https://pypi.org/project/flask_compress>`__
- `Flask_Limiter <https://pypi.org/project/flask_limiter>`__
- `Flask_Login <https://pypi.org/project/flask_login>`__
- `Flask_Marshmallow <https://pypi.org/project/flask_marshmallow>`__
- `Flask_Profiler <https://github.com/muatik/flask-profiler>`__
- `Flask_RESTX <https://pypi.org/project/flask_restx>`__
- `Flask_Session <https://pypi.org/project/flask_session>`__
- `Flask_SQLAlchemy <https://pypi.org/project/flask_sqlalchemy>`__
- `Flask_Talisman <https://pypi.org/project/flask_talisman>`__
- `Flask_WTF <https://pypi.org/project/flask_wtf>`__
- `FontAwesome <https://fontawesome.com>`__
- `Geocoder <https://pypi.org/project/geocoder>`__
- `gridstack.js <https://github.com/gridstack/gridstack.js>`__
- `Gunicorn <https://gunicorn.org>`__
- `Highcharts <https://www.highcharts.com>`__
- `importlib_metadata <https://github.com/python/importlib_metadata>`__
- `InfluxDB <https://github.com/influxdata/influxdb>`__
- `influxdb <https://github.com/influxdata/influxdb-python>`__
- `influxdb_client <https://github.com/influxdata/influxdb-client-python>`__
- `jQuery <https://jquery.com>`__
- `Marshmallow_SQLAlchemy <https://pypi.org/project/marshmallow_sqlalchemy>`__
- `Pyro5 <https://github.com/irmen/Pyro5>`__
- `SQLAlchemy <https://www.sqlalchemy.org>`__
- `SQLite <https://www.sqlite.org>`__
- `toastr <https://github.com/CodeSeven/toastr>`__
- `Werkzeug <https://palletsprojects.com/p/werkzeug/>`__
- `WTForms <https://pypi.org/project/wtforms>`__

.. |构建状态| image:: https://github.com/kizniche/Mycodo/actions/workflows/main.yml/badge.svg
   :target: https://github.com/kizniche/Mycodo/actions/workflows/main.yml
.. |Codacy徽章| image:: https://app.codacy.com/project/badge/Grade/bb5ffc43e4444231b813ca6e81359336
   :target: https://www.codacy.com/gh/kizniche/Mycodo/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=kizniche/Mycodo&amp;utm_campaign=Badge_Grade
.. |翻译徽章| image:: https://translate.kylegabriel.com/widgets/mycodo/-/svg-badge.svg
   :target: https://translate.kylegabriel.com/engage/mycodo/
.. |翻译表格| image:: https://translate.kylegabriel.com/widgets/mycodo/-/multi-auto.svg
   :target: https://translate.kylegabriel.com/engage/mycodo/
.. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.824199.svg
   :target: https://doi.org/10.5281/zenodo.824199
.. |Mycodo| image:: https://kylegabriel.com/projects/wp-content/uploads/sites/3/2016/05/Mycodo-3.6.0-tango-Graph-2016-05-21-11-15-26.png
   :target: https://kylegabriel.com/projects/

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多