有许多物联网SCADA解决方案可满足工厂和其他制造需求。 但是,在某些情况下(很多情况下),您需要开发自己的SCADA系统来满足项目的特定需求。
原始文章
-IoT仪表板库:快速可视化SCADA [免费IoT库]我们经常使用很棒的Qt框架来实现复杂的IoT解决方案。 对于大量的SCADA和类似SCADA的项目,我们遇到了用于开发设备仪表板的快速工具的需求。 这就是我们开发超轻量级非官方Qt库的原因。 该库是开源的,可自定义的,并且可以在MIT许可下免费使用。 我们还共享一小组已开发的小部件。
享受并使用Qt;)
README :此库是为在Qt上开发的桌面,移动和嵌入式项目创建的。 要使用它,您应该了解Qt / C ++和QML。
QSimpleScada简介
让我们向您介绍一个用于IoT项目的漂亮库。 我们创建了QSimpleScada来加速和简化可视化任何数据,因此我们(和您)可以专注于开发摇摆不定的自动化算法。
创建它主要是为了加快并因此降低
IoT解决方案的
成本。什么是QSimpleScada?
它是一个完全处理与小部件的连接和编辑的库。 使用QSimpleScada,您可以使用鼠标和一些代码轻松创建IoT数据的可视化。 对布局满意后,保存生成的.xml文件,并在项目中使用它。
库是使用Qt / C ++创建的,而基本的小部件是基于C ++的。 有QML的界面,因此您可以在QML上独立创建单个小部件(如创建经典QML UI时一样),然后随时将它们上传到您的应用中。
我为什么需要它?
好吧,如果您是Qt开发人员或公司,并且:
- 在项目中有严格的截止日期和复杂的数据评估
- 经常需要对移动/嵌入式/台式机物联网项目进行原型设计
- 需要用于一站式Qt项目的一站式工具
- 不想/没有时间/资源从头开始开发仪表板
如果以上都不是关于您的,那么您就不是。
为什么要构建物联网仪表板?
好吧,这听起来有点多余,所以如果您不言自明,请随时跳过本节。 否则,有很多理由可视化您从物联网获得的信息。
它是几乎任何物联网或控制系统的基本HMI(人机界面)组件。 如果您希望用户随时随地查看相关数据,则比文本方法要好得多。 这适用于经典的SCADA和类似SCADA的项目。
例如,在我们的UBreez上,我们使用QSimpleScada可视化空气读数。 自己比较显示。 因此,即使包含许多传感器小部件,看起来也更整洁清晰的是吗?

使用仪表板,您可以立即突出显示与标准的任何偏离,查明发生故障的位置,跟踪实时位置,查看趋势以及任何其他有价值的信息。 它为用户节省了理解SCADA系统收集的数据的时间,他们可以做出响应并决定如何更快地采取行动。
使用QSimpleScada
以下是将QSimpleScada版本0.9.x集成到项目中的步骤:
步骤1:安装
通过包管理器:如果要使用Qt构建精明的解决方案,则很可能会使用qpm程序包管理器,因此无需进行进一步的聊天。 如果还没有,请从这里
https://www.qpm.io下载
要通过qpm安装,请运行:
qpm
install com.indeema.qsimplescada
并添加:
include (../vendor/vendor.pri)
到项目的* .pro文件。
另外,请尝试我们的小部件预设:
qpm
install com.indeema.eeiot
来自github:要克隆存储库,请转到:
https://github.com/IndeemaSoftware/QSimpleScada要还添加预配置的小部件,请克隆:
https://github.com/IndeemaSoftware/EEIoT并添加:
include($$PWD/com/indeema/QSimpleScada/com_indeema_QSimpleScada.pri)
include($$PWD/com/indeema/eeiot/com_indeema_eeiot.pri)
到* .pro文件。
使用二进制发行版:https://github.com/IndeemaSoftware/QSimpleScada/releases步骤2:设定
将库下载并安装到项目后:
1.创建一个将在仪表板上显示的新设备。 给它起一个名字和它的IP地址:
QScadaDeviceInfo *lDeviceInfo = new QScadaDeviceInfo();
lDeviceInfo->setName("Test Device");
lDeviceInfo->setIp(QHostAddress("127.0.0.1"));
2.创建一个控制器类,该类将处理所有更高版本的设备以及连接到设备的所有板卡:
QScadaBoardController *</code><code>mController</code><code> = new QScadaBoardController(); mController->appendDevice(lDeviceInfo)
3.调用initBoardForDeviceIp方法为已附加的设备创建新的板。 如果特定IP上没有任何设备,则不会创建该板。
mController->initBoardForDeviceIp("127.0.0.1");
4.为控制器设置可编辑模式,以启用控制器的创建,移动和调整大小。
mController->setEditingMode(true);
如果启用了编辑模式,则模式窗口将以点背景显示:

