通过LoRa/LoRaWAN网络监控服务器机房
扫描二维码
随时随地手机看文章
SerVision是一种紧凑高效的基于LoRa的物联网系统,用于监控服务器机房的关键环境参数。它通过使用物联网(TTN)将实时数据传输到中央平台,确保及早发现潜在风险,如过热、湿度峰值或火灾。收集到的数据将被存储、可视化,并用于在超过阈值时触发警报。我们在Unilasalle Amiens进行了这个项目。
电子产品
该系统主要由两块主控板组成:
•带有以太网屏蔽和LCD显示屏的Arduino Leonardo,
•用于LoRa通信的SODAQ Explorer板。
一个定制的PCB连接两个板,以及外部传感器(火焰,湿度,温度,亮度)。它包括一个可切换的UART线路、电源管理和3d打印外壳,用于在服务器机房环境中安全集成。专用开口可以方便地访问电缆和连接器。
嵌入代码
SerVision系统使用两个协同工作的微控制器:Arduino Leonardo和SODAQ Explorer。
Arduino Leonardo处理本地传感和数据准备。它读取温度,湿度(DHT11),光(光敏电阻),火焰(数字传感器)和模拟温度。每隔1分钟,它构建一个结构化的串行帧,如下所示:
它还ping三个预定义的IP地址,并在帧中包含它们的可达性。数据显示在16x2 LCD上,并通过串行发送到SODAQ板。
SODAQ Explorer解析接收到的帧,将值转换为紧凑的二进制有效载荷,并通过LoRaWAN传输到物联网(TTN)。它还检查下行消息:如果收到一个,它提取第一个字节并将其转发给Arduino。
Arduino解释这个字节来远程启用或禁用IP监控逻辑,允许从TTN平台进行基本的远程控制。
LoRa
•MQTT:
我们通过物联网(TTN)间接使用MQTT,它依赖于这个轻量级协议在连接的对象和第三方服务之间传输消息。TTN负责从对象接收LoRa数据,然后在MQTT中发布它。然后,我们的Node-RED服务连接到TTN的MQTT代理以实时检索数据。
•TTN:
上行:
连接对象(Sodaq Explorer)通过LoRaWAN发送64位编码的数据。使用自定义JavaScript脚本在TTN上对原始数据进行解码。解码器将二进制有效负载转换为结构化对象(您可以在下面的代码部分中看到解码器)。
下行:
从我们的web界面,用户可以配置3个不同的IP地址进行ping测试。这些ip被转换成十六进制,然后用Base64编码,并通过TTN v3 HTTP API发送给TTN:
下行链路由Sodaq Explorer接收后,通过串口将信息传输给Arduino Leonardo,重新配置网络测试ip。
服务器(集装箱岸吊)
我们的基础架构托管在一个Linux虚拟机上,在这个虚拟机上安装了Portainer,一个图形化的Docker管理界面。我们运行三个对项目至关重要的服务:
NodeRed
流程A: Node-RED是我们应用程序逻辑的核心。它通过MQTT接收来自TTN的数据,对其进行处理,实时显示并执行一些操作:将数据发送到InfluxDB和触发警报(发送电子邮件)。
流程B:使用自定义功能,例如,发送电子邮件,我们使用SMTP Gmail服务器(需要认证到谷歌帐户),如果火焰被检测到,或者如果温度超过临界阈值,或者如果我们失去了网关连接。
InfluxDB
InfluxDB是一个面向时间序列的数据库,非常适合存储我们的传感器测量值。它存储以下数据的历史记录:温度,湿度,亮度,网络连接(本地,网关,公共),火焰检测
数据通过HTTP API或直接从网站请求,用于动态图形显示。
Apache
apache服务器提供了一个清晰且响应迅速的仪表板来监视环境条件。用php编写的web应用程序连接到存储通过LoRaWAN接收到的所有传感器数据的InfluxDB数据库。一个界面显示它们的所有值。它还显示了三个被监控IP地址的网络状态,可由用户在“下行”形式中设置。整个系统提供了从任何web浏览器对服务器机房环境的完全可见性和控制。
本文编译自hackster.io