APIs comuns em C ou C ++ para a IoT

9

Quais são as APIs (ou bibliotecas) comuns ou habituais em C ou C ++ para a IoT, no sentido de ter uma documentação, um conjunto de interfaces de programação? (Como por exemplo, POSIX é para sistemas operacionais, Qt é para GUI, etc ...).

Esta pequena página motiva minha pergunta (estou interessado em desenvolver ferramentas estáticas de análise de código-fonte para IoT). Não estou apenas procurando padrões legais, mas também APIs ou bibliotecas comumente usadas - em C ou C ++, com arquivos de cabeçalho existentes para eles - em vários domínios industriais. Não estou interessado em APIs da Web (convenções que definem algumas solicitações HTTP) ou apenas em protocolos de rede sem nenhuma API ou biblioteca implementando-as.

(portanto, não estou interessado em me desenvolver aplicativos de IoT, mas quero desenvolver ferramentas de engenharia de software trabalhando e analisando o código-fonte para ajudar os desenvolvedores de software de IoT)

Eu poderia até me interessar por APIs ou bibliotecas IoT específicas do setor, por exemplo, na área da saúde, logística, transporte, redes inteligentes, edifícios inteligentes, etc; desde que seja uma API ou biblioteca C ou C ++.


Estou em um grupo de pesquisa trabalhando na análise estática de código-fonte e gostaríamos de desenvolver ferramentas para analisar o código-fonte C ou C ++, para ajudar o desenvolvedor de software da IoT.

No entanto, preciso descobrir uma maneira de ser financiado antes de trabalhar nisso.

Sugerimos o desenvolvimento de uma ferramenta especializada (preferencialmente de código aberto, acima das tecnologias existentes), para desenvolvedores e engenheiros que escrevem código-fonte (em C, C ++ e Ada, se necessário ...) visando plataformas de IoT. Essa ferramenta será integrada ao kit de desenvolvimento de software direcionado. Essa ferramenta pode ajudar o desenvolvedor de software da IoT analisando e verificando a validade do código-fonte em relação às regras de codificação, invariantes e boas práticas específicas dessas estruturas de software. O principal objetivo é melhorar a qualidade do software e acelerar o tempo de colocação no mercado. Se relevante, a ferramenta pode executar otimizações de código-fonte específicas para aprimorar o desempenho do software e / ou diminuir o tamanho do código.


NB Esta página da Web do IoT Eclipse está listando vários padrões. Estou interessado nas APIs e bibliotecas que as implementam (e em qualquer outro padrão específico de domínio da IoT), se o desenvolvimento de analisadores de código-fonte para eles vale a pena.

Basile Starynkevitch
fonte
@ Basile Será comercial ou FOSS? De qualquer forma, existe alguma maneira de acompanharmos seu progresso. Sei que isso pode levar meses, ou até anos, para que uma UTL para assistir ou uma lista de discussão sejam muito bem
Mawg diz que restabelece Monica em
Eu estou trabalhando principalmente em software livre desde uma dúzia de anos, então espero que seja FOSS. No entanto, preciso ingressar em algum consórcio (ou obter algum subsídio de P&D ou qualquer outro financiamento) para começar a trabalhar nisso.
Basile Starynkevitch 22/02
11
Você quer dizer coisas como CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50
11
MQTT e Mosquitto é bastante popular quando se trata de IoT. Talvez a API Libmosquitto seja um bom alvo para o seu analisador de código?
Bence Kaulics
11
Existe algum aspecto da IoT em particular no qual você está interessado? Existe o lado da comunicação, como sugerido por Bence Kaulics (MQTT, CoAP, 6LoWPAN etc.) ou existem plataformas inteiras de IoT, como Android Things ou Ubuntu IoT . Qual parte você quer enfrentar?
Aurora0001

Respostas:

8

Basile, acho que estamos perdendo uma boa distinção aqui.

Quando você fala de um Posix como padrão para IoT, acho que você está falando de bibliotecas que envolvem um protocolo.

Como alguém que está empregado há ( tosse ) décadas implementando pilhas de protocolos para telefonia e comunicação via satélite, posso dizer (como você provavelmente sabe) que esses protocolos são, por necessidade, já estritamente definidos. Por exemplo, o Zigbee é governado por https://en.wikipedia.org/wiki/IEEE_802.15.4

Esses padrões estabelecem as mensagens a serem transmitidas e definem que byte 0 significa isso, bytes 1 a 4 significam isso, etc., para que dispositivos de fabricantes diferentes possam se comunicar (essa é a teoria de qualquer maneira; eu poderia dizer um pouco de horror) stories ;-)

Como eu disse, para qualquer protocolo, pode haver uma infinidade de manufaturas. E para qualquer fabricante, pode haver várias bibliotecas de software, que é o seu problema.

Sua tarefa é muito difícil, desde que haja vários APIS disponíveis, que envolvem cada protocolo.

Infelizmente, só haverá uma API semelhante ao Posix se uma empresa se tornar dominante. Pode haver uma pequena possibilidade de um grande governo gastar muito dinheiro com isso, mas não vejo isso acontecendo. A única outra chance que eu, como um esforço semelhante ao Linux, pela comunidade Open Source.


Aliás, não acho que você deixe claro o suficiente que você não será apenas mais um analisador de código estático, que não se destina ao código geral, mas a certas APIs específicas. Você diz isso, mais ou menos, IMO explicitamente. Quando você definir exatamente isso, você saberá qual é realmente o seu projeto. Se você já sabe, não parece enfatizar (mas talvez eu não esteja lendo bem o suficiente, entre duas reuniões).

A sintaxe das APIs do POSIX é policiada pelo compilador, assim como a sintaxe de qualquer API que você estuda. Então, acho que você está procurando um código potencialmente perigoso, como o uso de recursos unitizados, não liberando recursos alocados etc. - está correto?

