API phổ biến trong C hoặc C ++ cho IoT


9

Các API (hoặc thư viện) thông thường hoặc thông thường trong C hoặc C ++ cho IoT là gì, theo nghĩa là có một tài liệu, một bộ giao diện lập trình? (Giống như POSIX dành cho hệ điều hành, Qt dành cho GUI, v.v ....).

Đây trang ngắn thúc đẩy câu hỏi của tôi (tôi đang quan tâm trong việc phát triển các công cụ phân tích mã nguồn tĩnh cho IOT). Tôi không chỉ tìm kiếm các tiêu chuẩn pháp lý, mà còn cho các API hoặc thư viện thường được sử dụng - trong C hoặc C ++, với các tệp tiêu đề hiện có cho chúng - trong các lĩnh vực công nghiệp khác nhau. Tôi không quan tâm đến các API Web (quy ước xác định một số yêu cầu HTTP) hoặc chỉ trong các giao thức mạng mà không có bất kỳ API hoặc thư viện nào triển khai chúng.

(vì vậy tôi không quan tâm đến việc phát triển các ứng dụng IoT cho mình, nhưng tôi muốn phát triển các công cụ kỹ thuật phần mềm làm việc & phân tích mã nguồn để giúp các nhà phát triển phần mềm IoT)

Tôi thậm chí có thể quan tâm bởi các API hoặc thư viện IoT cụ thể trong ngành, ví dụ như trong chăm sóc sức khỏe, hậu cần, vận chuyển, lưới điện thông minh, tòa nhà thông minh, v.v; miễn là nó là một thư viện hoặc API C hoặc C ++.


Tôi thuộc nhóm nghiên cứu làm việc về phân tích mã nguồn tĩnh và chúng tôi muốn phát triển các công cụ phân tích mã nguồn C hoặc C ++, để giúp nhà phát triển phần mềm IoT.

Tuy nhiên, tôi cần tìm ra cách để được tài trợ trước khi thực hiện việc này.

Chúng tôi khuyên bạn nên phát triển một công cụ chuyên dụng (tốt nhất là nguồn mở, trên các công nghệ hiện có), cho các nhà phát triển và kỹ sư viết mã nguồn (trong C, C ++ và Ada nếu cần ...) nhắm mục tiêu nền tảng IoT. Công cụ này sẽ được tích hợp trong bộ công cụ phát triển phần mềm được nhắm mục tiêu. Công cụ này có thể hỗ trợ nhà phát triển phần mềm IoT bằng cách phân tích và kiểm tra tính hợp lệ của mã nguồn theo các quy tắc mã hóa, bất biến và các thực tiễn tốt cụ thể cho các khung phần mềm này. Mục tiêu chính là nâng cao chất lượng phần mềm và đẩy nhanh thời gian đưa ra thị trường. Nếu có liên quan, công cụ có thể thực hiện tối ưu hóa mã nguồn cụ thể để nâng cao hiệu suất phần mềm và / hoặc để giảm kích thước mã.


Lưu ý Đây IOT Eclipse trang web được liệt kê một số tiêu chuẩn. Tôi quan tâm đến các API và thư viện triển khai chúng (và bất kỳ tiêu chuẩn cụ thể nào về tên miền IoT khác), nếu việc phát triển các bộ phân tích mã nguồn cho chúng là đáng giá.


@Basile Đây sẽ là thương mại hay FOSS? Trong mọi trường hợp, có cách nào chúng tôi có thể theo dõi tiến trình của bạn. Tôi nhận ra rằng có thể mất vài tháng hoặc thậm chí nhiều năm, do đó, một UTL để xem hoặc danh sách gửi thư sẽ rất được hoan nghênh
Mawg nói rằng phục hồi Monica

Tôi chủ yếu làm việc trên phần mềm miễn phí từ hàng chục năm nay, vì vậy tôi hy vọng nó sẽ là FOSS. Tuy nhiên, tôi cần tham gia một số tập đoàn (hoặc để nhận được một số khoản trợ cấp R & D, hoặc bất kỳ khoản tài trợ nào khác) để bắt đầu làm việc này.
Basile Starynkevitch

1
Bạn có nghĩa là những thứ như CMSIS? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTT và Mosquitto khá phổ biến khi nói đến IoT. Có lẽ API Libmosquitto là một mục tiêu tốt cho trình phân tích mã của bạn?
Bence Kaulics

1
Có khía cạnh nào của IoT nói riêng mà bạn quan tâm không? Có khía cạnh giao tiếp như Bence Kaulics đề xuất (MQTT, CoAP, 6LoWPAN, v.v.) hoặc có toàn bộ nền tảng IoT như Android Things hoặc Ubuntu IoT . Phần nào bạn muốn giải quyết?
Aurora0001

Câu trả lời:


8

