API comuni in C o C ++ per l'IoT


9

Quali sono le API (o le librerie) comuni o usuali in C o C ++ per l'IoT, nel senso di avere una documentazione, un insieme di interfacce di programmazione? (Come ad esempio POSIX è per i sistemi operativi, Qt è per la GUI, ecc ....).

Questa breve pagina motiva la mia domanda (sono interessato a sviluppare strumenti di analisi del codice sorgente statico per l'IoT). Non sto solo cercando standard legali, ma anche API o librerie di uso comune, in C o C ++, con file di intestazione esistenti per loro in vari domini industriali. Non mi interessano le API Web (convenzioni che definiscono alcune richieste HTTP) o semplicemente i protocolli di rete senza che nessuna API o libreria li implementi.

(quindi non sono interessato a sviluppare me stesso applicazioni IoT, ma voglio sviluppare strumenti di ingegneria del software che funzionino e analizzino il codice sorgente per aiutare gli sviluppatori di software IoT)

Potrei anche essere interessato da API o librerie IoT specifiche del settore, ad es. Sanità, logistica, trasporti, reti intelligenti, edifici intelligenti, ecc .; purché si tratti di un'API o libreria C o C ++.


Faccio parte di un gruppo di ricerca che lavora all'analisi statica del codice sorgente e vorremmo sviluppare strumenti che analizzino il codice sorgente C o C ++ per aiutare lo sviluppatore del software IoT.

Tuttavia, devo trovare un modo per essere finanziato prima di lavorare su questo.

Suggeriamo di sviluppare uno strumento specializzato (preferibilmente open source, al di sopra delle tecnologie esistenti), per sviluppatori e ingegneri che scrivono codice sorgente (in C, C ++ e Ada se necessario ...) per le piattaforme IoT. Questo strumento sarà integrato nel kit di sviluppo software mirato. Questo strumento potrebbe aiutare lo sviluppatore di software IoT analizzando e verificando la validità del codice sorgente rispetto a regole di codifica, invarianti e buone pratiche specifiche di questi framework software. L'obiettivo principale è migliorare la qualità del software e accelerare il time to market. Se pertinente, lo strumento potrebbe eseguire specifiche ottimizzazioni del codice sorgente per migliorare le prestazioni del software e / o per ridurne le dimensioni.


NB. Questa pagina web di IoT Eclipse elenca diversi standard. Sono interessato alle API e alle librerie che le implementano (e a qualsiasi altro standard specifico di dominio IoT di fatto), se vale la pena sviluppare analizzatori di codice sorgente per loro.


@Basile Sarà commerciale o FOSS? In ogni caso, esiste un modo per seguire i tuoi progressi. Mi rendo conto che potrebbero volerci mesi o addirittura anni, quindi un UTL da guardare o una mailing list sarebbe molto gradito
Mawg dice di ripristinare Monica il

Lavoro principalmente sul software libero da una dozzina di anni, quindi spero che sia FOSS. Tuttavia, ho bisogno di unirmi a un consorzio (o di ottenere una sovvenzione per la R&S o qualsiasi altro finanziamento) per iniziare a lavorare su questo.
Basile Starynkevitch il


1
MQTT e Mosquitto sono piuttosto popolari quando si tratta di IoT. Forse l' API di Libmosquitto è un buon obiettivo per il tuo analizzatore di codice?
Bence Kaulics,

1
C'è qualche aspetto dell'IoT in particolare che ti interessa? C'è il lato della comunicazione come suggerito da Bence Kaulics (MQTT, CoAP, 6LoWPAN ecc.) Oppure ci sono intere piattaforme IoT come Android Things o Ubuntu IoT . Quale parte vuoi affrontare?
Aurora0001

Risposte:


8

Basile, penso che qui ci manchi una bella distinzione.

Quando parli di Posix come standard per l'IoT, penso che stai parlando di librerie che avvolgono un protocollo.

Come uno che è stato impiegato per decenni ( tosse ) implementando stack di protocolli per la telefonia e la comunicazione satellitare, posso dire (come probabilmente sapete) che questi protocolli sono, per necessità, già definiti in modo rigoroso. Ad esempio, Zigbee è governato da https://en.wikipedia.org/wiki/IEEE_802.15.4

Questi standard stabiliscono i messaggi da trasmettere e definiscono che byte 0 significa questo, byte da 1 a 4 indicano che, ecc., In modo che dispositivi di produttori diversi possano comunicare tra loro (questa è la teoria, comunque; potrei dirti un po 'di orrore storie ;-)

Come ho detto, per ogni dato protocollo, ci possono essere molti produttori. E per un determinato produttore, possono esserci più librerie software, che è il tuo problema.

Il tuo compito è troppo difficile fintanto che sono disponibili più APIS, che avvolgono ciascun protocollo.

Purtroppo, ci sarà un'API simile a Posix solo se un'azienda diventa dominante. Potrebbe esserci una sottile possibilità se un grande governo ci lancia un sacco di soldi, ma non riesco a vederlo accadere. L'unica altra possibilità che io come sforzo simile a Linux da parte della comunità Open Source.


A proposito, non penso che tu chiarisca abbastanza chiaramente che non sarai solo un altro analizzatore di codice statico, che non è destinato al codice generale, ma a determinate API specifiche. Dici questo, in un certo senso, ma non abbastanza esplicitamente, IMO. Quando lo definirai esattamente, saprai qual è il tuo progetto. Se lo sai già, non sembra che tu lo enfatizzi (ma forse non sto leggendo abbastanza bene, mi sono precipitato tra due incontri).

La sintassi delle API POSIX è controllata dal compilatore, così come la sintassi di tutte le API che studi. Quindi suppongo che tu stia cercando un codice potenzialmente pericoloso, come l'uso di risorse unitizzate, non liberare risorse allocate, ecc. - È corretto?

Sembra un grande progetto, però, e ho recitato questa domanda.


inserisci qui la descrizione dell'immagine


1
Sono più interessato alla semantica delle API (non solo o principalmente alla loro sintassi ). E sì, vorrei analizzare il codice usando quell'API per le cose che menzioni (e molto altro). Questa è attualmente solo un'idea approssimativa (e la adatterò alle esigenze), e sto ancora cercando di trovare modi (in particolare progetti di R&S collaborativi) per ottenere finanziamenti.
Basile Starynkevitch,

A proposito, l'esempio di Qt mostra che un'API (e una libreria) può diventare importante - e forse dominante - anche senza essere uno standard legale.
Basile Starynkevitch,

5

Gli standard per vari protocolli di rete sono già ben definiti. Quello che sembra sperare di trovare è un'API che implementa comportamenti standard inerenti ai dispositivi IoT. Qualcosa come una funzione Light () che può accendere, spegnere o oscurare le luci a una frazione della loro luminosità; DoorSensor () che può essere inserito o disinserito o può registrarsi per un avviso sugli eventi di apertura o chiusura della porta; questo genere di cose. Tuttavia, non sono a conoscenza di alcuna libreria API che non sia specifica per l'applicazione.

Se qualcuno ne ha uno, potresti trovare qualcosa in Domoticz . È un controller di domotica open source scritto in C ++.


5

Come risposta rapida, non credo che per l'IoT esiste un tipo speciale di libreria, direi che l'IoT è fondamentalmente i " nuovi sistemi integrati ", hanno appena cambiato il nome e aggiunto la connessione al cloud.

Quindi, rispondendo a ciò che uso per la programmazione C ++, la mia pagina di riferimento è http://www.cplusplus.com/

Fondamentalmente per l'IoT avrai bisogno di librerie di comunicazione , qualunque protocollo tu usi (USB, TCP / IP, UDP, ZigBee, ecc, ecc.)

Inoltre, se si dispone di comunicazione, è necessario disporre di sicurezza / crittografia .

E il resto dipenderà dalla parte dell'hardware che stai controllando o misurando. Per tale hardware sono necessarie le librerie (API / Firmware) .

Sicuramente ci sono molte cose che mi mancano qui ... vediamo altre risposte


2
Quindi, fondamentalmente, stai confermando la mia grossolana intuizione che l'IoT sia solo la nuova parola d'ordine per il computing embedded, probabilmente i sistemi Linux embedded?
Basile Starynkevitch il

@BasileStarynkevitch Dipende dalla classe del dispositivo. I fitness tracker (invece di guardare gli interni dei telefoni montati) non eseguono Linux. I nodi autoalimentati non eseguono Linux. I nodi hub, che eseguono distribuzioni distribuite, probabilmente eseguono Linux. Da qui il mio parlare di uno stack che si estende dal bordo alla nuvola.
Sean Houlihane,

1
Va bene. Quindi quali sono le API o le librerie comunemente utilizzate su questi dispositivi.
Basile Starynkevitch il

1
Poiché ZigBee sembra un protocollo di rete, non rientra nell'ambito di applicazione. Tuttavia, un'API comunemente disponibile in C o C ++ che implementa ZigBee sarebbe interessante
Basile Starynkevitch,

4

Incorporato, oltre a comunicazioni sicure, oltre a provisioning (gestione dei dispositivi) più aggiornamenti OTA. Questo è un grande pacchetto software e sta emergendo anche come un nuovo tipo di piattaforma per lo sviluppo.

Esistono diversi provider che offrono soluzioni cloud, in genere avranno le proprie API client e i sistemi operativi endpoint scelti.

Per quanto ne so, i vari protocolli wireless non dettano davvero alcun particolare stack software, quindi la tua scelta deve essere guidata dal quadro generale, non dalle API client. Un fattore decisivo potrebbe essere se l'open source è importante per lo stack nell'applicazione.


1
Non sto sviluppando applicazioni IoT, ma voglio sviluppare strumenti statici di analisi del codice sorgente a beneficio degli sviluppatori di software IoT.
Basile Starynkevitch il

1
OK, quindi ci sono (indovinando) 4 o 5 stack diversi che sono rilevanti e devi considerarli tutti se vuoi seguire quello che due o tre diventano dominanti in pochi anni.
Sean Houlihane,

1
A quali API o librerie precise (in C o C ++) stai pensando? Per favore, nominali nella tua risposta!
Basile Starynkevitch il

1
se ti capita di conoscere un team che lavora su tali API, inoltra la mia domanda e indicale gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch

3

Penso che il tuo obiettivo sia in qualche modo simile a BOOST:

Potenzia le librerie C ++

Mirano a stabilire "pratiche esistenti" e fornire implementazioni di riferimento in modo che le librerie Boost siano adatte per l'eventuale standardizzazione.

Forse Boost potrebbe essere un attore importante nell'IoT: ha sicuramente apportato notevoli miglioramenti al C ++.


1
I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
anonymous2

2

IoTivity è l'implementazione di riferimento della specifica OCF . Puoi trovare documentazione e codice sorgente nel loro repository GitHub .

Dal loro elenco di funzionalità :

  • Funzionalità di base scritte in C per la distribuzione su dispositivi vincolati
  • La maggior parte delle funzionalità disponibili da C e C ++

Le loro API Framework consentono il rilevamento, la trasmissione dei dati, la gestione dei dati (raccolta, archiviazione e analisi) e la gestione dei dispositivi (ad esempio provisioning, diagnostica) su vari protocolli come Bluetooth, Wi-Fi, ZigBee e Z-Wave.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.