IoT के लिए C या C ++ में सामान्य एपीआई


9

IoT के लिए C या C ++ में आम या सामान्य API (या लाइब्रेरी), दस्तावेज़ीकरण, प्रोग्रामिंग इंटरफेस का एक सेट होने के अर्थ में क्या हैं? (जैसे कि POSIX ऑपरेटिंग सिस्टम के लिए है, Qt GUI के लिए है, आदि ....)।

यह लघु पृष्ठ मेरे प्रश्न को प्रेरित करता है (मैं IoT के लिए स्थैतिक स्रोत कोड विश्लेषण उपकरण विकसित करने में रुचि रखता हूं)। मैं न केवल कानूनी मानकों की तलाश कर रहा हूं, बल्कि आमतौर पर उपयोग किए जाने वाले एपीआई या लाइब्रेरी -इन सी या सी ++ के लिए, उनके लिए मौजूदा हेडर फाइलों के साथ- विभिन्न औद्योगिक डोमेन में। मुझे वेब API s में रुचि नहीं है (कुछ HTTP अनुरोधों को परिभाषित करने वाले सम्मेलन) या बिना किसी API या लाइब्रेरी को लागू किए बिना नेटवर्क प्रोटोकॉल में।

(इसलिए मैं अपने आप को IoT एप्लिकेशन विकसित करने में दिलचस्पी नहीं रखता हूं, लेकिन मैं IoT सॉफ्टवेयर के डेवलपर्स की सहायता के लिए सोर्स कोड काम करने और विश्लेषण करने वाले सॉफ्टवेयर इंजीनियरिंग टूल विकसित करना चाहता हूं)

मैं भी उद्योग विशिष्ट IoT एपीआई या पुस्तकालयों, जैसे स्वास्थ्य सेवा, रसद, परिवहन, स्मार्ट ग्रिड, स्मार्ट भवनों, आदि में दिलचस्पी ले सकता है; जब तक यह C या C ++ API या लाइब्रेरी है।


मैं स्थैतिक स्रोत कोड विश्लेषण पर काम करने वाले एक शोध समूह में हूं, और हम IoT सॉफ्टवेयर डेवलपर की सहायता के लिए C या C ++ स्रोत कोड का विश्लेषण करने वाले उपकरण विकसित करना चाहते हैं।

हालांकि, मुझे इस पर काम करने से पहले वित्त पोषित होने का एक तरीका खोजने की जरूरत है।

हम IoT प्लेटफार्मों को लक्षित करने वाले डेवलपर्स कोड और सी (C, C ++ और Ada ...) स्रोत कोड लिखने वाले डेवलपर्स और इंजीनियरों के लिए एक विशेष उपकरण (अधिमानतः खुला स्रोत, मौजूदा प्रौद्योगिकियों से ऊपर) विकसित करने का सुझाव देते हैं। यह उपकरण लक्षित सॉफ्टवेयर विकास किट में एकीकृत किया जाएगा। यह उपकरण इन सॉफ्टवेयर फ्रेमवर्क के लिए विशिष्ट कोडिंग नियमों, चालनियों और अच्छी प्रथाओं के खिलाफ स्रोत कोड की वैधता का विश्लेषण और जांच करके IoT सॉफ्टवेयर डेवलपर की सहायता कर सकता है। मुख्य उद्देश्य सॉफ्टवेयर की गुणवत्ता को बढ़ाना और बाजार में समय में तेजी लाना है। यदि प्रासंगिक है, तो उपकरण सॉफ़्टवेयर प्रदर्शन को बढ़ाने और / या कोड आकार को कम करने के लिए विशिष्ट स्रोत कोड अनुकूलन कर सकता है।


एनबी। यह IoT ग्रहण वेबपेज कई मानकों को सूचीबद्ध कर रहा है। मैं एपीआई और पुस्तकालयों में उन्हें (और किसी भी अन्य IoT de facto डोमेन विशिष्ट मानक) को लागू करने में दिलचस्पी रखता हूं, अगर उनके लिए स्रोत कोड विश्लेषक विकसित करना सार्थक है।


@ बैसिल क्या ये कमर्शियल या FOSS होगा? किसी भी मामले में, क्या कोई ऐसा तरीका है जिससे हम आपकी प्रगति का अनुसरण कर सकते हैं। मुझे लगता है कि महीने, या साल भी लग सकते हैं, इसलिए यूटीएल देखने या मेलिंग सूची में आपका बहुत स्वागत होगा
मावग का कहना है कि मोनिका

