API comunes en C o C ++ para IoT


9

¿Cuáles son las API (o bibliotecas) comunes o habituales en C o C ++ para IoT, en el sentido de tener una documentación, un conjunto de interfaces de programación? (Al igual que, por ejemplo, POSIX es para sistemas operativos, Qt es para GUI, etc.).

Esta breve página motiva mi pregunta (estoy interesado en desarrollar herramientas de análisis de código fuente estático para IoT). No solo busco estándares legales, sino también API o bibliotecas de uso común, en C o C ++, con archivos de encabezado existentes para ellos, en varios dominios industriales. No me interesan las API web (convenciones que definen algunas solicitudes HTTP) o solo los protocolos de red sin ninguna API o biblioteca que los implemente.

(Por lo tanto, no estoy interesado en desarrollar aplicaciones de IoT, pero quiero desarrollar herramientas de ingeniería de software que funcionen y analicen el código fuente para ayudar a los desarrolladores de software de IoT)

Incluso podría estar interesado en las API o bibliotecas de IoT específicas de la industria, por ejemplo, en atención médica, logística, transporte, redes inteligentes, edificios inteligentes, etc. siempre y cuando sea una API o biblioteca C o C ++.


Estoy en un grupo de investigación trabajando en análisis de código fuente estático, y nos gustaría desarrollar herramientas que analicen el código fuente C o C ++, para ayudar al desarrollador de software IoT.

Sin embargo, necesito encontrar una manera de recibir fondos antes de trabajar en esto.

Sugerimos desarrollar una herramienta especializada (preferiblemente de código abierto, por encima de las tecnologías existentes), para desarrolladores e ingenieros que escriban código fuente (en C, C ++ y Ada si es necesario ...) dirigido a plataformas IoT. Esta herramienta se integrará en el kit de desarrollo de software específico. Esta herramienta podría ayudar al desarrollador de software de IoT analizando y verificando la validez del código fuente contra las reglas de codificación, invariantes y buenas prácticas específicas de estos marcos de software. El objetivo principal es mejorar la calidad del software y acelerar el tiempo de comercialización. Si es relevante, la herramienta podría realizar optimizaciones de código fuente específicas para mejorar el rendimiento del software y / o disminuir el tamaño del código.


NÓTESE BIEN. Esta página web de IoT Eclipse enumera varios estándares. Estoy interesado en que las API y las bibliotecas los implementen (y cualquier otro estándar específico de dominio de facto de IoT), si vale la pena desarrollar analizadores de código fuente para ellos.


@Basile ¿Será esto comercial o FOSS? En cualquier caso, ¿hay alguna manera de que podamos seguir su progreso? Soy consciente de que podría tomar meses o incluso años, por lo que una UTL para ver una lista de correo o sería muy bienvenido
MAWG dice Restablecer Mónica

Estoy trabajando principalmente en software libre desde hace una docena de años, así que espero que sea FOSS. Sin embargo, necesito unirme a algún consorcio (u obtener alguna subvención de I + D, o cualquier otro financiamiento) para comenzar a trabajar en esto.
Basile Starynkevitch

1
¿Te refieres a cosas como CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTT y Mosquitto son bastante populares cuando se trata de IoT. ¿Quizás la API de Libmosquitto es un buen objetivo para su analizador de código?
Bence Kaulics

1
¿Hay algún aspecto de IoT en particular que le interese? Existe el lado de la comunicación como sugirió Bence Kaulics (MQTT, CoAP, 6LoWPAN, etc.) o hay plataformas IoT completas como Android Things o Ubuntu IoT . ¿Qué parte quieres abordar?
Aurora0001

Respuestas:


8

Basile, creo que nos falta una buena distinción aquí.

Cuando habla de un Posix como estándar para IoT, creo que está hablando de bibliotecas que envuelven un protocolo.

Como alguien que ha estado empleado durante ( tos ) implementando pilas de protocolos para telefonía y comunicación satelital, puedo decir (como probablemente ya sabe) que estos protocolos están, por necesidad, ya estrictamente definidos. Por ejemplo, Zigbee se rige por https://en.wikipedia.org/wiki/IEEE_802.15.4

Estos estándares establecen los mensajes que se transmitirán y definen que el byte 0 significa esto, los bytes 1 a 4 significan eso, etc., para que los dispositivos de fabricantes dispares puedan comunicarse entre sí (esa es la teoría, de todos modos; podría decirles algo de horror cuentos ;-)

Como dije, para cualquier protocolo dado, puede haber una gran cantidad de fabricantes. Y para cualquier fabricante, puede haber múltiples bibliotecas de software, que es su problema.

Su tarea es demasiado difícil siempre que haya múltiples APIS disponibles, que envuelven cada protocolo.

Lamentablemente, solo habrá una API similar a Posix solo si una empresa se vuelve dominante. Puede haber una pequeña posibilidad si un gobierno importante le arroja mucho dinero, pero no puedo ver que eso suceda. La única otra oportunidad que tengo es un esfuerzo similar a Linux por parte de la comunidad de código abierto.


Por cierto, no creo que deje en claro que su no será solo otro analizador de código estático, que no está destinado a código general, sino a ciertas API específicas. Usted dice eso, más o menos, pero no lo suficientemente explícitamente, IMO. Cuando defina eso exactamente, sabrá cuál es realmente su proyecto. Si ya lo sabe, no parece enfatizarlo (pero tal vez no estoy leyendo lo suficiente, me apresuré entre dos reuniones).

La sintaxis de las API POSIX es controlada por el compilador, como será la sintaxis de cualquier API que estudie. Entonces, supongo que está buscando un código potencialmente peligroso, como el uso de recursos unitarios, no liberar recursos asignados, etc., ¿es correcto?

