c++ - 如何从设备代理定义自定义片段
问题描述
我用 C++ SDK 编写 Cumulocity 代理。我需要直接从代理向 c8y_Network 片段添加自定义片段。有人可以举例说明如何做到这一点。
即:c8y_Network 有 3 个片段 - c8y_LAN/c8y_WAN/c8y_DHCP。我的带有代理的设备有 3 个 LAN、WiFi 等。所以我想定义新的片段,例如 c8y_LAN2、c8y_LAN3、c8y_WiFi 等。
文档说:“......你可以添加自定义片段。” 但不要说如何。
解决方案
您将需要创建自己的 SmartRest 模板,以反映您对 c8y_Network 片段的添加。然后您可以使用此模板更新 c8y_Network 片段。
您无需更改平台一侧的任何内容或告诉 Cumulocity 您的结构。你可以盲目地发送它。
JSON 示例:
{
"c8y_Network": {
"c8y_LAN1": {
...
},
"c8y_LAN2": {
...
},
"c8y_LAN3": {
...
},
"c8y_Wifi": {
...
},
}
}
后端不会验证这些结构。您的应用程序只需要了解它。设备管理中网络的默认视图不会显示您的添加,因为它不知道此结构。您需要拥有自己的网络插件来可视化所有内容。
在座舱中,您有某些小部件(例如资产属性),它们将自动检测设备中的任何类型的结构,并且能够显示这一点。
我建议您查看使用 C++ SDK https://bitbucket.org/m2m/cumulocity-agents-netcomm/src/master/的 netcomm 路由器的实现
这里有 SmartRest 模板(包括一个用于 c8y_Network 的模板):https ://bitbucket.org/m2m/cumulocity-agents-netcomm/src/master/srtemplate.txt
在这种情况下,此模板的使用在 lua 插件中实现:https ://bitbucket.org/m2m/cumulocity-agents-netcomm/src/master/lua/net.lua
推荐阅读
- mysql - 如何使用 perl 在 windows V10 上访问 mysql V8?
- c++ - 如果成员函数同时出现内联和非内联,编译器会做什么
- kotlin - Kotlin - 当使用 .. 创建范围或它如何执行比较时会发生什么?
- json - 如何解决这个 JQ 字符串连接问题?
- python - 如何在完全不同的函数中使用函数的返回值
- swift - 如何在两个视图控制器的两个特定实例之间来回移动,而不必每次都传递数据
- java - 我的 grails 项目使用 domain.save(flush:true).save() 面临错误“TransactionRequiredException:no transaction”,它可以保存但正在更新
- python - QPainter 混合颜色
- c# - 非泛型类型“IdentityUser”不能与类型参数一起使用
- docker - Dockerfile 并包括其他与 apt-get 一起使用的存储库