Общие API в C или C ++ для IoT

9

Каковы общие или обычные API (или библиотеки) в C или C ++ для IoT, в смысле наличия документации, набора интерфейсов программирования? (Как, например, POSIX для операционных систем, Qt для графического интерфейса и т. Д.).

Эта короткая страница мотивирует мой вопрос (я заинтересован в разработке инструментов статического анализа исходного кода для IoT). Я ищу не только юридические стандарты, но также и часто используемые API или библиотеки - на C или C ++ с существующими для них заголовочными файлами - в различных промышленных областях. Меня не интересуют веб-API (соглашения, определяющие некоторые HTTP-запросы) или просто сетевые протоколы без какого-либо API или библиотеки, реализующей их.

(поэтому я не заинтересован в разработке самих приложений IoT, но я хочу разработать инструменты разработки программного обеспечения, работающие и анализирующие исходный код, чтобы помочь разработчикам программного обеспечения IoT)

Меня могут даже заинтересовать отраслевые IoT API или библиотеки, например, в сфере здравоохранения, логистики, транспорта, интеллектуальных сетей, интеллектуальных зданий и т. Д .; до тех пор, пока это C или C ++ API или библиотека.


Я работаю в исследовательской группе, занимающейся статическим анализом исходного кода, и мы хотели бы разработать инструменты для анализа исходного кода на C или C ++, чтобы помочь разработчику программного обеспечения IoT.

Тем не менее, мне нужно выяснить способ финансирования, прежде чем работать над этим.

Мы предлагаем разработать специализированный инструмент (предпочтительно с открытым исходным кодом, поверх существующих технологий) для разработчиков и инженеров, пишущих исходный код (на языках C, C ++ и Ada, если необходимо ...) для платформ IoT. Этот инструмент будет интегрирован в целевой комплект разработки программного обеспечения. Этот инструмент может помочь разработчику программного обеспечения IoT, анализируя и проверяя достоверность исходного кода на соответствие правилам кодирования, инвариантам и передовым практикам, характерным для этих программных платформ. Основная цель - повысить качество программного обеспечения и ускорить выход на рынок. Если это уместно, инструмент может выполнять определенные оптимизации исходного кода для повышения производительности программного обеспечения и / или для уменьшения размера кода.


NB. На этой веб-странице IoT Eclipse перечислены несколько стандартов. Меня интересуют API и библиотеки, реализующие их (и любой другой де-факто предметный стандарт IoT), если стоит разработать для них анализаторы исходного кода.

Василий Старынкевич
источник
@Basile Это будет коммерческим или FOSS? В любом случае, есть ли способ, которым мы можем следить за вашим прогрессом. Я понимаю, что это может занять месяцы или даже годы, так что UTL для просмотра или список рассылки будет очень кстати
Mawg говорит восстановить Monica
Я в основном работаю над свободным программным обеспечением с десяток лет, поэтому я надеюсь, что это будет FOSS. Однако мне нужно присоединиться к какому-то консорциуму (или получить грант на НИОКР или любое другое финансирование), чтобы начать работать над этим.
Старынкевич
1
Вы имеете в виду такие вещи, как CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50
1
MQTT и Mosquitto довольно популярны, когда дело доходит до IoT. Может быть, Libmosquitto API - хорошая цель для вашего анализатора кода?
Бенс Кауликс
1
Есть ли какой-то аспект IoT, который вас особенно интересует? Есть сторона коммуникации, как предложил Бенс Кауликс (MQTT, CoAP, 6LoWPAN и т. Д.), Или есть целые платформы IoT, такие как Android Things или Ubuntu IoT . Какую часть вы хотите решить?
Aurora0001

Ответы:

8

Василий, я думаю, что нам не хватает здесь тонкого различия.

Когда вы говорите о Posix-подобном стандарте для IoT, я думаю, что вы говорите о библиотеках, которые обертывают протокол.

Как человек, который десятилетиями трудился ( кашлял ), внедряя стеки протоколов для телефонии и спутниковой связи, я могу сказать (как вы, наверное, знаете), что эти протоколы по необходимости уже строго определены. Например, Zigbee управляется https://en.wikipedia.org/wiki/IEEE_802.15.4

Эти стандарты устанавливают сообщения, подлежащие передаче, и определяют, что байты 0 означают это, байты с 1 по 4 означают, что и т. Д., Чтобы устройства от разрозненных производителей могли общаться друг с другом (это теория, во всяком случае; я мог бы сказать вам некоторый ужас рассказы ;-)

Как я уже сказал, для любого данного протокола может быть множество производителей. И для любого конкретного производителя может быть несколько программных библиотек, что является вашей проблемой.

Ваша задача слишком сложна, если доступно несколько APIS, которые обертывают каждый протокол.

К сожалению, Posix-подобный API будет существовать только в том случае, если одна компания станет доминирующей. Возможно, маловероятно, что крупное правительство тратит на это много денег, но я не вижу, чтобы это произошло. Единственный другой шанс, который я, как Linux-усилия сообщества Open Source.


Кстати, я не думаю, что вы достаточно ясно даете понять, что вы будете не просто еще одним статическим анализатором кода, что он предназначен не для общего кода, а для определенных конкретных API. Вы говорите, что вроде как, но не достаточно явно, IMO. Когда вы определите это точно, вы будете знать, что на самом деле ваш проект. Если вы уже знаете, вы, кажется, не подчеркиваете это (но, возможно, я недостаточно хорошо читаю, тороплюсь между двумя встречами).

