API communes en C ou C ++ pour l'IoT


9

Quelles sont les API (ou bibliothèques) courantes ou habituelles en C ou C ++ pour l'IoT, dans le sens d'avoir une documentation, un ensemble d'interfaces de programmation? (Comme par exemple POSIX est pour les systèmes d'exploitation, Qt est pour l'interface graphique, etc ....).

Cette courte page motive ma question (je suis intéressé par le développement d'outils d'analyse de code source statique pour l'IoT). Je recherche non seulement des normes juridiques, mais aussi des API ou des bibliothèques couramment utilisées - en C ou C ++, avec des fichiers d'en- tête existants pour eux - dans divers domaines industriels. Je ne suis pas intéressé par les API Web (conventions définissant certaines requêtes HTTP) ou simplement par les protocoles réseau sans aucune API ou bibliothèque les implémentant.

(donc je ne suis pas intéressé à développer moi-même des applications IoT, mais je veux développer des outils d'ingénierie logicielle travaillant et analysant le code source pour aider les développeurs de logiciels IoT)

Je pourrais même être intéressé par les API ou bibliothèques IoT spécifiques à l'industrie, par exemple dans les soins de santé, la logistique, les transports, les réseaux intelligents, les bâtiments intelligents, etc. tant qu'il s'agit d'une API ou d'une bibliothèque C ou C ++.


Je fais partie d'un groupe de recherche travaillant sur l'analyse de code source statique, et nous aimerions développer des outils d'analyse de code source C ou C ++, pour aider le développeur de logiciels IoT.

Cependant, je dois trouver un moyen d'être financé avant de travailler là-dessus.

Nous suggérons de développer un outil spécialisé (de préférence open source, au-dessus des technologies existantes), pour les développeurs et ingénieurs écrivant du code source (en C, C ++, et Ada si nécessaire ...) ciblant les plateformes IoT. Cet outil sera intégré dans le kit de développement logiciel ciblé. Cet outil pourrait aider les développeurs de logiciels IoT en analysant et en vérifiant la validité du code source par rapport aux règles de codage, aux invariants et aux bonnes pratiques spécifiques à ces cadres logiciels. L'objectif principal est d'améliorer la qualité des logiciels et d'accélérer les délais de commercialisation. Le cas échéant, l'outil pourrait effectuer des optimisations de code source spécifiques pour améliorer les performances du logiciel et / ou pour réduire la taille du code.


NB. Cette page Web IoT Eclipse répertorie plusieurs normes. Je suis intéressé par les API et les bibliothèques qui les implémentent (et toute autre norme spécifique au domaine IoT de facto), si le développement d'analyseurs de code source pour eux en vaut la peine.


@Basile Sera-ce commercial ou FOSS? Dans tous les cas, existe-t-il un moyen de suivre votre progression? Je me rends compte que cela pourrait prendre des mois, voire des années, donc une UTL à regarder ou une liste de diffusion serait la bienvenue
Mawg dit de réintégrer Monica le

Je travaille principalement sur des logiciels libres depuis une douzaine d'années, j'espère donc que ce serait des logiciels libres. Cependant, je dois rejoindre un consortium (ou obtenir une subvention de R&D ou tout autre financement) pour commencer à travailler sur ce sujet.
Basile Starynkevitch

1
Voulez-vous dire des choses comme CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTT et Mosquitto sont très populaires en ce qui concerne l'IoT. Peut-être que l' API Libmosquitto est une bonne cible pour votre analyseur de code?
Bence Kaulics

1
Y a-t-il un aspect de l'IoT en particulier qui vous intéresse? Il y a le côté communication comme l'a suggéré Bence Kaulics (MQTT, CoAP, 6LoWPAN, etc.) ou il existe des plates-formes IoT entières comme Android Things ou Ubuntu IoT . Quelle partie voulez-vous aborder?
Aurora0001

Réponses:


8

Basile, je pense qu'il nous manque ici une belle distinction.

Lorsque vous parlez d'un Posix comme standard pour l'IoT, je pense que vous parlez de bibliothèques qui enveloppent un protocole.

En tant qu'employé depuis des décennies ( toux ) mettant en œuvre des piles de protocoles pour la téléphonie et les communications par satellite, je peux dire (comme vous le savez probablement) que ces protocoles sont, par nécessité, déjà strictement définis. Par exemple, Zigbee est régi par https://en.wikipedia.org/wiki/IEEE_802.15.4

Ces normes définissent les messages à transmettre et définissent que l'octet 0 signifie cela, les octets 1 à 4 signifient que, etc., de sorte que les appareils de fabricants disparates puissent communiquer entre eux (c'est la théorie, de toute façon; je pourrais vous dire une certaine horreur histoires ;-)

Comme je l'ai dit, pour tout protocole donné, il peut y avoir une pléthore de fabricants. Et pour un fabricant donné, il peut y avoir plusieurs bibliothèques de logiciels, ce qui est votre problème.

Votre tâche est trop difficile tant qu'il existe plusieurs APIS disponibles, qui enveloppent chaque protocole.

Malheureusement, il n'y aura une API de type Posix que si une entreprise devient dominante. Il pourrait y avoir une mince possibilité si un gouvernement majeur y injecte beaucoup d'argent, mais je ne vois pas cela se produire. La seule autre chance que j'ai comme l'effort de Linux par la communauté Open Source.


Btw, je ne pense pas que vous soyez suffisamment clair sur le fait que vous ne serez pas simplement un autre analyseur de code statique, qu'il n'est pas destiné au code général, mais à certaines API spécifiques. Vous dites cela, en quelque sorte, mais pas assez explicitement, à l'OMI. Lorsque vous définissez cela exactement, vous saurez ce qu'est réellement votre projet. Si vous le savez déjà, vous ne semblez pas le souligner (mais peut-être que je ne lis pas assez bien, précipité entre deux réunions).

La syntaxe des API POSIX est gérée par le compilateur, de même que la syntaxe de toutes les API que vous étudiez. Je suppose donc que vous recherchez du code potentiellement dangereux, comme l'utilisation de ressources unitarisées, pas la libération de ressources allouées, etc. - est-ce exact?

Cela ressemble à un grand projet, cependant, et j'ai mis cette question en vedette.


entrez la description de l'image ici


1
Je suis plus intéressé par la sémantique des API (pas seulement ou principalement par leur syntaxe ). Et oui, je voudrais analyser le code en utilisant cette API pour les choses que vous mentionnez (et bien plus). Il ne s'agit actuellement que d'une idée approximative (et je l'adapterai aux besoins), et j'essaie toujours de trouver des moyens (notamment des projets collaboratifs de R&D) pour le financer.
Basile Starynkevitch

BTW, l'exemple Qt montre qu'une API (et une bibliothèque) peut devenir importante - et peut-être dominante - même sans être une norme légale.
Basile Starynkevitch du

5

Les normes pour divers protocoles de mise en réseau sont déjà bien définies. Il semble que vous espériez trouver une API implémentant des comportements standard inhérents aux appareils IoT. Quelque chose comme une fonction Light () qui peut allumer, éteindre ou atténuer les lumières à une fraction de leur luminosité; DoorSensor () qui peut être armé ou désarmé, ou peut s'inscrire pour une alerte sur les événements d'ouverture ou de fermeture de porte; ce genre de chose. Cependant, je ne connais aucune bibliothèque d'API qui ne soit pas spécifique à l'application.

Si quelqu'un en a un, vous pourriez trouver quelque chose dans Domoticz . C'est un contrôleur domotique open source écrit en C ++.


5

En réponse rapide, je ne pense pas que pour l'IoT il existe un type spécial de bibliothèque, je dirais que l'IoT est fondamentalement les " nouveaux systèmes embarqués ", ils ont juste changé le nom et ajouté la connexion au cloud.

Donc, répondant à ce que j'utilise pour la programmation C ++, ma page de référence est http://www.cplusplus.com/

Fondamentalement, pour l'IoT, vous aurez besoin de bibliothèques de communication , quel que soit le protocole que vous utilisez (USB, TCP / IP, UDP, ZigBee, etc., etc.)

De plus, si vous avez une communication, vous avez besoin de sécurité / cryptage .

Et le reste dépendra de la partie du matériel que vous contrôlez ou mesurez. Vous aurez besoin des bibliothèques (API / Firmware) pour ce matériel .

Il y a sûrement beaucoup de choses qui me manquent ici ... voyons d'autres réponses


2
Donc, fondamentalement, vous confirmez mon intuition grossière que l'IoT n'est que le nouveau mot à la mode pour l'informatique embarquée, probablement les systèmes Linux embarqués?
Basile Starynkevitch

@BasileStarynkevitch Cela dépend de la classe d'appareil. Les trackers de fitness (par opposition aux extensions de téléphone montées) ne fonctionnent pas sous Linux. Les nœuds auto-alimentés n'exécutent pas Linux. Les nœuds concentrateurs, qui effectuent des calculs distribués) exécutent probablement Linux. D'où mon discours sur une pile s'étendant du bord au nuage.
Sean Houlihane

1
Ça va. Quelles sont donc les API ou bibliothèques couramment utilisées sur ces appareils.
Basile Starynkevitch

1
Étant donné que ZigBee ressemble à un protocole réseau, il est hors de portée. Cependant, une API couramment disponible en C ou C ++ implémentant ZigBee serait intéressante
Basile Starynkevitch

4

Embarqué, plus des communications sécurisées, plus l'approvisionnement (gestion des appareils) plus les mises à jour OTA. Il s'agit d'un gros progiciel et également en train de devenir un nouveau type de plate-forme pour le développement.

Il existe plusieurs fournisseurs offrant des solutions cloud, ils auront généralement leurs propres API client et les systèmes d'exploitation de point de terminaison choisis.

Pour autant que je sache, les différents protocoles sans fil ne dictent pas vraiment une pile logicielle particulière, donc votre choix doit être guidé par la vue d'ensemble, pas par les API clientes. Un facteur décisif peut être si l'open-source est important pour la pile de votre application.


1
Je ne développe pas d'applications IoT, mais je souhaite développer des outils d'analyse de code source statique au profit des développeurs de logiciels IoT.
Basile Starynkevitch

1
OK, donc il y a (deviner) 4 ou 5 piles différentes qui sont pertinentes et vous devez les considérer toutes si vous voulez suivre deux ou trois devenant dominants dans quelques années.
Sean Houlihane

1
À quelles API ou bibliothèques précises (en C ou C ++) pensez-vous? Veuillez les nommer dans votre réponse!
Basile Starynkevitch

1
s'il vous arrive de connaître une équipe travaillant sur de telles API, veuillez leur transmettre ma question et les indiquer gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch

3

Je pense que votre objectif est quelque peu similaire à BOOST:

Boostez les bibliothèques C ++

Ils visent à établir une "pratique existante" et à fournir des implémentations de référence afin que les bibliothèques Boost soient adaptées à une éventuelle normalisation.

Peut-être que Boost pourrait être un acteur majeur de l'IoT: il a certainement apporté de grandes améliorations au C ++.


1
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
anonyme2

2

IoTivity est l'implémentation de référence de la spécification OCF . Vous pouvez trouver la documentation et le code source dans leur référentiel GitHub .

De leur liste de fonctionnalités :

  • Fonctionnalité de base écrite en C pour le déploiement sur des appareils contraints
  • La plupart des fonctionnalités disponibles à partir de C et C ++

Leurs API Framework permettent la découverte, la transmission de données, la gestion des données (collecte, stockage et analyse) et la gestion des appareils (par exemple l'approvisionnement, les diagnostics) via divers protocoles tels que Bluetooth, Wi-Fi, ZigBee et Z-Wave.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.