Watmonitor是一个使用物联网传感器进行实时水位监测的自托管应用程序,具有多语言支持和易于访问的数据。
Watmonitor是一个多功能的、自托管的web应用程序,专为实时水位监测而设计。使用基于ESP32的物联网传感器和超声波距离传感器,它可以跟踪各种环境中的水位,如水井,水箱,湖泊等。
Watmonitor使水数据的监测和分析变得简单而高效。理想的个人和工业使用。提供方便地访问实时和历史数据的水位和水量。非常适合寻求实施水位解决方案的制造商和工程师!
标准来说,它每5分钟记录一次测量,因为它对低功率系统也很友好。Web界面是通用的,可以与任何传感器技术一起使用,包括先进的工业解决方案。可用于散装物料、粮仓中粮食的高度测量。
传感器节点可以以差模式(原理为超声波,测量井顶到水位的距离)、实模式(从井底计算或测量距离)发送数据。
Web界面- Watmonitor:
基于程序式PHP, HTML5和Bootstrap裸模板,SQL数据库。提供轻量级的web界面,完全响应智能手机(Android, iOS),电脑,笔记本电脑,桌子,甚至智能电视。Web界面被分成更多的子页面,每个子页面都有自己的功能,可以通过菜单访问:
•概述-显示最新的已知数据,存储在SQL数据库与实时更新
•历史记录——提供测量的全部历史记录,并提供删除精确测量的选项(需要HTTP认证才能授权用户进行操作)
•记录-跟踪最大和最小值的水位在一天,一周,一个月
•图-水位可视化期间的时间在折线图,过去2小时,24小时,7天,30天和365天
•统计—提供在SQL数据库中记录了多少测量的确切数字
•程序-根据webapp运行的域预生成ESP32微控制器的源代码,包括动态路由计算到所需的php文件,该文件负责将数据写入数据库。有WiFi和PHY以太网LAN8720连接的例子
•布线-为支持的微控制器提供接线图
•选项-有选项设置井参数,如:直径,名称,深度。可以更改用户界面的语言
•QR扫描器-基于HTML5的QR扫描器来获取最后的数据
让我们更深入地描述每个子页面:
概述:网页提供实际水位和水量数据,并显示传感器节点状态,如果在最近5分钟内发送数据。还可以看到接收到的数据的最后时间戳和新数据的预期时间戳。QR码可以通过QR扫描器扫描,通过扫描获得这些数据。
水位和体积的数值也有箭头指示,显示数值是否上升/下降或与先前的测量值相等。在输出的顶部,我们还可以看到水井的名称,可以由用户设置
历史记录:页面服务SQL数据库最新测量得到的记录。在那里,您可以看到记录的测量的时间戳、它们的唯一标识符(id)以及用户在通过HTTP认证授权后可以使用哪个按钮删除记录。
记录:此子页正在可视化多个量规图(使用Raphael的JustGage库)。可以看到一天、一周或一个月内记录的最高值和最低值。还有最后的测量值甚至提供了占用百分比。
这些仪表已经设置在源代码调色板从红色到绿色。动态地基于范围内的值,它正在改变颜色。此外,当页面打开时,这些仪表具有功能(动态效果),当bar从0开始,然后移动到水位值。
图形:基于ApexCharts库的线形图。这些图表可以显示不同时间范围内的水位。这些图形使用户能够放大任何图形部分。该部分可以进行严密的分析,甚至在缩放操作过程中动态设置图形的范围(最小最大值)。
也可以使用home键将图形重置到原来的范围。用户可以以各种格式导出整个图形或缩放子图形,以便在第三方软件(Excel,谷歌Sheets, Word, Powerpoint, MATLAB)中进一步分析或可视化。导出选项为:.svg(矢量图形),.png(像素图形)和。csv。CSV文件包含时间戳和水位值。
程序:程序子页面很有趣。它在Arduino Core中动态创建ESP32的源代码。该实现还使用了FreeRTOS和Queue进行任务间通信。一个源代码用于WiFi连接,另一个用于PHY以太网连接(RMII接口)。
这两种实现都是针对局域网中的DHCP客户端实现的。生成器能够添加web服务器域名,也确切的跟踪到目标PHP文件到源代码。还有动态放置令牌,设备需要在每次请求时发送该令牌以授权自己。
甚至源代码都是基于您在浏览器上使用的协议生成的,所以是HTTP或HTTPS连接。系统没有生成连接所需的根CA证书,因此如果您在您的域上使用Watmonitor,则需要从您的一方使用您自己的证书。
顺便说一句。在项目的Github上有更多的源代码。有Arduino, ESP8266和ESP32的示例实现。对于这些WiFi微控制器有ULP, OTA模式,WiFi设置通过WiFiManager等。
对于Arduino,有Wiznet以太网支持(W5100到W5500系列),但现在它是如此过时的硬件,使用ESP32与PHY以太网代替,更好的稳定性,加密支持,动态重新连接,如果LAN电缆断开等,一些定制板也有PoE支持。对于ESP32,在其5.2版本下也有ESP-IDF框架实现。
选项:子页面提供了设置水井尺寸的选项,其中包括厘米直径和厘米深度。如果传感器节点发送的是差分水位,则实际水位的计算采用深度。
例如,如果深度设置为400厘米,ESP32将记录50厘米,当数据到达服务器时,服务器端会进行计算,SQL数据库中的最终读数为350厘米。水井的直径是用来计算水量的。
体积不保存在数据库中,其值仍在现场计算。用户可以为其水井设置名称,也可以选择6种语言中的一种用于水位界面。标准有英语,但用户可以选择德语,法语,西班牙语,俄语,斯洛伐克语。
QR扫描仪:基于HTML5 QR扫描仪Instascan的子页面。它允许用户使用智能手机扫描网站或传感器节点本身的二维码,以获得最后已知的数据。可用于多传感器安装,通过应用程序操作人员也可以根据扫描时的名称识别准确的传感器。
增加了多种功能,如相机切换选项,手机有多个摄像头,也可以选择打开手机的手电筒,如果当前设置的相机支持它通过WebRTC。传感器的数据(井名)从Watmonitor的web界面解析。
有一个子页面json_output.php,它提供了在QR扫描仪应用程序中解析和写入的最后数据信息。相同的文件可以用于定期数据抓取的第三方服务(Grafana, Loxone, Domoticz, Thingsboard, Hassio)。
Watmonitor也有HTTP测试web接口,但不推荐,但它是唯一支持Arduino与以太网的接口,不支持HTTPS。
视频显示功能的Watmonitor网络应用程序的水位监测
还有接线图,但标准上应该是众所周知的,只是基于ESP32代码中的引脚配置(注意:ESP32与PHY以太网相比,该微控制器的所有其他示例具有不同的引脚):