社区亮点:InfluxDB如何实现水族馆的物联网传感器监控
作者:Caitlin Croft / 产品,用例
2020年9月8日
导航到
最近,我采访了Jeremy White,他正在使用InfluxDB来监控他的水族馆。通过收集物联网传感器数据,他更好地理解了他的200加仑海水鱼缸中的鱼和珊瑚。整个项目可以在GitHub上找到。
Caitlin:请告诉我们关于你和你职业生涯的事情。
Jeremy:我是Network to Code的高级网络自动化顾问,我的背景是网络工程。Network to Code是网络自动化的行业领导者。我自学了Python和Ansible,并构建了一个完整的网络自动化框架。除了Python和Ansible,我还熟悉Django REST框架、Flask和NetBox。我开始深入研究遥测和分析。
Caitlin: 你是如何了解InfluxDB的?
Jeremy:我之前在工作中使用过InfluxDB。一些同事之前使用InfluxDB和Telegraf来监控公共DNS。他们还使用InfluxDB,这个专门构建的时间序列数据库,来监控他们的家庭网络。Network to Code根据客户的需求实施了InfluxDB。我对InfluxDB印象深刻,认为它可能是我改善海水鱼缸监控的绝佳方式。
Caitlin: 请告诉我们关于你的水族馆。
Jeremy:我目前有两个海水鱼缸。一个是54加仑,我新的是200加仑。我最近决定升级到200加仑的鱼缸。把所有的鱼和珊瑚搬到新家绝对是一个过程。我需要确保一切稳定,并且按照我的期望运行。
我正在培养小型多孔珊瑚(SPS)。我拥有Acropora、Monitpora、Catalaphyllia、Lithophyllon、Discosoma、Zoanthus和Briareum珊瑚。这些珊瑚中的许多都位于珊瑚礁的表面附近。它们有基于钙的骨骼和小息肉。这些珊瑚可以非常鲜艳和美丽。我有一块鹿角珊瑚,是一种漂亮的亮绿色。
我大部分的珊瑚要么是水产养殖的,要么是海洋养殖的。水产养殖的珊瑚是在带有人工照明的鱼缸或水箱中培育的。海洋养殖的珊瑚是在海洋中专门指定的养殖区域中培育的珊瑚。这意味着它们不会从原生珊瑚礁中取出珊瑚。我已经尽力做到尽可能的可持续。我大部分的珊瑚来自印度尼西亚或澳大利亚。我也有一些珊瑚碎片,是从一个人手中得到的,他在笼子里养殖了20多年。
目前,我有一只珊瑚美人矮天使鱼、一只蓝色河马鱼、一只黄色蝴蝶鱼、一只黄色守望者鱼、三只斗鱼、一只斑马鱼、一只铜带蝴蝶鱼和一只小仙鹤鱼。我还有一些无脊椎动物,包括大约20只寄居蟹、大约20只蜗牛、一只带状蛇星鱼、一只沙筛星鱼、一只箭蟹和一只翡翠蟹。
Caitlin:你在鱼缸中遇到了哪些挑战?
Jeremy: 我知道我提供了适当的照明和水流。然而,我知道我的珊瑚生长速度并没有达到我预期的水平。SPS珊瑚的钙化程度很低。它们活着并且存活下来,但并没有繁荣生长。除了生长缓慢之外,颜色也出现了问题。适当的照明为像植物、动物、海葵和珊瑚这样的光合作用生物提供了必要的能量。照明还可以影响鱼类的行为和生理。
下一个方面是水质:我现实地知道,我可能每周只会检查一次水族箱的状态。进行大量手动测试的频率不会像我希望的那样频繁。我知道我需要自动化我的监控解决方案,以确保我拥有关于我的水族箱的最新准确数据。
结果证明我的水族箱环境并没有我想象的那么稳定。珊瑚可以在广泛的水温范围内生存,水的pH值也可以变化。保持水平稳定更为重要。珊瑚是非常灵活的生物,因此它们能够适应和生存。它们的环境(如温度和盐度)的频繁波动会对珊瑚造成极大的压力,并对它们的生存和生长产生不利影响。
在我(我的AquaPy控制器)设置好一切后的三天内,我开始看到结果。我意识到日夜温差达到两度。由于我在家工作,我知道这不是因为我的房子太热,因为我的家里的温度相当稳定。两度的波动非常小,但足以影响珊瑚的生长和颜色。通过迭代我的设置(AquaPy),我将温度差降低到不到一度。我的水箱温度保持在79-81°F之间。我想尽可能地缩小这个差异。
Caitlin:请告诉我们您使用InfluxDB构建的物联网监控解决方案。
Jeremy:我的整个堆栈都是使用容器构建的。我喜欢容器!无论是工作还是个人项目,如果我能容器化它,我就这么做。如果没有预构建的容器,我会自己创建一个。我开始购买来自Atlas Scientific的传感器。他们制造物联网传感器和小的印刷电路板(PCB)。PCB用于通过Raspberry Pi的I2C协议读取传感器数据。有一家公司叫做Whitebox,他们生产名为Tentacle T3 for Raspberry Pi的产品,可以帮助使整个设置更加即插即用。
我使用Django配置传感器。除了Django管理门户外,我还使用django_rq工作器和Redis工作器来监听传入的任务。我使用Django Redis调度器,它在cron间隔中运行cron并安排已知任务。目前,它被安排为每分钟一次。每60秒是RQ调度器可以设置的最低间隔。
RQ调度器将任务放入Redis。接下来,RQ工作器积极监听Redis队列中的任务。RQ工作器通过与Postgres数据库通信来获取执行任务所需的相关细节,以允许它执行并收集传感器数据。
我使用传感器获取以下数据:水温、水盐度、水位和pH值。我的理想pH值为8.3。由于空气中的二氧化碳水平和鱼产生的CO2,这个值有一定的范围。在任何给定的一天,我的水箱pH值在7.95-8.19之间。
数据收集后,存储在InfluxDB中。收集并存储遥测数据后,将一个新的事件任务添加到Redis队列中,以便rq工作器评估并相应地处理遥测数据。
我还从WeMo购买了智能家居工具,WeMo由Belkin公司拥有。它们非常酷,因为它们可以通过多播在您的家庭网络中控制。将WeMo开关添加到堆栈中,使我能够根据收集的遥测数据打开和关闭设备。例如,当达到高温阈值时。rq_worker从Redis队列中拉取事件,根据事件定义,它知道根据MAC地址应该调用哪个WeMo设备。然后rq_worker向开关发送多播消息以切换电源的开启或关闭,并将结果报告给Redis作业状态。
我还有一套自动化工具,它们没有直接集成到AquaPy中,例如,我设置了自动补水。它是一个用于检测水位的光电传感器。如果水位过低,水族箱会自动添加淡水。当然,如果添加过多的淡水,盐度会超过可接受的水平。简单添加一加仑淡水可能会对珊瑚造成压力,我可能会失去一个群体。另一方面,如果蒸发过多,盐度可能会变得过高。如果水的pH值急剧上升,这可能意味着我的计量器正在失效;计量器负责调整钙和碱度。如果计量器开关卡在开启位置,它将开始向水箱中倾倒不必要的化学物质。所有这些因素都可能破坏水箱的平衡。
Caitlin:在实施InfluxDB后,您从您的水族馆中学到了什么?
Jeremy:多亏了InfluxDB,我能够设置温度和其他关键指标的限制阈值。如果水温超过一定水平,我设置了一个风扇自动开启。通过自动触发风扇,我减少了蒸发,水箱也冷却了。一旦温度充分低于恢复阈值,风扇会自动关闭。
通过持续监控我的水箱,我知道何时出现问题。简单的停电可能会对我的珊瑚和水箱的健康产生连锁反应。没有电力,灯光不亮,这意味着自然藻类不能将二氧化碳转化为氧气。即使停电三小时,也可能意味着一些珊瑚会死亡。这在我将新的珊瑚引入水箱时尤其重要,因为它们还没有适应新家。
我现在有一个不间断电源作为电池备份。作为网络工程师,这确实很有帮助! ???? 我现在在家中设置了企业级的网络设备。我在我的海水水族箱上投入了大量的时间和金钱,我想确保我不会丢失任何东西。我的互联网连接、PoE网络交换机、路由器、防火墙等都在不同的不间断电源上。我最近搬家了,虽然我很少遇到停电,但偶尔还是有电压不稳。
我正在使用 Grafana 来可视化和图表化我的所有数据。最初,我使用 Grafana 中的一个插件来发送 Slack 警报。多亏了 Slackbots,如果我在手机上收到通知,我就知道要检查更新。
<figcaption> 显示水族馆传感器数据的 Grafana 仪表板 </figcaption>
Caitlin:你对于你的水族馆和 InfluxDB 的未来计划是什么?
Jeremy:随着我使用更高水平的钙和碱度运行我的鱼缸,我想围绕家庭水族馆进行一些形式上的控制研究。我希望能够证明在特定水平运行鱼缸的好处。快速钙化硬珊瑚尚未通过控制研究得到证实。有一家公司叫 Bulk Reef Supply,也在进行短期实验。他们用同一株珊瑚在几个星期到几个月内运行不同系统,并报告结果。
一旦我将更多数据导入 InfluxDB,我想开始关联我的数据。通过拥有更多带时间戳的数据,我想设定一个基线,并确定基线偏差的百分比。我想为所有系统创建这些。目前,我还没有收集阈值动作的指标。这些包括风扇开启或关闭的时间,加药泵开启的时间等。我的新水族馆灯具是通过蓝牙控制的。除了将所有这些数据添加到 InfluxDB,我还想更好地整合印度尼西亚和东北澳大利亚的季节性日照时间。由于我越来越多的珊瑚来自那里,我想模仿自然日照周期。
长期目标包括通过帮助改善自然珊瑚礁来帮助科学界。通过改善世界在笼中培养的珊瑚实践,我们希望能够停止需要回到自然珊瑚礁来获取珊瑚。如果我们可以养殖足够的珊瑚,以回馈我们作为社会正在摧毁的自然珊瑚礁,那将是令人惊叹的。
以下是我所使用的所有部件清单
- Raspberry Pi 4
- 64Gb SanDisk Micro SD
- Atlas Scientific i2c Toggler(需要确保 EZO 电路设置为 i2c)
- Atlas Scientific 温度套件(仅使用传感器和 EZO 电路)
- Atlas Scientific 电导率探头 K 0.1 ? 0.07-50,000 ?S/cm
- Atlas Scientific 实验室级 pH 探头
- Atlas Scientific 氧化还原电位实验室级 ORP 探头 +/- 2000mV
- Atlas Scientific EZO-pH 电路
- Atlas Scientific EZO-EC 嵌入式电导率电路 0.07 ? 500,000+ ?S/cm
- Atlas Scientific EZO-ORP 氧化还原电位嵌入式电路 -1019.9mV-1019.9mV
- Whitebox Labs Tentacle T3 for Raspberry Pi
- Wemo Mini 智能插头,WiFi 兼容,与 Alexa、Google Assistant 和 Apple HomeKit 兼容
你对 Jeremy 有问题吗?加入我们于 2020 年 9 月 23 日 的虚拟时间序列 Meetup,他将演示如何使用 InfluxDB 和 Grafana 监控你的水族馆! 立即报名。
如果你有兴趣分享你的 InfluxDB 故事,点击 这里。
有关 Grafana 和 InfluxDB 的另一个有趣用例,请阅读 如何将 Grafana 与 Home Assistant 集成。