API umum dalam C atau C ++ untuk IOT

9

Apa API (atau pustaka) yang umum atau biasa dalam C atau C ++ untuk IoT, dalam arti memiliki dokumentasi, satu set antarmuka pemrograman? (Seperti misalnya POSIX untuk sistem operasi, Qt untuk GUI, dll ....).

Halaman singkat ini memotivasi pertanyaan saya (saya tertarik mengembangkan alat analisis kode sumber statis untuk IOT). Saya tidak hanya mencari standar hukum, tetapi juga untuk API atau perpustakaan yang umum digunakan - di C atau C ++, dengan file header yang ada - di berbagai domain industri. Saya tidak tertarik dengan API Web (konvensi yang mendefinisikan beberapa permintaan HTTP) atau hanya dalam protokol jaringan tanpa API atau pustaka yang mengimplementasikannya.

(jadi saya tidak tertarik untuk mengembangkan sendiri aplikasi IoT, tetapi saya ingin mengembangkan alat rekayasa perangkat lunak yang berfungsi & menganalisis kode sumber untuk membantu pengembang perangkat lunak IoT)

Saya bahkan bisa tertarik oleh API atau perpustakaan IoT khusus industri, misalnya dalam bidang kesehatan, logistik, transportasi, smart grid, smart building, dll; selama itu adalah C atau C ++ API atau pustaka.


Saya berada dalam kelompok penelitian yang mengerjakan analisis kode sumber statis, dan kami ingin mengembangkan alat yang menganalisis kode sumber C atau C ++, untuk membantu pengembang perangkat lunak IoT.

Namun, saya perlu mencari cara untuk didanai sebelum mengerjakan ini.

Kami menyarankan untuk mengembangkan alat khusus (lebih disukai open source, di atas teknologi yang ada), untuk pengembang & insinyur menulis kode sumber (dalam C, C ++, dan Ada jika diperlukan ...) yang menargetkan platform IoT. Alat ini akan diintegrasikan dalam kit pengembangan perangkat lunak yang ditargetkan. Alat ini dapat membantu pengembang perangkat lunak IoT dengan menganalisis dan memeriksa validitas kode sumber terhadap aturan pengkodean, invarian, dan praktik baik yang spesifik untuk kerangka kerja perangkat lunak ini. Tujuan utamanya adalah untuk meningkatkan kualitas perangkat lunak dan mempercepat waktu ke pasar. Jika relevan, alat dapat melakukan optimasi kode sumber tertentu untuk meningkatkan kinerja perangkat lunak dan / atau untuk mengurangi ukuran kode.


NB. Ini IOT Eclipse halaman web adalah daftar beberapa standar. Saya tertarik dengan API & perpustakaan yang mengimplementasikannya (dan standar spesifik domain de facto IoT lainnya), jika mengembangkan alat analisis kode sumber untuk mereka bermanfaat.

Basile Starynkevitch
sumber
@Basile Apakah ini bersifat komersial atau FOSS? Bagaimanapun, apakah ada cara agar kami dapat mengikuti kemajuan Anda. Saya menyadari bahwa mungkin butuh berbulan-bulan, atau bahkan bertahun-tahun, sehingga UTL untuk menonton atau milis akan sangat disambut baik
Mawg mengatakan mengembalikan Monica
Saya kebanyakan bekerja pada perangkat lunak bebas sejak belasan tahun, jadi saya harap ini FOSS. Namun, saya perlu bergabung dengan beberapa konsorsium (atau untuk mendapatkan dana R&D, atau pendanaan lain) untuk mulai mengerjakan ini.
Basile Starynkevitch
1
Apakah maksud Anda hal-hal seperti CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50
1
MQTT dan Mosquitto cukup populer dalam hal IoT. Mungkin API Libmosquitto adalah target yang baik untuk penganalisa kode Anda?
Bence Kaulics
1
Apakah ada aspek IOT khususnya yang Anda minati? Ada sisi komunikasi seperti yang disarankan Bence Kaulics (MQTT, CoAP, 6LoWPAN dll) atau ada seluruh platform IoT seperti Android Things atau Ubuntu IoT . Bagian mana yang ingin Anda atasi?
Aurora0001

Jawaban:

8

Basile, saya pikir kita kehilangan perbedaan yang bagus di sini.

Ketika Anda berbicara tentang standar seperti Posix untuk IOT, saya pikir Anda berbicara tentang perpustakaan yang membungkus sebuah protokol.

