Project Icon

Mycodo

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

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

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/
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号