微软的Azure IoT Edge在2017年的建筑大楼中宣布。这个想法是,网络的边缘未被充分利用,设备不必要地与云聊天。如果您可以将一些在云端完成的工作移动到您的设备上,那不是很棒吗?这就是微软Azure IoT Edge所在的地方。 “Build”中给出的例子突出表明,山特维克可乐满是一家制造工具公司,该公司创造了数百万美元的机器。在IoT Edge之前,山特维克可乐满利用Azure的Stream Analytics和机器学习平台来预测灾难并关闭机器(如果有的话)。 只有一个问题:与云的通信引入了两秒的延迟,时间在紧急关闭时是至关重要的。通过利用IoT Edge,山特维克可乐满能够采用与云中相同的逻辑,将其移动到边缘,将延迟降低到1/10秒。 从云计算到边缘移动有很多潜在的优势; 减少延迟只是一个。降低带宽成本,通过在云中使用与设备相同的编程模型简化开发,允许在本地使用Azure的高级云平台,列表继续。对于一些工作,IoT Edge似乎是一个很棒的工具。 但是,现实情况是否可以炒作?让我们深入一下吧。 经过一番调查,我惊讶地发现Azure IoT Edge不是一个全新的产品。这是一个新的名称,以反映已经包装在现有产品Azure IoT Gateway SDK中的所有新功能。 虽然我初次感到有点被欺骗,但我了解微软的推理。如果还有其他事情,Azure IoT Edge是一个比较性感的名字,所以我们来吧。Azure IoT Edge执行Azure IoT Gateway SDK所做的一切,以及更多。所以除了从云中移动计算外,这个东西做什么? Azure IoT Edge的主要目标是将现有的工业设备连接到云端; 使以前的哑巴机器更加智能,更连接。 Azure IoT Edge入门Azure IoT Edge的GitHub存储库是我的出发点。在ReadMe中链接的示例应用程序似乎特别有用。由于Azure IoT Edge可在Linux和Windows上运行,并且能够运行JavaScript,Java和.NET模块,Microsoft正在努力与所有条纹的开发人员进行沟通。 作为一个C#开发的.NET开发人员,我决定抓住最新最好的.NET标准模块示例来开始。按照说明下载示例应用程序后,我尝试运行它无效。“调试配置文件中指定的调试可执行程序不存在”。 咦? 作为软件开发人员,这种曲线球发生很多。我没有结婚到.NET,所以我只是运行JavaScript示例。Lo,看哪,它工作!那么,运行在我的本地机器上记录假的数据。 万岁!我有一个(假的)传感器在IoT Edge处抛出一些东西。但是真的,这是做什么的?没有云,没有我在Azure中创建的模型,放在我的本地设备上。我不得不深入挖掘。 IoT Edge“Hello World”采取不同的方法来学习一点,而不是运行独立的样本,我决定获得IoT Edge的来源。有趣的是,IoT Edge的来源本身包含其他样本。我本来希望看到主要的GitHub存储库包含没有任何样品的IoT Edge的源,或者将所有内容整合到一个repo中。我认为,对样本进行多次回复会混淆这个问题。 我发现在Azure IoT Edge上的Microsoft文档 帮助澄清了一些事情,并且我可以使用“Hello World”样本来启动和运行。 我按照从源代码构建IoT Edge的指示安装了先决条件,其中包括安装CMake和Python 2.7,并确保将其驻留的文件夹添加到PATH环境变量中。 然后,我运行命令toolsbuild.cmd --disable-native-remote-modules,在通过Visual Studio打开的开发者命令提示符中构建示例。不要像我一样 确保您有通过Visual Studio安装程序安装“桌面环境与C ++”,即使这不是您的开发面包和黄油。你需要这个 在挖掘文档之后,我更了解一下这个东西如何运作。你可以想象它是一个迷你操作系统,“模块”作为应用程序。 一些模块是预先编写的,并且执行常用的网关功能,但是您可以使用各种语言(C#,Java,JavaScript和C)创建自己的自定义模块。这些模块从边缘设备中获取数据,做出一些逻辑决策,并与其他模块和云进行通信。这一切都运行在可以在Linux或Windows环境中生活的软件抽象之上。 按照创建“Hello World”示例的说明,我发现它使用了一个JSON配置文件。在此文件中,您将指出要使用的模块及其入口点以及您需要的任何静态参数。
所有通讯的IoT
注册我们的每周简报和独家内容!
这似乎是一个简单的设置配置变量的系统,特别适用于绑定一大堆不属于您的模块。对于“Hello World”示例,它使用两个模块:“Hello World”和“Logger”。 这个想法是,Hello World模块只向Logger打印一些消息,Logger的唯一作用是将这些消息输出到一个文件中。外推,显然Logger模块可以被您决定创建的任何其他模块使用。 要运行示例,所有人都需要进入 sampleshello_worldDebughello_world_sample.exe ..sampleshello_worldsrchello_world_win.json任何旧的命令提示符。这将启动示例可执行文件,并将其指向使用包含的默认JSON配置文件。然后,Azure IoT Edge启动,运行模块,并开始每隔五秒将一个“Hello World”消息记录到JSON配置文件中指定的文件中。 我们可以编辑这个模块来进行招标吗? 开箱即用的配置写入iot-edge/build/log.txt 文件。我想测试,更改配置文件(位于iot-edge/samples/hello_world/src/hello_world_win.json)会更改输出。更新后写入一个.json 文件,毕竟是JSON格式,我运行了Hello World示例。是的,它现在记录到一个bonafide JSON文件!
|