Sebagai orang yang telah dipekerjakan selama puluhan tahun ( batuk ) menerapkan tumpukan protokol untuk komunikasi telepon dan satelit, saya dapat mengatakan (karena Anda mungkin sadar) bahwa protokol-protokol ini, oleh kebutuhan, sudah didefinisikan secara ketat. Misalnya, Zigbee diatur oleh https://en.wikipedia.org/wiki/IEEE_802.15.4

Standar-standar ini meletakkan pesan yang akan dikirim dan menentukan bahwa byte 0 berarti ini, byte 1 hingga 4 berarti, dll, sehingga perangkat dari pabrik yang berbeda dapat berkomunikasi satu sama lain (begitulah teorinya, toh, saya bisa memberi tahu Anda sedikit horor cerita ;-)

Seperti yang saya katakan, untuk protokol yang diberikan, mungkin ada sejumlah besar manufaktur. Dan untuk produsen mana pun, mungkin ada beberapa pustaka perangkat lunak, yang merupakan masalah Anda.

Tugas Anda terlalu sulit selama ada beberapa APIS yang tersedia, yang membungkus setiap protokol.

Sayangnya, hanya akan ada API seperti Posix hanya jika satu perusahaan menjadi dominan. Mungkin ada kemungkinan tipis jika pemerintah besar melempar banyak uang padanya, tetapi saya tidak bisa melihat itu terjadi. Satu-satunya kesempatan saya sebagai upaya seperti Linux oleh komunitas Open Source.


Btw, saya tidak berpikir bahwa Anda membuatnya cukup jelas bahwa Anda tidak akan hanya menjadi penganalisa kode statis, bahwa itu tidak dimaksudkan untuk kode umum, tetapi untuk API spesifik tertentu. Anda memang mengatakan itu, semacam, tapi tidak cukup eksplisit, IMO. Ketika Anda mendefinisikan itu dengan tepat, Anda akan tahu apa proyek Anda sebenarnya. Jika Anda sudah tahu, Anda sepertinya tidak menekankan hal itu (tapi mungkin saya kurang membaca, bergegas di antara dua pertemuan).

Sintaks API POSIX diatur oleh kompiler, seperti halnya sintaksis API apa pun yang Anda pelajari. Jadi saya kira Anda mencari kode yang berpotensi berbahaya, seperti penggunaan sumber daya unitiatlisasi, tidak membebaskan sumber daya yang dialokasikan, dll - apakah itu benar?

Kedengarannya seperti proyek yang hebat, dan saya telah membintangi pertanyaan ini.


masukkan deskripsi gambar di sini

Mawg berkata mengembalikan Monica
sumber
1
Saya lebih tertarik pada semantik API (tidak hanya atau sebagian besar sintaksnya ). Dan ya, saya ingin menganalisis kode menggunakan API untuk hal-hal yang Anda sebutkan (dan banyak lagi). Ini saat ini hanya ide kasar (dan saya akan menyesuaikannya dengan kebutuhan), dan saya masih berusaha mencari cara (terutama proyek-proyek R&D yang kolaboratif) untuk mendapatkannya didanai.
Basile Starynkevitch
BTW, contoh Qt menunjukkan bahwa API (dan perpustakaan) dapat menjadi penting - dan mungkin dominan - bahkan tanpa standar hukum.
Basile Starynkevitch
5

Standar untuk berbagai protokol jaringan sudah didefinisikan dengan baik. Kedengarannya Anda berharap menemukan adalah API yang menerapkan perilaku standar yang melekat pada perangkat IoT. Sesuatu seperti fungsi Light () yang dapat menyalakan, mematikan, atau meredupkannya ke sebagian kecil dari kecerahannya; DoorSensor () yang dapat dipersenjatai atau dilucuti, atau dapat mendaftar untuk peringatan di acara buka pintu atau tutup pintu; hal semacam itu. Namun, saya tidak mengetahui adanya pustaka API yang tidak spesifik untuk aplikasi.

Jika ada yang punya, Anda mungkin menemukan sesuatu di Domoticz . Ini adalah pengontrol otomatisasi rumah open source yang ditulis dalam C ++.

John Deters
sumber
5

Sebagai tanggapan cepat, saya tidak berpikir bahwa untuk IoT ada jenis perpustakaan khusus, saya akan mengatakan bahwa IoT pada dasarnya adalah " sistem embedded baru ", mereka hanya mengubah nama dan menambahkan koneksi ke cloud.

Jadi menjawab apa yang saya gunakan untuk pemrograman C ++, halaman referensi saya adalah http://www.cplusplus.com/