5.在小部件上添加网格布局,然后将控制器添加到该小部件:
QGridLayout *
mainLayout
= new QGridLayout(ui->centralWidget);
mainLayout->addWidget(
mController
);
使用小部件我们还开发了带有一组预配置小部件的EEIoT库。 您可以从
https://github.com/IndeemaSoftware/EEIoT下载它,并从头开始尝试。
要使用小部件集合:
使用带有URL的函数调用QML资源,以使控制器知道QML小部件的位置:
QMLConfig::instance.appendQMLPath(:/com/indeema/eeiot/EEIoT/);
单调QMLConfig位于“ qscadaconfig.h”中
在这里,我们将EEIoT用作内部所有小部件的组。 您可以配置1个或多个组。
请注意,如果您在不同位置创建两个具有相同名称的文件夹,则第二个文件夹(稍后创建)将删除第一个文件夹。
您可以从QSimpleScada访问形成QML的所有动态属性(在metaData列表中提到),因此可以快速轻松地创建自己的复杂仪表板。
步骤3:使用
您可以使用我们的简单编辑器来创建您的第一个仪表板
https://github.com/IndeemaSoftware/QSimpleScadaSample然后在没有任何设备和开发板的应用中设置QScadaBoardController并调用:
mController->openProject(QString <file>)
其中<file>是项目文件的完整路径(* .irp)
例如:
mController->openProject(QString :/com/indeema/eeiot/EEIoT/)
观看实际的QSimpleScada
访问我们的GitHub个人资料,探索显示QSimpleScada库工作的简单应用程序:
这是一个普通的应用程序,可可视化3个小部件的天气相关数据:
QSimpleScada和EEIoT用于处理仪表板的显示和连接。 我们从Openweathermap API收到的所有天气实时数据。 您可以在
https://github.com/IndeemaSoftware/QSimpleScadaSample下载代码
要查看您所在城市的当前读数,请执行以下操作:
输入您的城市,然后输入逗号和国家/地区代码,如下所示:
乌克兰基辅然后单击
发送按钮。
这将更新您所在地区的温度,湿度和压力。

如何使用QSimpleScada的另一个示例是Builder应用程序,它使我们可以创建仪表板并将其保存为* .irp文件。 一个简单的仪表板编辑器,使用QSimpleScada创建带有EEIoT小部件的所需仪表板,并保存仪表板设置以供以后使用。 在示例中,我们创建了上面提到的Weather应用程序中使用的仪表板。
该代码也可以在
https://github.com/IndeemaSoftware/QSimpleScadaSample获得更多适合您的工具
我们发现引入物联网会影响每个行业,并重新定义我们使用技术的方法。 我们已经
在工业物联网文章的
6个有前途的应用程序中详细讨论了该主题,我们很高兴能够推动第四次工业革命带来的自动化进展。
理解与背景
如果所有项目的规格都定下来,那么发展世界将是乌托邦。 但是,最初的目标和要求越明确,整个团队对它们的理解就越好,那么项目就越精简。 要加深您对物联网项目后的细节和典型陷阱的了解,请阅读:
Spoiler :找到与项目相关的文档的模板,以便您可以交流需求并将其转变为可操作的规范,而无需花费太多精力。
估算成本和时间
全面了解您所需的时间和资源几乎是不可能的。 因此,为了向您全面介绍复杂性(以时间和成本计算),以下是一个特定于物联网的计算器:

开发工具
共享我们的工具包以更快,更高效地开发IoT项目,我们将我们与Qt和IoT相关的开源项目上载到位于回购标题开头的
https://github.com/IndeemaSoftware和Q上。 您还可以在那里找到大量用于React,Android和iOS开发的工具。

回顾
在Indeema,我们习惯于紧迫的期限和具有挑战性的项目。 而且,由于致力于创建明智的解决方案,我们逐渐意识到:
- 理解是第一位的。
很好奇 澄清每个要求,无论您认为有多明显。 确保您了解。 因为您可以设计一个逻辑且可扩展的体系结构,所以可以编写出色的干净代码,但无法传达所需的结果。 细节中包含魔鬼(因此请确保您不忽略任何细节)。
- 重塑 自行车是徒劳的。
每个项目都包含独特的挑战,需要开箱即用的思想。 无需从头开始开发所有内容。 怎么了 因为您只需要减少时间,您就必须找到并实施真正具有挑战性的功能,模块和体系结构。
- 质量 是 标准 。
对您的工作负责。 您致力于创造未来。 如果您是开发人员,请根据规范,最佳实践,常识,项目稳定性等对代码进行测试。 这同样适用于任何其他角色。
感谢您阅读并希望您喜欢这篇文章。 订阅更新,让我们知道您感兴趣的内容。