IoT的C或C ++通用API


9

从拥有文档,一组编程接口的意义上讲,C或C ++中用于IoT的CAPI或C ++ CAPI是什么?(例如POSIX用于操作系统,Qt用于GUI等。)

这个简短的页面激发了我的问题(我对开发用于IoT的静态源代码分析工具很感兴趣)。我不仅在寻找法律标准,还在寻找各种工业领域中常用的API或库-C或C ++,以及现有的标头文件。我对Web API(定义一些HTTP请求的约定)或没有任何API或库实现它们的网络协议不感兴趣。

(因此,我对开发自己的物联网应用程序不感兴趣,但我想开发工作并分析源代码以帮助物联网软件开发人员的软件工程工具)

我什至可能对特定行业的IoT API或库感兴趣,例如在医疗保健,物流,运输,智能电网,智能建筑等方面;只要是C或C ++ API或库即可。


我在一个从事静态源代码分析的研究小组中,我们想开发分析C或C ++源代码的工具,以帮助IoT软件开发人员。

但是,在进行此工作之前,我需要找到一种获得资助的方法。

我们建议为开发人员和工程师开发专门的工具(最好是开源技术,要高于现有技术),以针对物联网平台编写源代码(如果需要,可以使用C,C ++和Ada ...)。该工具将集成到目标软件开发套件中。该工具可以通过针对特定于这些软件框架的编码规则,不变式和良好实践来分析和检查源代码的有效性,从而协助IoT软件开发人员。主要目的是提高软件质量并加快产品上市时间。如果相关,该工具可以执行特定的源代码优化,以增强软件性能和/或减小代码大小。


注意 这个IoT Eclipse网页列出了几个标准。如果有必要为它们开发源代码分析器,那么我对实现它们的API和库(以及任何其他IoT实际领域特定标准)感兴趣。


@Basile这是商业性的还是FOSS?无论如何,我们有什么方法可以追踪您的进度。我意识到这可能需要几个月甚至几年的时间,因此非常欢迎观看UTL或查看邮件列表
Mawg说,恢复Monica的时间为

十二年来,我主要从事自由软件的开发,所以我希望这是自由软件。但是,我需要加入一些财团(或获得一些研发资助或任何其他资金)才能开始进行这项工作。
巴西尔·斯塔林凯维奇

1

1
在物联网方面,MQTT和Mosquitto非常受欢迎。也许Libmosquitto API是您的代码分析器的理想目标?
Bence Kaulics '17

1
您对物联网特别感兴趣吗?正如Bence Kaulics所建议的那样,存在通信方面(MQTT,CoAP,6LoWPAN等),或者有整个物联网平台,例如Android ThingsUbuntu IoT。您想处理哪一部分?
Aurora0001

Answers:


8

Basile,我认为我们在这里没有很好的区别。

当您谈到类似于IoT的Posix标准时,我认为您是在谈论包装协议的库。

作为从事(咳嗽)数十年的电话和卫星通信协议栈的工作人员,我可以说(正如您可能知道的那样),这些协议是根据需要已经严格定义的。例如,Zigbee受https://en.wikipedia.org/wiki/IEEE_802.15.4管辖

这些标准确定了要发送的消息,并定义了字节0表示字节,字节1到4表示字节等,以便来自不同制造商的设备可以相互通信(无论如何,这是理论;我可以告诉您一些恐怖的消息故事;-)

就像我说的,对于任何给定的协议,都有很多制造商。对于任何给定的制造商,可能会有多个软件库,这是您的问题。

只要有多个包装每个协议的APIS,您的任务就太困难了。

可悲的是,只有当一家公司成为主导者时,才会有类似Posix的API。如果一个主要政府向它投入很多钱,可能性很小,但我看不到这种情况发生。开源社区给我类似Linux所做的努力是唯一的机会。


顺便说一句,我认为您没有足够清楚地表明您将不仅仅是另一个静态代码分析器,它不是针对通用代码,而是针对某些特定的API。您确实说过,但这不是IMO。当您准确地定义它时,您将知道您的项目真正是什么。如果您已经知道,您似乎并没有强调它(但也许我读得不够好,两次会议之间匆匆忙忙)。

POSIX API的语法由编译器管理,您学习的所有API的语法也一样。因此,我猜您正在寻找潜在的危险代码,例如使用统一化的资源,不释放分配的资源等–是正确的吗?

