Simlyn – 使用微软Azure连接IOTA Flash库

Simlyn - 使用微软Azure连接IOTA Flash库

毫无疑问,微软Azure和IOTA都将在未来的物联网(IoT)领域扮演重要角色。这两个平台都可以提供独特的解决方案,确保大数据可以以安全的和可扩展的方式进行处理。Simlyn通过展示一个可应用于现实世界的概念证明来连接两个平台:由物理硬件设备提供的数据将可以发送到云端。Web应用程序使用IOTA的Flash Library模拟供需模型。所有FLASH Channel交易都存储在NoSQL数据库中,该数据库充当机器算法演示源。
由于部署一会儿就会变得非常耗时,所以我发布了一个YouTube视频,让您了解Simlyn的一些特性。还有一个离线模式的演示。
Simlyn是开放的和正在进行中的任务。如果您有任何问题,请随意创建一个pull请求或创建一个issue。

Simlyn - 使用微软Azure连接IOTA Flash库

架构

Simlyn - 使用微软Azure连接IOTA Flash库

从架构的角度来看,Simlyn由六个独立部分组成:

  • Raspberry Pi 3:连接到Bosch BME280的物理硬件设备。
  • IoT Hub:启用物联网设备之间可靠的双向通信。
  • Node Web App:使用flash.lib.js提供Flash Channel支持,充当前端解决方案。
  • Web API:用于处理数据库调用的.NET Core Web API。
  • Cosmos DB:NoSQL数据库,用于低延迟和大规模可扩展应用程序。
  • Power BI:提供实时分析支持的业务工具。

Simlyn是如何工作的?

Windows 10 IoT Core运行在一个Raspberry Pi 3上。该设备使用MQTT协议将温度和湿度数据发送到一个Azure IoT Hub。传入的流量被路由到部署在Azure中的Node Web App。这个Web App实现了IOTA的Flash Library来处理双向的off-Tangle支付通道。此外,该app使用chart.jsBootstrap框架显示图形输出。IOTA和Azure之间的另一个链接是存储Flash Channel交易的NoSQL数据库(Azure Cosmos DB)。由于Cosmos DB支持低延迟,所以数据可以用于机器学习场景、图形演示,甚至是实时计费分析。我连接了Power BI,来演示一种显示Flash Channel交易图形输出的简单方法。

要求

如果你想运行Simlyn,请确保你有:

在线模式

在线模式包含了前面面讲到的架构的设置步骤。如果您想在本地运行Simlyn,我建议您浏览离线模式场景。

一、部署Azure服务

打开Visual Studio solution:Simlyn ARM Deployment。 按照这个指南将模板部署到Azure Resource Group(RG)中。 确保您在参数文件中正确设置了变量。 请同时验证下面列出的Azure资源设置是否正确。

资源类型 设置 描述
IoT Hub Devices Enabled 设置你的IoT设备。
Web App (Node) Web Sockets Enabled 通过TCP提供全双工通信。
Web App (Node) Azure.IoT.IoTHub.ConnectionString 由IoT Hub提供的连接字符串 用于dev注册的IoT Hub连接字符串。
Web App (Node) Azure.IoT.IoTHub.ConsumerGroup 由IoT Hub提供的consumer group 使阅读者能够独立阅读消息。
Web App (Node) Deployment Option 本地 Git 部署 从本地Git仓库将你的app部署到Azure Web Apps。
API App (.NET) CORS * 跨源资源共享(CORS)允许在外部主机上的浏览器中运行JavaScript代码。
Cosmos DB Throughput (RU/s) 400 Cosmos DB的货币。

二、将通用Universal Windows Platform (UWP) app发布到Raspberry Pi 3。

  • 确保你按照这个指南正确的将Raspberry Pi 3与BME280传感器连接起来。
  • 在Raspberry Pi 3上安装Windows 10 IoT Core(如果您遇到性能下降的问题,请确保使用16GB或更大的SD卡)
  • 打开位于Simlyn Universal Windows Platform App文件夹中的MainPage.xaml.cs类。 按如下所述更新变量:
    • private string iotHubUri = "";  33行
    • private string deviceKey = "";  34行
    • deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey("Your Device Name", deviceKey), TransportType.Mqtt);  39行
  • 将Visual Studio远程连接到Raspberry。这个教程展示了基本步骤。
  • 构建Visual Studio solution(Ctrl + Shift + B),这可能需要一段时间,因为VS要下载并安装项目中使用的NuGet包。
  • 将app部署到设备上(也可以发布)。当我们在Broadcom处理器上运行这个示例时,请确保选择“ARM”作为目标平台。
  • 部署完成后,您就能够在控制台中看到一些调试输出。 您可以通过切换到Azure portal中的IoT Hub来验证云数据输入。

Simlyn - 使用微软Azure连接IOTA Flash库

三、配置和发布Web API。

