问题标签 [onem2m]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
845 浏览

c# - 如何获取json响应的子节点数据

我有一个 M2M api。它提供 json 响应。因为我需要在 C# 字符串变量中存储一个子节点信息。我在变量中获取空值。我想获取 con 节点的 dataFrame 的数据。

json数据

代码

0 投票
0 回答
76 浏览

java - 当我向 OM2M 发送 CoAP 消息时发生 nullpointerException

我尝试在 OM2M 中向 IN-CSE 发送 CoAP 消息,但 IN-CSE 打印 NullpointerException,就像我上传的图片一样。

我通过修改 OM2M 源代码中的 CoAPServer 类解决了这个问题。

我认为问题是“to=coap://localhost/~/in-cse”所以我将 requestPrimitive.setTo(request.getURI()) 修改为 request.Primivice.setTo(request.getOptions().getURIString())在 CoAPServer 类中。

我觉得这种方式不好,不修改代码不知道怎么解决……

如果有人知道其他方法,请告诉我。

谢谢

-- 追加

我找到了消除错误的解决方案。

首先,我检查了发布的 OM2M 版本。我尝试将 CoAP 消息发送到旧版本(1.0.0)。然后它被很好地转移没有问题。但最新版本有错误。所以我比较了这两个代码。(我主要关注 org.eclipse.om2m.binding.coap 中的 CoapServer.java)

在 Coapserver.java 中,service() 创建一个 requestPrimitive 对象并传输到 Router.java。它在 1.0.0 版本中通过 setTargetId() 将 targetId 作为“to”变量放入 requestPrimitive 对象中(setTargetId() 调用 setTo())。但在最新版本中,它将返回的字符串 getURI() 作为“to”变量放在 requestPrimitive 对象中。(在最新版本中,除非我使用它,否则它似乎不使用 targetId。)

targetId 包含“/in-cse”,getURI() 返回“coap://localhost/~/in-cse”。

在此处输入图像描述

在此处输入图像描述

最新版本删除了 reqeustPrimitive 类中的 setTargetId()。所以当我将 setTo(getURI()) 修改为 setTo(targetId) 时,它转移得很好。

在此处输入图像描述

在此处输入图像描述

这是最新版本的bug吗?还是我做错了什么?

0 投票
1 回答
109 浏览

onem2m - 确定通知的 MIME 类型

我是 OneM2M 协议的新手。搜索 OneM2M TS0001 文档时,我不知道确定 Notification MIME 类型。

如何确定通知的 MIME 类型(例如“应用程序/json”、“应用程序/xml”)?

我在订阅的属性中找不到任何东西。

这是来自以下站点的应用程序开发人员指南示例。他们是如何决定将此通知作为“应用程序/xml”类型发送的?


使用 XML 有效负载向 ADN-AE1 HTTP 请求发布通知

http://www.onem2m.org/application-developer-guide/implementation/notifications

0 投票
1 回答
162 浏览

onem2m - 是什么让传感器成为 AE 或容器?

我们正在尝试实现 onem2m 规范,但我们对是什么让传感器成为 AE 或容器有一些误解?

例如,我有一个 ardunio 板,我连接了 10 个简单的 LED。然后我对两个选项感到困惑。第一个是我有一个 AE (Ardunio) 和每个 LED 的 10 个容器 (LED)。另一个是我有一个 AE(Ardunio),它是另外 10 个 AE(LED)的父级,这些 AE 有自己的容器。

那么是什么让资源成为 AE 或 Container 呢?我应该寻找什么来做出这个决定?

0 投票
1 回答
244 浏览

iot - 与远程 CSE 上的资源通信 - OneM2M

我们正在尝试实施 oneM2M 标准,并且对 Remote CSE 和 IN-CSE 之间的通信过程有疑问。我在下面一步一步地写了我从文档中理解的内容。有些问题对我们来说不是很清楚,所以在进行任何实施之前,我需要确保一切都非常清楚。

在告诉我们从文档中了解的所有内容之前,我会问这个问题。然后我将一步一步地写出我们认为的解决方案是什么。问题是,由 IN-AE 发送的请求是针对 MN-CSE 的,IN-CSE 应该将请求重定向到 MN-CSE 或者它应该自己处理它。

首先,我们有两个完全独立的 CSE。一种是 IN-CSE,另一种是 MN-CSE,如下所示。

IN-CSE 有一个资源树

MN-CSE 有一个资源树

我们暂时跳过了任何安全问题。假设 IN-AE 想要与 MN-CSE 通信,正如我们在上面的问题中所说的那样。

1- IN-AE 应该向 IN-CSE 发送发现或检索请求,告诉我所有子资源 Remote CSE。

2- 发送发现或发送检索请求之间的确切区别是什么?我们认为发现请求仅返回资源 uri,但检索请求返回确切资源的整个数据。这种方法正确吗?