मैं ज्यादातर एक दर्जन सालों से मुफ्त सॉफ्टवेयर पर काम कर रहा हूं, इसलिए मुझे उम्मीद है कि यह FOSS होगा। हालांकि, मुझे इस पर काम शुरू करने के लिए कुछ कंसोर्टियम (या कुछ आरएंडडी अनुदान, या किसी अन्य फंडिंग) में शामिल होने की आवश्यकता है।
बेसिल स्टेयरनेविच

1
क्या आपका मतलब सीएमएसआईएस जैसी चीजों से है? keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTT और Mosquitto काफी लोकप्रिय जब यह IoT के लिए आता है। हो सकता है कि Libmosquitto एपीआई आपके कोड विश्लेषक के लिए एक अच्छा लक्ष्य है?
बेंस कौलिक्स

1
क्या विशेष रूप से आप में रुचि रखते हैं IoT का कोई पहलू है? बेंस कौलिक्स द्वारा सुझाए गए (एमक्यूटीटी, सीओएपी, 6 डब्ल्यूडब्ल्यूडब्ल्यूपीएएन) के रूप में संचार पक्ष है या एंड्रॉइड थिंग्स या उबंटू IoT जैसे पूरे IoT प्लेटफॉर्म हैं । आप किस भाग से निपटना चाहते हैं?
Aurora0001

जवाबों:


8

बेसिल, मुझे लगता है कि हम यहाँ एक अच्छा अंतर याद कर रहे हैं।

जब आप IoT के लिए एक पॉज़िक्स जैसे मानक की बात करते हैं, तो मुझे लगता है कि आप पुस्तकालयों की बात कर रहे हैं जो एक प्रोटोकॉल को लपेटते हैं।

जैसा कि टेलीफ़ोनी और उपग्रह संचार के लिए प्रोटोकॉल स्टैक को लागू करने के दशकों से ( खाँसी ) के लिए नियोजित किया गया है , मैं कह सकता हूं (जैसा कि आप शायद जानते हैं) कि ये प्रोटोकॉल पहले से कड़ाई से परिभाषित हैं। उदाहरण के लिए, Zigbee https://en.wikipedia.org/wiki/IEEE_802.15.4 द्वारा शासित है

ये मानक प्रेषित होने वाले संदेशों को निर्धारित करते हैं और परिभाषित करते हैं कि बाइट 0 का अर्थ यह है, बाइट 1 का मतलब 4 के माध्यम से होता है, आदि, ताकि असमान विनिर्माण से उपकरण एक दूसरे के साथ संवाद कर सकें (यह सिद्धांत है, वैसे भी, मैं आपको कुछ डरावनी बता सकता हूं; कहानियों ;-)

जैसा कि मैंने कहा, किसी भी प्रोटोकॉल के लिए, मैन्युफैक्चरर्स का ढेर हो सकता है। और किसी भी निर्माता के लिए, कई सॉफ्टवेयर लाइब्रेरी हो सकती हैं, जो आपकी समस्या है।

आपका कार्य बहुत कठिन है जब तक कि कई एपीआईएस उपलब्ध हैं, जो प्रत्येक प्रोटोकॉल को लपेटते हैं।

अफसोस की बात यह है कि केवल एक कंपनी के प्रमुख होने पर ही पॉज़िक्स जैसी एपीआई होगी। अगर कोई बड़ी सरकार इस पर बहुत पैसा खर्च करती है, तो एक पतली संभावना हो सकती है, लेकिन मैं ऐसा नहीं देख सकता। ओपन सोर्स कम्युनिटी द्वारा लिनक्स जैसे प्रयास के रूप में एकमात्र अन्य मौका।


Btw, मुझे नहीं लगता है कि आप यह स्पष्ट करते हैं कि आपका सिर्फ एक और स्थिर कोड विश्लेषक नहीं होगा, कि यह सामान्य कोड के लिए नहीं है, लेकिन कुछ विशिष्ट एपीआई के लिए। आप ऐसा कहते हैं, जैसे कि, लेकिन स्पष्ट रूप से पर्याप्त नहीं है, IMO। जब आप इसे ठीक से परिभाषित करते हैं, तो आपको पता चल जाएगा कि आपकी परियोजना वास्तव में क्या है। यदि आप पहले से ही जानते हैं, तो आप इस पर जोर नहीं देते हैं (लेकिन शायद मैं अच्छी तरह से नहीं पढ़ रहा हूं, दो बैठकों के बीच पहुंचे)।

