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.
fonte
Respostas:
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.
fonte
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 ++.
fonte
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
fonte
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.
fonte
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 ++.
fonte
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 :
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.
fonte