如果到目前为止还没有完成,请在您的机器上安装.NET 2.0或更高版本
打开Simlyn Web API并切换到globals.c类。编辑以下参数(通过使用Azure portal切换到Cosmos DB数据库帐户来获取所有参数):

  • public static readonly string DocDBDatabaseId = "<Your Database ID>"; 行 13
  • public static readonly string DocDBEndpoint = "<Your Cosmos DB Endpoint Uri>"; 行 14
  • public static readonly string DocDBAuthKey = "<Your Doc DB Auth key>"; 行 15
  • public static readonly string DocDBCollectionHistory = "<Your Collection Name>"; 行 20

右键单击该项目并选择Publish 。 将API部署到您在步骤1中创建的其中一个Web app资源
当我们使用Swagger package时,进入<resourcename>.azurewebsites.net/swagger以查看公共的.NET POST和GET操作

Simlyn - 使用微软Azure连接IOTA Flash库

四、配置和发布Node Web App

  • 使用Visual Studio Code或您喜欢的web IDE打开目录Simlyn Node App下的/public/javascripts/文件夹。编辑以下变量:
    • var apiService = '<Your FQDN of the API // eg, https://simlyn-backend.azurewebsites.net/api>' 在 index.js 第6行
    • var apiService = '<Your FQDN of the API // eg, https://simlyn-backend.azurewebsites.net/api>' 在 iotaflash.js 第2行
    • var UseMockedData = false  在 index.js 第72行的
  • 切换到文件IOTAHelpers/globals.js并更新下面列出的变量(您可以使用在线种子生成器并使用IOTA的轻钱包创建地址)。确保你的地址由81个字符组成,如果需要删除校验和。
    • oneSeed :<seedOne>
    • twoSeed:<seedTwo>
    • oneSettlement:<settlementOne>
    • twoSettlement:<settlementTwo>
  • 确保您按照本教程启用了本地git仓库部署。 使用Azure portal从web app resource复制git仓库URL
  • 通过运行下面的cmdlet将节点应用发布到Azure
    • git remote add simlynnodeapp <Git clone URL from the Azure portal>
    • git push simlynnodeapp master:master
  • 部署会需要一些时间,因为cmdlet要启动Node build和release任务。
  • 您现在可以浏览 https://yourwebapp.azurewebsites.net并开始模拟。
  • 点击“End Simulation”按钮后,IOTA的Final Bundle被创建。 我没有实现AttachToTangle功能,因此演示会自动重置

五、启用Power BI可以查看Cosmos DB数据库提供的坐标

  • 下载Power BI Desktop应用
  • 创建一个新项目并从Cosmos DB数据库导入数据。您可以阅读本指南
  • 打开Query Editor,然后选择coordinates列
  • 选择coordinates字段,并创建一个新的Power BI Map

Simlyn - 使用微软Azure连接IOTA Flash库

离线模式

您也可以在离线模式下运行Simlyn。这意味着Node app与云(除了Cosmos DB)和硬件设备之间没有交互。还有一个可用的离线模式演示
打开命令行工具并在按下面设置环境变量

  • set Azure.IoT.IoTHub.ConnectionString=<randomstring>
  • set Azure.IoT.IoTHub.ConsumerGroup=<randomstring>

使用Visual Studio代码或您常用的IDE打开Node app。 将mockedData布尔值设置为true

  • var mockedData = true (在public/javascripts/index.js中)

切换到IOTAHelpers/globals.js并更新下面列出的变量(使用在线生成器获取创建种子,然后登录钱包生成地址)。 确保你的地址由81个字符组成,如有需要可删除校验和。

  • oneSeed : "seedOne"
  • twoSeed: "seedTwo"
  • oneSettlement: "settlementOne"
  • twoSettlement: "settlementTwo"

切换到命令行并运行以下节点命令

  • npm install
  • npm start

打开浏览器并转到localhost:3000

后期需要完善的功能

  • 更美观的用户界面/用户体验元素(响应现在不是很流畅)
  • 以更安全的方式存储敏感数据(种子,个人信息等,例如,Azure Key Vault)
  • 启用更多支付选项(例如,按照千字节而不是调用量)
  • 实施“附加到缠结(Attach to Tangle)”功能
  • 利用更多Azure服务(例如,流分析,Power BI等)
  • 将NodeJS Web app拆分为consumer和receiver应用
  • 实施Azure Active Directory(AAD)以保护应用服务

本文为翻译内容,可能存在技术术语的翻译歧义以及作者可能会不定期修改原文,所以建议参照原文进行阅读。

原文地址:https://github.com/chris-to-pher/Simlyn

胖子李

专栏作者:胖子李

个人简介:我共发表了 190 篇文章,总计被阅读了657,746 次,共获得了 1,884 个赞。

作者邮箱 作者主页 Ta的文章

发表评论

邮箱地址不会被公开。 必填项已用*标注