Basile, tôi nghĩ rằng chúng ta đang thiếu một sự khác biệt tốt ở đây.

Khi bạn nói về một Posix giống như tiêu chuẩn cho IoT, tôi nghĩ rằng bạn đang nói về các thư viện bao bọc một giao thức.

Là một trong những người đã được sử dụng cho ( ho ) thập kỷ thực hiện ngăn xếp giao thức cho điện thoại và truyền hình vệ tinh thông tin liên lạc, tôi có thể nói (như bạn có thể nhận thức) mà các giao thức này là, bởi nhu cầu, đã được xác định chặt chẽ. Chẳng hạn, Zigbee được quản lý bởi https://en.wikipedia.org/wiki/IEEE_802.15.4

Các tiêu chuẩn này đặt các thông điệp được truyền đi và xác định rằng byte 0 có nghĩa là điều này, byte 1 đến 4 có nghĩa là, v.v., để các thiết bị từ các nhà sản xuất khác nhau có thể giao tiếp với nhau (dù sao đó là lý thuyết; tôi có thể nói với bạn một số điều kinh dị những câu chuyện ;-)

Như tôi đã nói, đối với bất kỳ giao thức nhất định, có thể có rất nhiều nhà sản xuất. Và đối với bất kỳ nhà sản xuất nhất định, có thể có nhiều thư viện phần mềm, đó là vấn đề của bạn.

Nhiệm vụ của bạn quá khó khăn miễn là có sẵn nhiều APIS, bao bọc từng giao thức.

Đáng buồn thay, sẽ chỉ có một API giống như Posix nếu một công ty trở nên thống trị. Có thể có một khả năng mỏng nếu một chính phủ lớn ném rất nhiều tiền vào nó, nhưng tôi không thể thấy điều đó xảy ra. Cơ hội duy nhất khác mà tôi là nỗ lực giống như Linux của cộng đồng Nguồn mở.


Btw, tôi không nghĩ rằng bạn nói rõ rằng bạn sẽ không chỉ là một công cụ phân tích mã tĩnh khác, rằng nó không dành cho mã chung, mà dành cho một số API cụ thể. Bạn có nói rằng, sắp xếp, nhưng không đủ rõ ràng, IMO. Khi bạn xác định chính xác điều đó, bạn sẽ biết dự án của bạn thực sự là gì. Nếu bạn đã biết, dường như bạn không nhấn mạnh điều đó (nhưng có lẽ tôi không đọc đủ tốt, vội vàng giữa hai cuộc họp).

Cú pháp của API POSIX được trình biên dịch kiểm soát, vì đây sẽ là cú pháp của bất kỳ API nào bạn nghiên cứu. Vì vậy, tôi đoán rằng bạn đang tìm kiếm mã nguy hiểm tiềm tàng, chẳng hạn như sử dụng tài nguyên được đơn vị hóa, không giải phóng tài nguyên được phân bổ, v.v. - có đúng không?

Nghe có vẻ như một dự án tuyệt vời, và tôi đã đánh dấu sao câu hỏi này.


nhập mô tả hình ảnh ở đây


1
Tôi quan tâm nhiều hơn đến ngữ nghĩa của các API (không chỉ hoặc chủ yếu là cú pháp của chúng ). Và vâng, tôi muốn phân tích mã bằng API đó cho những điều bạn đề cập (và nhiều hơn nữa). Đây hiện chỉ là một ý tưởng sơ bộ (và tôi sẽ điều chỉnh nó theo nhu cầu) và tôi vẫn đang cố gắng tìm cách (đáng chú ý là các dự án R & D hợp tác) để được tài trợ.
Basile Starynkevitch

BTW, ví dụ Qt cho thấy rằng API (và thư viện) có thể trở nên quan trọng - và có thể chiếm ưu thế - ngay cả khi không phải là một tiêu chuẩn pháp lý.
Basile Starynkevitch

5

Các tiêu chuẩn cho các giao thức mạng khác nhau đã được xác định rõ. Điều có vẻ như bạn đang hy vọng tìm thấy là một API thực hiện các hành vi tiêu chuẩn vốn có cho các thiết bị IoT. Một cái gì đó giống như chức năng Light () có thể bật, tắt hoặc làm mờ chúng đến một phần độ sáng của chúng; DoorSensor () có thể được vũ trang hoặc giải giáp, hoặc có thể đăng ký thông báo về các sự kiện mở cửa hoặc đóng cửa; đó là một thứ Tuy nhiên, tôi không biết bất kỳ thư viện API nào không phải là ứng dụng cụ thể.

Nếu bất cứ ai có một, bạn có thể tìm thấy một cái gì đó trong Domoticz . Đây là một bộ điều khiển tự động hóa nguồn mở được viết bằng C ++.


5