Parece um ótimo projeto, e eu estrelou esta pergunta.


insira a descrição da imagem aqui

Mawg diz que restabelece Monica
fonte
11
Estou mais interessado na semântica das APIs (não apenas ou principalmente em sua sintaxe ). E sim, gostaria de analisar o código usando essa API para as coisas que você menciona (e muito mais). Atualmente, essa é apenas uma ideia aproximada (e vou adaptá-la às necessidades), e ainda estou tentando encontrar maneiras (principalmente projetos colaborativos de P&D) para financiar.
Basile Starynkevitch 22/02
BTW, o exemplo Qt mostra que uma API (e uma biblioteca) pode se tornar importante - e talvez dominante - mesmo sem ser um padrão legal.
Basile Starynkevitch 22/02
5

Os padrões para vários protocolos de rede já estão bem definidos. Parece que você espera encontrar uma API implementando comportamentos padrão inerentes aos dispositivos de IoT. Algo como uma função Light () que pode acender, apagar ou escurecer as luzes para uma fração do brilho; DoorSensor () que pode ser armado ou desarmado ou pode se registrar para receber um alerta sobre eventos de abertura ou fechamento de porta; esse tipo de coisas. No entanto, não conheço nenhuma biblioteca de API que não seja específica do aplicativo.

Se alguém tiver um, você pode encontrar algo no Domoticz . É um controlador de automação residencial de código aberto escrito em C ++.

John Deters
fonte
5

Como resposta rápida, não acho que para a IoT exista um tipo especial de biblioteca, eu diria que a IoT é basicamente os " novos sistemas incorporados ", eles apenas mudaram o nome e adicionaram a conexão à nuvem.

Então, respondendo ao que eu uso na programação C ++, minha página de referência é http://www.cplusplus.com/

Basicamente, para a IoT, você precisará de bibliotecas de comunicação , independentemente do protocolo usado (USB, TCP / IP, UDP, ZigBee, etc.)

Além disso, se você tiver comunicação, precisará de segurança / criptografia .

E o restante dependerá da parte do hardware que você está controlando ou medindo. Você precisará das bibliotecas (API / Firmware) para esse hardware .

Certamente há muitas coisas que estou perdendo aqui ... vamos ver outras respostas

Snake Sanders
fonte
2
Então, basicamente, você está confirmando minha intuição grosseira de que a IoT é apenas a nova palavra da moda para computação embarcada, provavelmente sistemas Linux embarcados?
Basile Starynkevitch 22/02
@BasileStarynkevitch Depende da classe do dispositivo. Rastreadores de fitness (ao contrário de assistir extensões de telefone montadas) não executam Linux. Nós auto-alimentados não executam Linux. Nós de hub, que executam saída distribuída) provavelmente executam o Linux. Daí a minha conversa sobre uma pilha que se estende da borda até a nuvem.
Sean Houlihane 22/02
11
Está bem. Então, quais são as APIs ou bibliotecas mais usadas nesses dispositivos.
Basile Starynkevitch 22/02
11
Como o ZigBee se parece com um protocolo de rede, ele está fora do escopo. No entanto, uma API comumente disponíveis em C ou C ++ implementar ZigBee seria interessante
Basile Starynkevitch
4

Comunicações integradas e seguras, além de provisionamento (gerenciamento de dispositivos) e atualizações OTA. Este é um grande pacote de software e também está emergindo como um novo tipo de plataforma para o desenvolvimento.

Existem vários provedores que oferecem soluções em nuvem, normalmente eles têm suas próprias APIs clientes e sistemas operacionais de terminais escolhidos.

Até onde eu sei, os vários protocolos sem fio realmente não ditam nenhuma pilha de software específica, portanto, sua escolha precisa ser orientada pelo cenário geral, não pelas APIs do cliente. Um fator decisivo pode ser se o código aberto é importante para a pilha no seu aplicativo.

Sean Houlihane
fonte
11
Não estou desenvolvendo aplicativos de IoT, mas quero desenvolver ferramentas de análise de código fonte estáticas para o benefício dos desenvolvedores de software de IoT.
Basile Starynkevitch 22/02
11
OK, então existem (adivinhando) 4 ou 5 pilhas diferentes que são relevantes e você precisa considerar todas elas se quiser seguir o que duas ou três se tornarem dominantes em alguns anos.
Sean Houlihane 22/02
11
Em quais APIs ou bibliotecas precisas (em C ou C ++) você está pensando? Por favor, nomeie-os na sua resposta!
Basile Starynkevitch 22/02
11
se acontecer de você conhecer alguns equipe que trabalha em tais APIs agradar a frente deles a minha pergunta e apontá-los gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch
3

Eu acho que seu objetivo é um pouco semelhante ao BOOST:

Impulsionar bibliotecas C ++

Eles visam estabelecer "práticas existentes" e fornecer implementações de referência para que as bibliotecas Boost sejam adequadas para eventual padronização.

Talvez o Boost possa ser um participante importante da IoT: certamente fez algumas grandes melhorias no C ++.

serup
fonte
11
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
anonymous2
2

IoTivity é a implementação de referência da OCF Specification . Você pode encontrar a documentação e o código-fonte no repositório do GitHub .

Na lista de recursos :

  • Funcionalidade principal escrita em C para implantação em dispositivos restritos
  • A maioria das funcionalidades disponíveis em C e C ++

Suas APIs Framework permitem a descoberta, transmissão de dados, gerenciamento de dados (coleta, armazenamento e análise) e gerenciamento de dispositivos (por exemplo, provisionamento, diagnóstico) em vários protocolos, como Bluetooth, Wi-Fi, ZigBee e Z-Wave.

thiagogcm
fonte