Синтаксис API POSIX контролируется компилятором, как и синтаксис любых API, которые вы изучаете. Поэтому я предполагаю, что вы ищете потенциально опасный код, такой как использование унифицированных ресурсов, а не освобождение выделенных ресурсов и т. Д. - это правильно?

Это звучит как отличный проект, и я уже снялся в этом вопросе.


введите описание изображения здесь

Mawg говорит восстановить Монику
источник
1
Меня больше интересует семантика API (не только или в основном их синтаксиса ). И да, я хотел бы проанализировать код с использованием этого API для вещей, которые вы упоминаете (и многое другое). В настоящее время это просто грубая идея (и я буду приспосабливать ее к потребностям), и я все еще пытаюсь найти способы (особенно совместные проекты НИОКР) для ее финансирования.
Старынкевич,
Кстати, пример Qt показывает, что API (и библиотека) могут стать важными - и, возможно, доминирующими - даже не будучи юридическим стандартом.
Старынкевич
5

Стандарты для различных сетевых протоколов уже четко определены. Похоже, вы надеетесь найти API, реализующий стандартное поведение, присущее устройствам IoT. Что-то вроде функции Light (), которая может включать, выключать свет или уменьшать его яркость; DoorSensor (), который может быть поставлен на охрану или снят с охраны или может регистрироваться для оповещения о событиях открытия или закрытия двери; Что-то в этом роде. Однако я не знаю ни одной API-библиотеки, которая бы относилась к конкретным приложениям.

Если у кого-то есть, вы можете найти что-то в Domoticz . Это контроллер домашней автоматизации с открытым исходным кодом, написанный на C ++.

Джон Детерс
источник
5

В качестве быстрого ответа, я не думаю, что для IoT существует специальный тип библиотеки, я бы сказал, что IoT - это, по сути, « новые встроенные системы », они просто изменили имя и добавили соединение с облаком.

В ответ на то, что я использую для программирования на C ++, моя справочная страница http://www.cplusplus.com/

В основном для IoT вам понадобятся коммуникационные библиотеки , какой бы протокол вы ни использовали (USB, TCP / IP, UDP, ZigBee и т. Д. И т. Д.)

Кроме того, если у вас есть связь, то вам нужна безопасность / шифрование .

А все остальное будет зависеть от того, какую часть оборудования вы контролируете или измеряете. Вам понадобятся библиотеки (API / Firmware) для такого оборудования .

Конечно, я скучаю по многим вещам ... посмотрим ответы других

Змея Сандерс
источник
2
В общем, вы подтверждаете мою грубую интуицию о том, что IoT - это просто новое модное слово для встраиваемых вычислений, возможно, для встраиваемых систем Linux?
Старынкевич,
@BasileStarynkevitch Это зависит от класса устройства. Фитнес-трекеры (в отличие от часовых подключенных телефонов) не работают под управлением Linux. Узлы с автономным питанием не работают под управлением Linux. Узлы-концентраторы, которые выполняют распределенные вычисления), вероятно, работают под управлением Linux. Отсюда мой разговор о стеке, простирающемся от края до облака.
Шон
1
Это хорошо. Итак, каковы обычно используемые API или библиотеки на этих устройствах.
Старынкевич,
1
Поскольку ZigBee выглядит как сетевой протокол, он выходит за рамки. Тем не менее, общедоступный API на C или C ++, реализующий ZigBee, был бы интересен
Старынкевич,
4

Встроенный, плюс защищенная связь, а также инициализация (управление устройствами) и обновления OTA. Это большой программный пакет, который также становится платформой нового типа для разработки.

Есть несколько провайдеров, предлагающих облачные решения, у них обычно будут свои собственные клиентские API и выбранные операционные системы конечных точек.

Насколько я могу судить, различные беспроводные протоколы на самом деле не диктуют какой-либо конкретный программный стек, поэтому ваш выбор должен зависеть от общей картины, а не от клиентских API. Одним из решающих факторов может быть, если open-source важен для стека в вашем приложении.

Шон Хулихейн
источник
1
Я не занимаюсь разработкой приложений IoT, но хочу разработать инструменты статического анализа исходного кода в интересах разработчиков программного обеспечения IoT.
Старынкевич,
1
Итак, есть (предположительно) 4 или 5 различных стеков, которые актуальны, и вам нужно учитывать их все, если вы хотите следовать тому, что два или три станут доминирующими через несколько лет.
Шон
1
О каких именно API или библиотеках (на C или C ++) вы думаете? Пожалуйста, назовите их в своем ответе!
Старынкевич
1
если вам знакома какая-то команда, работающая над такими API, пожалуйста, отправьте им мой вопрос и задайте
Старынкевич,
3

Я думаю, что ваша цель чем-то похожа на BOOST:

Boost C ++ библиотеки

Они нацелены на создание «существующей практики» и предоставляют эталонные реализации, чтобы библиотеки Boost были пригодны для возможной стандартизации.

Возможно, Boost мог бы стать основным игроком в IoT: он, безусловно, внес некоторые значительные улучшения в C ++.

Serup
источник
1
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
anonymous2
2

IoTctivity является эталонной реализацией спецификации OCF . Вы можете найти документацию и исходный код в их репозитории GitHub .

Из их списка возможностей :

  • Основные функциональные возможности, написанные на C для развертывания на ограниченных устройствах
  • Большая часть функциональности доступна из C и C ++

Их Framework API позволяют обнаруживать, передавать данные, управлять данными (сбор, хранение и анализ) и управлять устройствами (например, инициализация, диагностика) по различным протоколам, таким как Bluetooth, Wi-Fi, ZigBee и Z-Wave.

thiagogcm
источник