我问你,哈布罗夫斯基人!2020年,我们都知道什么是物联网以及为什么需要它。但是,我们当中有多少人熟悉代表物联网中最重要的层之一的云平台?让我们做对。协议的异构性使智能设备的连接过程,其配置和数据处理大大复杂化,这已不是秘密。物联网的云正在解决类似的问题。今天,以俄罗斯的一个物联网平台为例,我将展示连接具有不同协议的设备以及使用接收到的信息来构建自动化流程是多么容易。在我通常用于执行任务的平台中,我已经实现了与使用诸如MQTT,Wialon Combine,Wialon IPS,Galileosky,Modbus等协议的设备进行交互。除了使用提供的协议外,对于无法访问Internet的设备,还可以编写软件代理-设备与安装在另一台设备(例如Raspberry Pi)上并连接到该设备的平台之间的某些中介。假设您要确保与使用所介绍协议之一的设备进行交互。在这种情况下,完成三个步骤就足够了:- 使用所需的参数和命令配置模型;
- 在平台中创建具有唯一标识符的对象;
- 配置设备以连接到平台。
让我们分析一些情况,看看它们之间是如何联系的。案例一:敏捷锣
首先,有一天,我们的团队认真考虑了如何在办公室中自动化工作流程。因此,按照敏捷的概念,在中午,所有员工都聚集在Daily会议上。很容易错过Slack有关工作中即将举行的会议的通知,而且不方便手表分心...因此,这个想法诞生了自动声音通知系统Agile-gong。如何实施? Iron是NodeMCU(带有内置Wi-Fi模块的Arduino的微型模拟),一个伺服驱动器和一个电容器。每个工作日的12点,您都需要确保伺服驱动器的输出轴的末端带有冲击设备,其旋转角度足以使锣响,并通知所有人上升情况。铁的连接图非常简单:
连接在NodeMCU上的代码提供:- 安装Wi-Fi连接并使用MQTT协议连接到平台;
- 将伺服的初始位置设置为0度;
- 发布带有当前情况数据的消息;
- 订阅命令并通过命令旋转伺服角度。
#include "Arduino.h"
#include "EspMQTTClient.h"
#include <Servo.h>
Servo myservo;
int pos;
EspMQTTClient client(
"<wifi-ssid>",
"<wifi-password>",
"<MQTT Broker server ip>",
"<ric-mqtt-client-id>"
);
void setup() {
Serial.begin(9600);
move(0);
}
void onConnectionEstablished() {
Serial.println("connected");
client.subscribe("move", [] (const String& payload) {
int angle = payload.toInt();
if (angle != pos) {
move(angle);
}
client.publish("position", payload);
});
}
void loop() {
client.loop();
}
void move(const int angle)
{
myservo.attach(5);
myservo.write(angle);
delay(800);
myservo.detach();
pos = angle;
}
在平台方面,已经开发了设备模型。它描述了可以从设备接收的参数以及可以发送给设备的命令。在解释MQTT命令时,这些是给客户的带有特定主题和数据的消息,在本例中,数据包含必要的旋转角度。
然后创建一个带有标识符的对象,通过该标识符在平台上进行授权。连接后,显示如下:
在团队中,可以选择以0度和90度角发送旋转命令。
现在,您需要添加自动化脚本。我们将创建一个自动机器,在适当的时候到来,它将进入90度旋转状态,然后在循环中进行可配置的重复次数,它将进行必要的冲程次数并返回到12小时的初始等待状态。每个自动化方案都是一个特定的框图,该框图定义了对象行为的逻辑。在注册了这种情况后,您可以考虑设备发生的所有更改,并且基于发生的更改,设备将能够自动执行适当的操作,而无需向用户发送命令。生成的机器不仅可以用于特定设备。例如,您可以使用锣制作完全相同的系统,然后将其安装在办公室的另一个办公室中。这样您将拥有相同的模型,两个不同的对象以及一台在两个对象上运行的计算机。
案例2二氧化碳传感器
对我们来说第二个有用的解决方案是连接二氧化碳传感器。也通过MQTT连接。再次,铁组装方案是微不足道的。
是的,顺便说一句,我们参与了公司内部黑客马拉松中第一和第二种案件的实施。我们当中没有人沉浸在铁的工作中,也不需要这样做。
进一步的过程是相同的。该模型包括设备传输的ppm参数(1000 ppm =2含量的0.1%),但不是很明显,因此,模型中立即显示了另一个参数-CO2含量的百分比。计算方法为ppm除以10000。
在这里您还可以注意到两个打开灯泡的命令。他们决定将其用作指示。当然,我们是通过平台计算机进行管理的。连接设备后,参数显示如下。这些值被实时接受并显示,但是您也可以查看历史记录中过去累积的数据包或显示一段时间内参数变化的图表。
此对象的自动机的工作方式如下。在较高状态下,灯熄灭。在底部-启动计时器一分钟,然后打开灯泡。从第一状态到第二状态的转换是通过以ppm值大于600单位的条件从设备接收数据的事件发生的。触发计时器时会发生返回(从第二种状态转换为第一种状态)。
您可能有两个问题。- 为什么要自动?在硬件本身上注册这样的条件难道不是很容易吗?毕竟,这里的一切都很简单。
- 为什么有计时器?
实际上,即使在这样简单的情况下,机器的好处也是如此。我将带灯泡的传感器放在桌上进行调试,每次上班时,由于机器的阈值非常低,所以灯一直亮着。有一段时间我在机器上尝试了不同的值,结果我达到了600个单位的最佳值。要选择所需的值,我只需要更改机器中的值并保存即可。设备不闪烁。而且,如果我们将该设备转移到需要保持最佳空气条件且需要经常通风的办公室,则可以再次简单地更改该值。快速方便。这是一分钟的计时器。这是必要的,这样一会儿我们就处于高二氧化碳状态,而不会对高价值持续出现这一事实做出反应。否则,我们将不断闪烁一个灯泡,进行过渡直到空调恢复正常。您可能已经猜到有可能以其他方式过渡到初始状态。同样在接收数据的情况下,但条件相反的情况下-ppm <600。然后,我们将精确地处于第二状态,直到正常值到来。案例3 ACS
最复杂的例子是使用访问控制和管理系统的说明,该系统是一个电子模块,旨在控制进入场所的时间,并考虑通过时间和事件。
控制器通过韦根输出接口处理来自阅读器的信息,并使用内置继电器将执行器换向-电磁锁。它没有Internet连接,也没有与平台的可见连接。但是,它具有自己的用于与控制计算机交换数据的协议,因此可以将命令发送到控制器,例如从控制器读取,写入控制器,打开/关闭锁等。因此,在这种情况下,组织了一种非标准的方法-使用代理,这是我在本文开头提到的。控制器协议的工作以C ++代码实现,并在Raspberry Pi上启动执行,而Raspberry Pi又通过RS-485通过接口转换器连接到控制器。该程序的主要任务是连接到平台,序列化命令并反序列化从控制器接收的数据。因此,我们能够使用一个小的软件层使该设备“智能”。设备模型如下:
控制器的主要信息是事件。它以JSON格式进入平台,并包含以下字段:模型也用于解析JSON字段中的各种参数。
在对象的界面中,如下所示:
这是用于发送命令的界面:
您可能会注意到,不仅有一条命令可以读取事件缓冲区,而且还可以写入新的边界。缓冲区边界存储在控制器存储器中-起点和终点。当读取命令到达设备时,将读取这些边界,并且在这些限制内,会从事件缓冲区进行读取。当接收到新事件时,缓冲区边界的末端在控制器上自动移位。但是需要重写缓冲区的初始边界(指示最后一次读取后的最终边界),以免再次读取相同的数据。但这仅在事件数据已成功发送到平台之后才需要执行。锁定数据的接收然后发送命令以重写计算机中的边界也很方便。
该项目在与我们内部CRM系统的集成中找到了延续性,在该系统中,有关员工的信息页面上,我们始终会看到有关办公室中有无人员的最新信息。另外,显示出办公室的出入时间,考虑每月的总小时数。
使用RESTful API从平台获取数据。平台API提供了在诸如门户网站,移动和Web应用程序或我们的CRM系统等外部系统中工作,交互和使用平台实体及其数据的能力。在某些情况下,客人/送餐人员或需要打开门的其他人会来公司。为了不使用您的卡,从而不传输有关您的状态的错误读数,您可以使用平台上的“解锁”按钮。而且,如果需要在门口遇到一个人,那么通过移动应用程序进行操作就很方便。案例4:智慧花园
我关于公寓花园的个人故事始于人们疯狂恐慌和购买产品的背景。我再次去商店,看到土豆应该放在空的架子上,我决定将冰箱中最后发现的土豆用于预定目的。我把这个土豆种在一个大锅里。通过这样一个幼稚的实验,我在窗台上的花园开始了,这两个月后看起来像这样:
由于我不知道哪个种植者,而且花园需要的水比花还要多,所以我很快遇到了一个问题,我忘记给它浇水了。我不会谈论自动灌溉系统,这是一个太多的话题,并且很难定性地组织其工作。相反,我有以下想法:- - , - . , .
- , , , — . , , , . , .
- – 18:00, 6:00. , — . , , / , .
界面将如下所示:第
一种情况的计算机如下所示。转换到发送通知的状态是在困难的条件下进行的-在其中一间工厂中,湿度低于正常水平。条件之间的联系是“或”。
返回到初始状态取决于条件-在所有植物中,土壤湿度都高于正常的I类。
第二种情况的机器如下。转换是根据调度程序执行的,重置是无条件转换。
最后,针对后一种情况的
机器:这些机器在同一对象上运行并并行工作。
也许这就是我想在文章中介绍的全部内容。我要传达的主要思想是,使用物联网平台可以非常轻松地创建任何复杂的业务流程,因为在这种情况下,您只需要研究一个界面-平台界面,就可以避免沉浸在Iron和Internet的工作中。它的编程。