Каковы общие или обычные 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), если стоит разработать для них анализаторы исходного кода.
источник
Ответы:
Василий, я думаю, что нам не хватает здесь тонкого различия.
Когда вы говорите о 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, которые вы изучаете. Поэтому я предполагаю, что вы ищете потенциально опасный код, такой как использование унифицированных ресурсов, а не освобождение выделенных ресурсов и т. Д. - это правильно?
Это звучит как отличный проект, и я уже снялся в этом вопросе.
источник
Стандарты для различных сетевых протоколов уже четко определены. Похоже, вы надеетесь найти API, реализующий стандартное поведение, присущее устройствам IoT. Что-то вроде функции Light (), которая может включать, выключать свет или уменьшать его яркость; DoorSensor (), который может быть поставлен на охрану или снят с охраны или может регистрироваться для оповещения о событиях открытия или закрытия двери; Что-то в этом роде. Однако я не знаю ни одной API-библиотеки, которая бы относилась к конкретным приложениям.
Если у кого-то есть, вы можете найти что-то в Domoticz . Это контроллер домашней автоматизации с открытым исходным кодом, написанный на C ++.
источник
В качестве быстрого ответа, я не думаю, что для IoT существует специальный тип библиотеки, я бы сказал, что IoT - это, по сути, « новые встроенные системы », они просто изменили имя и добавили соединение с облаком.
В ответ на то, что я использую для программирования на C ++, моя справочная страница http://www.cplusplus.com/
В основном для IoT вам понадобятся коммуникационные библиотеки , какой бы протокол вы ни использовали (USB, TCP / IP, UDP, ZigBee и т. Д. И т. Д.)
Кроме того, если у вас есть связь, то вам нужна безопасность / шифрование .
А все остальное будет зависеть от того, какую часть оборудования вы контролируете или измеряете. Вам понадобятся библиотеки (API / Firmware) для такого оборудования .
Конечно, я скучаю по многим вещам ... посмотрим ответы других
источник
Встроенный, плюс защищенная связь, а также инициализация (управление устройствами) и обновления OTA. Это большой программный пакет, который также становится платформой нового типа для разработки.
Есть несколько провайдеров, предлагающих облачные решения, у них обычно будут свои собственные клиентские API и выбранные операционные системы конечных точек.
Насколько я могу судить, различные беспроводные протоколы на самом деле не диктуют какой-либо конкретный программный стек, поэтому ваш выбор должен зависеть от общей картины, а не от клиентских API. Одним из решающих факторов может быть, если open-source важен для стека в вашем приложении.
источник
Я думаю, что ваша цель чем-то похожа на BOOST:
Boost C ++ библиотеки
Они нацелены на создание «существующей практики» и предоставляют эталонные реализации, чтобы библиотеки Boost были пригодны для возможной стандартизации.
Возможно, Boost мог бы стать основным игроком в IoT: он, безусловно, внес некоторые значительные улучшения в C ++.
источник
IoTctivity является эталонной реализацией спецификации OCF . Вы можете найти документацию и исходный код в их репозитории GitHub .
Из их списка возможностей :
Их Framework API позволяют обнаруживать, передавать данные, управлять данными (сбор, хранение и анализ) и управлять устройствами (например, инициализация, диагностика) по различным протоколам, таким как Bluetooth, Wi-Fi, ZigBee и Z-Wave.
источник