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.
la source
Réponses:
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.
la source
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 ++.
la source
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
la source
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.
la source
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 ++.
la source
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 :
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.
la source