3- 获得所有 remoteCSE 后,现在我知道 remoteCSE 的 ID。然后我可以向 MN-CSE 发送一个发现请求以获取其中的 AE。我们认为有两种选择:

一种。~/in-cse61/csr-34?fu=1&rty=2
b. ~/mn-cse34?fu=1&rty=2

选项 a:如果 IN-AE 只想对 IN-CSE 的资源树进行发现请求,IN-CSE 应该处理它而不将其重定向到 MN-CSE。因为 IN-CSE 已经知道 /in-cse61/csr-34 对它来说是一种有效的 RemoteCSE,但是请求路径以 ~/in-cse61 开头,所以它应该由 IN-CSE 处理。

选项 b:如果 IN-AE 想要对 MN-CSE 的资源树进行发现请求,那么 IN-CSE 可以通过查看请求路径的 /mn-cse34 部分来了解它与 RemoteCSE 相关,因为它不以 IN 开头-CSE 的资源 ID。

所以 IN-AE(例如智能手机)应该以某种方式决定哪个 CSE 应该处理请求?我们觉得有什么不对吗?

---------------------已编辑---------------------------- ----------

在此处输入图像描述

我检查了应用程序开发指南 TR-0025 http://www.onem2m.org/application-developer-guide/architecture的架构

根据这个示例,智能手机 (IN-AE) 可以通过 IN-CSE 控制 Light#1(ADN-AE-1)。

在注册和初始资源创建过程完成后,系统准备好发现并控制灯。

虽然中间节点 CSE-ID 和中间节点 CSEBase 名称用于 HTTP 请求 url,但主机寻址到 IN-CSE。这意味着,从 IN-AE 发送的发现请求,首先由 IN-CSE 处理,然后将其重定向到 mn-cse。然而,您告诉我相反的说法“<em>检索或发现通常仅限于托管 CSE 的资源,不会自动遍历远程 CSE。”。

在 TR-0025 中,给出的示例显示为常见场景。同样在 TR-0034,实际上它正在遍历请求,如图所示。

在此处输入图像描述

0 投票
2 回答
130 浏览

notifications - oneM2M 数据通知处理程序没有被调用

我是 onem2m 的新手,我使用 IoTDM Karaf 实现来学习初始步骤。我还使用来自同一个项目的邮递员包作为学习工具。我也可以从我自己的代码(html、ajax、php)中进行 CRUD 操作和其他直接操作。我已经浏览了规范文档(虽然不是完整的捆绑包,但相当多)和开发者指南示例的家庭照明和实现示例。

我现在卡住的地方是我已经成功注册订阅,通知uri“nu”指向同一网络上不同apache服务器中的php。Postman / Google Rest Client 可以向其发布数据。我什至添加了一个 CORS 标头以避免任何疑问。我已经指定了“nu”:http//full IP/phpfile.php。然后我从 Postman 创建一个内容实例。我期待我的 php 被调用。这种期望有效吗?

我只是将帖子数据转储到我的 /var/www/html 文件夹中的文件中。这按预期工作。我测试了编写一个小 html 并从另一台服务器运行它。所以这不是 CORS 问题或文件系统访问问题。通知实施到位了吗?我的兴趣不在物联网边缘设备端,而是在我想从设备收集数据的后端。我没有看到任何示例详细说明通知处理程序的实现。

任何指示,即使不是直接的答案也会有所帮助。提前致谢。

0 投票
1 回答
105 浏览

onem2m - oneM2M 中的执行器控制

我阅读了在 OneM2M 中进行双向通信的文档。我知道这样做的一种方法是使用订阅和通知系统。假设我们有一个如下图所示的示例。IN-AE(智能手机)想打开ADN-AE2的灯。假设注册和资源创建已经完成,并且 ADN-AE-2 已经订阅了 ADN-AE-2 中的灯容器。

因此,oneM2M 涵盖了 IN-AE 如何发送光控请求以及 ADN-AE-2 或 ADN-AE-1 如何获取来自 IN-AE 的请求并执行它的部分。但是,如果 ADN-AE-2 无法控制灯光并在控制时出现故障怎么办。应该是什么场景?已使用 IN-AE 发送的请求创建了 contentinstance。

1- ADN-AE-2 是否应该创建另一个内容实例,它是容器的先前状态

2- ADN-AE-2 是否应该删除未执行的内容实例(那么其他接收通知并成功执行的订阅者呢)

如果执行器无法执行操作,推荐的方式应该是什么?

在此处输入图像描述

http://www.onem2m.org/tr-0034/procedures/actuator-switch-control

0 投票
1 回答
198 浏览

onem2m - oneM2M 中的固件更新和管理

OneM2M 将设备管理分为两种不同的方法。

1-服务层上的设备管理

2-使用外部管理技术的设备管理