Để phản hồi nhanh, tôi không nghĩ rằng đối với IoT có một loại thư viện đặc biệt, tôi sẽ nói rằng IoT về cơ bản là " các hệ thống nhúng mới ", họ chỉ thay đổi tên và thêm kết nối vào đám mây.

Vì vậy, trả lời những gì tôi sử dụng cho lập trình C ++, trang tham khảo của tôi là http://www.cplusplus.com/

Về cơ bản cho IoT, bạn sẽ cần các thư viện giao tiếp , bất kỳ giao thức nào bạn sử dụng (USB, TCP / IP, UDP, ZigBee, v.v.)

Ngoài ra, nếu bạn có liên lạc thì bạn cần bảo mật / mã hóa .

Và phần còn lại sẽ phụ thuộc vào phần nào bạn đang kiểm soát hoặc đo lường. Bạn sẽ cần các thư viện (API / Firmware) cho phần cứng như vậy .

Chắc chắn có nhiều điều tôi đang thiếu ở đây ... hãy xem người khác trả lời


2
Về cơ bản, bạn đang xác nhận trực giác thô của tôi rằng IoT chỉ là từ thông dụng mới cho điện toán nhúng, có lẽ là các hệ thống nhúng Linux?
Basile Starynkevitch

@BasileStarynkevitch Nó phụ thuộc vào lớp thiết bị. Trình theo dõi thể dục (trái ngược với các tiện ích mở rộng điện thoại được gắn) không chạy Linux. Các nút tự cấp nguồn không chạy Linux. Các nút trung tâm, thực hiện tính toán phân tán) có thể chạy Linux. Do đó, bài nói chuyện của tôi về một ngăn xếp kéo dài từ rìa lên đám mây.
Sean Houlihane

1
Được thôi. Vì vậy, các API hoặc thư viện thường được sử dụng trên các thiết bị này là gì.
Basile Starynkevitch

1
Vì ZigBee trông giống như một giao thức mạng, nó nằm ngoài phạm vi. Tuy nhiên, một API thường có sẵn trong C hoặc C ++ khi triển khai ZigBee sẽ rất thú vị
Basile Starynkevitch

4

Nhúng, cộng với liên lạc an toàn, cộng với cung cấp (quản lý thiết bị) cộng với cập nhật OTA. Đây là một gói phần mềm lớn và cũng đang nổi lên như một loại nền tảng mới để phát triển.

Có một số nhà cung cấp cung cấp giải pháp đám mây, họ thường sẽ có API khách hàng riêng và hệ điều hành điểm cuối được chọn.

Theo như tôi có thể nói, các giao thức không dây khác nhau không thực sự ra lệnh cho bất kỳ ngăn xếp phần mềm cụ thể nào, vì vậy sự lựa chọn của bạn cần được điều khiển bởi bức tranh lớn, chứ không phải API khách hàng. Một yếu tố quyết định có thể là nếu nguồn mở là quan trọng đối với ngăn xếp trong ứng dụng của bạn.


1
Tôi không phát triển ứng dụng IoT, nhưng tôi muốn phát triển các công cụ phân tích mã nguồn tĩnh vì lợi ích của các nhà phát triển phần mềm IoT.
Basile Starynkevitch

1
OK, do đó, có (4) 5 ngăn xếp khác nhau có liên quan và bạn cần xem xét tất cả chúng nếu bạn muốn theo dõi bất cứ điều gì hai hoặc ba trở thành ưu thế trong một vài năm.
Sean Houlihane

1
Bạn đang nghĩ đến API hoặc thư viện chính xác nào (trong C hoặc C ++)? Hãy đặt tên cho họ trong câu trả lời của bạn!
Basile Starynkevitch


3

Tôi nghĩ mục tiêu của bạn có phần giống với BOOST:

Tăng cường thư viện C ++

Mục đích của họ là thiết lập "thực tiễn hiện có" và cung cấp các triển khai tham chiếu để các thư viện Boost phù hợp với tiêu chuẩn hóa cuối cùng.

Có lẽ Boost có thể là một người chơi chính trong IoT: nó chắc chắn đã thực hiện một số cải tiến tuyệt vời cho C ++.


1
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
nặc

2

IoTivity là triển khai tham chiếu của Đặc tả OCF . Bạn có thể tìm tài liệu và mã nguồn tại kho GitHub của họ .

Từ danh sách các tính năng của họ :

  • Chức năng cốt lõi được viết bằng C để triển khai cho các thiết bị bị hạn chế
  • Hầu hết các chức năng có sẵn từ C và C ++

API API của họ cho phép khám phá, truyền dữ liệu, quản lý dữ liệu (thu thập, lưu trữ và phân tích) và quản lý thiết bị (ví dụ: cung cấp, chẩn đoán) qua các giao thức khác nhau như Bluetooth, Wi-Fi, ZigBee và Z-Wave.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.