不过,这听起来像是一个伟大的项目,而我已经出演了这个问题。


在此处输入图片说明


1
我对API的语义(不仅是语法语法,还是大部分语法)更感兴趣。是的,我想使用该API对您提到的内容(以及更多内容)进行分析。目前,这只是一个粗略的想法(我将使其适应需求),并且我仍在尝试寻找方法(尤其是协作研发项目)来为其筹集资金。
巴西尔·斯塔林凯维奇

顺便说一句,Qt示例表明,即使没有法律标准,API(和库)也可能变得很重要,甚至可能成为主导。
巴西尔·斯塔林凯维奇

5

各种网络协议的标准已经很好地定义了。听起来您希望找到的是一种实现IoT设备固有标准行为的API。类似于Light()函数的功能,可以打开,关闭或将灯光调暗至其亮度的一小部分;可以进行布防或撤防的DoorSensor(),也可以注册有关开门或关门事件的警报;诸如此类的事情。但是,我不知道不是特定于应用程序的任何API库。

如果有人有一个,您可能会在Domoticz中找到一些东西。这是一个用C ++编写的开源家庭自动化控制器。


5

作为快速响应,我不认为IoT有一种特殊的库,我想说IoT基本上是“ 新的嵌入式系统 ”,他们只是更改了名称并添加了与云的连接。

因此,回答我用于C ++编程的内容时,我的参考页是http://www.cplusplus.com/

基本上,对于物联网,您将需要使用任何协议(USB,TCP / IP,UDP,ZigBee等)的通信库

另外,如果您进行通信,则需要安全性/加密

其余的取决于您要控制或测量的硬件部分。您将需要此类硬件库(API /固件)

当然这里有很多我想念的东西...让我们看看其他答案


2
因此,基本上,您确认我的直觉是,IoT只是嵌入式计算(可能是嵌入式Linux系统)的新流行语?
巴西尔·斯塔林凯维奇

@BasileStarynkevitch取决于设备类。健身追踪器(与手表式电话分机相对)不运行Linux。自供电节点不运行Linux。执行分布式请求的集线器节点可能确实运行Linux。因此,我谈到从边缘扩展到云的堆栈。
肖恩·霍利哈内

1
那没问题。那么这些设备上常用的 API或库是什么。
巴西尔·斯塔林凯维奇

1
由于ZigBee看起来像网络协议,因此不在范围内。但是,使用C或C ++ 实现 ZigBee 的通用API 会很有趣
Basile Starynkevitch

4

嵌入式,安全通信,配置(设备管理)以及OTA更新。这是一个很大的软件包,并且正在发展成为一种新型的开发平台。

有几家提供云解决方案的提供商,他们通常将拥有自己的客户端API和选定的端点操作系统。

据我所知,各种无线协议实际上并不决定任何特定的软件堆栈,因此您的选择需要从全局出发,而不是由客户端API决定。一个决定因素可能是开源对于您的应用程序中的堆栈是否重要。


1
我不在开发IoT应用程序,但我想开发静态源代码分析工具以使IoT软件开发人员受益。
巴西尔·斯塔林凯维奇

1
好的,所以有(猜测)4或5个不同的堆栈是相关的,如果要跟踪几年中有两个或三个成为主导的堆栈,则需要考虑所有这些堆栈。
肖恩·霍利哈内

1
您在考虑什么精确的API或库(使用C或C ++)?请在您的答案中给它们命名!
巴西尔·斯塔林凯维奇

1
如果您碰巧知道有一些使用此类API的团队,请向他们提出我的问题,并指出它们gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch

3

我认为您的目标有点类似于BOOST:

Boost C ++库

他们旨在建立“现有实践”并提供参考实现,以使Boost库适合最终的标准化。

Boost可能是物联网的主要参与者:它确实对C ++进行了一些重大改进。


1
评论不作进一步讨论;此对话已转移至聊天
匿名

2

IoTivity是OCF规范的参考实现。您可以在其GitHub存储库中找到文档和源代码。

从他们的功能列表中

  • 用C语言编写的用于部署到受限设备的核心功能
  • C和C ++提供的大多数功能

他们的Framework API允许通过各种协议(例如蓝牙,Wi-Fi,ZigBee和Z-Wave)进行发现,数据传输,数据管理(收集,存储和分析)和设备管理(例如配置,诊断)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.