POSIX APIs के सिंटैक्स को कंपाइलर द्वारा पॉलिश किया जाता है, जैसा कि आपके द्वारा अध्ययन किए गए किसी भी API का सिंटैक्स होगा। इसलिए मुझे लगता है कि आप संभावित खतरनाक कोड की तलाश कर रहे हैं, जैसे कि अनिटिटलाइज्ड संसाधनों का उपयोग, आवंटित संसाधनों को मुक्त नहीं करना, आदि - क्या यह सही है?

यह एक महान परियोजना की तरह लगता है, हालांकि, और मैंने इस प्रश्न को तारांकित किया है।


यहाँ छवि विवरण दर्ज करें


1
मुझे एपीआई के शब्दार्थों (न केवल या उनके वाक्यविन्यास में ) में अधिक दिलचस्पी है । और हां, मैं आपके द्वारा बताई गई चीजों (और भी बहुत कुछ) के लिए उस एपीआई का उपयोग करके कोड का विश्लेषण करना चाहूंगा। यह वर्तमान में सिर्फ एक मोटा विचार है (और मैं इसे जरूरतों के अनुकूल बनाऊंगा), और मैं अभी भी इसे प्राप्त करने के लिए तरीके (विशेष रूप से सहयोगी अनुसंधान एवं विकास परियोजनाओं) को खोजने की कोशिश कर रहा हूं।
बेसिल स्टारीनेवविच

BTW, Qt उदाहरण से पता चलता है कि एक एपीआई (और एक पुस्तकालय) महत्वपूर्ण हो सकता है-और शायद एक प्रमुख मानक के बिना भी प्रमुख हो सकता है।
बेसिल स्टारीनेवविच

5

विभिन्न नेटवर्किंग प्रोटोकॉल के लिए मानकों को पहले से ही अच्छी तरह से परिभाषित किया गया है। ऐसा लगता है कि आप जो ढूंढने की उम्मीद कर रहे हैं वह एक एपीआई है जो IoT उपकरणों के लिए मानक व्यवहार को लागू करता है। लाइट () फ़ंक्शन की तरह कुछ जो रोशनी को चालू कर सकते हैं, बंद कर सकते हैं या उन्हें अपनी चमक के एक अंश तक मंद कर सकते हैं; डोरसेन्सर () जो सशस्त्र या निरस्त्र हो सकता है, या दरवाजे के खुले या दरवाजे के करीब की घटनाओं पर अलर्ट के लिए पंजीकरण कर सकता है; इस तरह की चीज। हालाँकि, मैं किसी भी एपीआई पुस्तकालय से अवगत नहीं हूँ जो विशिष्ट नहीं है।

अगर किसी के पास एक है, तो आपको डोमोटिक में कुछ मिल सकता है । यह C ++ में लिखा गया एक ओपन सोर्स होम ऑटोमेशन कंट्रोलर है।


5

त्वरित प्रतिक्रिया के रूप में, मुझे नहीं लगता कि IoT के लिए एक विशेष प्रकार की लाइब्रेरी है, मैं कहूंगा कि IoT मूल रूप से " नए एम्बेडेड सिस्टम " हैं, उन्होंने सिर्फ नाम बदल दिया और क्लाउड से कनेक्शन जोड़ दिया।

इसलिए मैं C ++ प्रोग्रामिंग के लिए क्या उपयोग करता हूं, इसका जवाब देते हुए, मेरा संदर्भ पृष्ठ http://www.cplusplus.com/ है

मूल रूप से IoT के लिए आपको संचार पुस्तकालयों की आवश्यकता होगी , जो भी प्रोटोकॉल आप उपयोग करते हैं (USB, TCP / IP, UDP, ZigBee, आदि)।

इसके अलावा, यदि आपके पास संचार है तो आपको सुरक्षा / एन्क्रिप्शन की आवश्यकता है ।

और बाकी इस बात पर निर्भर करेगा कि आप किस हार्डवेयर को नियंत्रित या माप रहे हैं। ऐसे हार्डवेयर के लिए आपको पुस्तकालयों (API / फर्मवेयर) की आवश्यकता होगी ।

निश्चित रूप से कई चीजें हैं जो मैं यहां याद कर रहा हूं ... आइए दूसरों के जवाब देखें


2
तो मूल रूप से, आप मेरे सकल अंतर्ज्ञान की पुष्टि कर रहे हैं कि IoT एम्बेडेड कंप्यूटिंग के लिए सिर्फ नया buzzword है, शायद Linux सिस्टम एम्बेडेड है?
बेसिल स्टैरनेवविच