Sin embargo, suena como un gran proyecto, y he destacado esta pregunta.


ingrese la descripción de la imagen aquí


1
Estoy más interesado en la semántica de las API (no solo o principalmente de su sintaxis ). Y sí, me gustaría analizar el código usando esa API para las cosas que mencionas (y mucho más). Actualmente, esta es solo una idea aproximada (y la adaptaré a las necesidades), y todavía estoy tratando de encontrar formas (especialmente proyectos de I + D colaborativos) para obtener financiación.
Basile Starynkevitch

Por cierto, el ejemplo de Qt muestra que una API (y una biblioteca) pueden volverse importantes, y tal vez dominantes, incluso sin ser un estándar legal.
Basile Starynkevitch

5

Los estándares para varios protocolos de red ya están bien definidos. Parece que espera encontrar una API que implemente comportamientos estándar inherentes a los dispositivos IoT. Algo así como una función Light () que puede encender, apagar o atenuar las luces a una fracción de su brillo; DoorSensor () que puede ser armado o desarmado, o puede registrarse para una alerta en eventos de puerta abierta o cerrada; esa clase de cosas. Sin embargo, no conozco ninguna biblioteca API que no sea específica de la aplicación.

Si alguien tiene uno, puede encontrar algo en Domoticz . Es un controlador de automatización del hogar de código abierto escrito en C ++.


5

Como respuesta rápida, no creo que para IoT haya un tipo especial de biblioteca, diría que IoT es básicamente los " nuevos sistemas integrados ", simplemente cambiaron el nombre y agregaron la conexión a la nube.

Entonces, respondiendo a lo que uso para la programación en C ++, mi página de referencia es http://www.cplusplus.com/

Básicamente para IoT necesitará bibliotecas de comunicación , cualquiera que sea el protocolo que use (USB, TCP / IP, UDP, ZigBee, etc., etc.)

Además, si tiene comunicación, entonces necesita seguridad / encriptación .

Y el resto dependerá de qué parte del hardware esté controlando o midiendo. Necesitará las bibliotecas (API / Firmware) para dicho hardware .

Seguramente hay muchas cosas que me estoy perdiendo aquí ... veamos otras respuestas


2
Básicamente, ¿estás confirmando mi intuición grosera de que IoT es solo la nueva palabra de moda para la informática integrada, probablemente los sistemas Linux integrados?
Basile Starynkevitch

@BasileStarynkevitch Depende de la clase de dispositivo. Los rastreadores de actividad física (a diferencia de las extensiones de teléfono montadas en relojes) no ejecutan Linux. Los nodos autoalimentados no ejecutan Linux. Los nodos concentradores, que realizan sompute distribuido) probablemente ejecutan Linux. De ahí que hable de una pila que se extiende desde el borde hasta la nube.
Sean Houlihane

1
Es correcto. Entonces, ¿cuáles son las API o bibliotecas de uso común en estos dispositivos?
Basile Starynkevitch

1
Dado que ZigBee parece un protocolo de red, está fuera de alcance. Sin embargo, una API comúnmente disponible en C o C ++ implementando ZigBee sería interesante
Basile Starynkevitch

4

Integrado, más comunicaciones seguras, más aprovisionamiento (gestión de dispositivos) más actualizaciones OTA. Este es un gran paquete de software y también está emergiendo como un nuevo tipo de plataforma para desarrollar.

Hay varios proveedores que ofrecen soluciones en la nube, por lo general tendrán sus propias API de cliente y sistemas operativos de punto final seleccionados.

Por lo que puedo decir, los diversos protocolos inalámbricos realmente no dictan ninguna pila de software en particular, por lo que su elección debe ser impulsada por el panorama general, no por las API del cliente. Un factor decisivo puede ser si el código abierto es importante para la pila en su aplicación.


1
No estoy desarrollando aplicaciones IoT, pero quiero desarrollar herramientas de análisis de código fuente estático para el beneficio de los desarrolladores de software IoT.
Basile Starynkevitch

1
De acuerdo, entonces hay (adivinar) 4 o 5 pilas diferentes que son relevantes y debes considerarlas todas si quieres seguir a cualquiera de los dos o tres que se vuelvan dominantes en unos pocos años.
Sean Houlihane

1
¿En qué API o bibliotecas precisas (en C o C ++) estás pensando? ¡Por favor nómbrelos en su respuesta!
Basile Starynkevitch

1
si conoce algún equipo que trabaje en tales API, reenvíe mi pregunta y apúntelos gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch

3

Creo que tu objetivo es algo similar a BOOST:

Impulsar las bibliotecas de C ++

Su objetivo es establecer la "práctica existente" y proporcionar implementaciones de referencia para que las bibliotecas de Boost sean adecuadas para una eventual estandarización.

Quizás Boost podría ser un jugador importante en IoT: ciertamente ha hecho algunas grandes mejoras en C ++.


1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
anónimo2

2

IoTivity es la implementación de referencia de la especificación OCF . Puede encontrar documentación y código fuente en su repositorio de GitHub .

De su lista de características :

  • Funcionalidad central escrita en C para implementación en dispositivos restringidos
  • La mayoría de las funciones disponibles de C y C ++

Sus API Framework permiten el descubrimiento, la transmisión de datos, la gestión de datos (recopilación, almacenamiento y análisis) y la gestión de dispositivos (por ejemplo, aprovisionamiento, diagnóstico) a través de varios protocolos como Bluetooth, Wi-Fi, ZigBee y Z-Wave.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.