我想了解如何使用每种方法进行固件更新。但是,我只找到非常基本的示例,例如获取内存资源对象作为设备管理的示例。但是使用 <mgmtCmd> 和 <execInstance> 的用例是什么?有什么具体的例子可以分享吗?

我知道节点是实际的硬件设备,管理对象是代表管理功能和实体的资源。但我不明白 <mgmtCmd> 和 <mgmtObj> 之间的相关性。

假设我有一个设备(AE & Node)。它有一个固件信息,我将其作为 <mgmtObj> 保存在节点本身上。它还具有更新固件的 <mgmtCmd>。(我假设 MgmtCmd 是由 AE 创建的。我也不确定谁应该创建 <mgmtCmd>?我猜是相关的 AE。)

我应该如何通过选择上面描述的每种方法来运行 <mgmtCmd> ?我应该使用 TR-069 或 OMA-DM 或 LWM2M DM 之类的外部管理服务吗?或者,oneM2M 服务层上的设备管理是否足以做到这一点?

OneM2M 说 <execInstance> 资源是 <mgmtCmd> 的一个实例。如果我更新 <gmtCmd> 的execEnable属性,那么与该 <mgmtCmd> 相关的应该创建一个 <execInstance> 作为子资源。然后应该对该 <execInstance. 我对那部分也有一些困惑。更新 <mgmtCmd> 的 <execInstance> 属性是什么意思?我应该怎么做?如果我更新一次,如果我多次运行相同的命令,如何使用相同的值更新相同的属性。

如你所见,我真的很困惑。您能否简要解释一下并举一个明显的示例如何在 OneM2M 上进行设备管理(例如固件更新)?

0 投票
1 回答
207 浏览

onem2m - 一个 M2M 中的 FlexContainer、Container 和 SDT

我们什么时候应该使用<flexContainer>而不是<container>我看到了一些<flexContainer>的用例示例,他们将<flexContainer>用于 SDT 设备。< flexContainer>是否仅用于 SDT 设备?

想象一下,我们创建了一个<container>,它被设计用来保存温度传感器的值。设备的实际值存储在 <contentInstance> 中,温度类型(摄氏度或华氏度)由<container>资源的语义描述符字段定义。但是,我们也可以在< flexContainer >的[customAttribute]字段中定义值及其类型。那么,在这种情况下,为什么要在 <container> 的语义描述符字段中定义数据类型或者为什么要使用<container>而不是 <flexContainer>呢?

TS-0023 文档中为某些设备定义了 SDT。如果设备制造商没有定义 SDT,并且我们想使用该设备,我们如何为其创建 SDT/XML 文件?

0 投票
1 回答
307 浏览

onem2m - 在 oneM2M 中创建和检查访问控制策略

我们开始实施 OneM2M 的安全部分,我们首先着手实施访问控制策略(ACP)。在我们研究访问控制策略的 oneM2M 示例时,我们看到特权 (PV) 和自特权 (PVS) 可以是任何发起者,可以是任何应用程序实体 (AE) 或公共服务实体 (CSE)。

在一个权限中,每个访问控制规则定义了允许哪个 AE/CSE 进行哪个操作。因此,对于一组访问控制规则,如果该组中的一个或多个访问控制规则允许,则允许该操作。

TS-0001 v3.12.0 | Ln 3432-3433

之后,我们还查看了 OneM2M 实现的 Eclipse 版本,并为每个 CSE(IN-CSE 和 MN-CSE)运行应用程序。Web 界面通过登录屏幕欢迎您并等待用户名和密码。然后奇怪的部分出现了。在我们成功登录后,输入的用户名和密码似乎被用作我们要访问的资源的发起者。除此之外,还向默认 ACP 添加了一个测试用户。

示例 ACP 取自 eclipse 论坛的主题。

问题是,是否适合将某种用户名和密码逻辑放入 ACP 本身?不管是什么,我理解这种用法​​的必要性。但我不确定在 OneM2M 中这样做是否正确。

假设我们有一个具有 Web 界面并被许多用户使用的 AE。因此,每个用户在访问 OneM2M 中的其他资源时具有不同的权限,但访问控制策略的发起者只能是任何 AE/CSE 而不是用户。如何实现这种场景?

相关问题来自 OneM2M 网站

Cgateway_ae(好像是MN-AE)向MN-CSE发送ACP创建请求。但是 MN-AE 创建到 MN-CSE 的 ACP 的权限来自哪里。在它想要创建另一个 ACP 之前应该以某种方式创建它?

谁有责任创建该 ACP ?责任方如何知道相关的 AE-ID/CSE-ID 甚至在创建之前。

在此处输入图像描述

------------------ 已编辑 ---------------

在此处输入图像描述

这是一个非常好的文档。

http://www.onem2m.org/tr-0038/procedures/authorization/configuration-of-accesscontrolpolicy