¿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.
fuente
Respuestas:
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.
fuente
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 ++.
fuente
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
fuente
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.
fuente
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 ++.
fuente
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 :
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.
fuente