物联网IOT嵌入式应用示例;使用 Nabto Edge Embedded SDK 构建的应用程序的几个示例可以在示例目录下的SDK github 存储库中找到。所有以 为前缀的示例simple_都是特定主题的最小示例,省略了所有访问控制和其他复杂性。

有关演示访问控制的完整示例,请参阅恒温器示例或完整的Nabto Edge Tunnel应用程序。

nabto-client-sdk-examples github 存储库中提供了上述所有示例的相应示例客户端。嵌入式隧道应用程序可与Nabto Edge Tunnel CLI客户端工具一起使用

对于恒温器嵌入式设备示例,完整的客户端应用程序也可用于iOSAndroid

示例项目的配置

为了允许远程访问,所有示例都需要通过Nabto Cloud Console进行配置,您必须在其中注册一个免费帐户(不需要信用卡)。通过控制台配置设备很简单 – 只需要获取两个 id(设备和产品 id)并设置一个值(公钥指纹)。

下面概述了配置过程,并附有“Hello, World”示例的屏幕截图。所有示例的过程都是相同的 – 所有设备都只需要这个简单的配置来进行远程访问,无论用例如何:实际应用程序仅在客户端和设备上运行 – 因此从Nabto 基站配置的角度来看,它们是都相似。

如果您只想测试从客户端应用程序对示例的本地访问,则根本不需要通过 Nabto Cloud Console 进行任何配置,它就可以正常工作。

你好世界!合作协议服务

这个例子是一个简单的Hello, World!风格 Nabto Edge 嵌入式 SDK 应用程序。它位于SDK 存储库中的Examples/simple_coap中。其他simple_示例以类似的方式构建运行。

该应用程序是一个简单的CoAP服务,用于处理GET路径 上的请求/hello-world。它会回复一个字符串有效负载,内容为“Hello, world!”返回给客户端。

配置

唯一的设备配置值在命令行上提供。从Nabto Cloud Console获取这些内容– 首先注册免费的开​​发者帐户(如果尚未注册)。

如果您尚未创建组织以及初始产品和设备,只需按照“入门”向导操作即可:

物联网技术开发 - 物联网IOT嵌入式应用示例

完成向导后,您将拥有一个组织、一个产品和一个设备。您的“产品”页面将如下所示 – 单击“设备”链接:

IOT项目开发

在设备页面上单击可用设备,即尚未设置指纹的设备(按照向导操作后您将拥有一个这样的设备):

物联网IOT嵌入式应用示例

现在请记下产品 ID(pr-v3hg947i在屏幕截图中)和设备 ID ( de-ukmuqfkq)。这两个 ID 已显示在您访问此处的多个位置 – 在此页面上,可以方便地从右侧的文本中复制它们:

请记住,pr-de-前缀是 id 的一部分,必须包含在内!

将此页面保留在浏览器中,因为您很快就会返回以注册设备生成的公钥指纹。

构建和运行

按照嵌入式 SDK 介绍页面上的一般构建说明来构建 Hello, World CoAP 服务。

运行嵌入式应用程序,在其中从控制台指定上面提到的两个 ID:

$ ./examples/simple_coap/simple_coap_device pr-v3hg947i de-ukmuqfkq

当设备启动时,它会生成一个唯一的私钥,并尝试使用它向 Nabto 基站注册。这最初会失败,因为相应的公钥尚未注册:

$ ./examples/simple_coap/simple_coap_device pr-v3hg947i de-ukmuqfkq
Nabto Embedded SDK Version 0.0.0-branch.master.commits.2539+201f1e87
Nabto Embedded SDK Version 0.0.0-branch.master.commits.2539+201f1e87
Device: pr-v3hg947i.de-ukmuqfkq with fingerprint: [83a6cb6803ad7c812e962c1acc35f9985dd800b8d559aea8b7766b4a94696a45]
2023-01-08 14:56:34.712 ...emb/src/core/nc_device.c(391)[_INFO] Starting Nabto Device
2023-01-08 14:56:35.049 ..._attacher_attach_start.c(102)[ERROR] The server does not recognize the fingerprint of the device. Check that the fingerprint is in sync with the server
The device fingerprint is not known by the basestation

只需让设备保持运行,最后一个配置步骤完成后,它就会立即工作:

最后的配置步骤是通过 Nabto Cloud Console 注册设备的指纹。公钥指纹是上述控制台输出(83a6...a45)中第 4 行输出的长字符串,只需将其复制并粘贴到 Nabto Cloud 控制台的指纹字段中即可:

中国物联网公司 - 物联网研究中心 - 物联网技术开发 - 物联网IOT嵌入式应用示例

保存指纹后,设备上线:

$ ./examples/simple_coap/simple_coap_device pr-v3hg947i de-ukmuqfkq
Nabto Embedded SDK Version 0.0.0-branch.master.commits.2539+201f1e87
Nabto Embedded SDK Version 0.0.0-branch.master.commits.2539+201f1e87
Device: pr-v3hg947i.de-ukmuqfkq with fingerprint: [83a6cb6803ad7c812e962c1acc35f9985dd800b8d559aea8b7766b4a94696a45]
2023-01-08 14:56:34.712 ...emb/src/core/nc_device.c(391)[_INFO] Starting Nabto Device
2023-01-08 14:56:35.049 ..._attacher_attach_start.c(102)[ERROR] The server does not recognize the fingerprint of the device. Check that the fingerprint is in sync with the server
The device fingerprint is not known by the basestation
2023-01-08 14:56:57.854 ...b/src/core/nc_attacher.c(747)[_INFO] Device attached to basestation
Attached to the basestation

现在设备已“连接” – 这意味着它已向 Nabto 基站注册并准备好从远程客户端调用!

从 Nabto Edge 客户端调用 CoAP 服务

调用简单的“Hello, World!” CoAP服务,使用对应的CoAP命令行客户端

调用客户端如下:

./simple_coap_client -p pr-v3hg947i -d de-ukmuqfkq -r /hello-world --force-remote
Nabto Client SDK Version: 5.12.0
connecting to pr-v3hg947i.de-ukmuqfkq
Connected to device with fingerprint: 83a6cb6803ad7c812e962c1acc35f998
Received CoAP get response data: Hello world

--force-remote选项可确保您使用 Nabto 基站介导的 P2P(或中继)来测试连接,而不是使用设备的本地连接。即使未通过 Nabto Cloud Console 正确配置,您也可以在本地调用目标设备。