@BasileStarynkevitch यह डिवाइस वर्ग पर निर्भर करता है। फिटनेस ट्रैकर (माउंटेड फोन एक्सटेंशन देखने के विपरीत) लिनक्स नहीं चलाते हैं। स्व-संचालित नोड्स लिनक्स नहीं चलाते हैं। हब नोड्स, जो किसी दिन वितरित वितरित करते हैं) संभवतः लिनक्स चलाते हैं। इसलिए मेरी बात एक किनारे से बादल तक फैली हुई ढेर की है।
सीन होलीहेन

1
वह ठीक है। तो इन उपकरणों पर आमतौर पर उपयोग किए जाने वाले एपीआई या लाइब्रेरी क्या हैं ।
बेसिल स्टारीनेवविच

1
चूंकि ZigBee एक नेटवर्क प्रोटोकॉल की तरह दिखता है, यह दायरे से बाहर है। हालाँकि, C या C ++ में सामान्यतः उपलब्ध API ZigBee को लागू करना दिलचस्प होगा
Basile Starynkevitch

4

एंबेडेड, प्लस सिक्योर कम्युनिकेशंस, प्लस प्रोविजनिंग (डिवाइस मैनेजमेंट) प्लस ओटीए अपडेट। यह एक बड़ा सॉफ्टवेयर पैकेज है और विकसित करने के लिए एक नए प्रकार के प्लेटफॉर्म के रूप में भी उभर रहा है।

क्लाउड समाधान प्रदान करने वाले कई प्रदाता हैं, उनके पास आमतौर पर अपने स्वयं के क्लाइंट एपीआई और चुने हुए समापन बिंदु ऑपरेटिंग सिस्टम होंगे।

जहां तक ​​मैं बता सकता हूं, विभिन्न वायरलेस प्रोटोकॉल वास्तव में किसी विशेष सॉफ्टवेयर स्टैक को निर्धारित नहीं करते हैं, इसलिए आपकी पसंद को बड़ी तस्वीर द्वारा संचालित करने की आवश्यकता है, न कि क्लाइंट एपीआई। यदि आपके एप्लिकेशन में स्टैक के लिए ओपन-सोर्स महत्वपूर्ण है, तो एक निर्णायक कारक हो सकता है।


1
मैं IoT एप्लिकेशन विकसित नहीं कर रहा हूं, लेकिन मैं IoT सॉफ्टवेयर डेवलपर्स के लाभ के लिए स्थैतिक स्रोत कोड विश्लेषण उपकरण विकसित करना चाहता हूं।
बेसिल स्टैरनेवविच

1
ठीक है, इसलिए वहाँ (अनुमान) 4 या 5 अलग-अलग स्टैक हैं जो प्रासंगिक हैं और आपको उन सभी पर विचार करने की आवश्यकता है यदि आप कुछ वर्षों में दो या तीन का पालन करना चाहते हैं।
सीन हुलिएन

1
क्या सटीक एपीआई या पुस्तकालय (सी या सी ++ में) आप सोच रहे हैं? कृपया उन्हें अपने उत्तर में नाम दें!
बेसिल स्टेयरनेविच

1
यदि आप जानते हैं कि कुछ टीम ऐसे API पर काम कर रही है, तो कृपया उन्हें मेरा प्रश्न बताएं
Basile Starynkevitch

3

मुझे लगता है कि आपका उद्देश्य कुछ हद तक BOOST के समान है:

बूस्ट C ++ लाइब्रेरी

वे "मौजूदा अभ्यास" स्थापित करने और संदर्भ कार्यान्वयन प्रदान करने का लक्ष्य रखते हैं ताकि बूस्ट लाइब्रेरी अंततः मानकीकरण के लिए उपयुक्त हो।

शायद बूस्ट IoT में एक प्रमुख खिलाड़ी हो सकता है: यह निश्चित रूप से C ++ में कुछ महान सुधार किया है।


1
टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
anonymous2

2

IoTivity OCF विनिर्देश का संदर्भ कार्यान्वयन है । आप उनके GitHub भंडार में प्रलेखन और स्रोत कोड पा सकते हैं ।

उनकी सुविधाओं की सूची से :

  • कोर कार्यक्षमता को विवश उपकरणों की तैनाती के लिए सी में लिखा गया है
  • अधिकांश कार्यक्षमता C और C ++ से उपलब्ध है

उनके फ्रेमवर्क एपीआई , ब्लूटूथ, वाई-फाई, ज़िगबी और जेड-वेव जैसे विभिन्न प्रोटोकॉल पर खोज, डेटा ट्रांसमिशन, डेटा प्रबंधन (संग्रह, भंडारण और विश्लेषण) और डिवाइस प्रबंधन (जैसे प्रावधान, निदान) की अनुमति देते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.