Pada dasarnya untuk IoT Anda akan membutuhkan pustaka komunikasi , protokol apa pun yang Anda gunakan (USB, TCP / IP, UDP, ZigBee, dll., Dll.)

Selain itu, jika Anda memiliki komunikasi maka Anda memerlukan keamanan / enkripsi .

Dan sisanya akan tergantung pada bagian perangkat keras apa yang Anda kontrol atau ukur. Anda akan memerlukan perpustakaan (API / Firmware) untuk perangkat keras tersebut .

Tentunya ada banyak hal yang saya lewatkan di sini ... mari kita lihat jawaban orang lain

Snake Sanders
sumber
2
Jadi pada dasarnya, Anda mengkonfirmasikan intuisi kotor saya bahwa IoT hanyalah kata kunci baru untuk komputasi tertanam, mungkin tertanam sistem Linux?
Basile Starynkevitch
@ BasileStarynkevitch Tergantung pada kelas perangkat. Pelacak kebugaran (tidak seperti menonton ekstensi telepon yang dipasang) tidak menjalankan Linux. Node berdaya mandiri tidak menjalankan Linux. Hub node, yang melakukan sompute terdistribusi) mungkin menjalankan Linux. Oleh karena itu pembicaraan saya tentang tumpukan memanjang dari tepi ke awan.
Sean Houlihane
1
Itu tidak apa-apa. Jadi apa saja API atau pustaka yang umum digunakan pada perangkat ini.
Basile Starynkevitch
1
Karena ZigBee terlihat seperti protokol jaringan, itu di luar jangkauan. Namun, API yang tersedia secara umum dalam C atau C ++ yang mengimplementasikan ZigBee akan menarik
Basile Starynkevitch
4

Tertanam, ditambah komunikasi aman, plus penyediaan (manajemen perangkat) plus pembaruan OTA. Ini adalah paket perangkat lunak besar dan juga muncul sebagai jenis platform baru untuk dikembangkan.

Ada beberapa penyedia yang menawarkan solusi cloud, mereka biasanya akan memiliki API klien mereka sendiri dan sistem operasi endpoint yang dipilih.

Sejauh yang saya tahu, berbagai protokol nirkabel tidak benar-benar menentukan tumpukan perangkat lunak tertentu, jadi pilihan Anda perlu didorong oleh gambaran besar, bukan API klien. Salah satu faktor penentu mungkin jika open-source penting untuk stack dalam aplikasi Anda.

Sean Houlihane
sumber
1
Saya tidak mengembangkan aplikasi IoT, tetapi saya ingin mengembangkan alat analisis kode sumber statis untuk kepentingan pengembang perangkat lunak IoT.
Basile Starynkevitch
1
OK, jadi ada (menebak) 4 atau 5 tumpukan berbeda yang relevan dan Anda perlu mempertimbangkan semuanya jika Anda ingin mengikuti yang mana dua atau tiga menjadi dominan dalam beberapa tahun mendatang.
Sean Houlihane
1
Apa API atau pustaka yang tepat (dalam C atau C ++) yang Anda pikirkan? Silakan sebutkan di jawaban Anda!
Basile Starynkevitch
1
jika Anda mengetahui ada tim yang bekerja dengan API semacam itu, silakan sampaikan
Basile Starynkevitch
3

Saya pikir tujuan Anda agak mirip dengan BOOST:

Tingkatkan C ++ Library

Mereka bertujuan untuk membangun "praktik yang ada" dan memberikan implementasi referensi sehingga Meningkatkan perpustakaan sesuai untuk standarisasi akhirnya.

Mungkin Boost bisa menjadi pemain utama dalam IoT: itu pasti telah membuat beberapa peningkatan besar pada C ++.

serup
sumber
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
anonim2
2

IoTivity adalah implementasi referensi dari Spesifikasi OCF . Anda dapat menemukan dokumentasi dan kode sumber di repositori GitHub mereka .

Dari daftar fitur mereka :

  • Fungsionalitas inti yang ditulis dalam C untuk penempatan ke perangkat yang dibatasi
  • Sebagian besar fungsionalitas tersedia dari C dan C ++

Kerangka API mereka memungkinkan penemuan, transmisi data, manajemen data (pengumpulan, penyimpanan dan analisis) dan manajemen perangkat (misalnya penyediaan, diagnostik) melalui berbagai protokol seperti Bluetooth, Wi-Fi, ZigBee dan Z-Wave.

thiagogcm
sumber