HTTP POST अनुरोधों का उपयोग करके IoT वेब सर्वर पर डेटा संग्रहीत करें
जैसा कि श्रृंखला के पहले लेख में बताया गया है इंटरनेट ऑफ थिंग्स उपकरणों द्वारा प्राप्त डेटा को संग्रहीत करें, हालाँकि जो डेटा सहेजा जाता है वह सर्वर पर समाप्त हो जाता है MySQL o MariaDB और भाषा का प्रयोग किया जाता है PHP इनपुट और आउटपुट पर उन्हें हेरफेर करने के लिए, इलेक्ट्रॉनिक उपकरण और डेटाबेस के बीच सूचना का प्रवाह एक का उपयोग करके होता है वेब सर्वर आप किसके साथ संवाद करते हैं HTTP प्रोटोकॉल.
की परिभाषा की शुरुआत में HTTP प्रोटोकॉल वर्णित किए गए उपयोग के तुलनीय उपयोग थे लेकिन तथ्य यह है कि अंत में विभिन्न कारणों से इसका पूरी तरह से उपयोग नहीं किया गया है, आंशिक रूप से सुरक्षा और आंशिक रूप से क्योंकि अधिक विशिष्ट या अधिक कुशल प्रोटोकॉल को परिभाषित करने में प्रगति कभी नहीं हुई थी, इसलिए आजकल, विशेष रूप से सार्वजनिक सर्वर में, कनेक्शन का उपयोग करना सबसे आम बात है HTTP क्या बनाता है? पोस्ट अनुरोध जानकारी संग्रहीत करने के लिए सर्वर पर या a GET इसे पुनर्प्राप्त करने के लिए, आम तौर पर एक वेब पेज प्रदर्शित करना जो इसे प्रस्तुत करता है और यहां तक कि जिस पर आप बातचीत कर सकते हैं।
किसी अनुरोध में सर्वर को भेजा गया सबसे बुनियादी पाठ HTTP पोस्ट अनुरोध के प्रकार के साथ एक पंक्ति शामिल है (पोस्ट) वेब पेज का पथ जो जानकारी और संस्करण को संग्रहीत करेगा HTTP प्रोटोकॉल; होस्ट नाम के साथ एक और पंक्ति (जो एक ही सर्वर और/या एक ही आईपी पते पर वर्चुअल सर्वर की अनुमति देती है) और अंत में एक और जिसमें रिकॉर्ड किया गया डेटा होता है, जो एक दूसरे से & चिह्न द्वारा और पिछली पंक्तियों से एक द्वारा अलग किया जाता है खाली।
1
2
3
4
|
POST /iot/grabar_temperatura HTTP/1.1
Host: polaridad.es
ne=muelle+de+carga&tp=10.26&cr=2.18
|
ऊपर दिए गए उदाहरण में, pollaridad.es नामक सर्वर में संस्करण 1.1 का उपयोग करके जानकारी प्रबंधित करने के लिए /iot/grabar_temperatura में एक पेज होगा। HTTP प्रोटोकॉल
यह देखा जा सकता है कि दो & चिन्हों का उपयोग किया गया है जो दर्शाता है कि तीन फ़ील्ड संग्रहीत हैं। फ़ील्ड का नाम समान चिह्न के बाईं ओर है और उन्हें परिभाषित करने के लिए केवल दो अक्षरों का उपयोग किया गया है। अनुरोध के फ़ील्ड (या चर, यदि आप चाहें) के नाम के रूप में HTTP वे डेटाबेस में मौजूद लोगों से संबंधित नहीं हैं, वर्णनात्मक पाठ का उपयोग करना विशेष रूप से महत्वपूर्ण नहीं है और सर्वर के साथ संचार में पाठ को सहेजने और डेटा भेजने की प्रक्रिया को तेज करने के लिए आमतौर पर संक्षिप्त नाम (सम संख्या वाले फ़ील्ड) चुने जाते हैं।
IoT डिवाइस जो डेटा सामान्यतः सर्वर को भेजता है वह संख्यात्मक प्रकार का होता है, मुख्य रूप से पूर्णांक और सरल दशमलव। जब मान टेक्स्ट प्रारूप में भेजे जाते हैं, जैसा कि उदाहरण में वेरिएबल "ने" के मामले में है, तो प्रतिकूल परिस्थितियां उत्पन्न हो सकती हैं जिन्हें मामले के आधार पर कम या ज्यादा सफलता और आसानी से हल किया जा सकता है। इस अवसर पर, शब्दों को अलग करने के लिए प्लस चिह्न (+) का उपयोग किया जाता है, उन रिक्त स्थानों को प्रतिस्थापित किया जाता है जो अन्यथा बदल देते हैं पोस्ट अनुरोध. अधिकांश मामलों को हल करने वाला डेटा भेजने का एक सामान्य तरीका प्रतिशत चिह्न (%) से पहले वर्णों के हेक्साडेसिमल कोड को इंगित करना है, तार्किक रूप से, इस संसाधन का उपयोग करना उचित नहीं है, सिवाय इसके कि जब जो एन्कोड किया गया है वह समस्याग्रस्त हो क्योंकि की लंबाई जो भेजा जाता है उसे बढ़ाया जाता है, जिसके लिए आम तौर पर अधिक संसाधनों की आवश्यकता होती है, हालांकि यह निश्चित रूप से आकार में बहुत छोटा होता है।
हालाँकि इसे संचालित करना संभव है वेब सर्वर इंटरनेट ऑफ थिंग्स के लिए केवल पिछले उदाहरण की जानकारी के साथ, कई सर्वर, विशेष रूप से सार्वजनिक सर्वर, POST क्वेरी में अन्य डेटा जोड़ते हैं (दुर्भाग्य से हमेशा प्रोटोकॉल तक सीमित नहीं होते)। नीचे दिया गया उदाहरण कुएं द्वारा अनुरोधित पोस्ट अनुरोध से मेल खाता है -ज्ञात सर्वर। इंटरनेट ऑफ थिंग्स के लिए सार्वजनिक थिंगस्पीक.
1
2
3
4
5
6
7
8
|
POST /update HTTP/1.1
Host: api.thingspeak.com
Connection: close
X–THINGSPEAKAPIKEY: 1234567890
Content–Type: application/x–www–form–urlencoded
Content–Length: 23
1=10.25&2=–5.32&3=25.15
|
कुछ व्यक्तिगत डेटा के अलावा, जैसे X-THINGSPEAKAPIKEY
(और जो प्रत्येक क्लाइंट के पहचानकर्ता से मेल खाता है) पिछले उदाहरण में आप देख सकते हैं कि अन्य हेडर हैं जो अनुरोध में अधिक जानकारी जोड़ते हैं।
में हेडर का उपयोग कैसे करें पोस्ट अनुरोध इसमें बस उसका नाम, एक कोलन चिह्न (:), एक रिक्त स्थान और वह मान लिखना शामिल है जो आप उसे निर्दिष्ट करना चाहते हैं।
अन्य घटकों के कॉन्फ़िगरेशन को पूरा करने से पहले वेब सर्वर पर POST अनुरोधों का परीक्षण करने के लिए, सर्वर से एक कनेक्शन स्थापित किया जा सकता है और डेटा मैन्युअल रूप से भेजा जा सकता है। उदाहरण के लिए, लिनक्स कंप्यूटर पर इसका उपयोग करना पर्याप्त होगा telnet polaridad.es 80
जहां pollaridad.es सर्वर का नाम है और 80 पोर्ट नंबर है जिस पर सेवा प्रतिक्रिया देती है। HTTP.
क्रॉस-प्लेटफ़ॉर्म टूल का उपयोग Linux, Windows या OS पर किया जा सकता है पुट्टी, जिसके बारे में लेख में बात की गई थी कंप्यूटर से UART सीरियल डिवाइस को नियंत्रित करें, कंसोल का उपयोग किए बिना कनेक्शन बनाने के लिए।
अगले में HTTP हेडर सूची उनमें से अधिकांश ऐसे हैं जो किसी के लिए उपयोगी हो सकते हैं पोस्ट अनुरोध से वेब सर्वर इंटरनेट ऑफ थिंग्स के लिए.
-
Accept
इसका उपयोग प्रकार को इंगित करने के लिए किया जाता है माइम अनुरोध यह अपेक्षा करता है कि सर्वर प्रतिक्रिया में इसका उपयोग करेगा। इसे इस प्रकार व्यक्त किया जाता हैtipo/subtipo
जिसे वाइल्डकार्ड चिह्न के रूप में तारांकन चिह्न (*) का उपयोग करके सामान्यीकृत किया जा सकता है, उदाहरण के लिए*/*
किसी भी या को संदर्भित करने के लिएtipo/*
के सभी उपप्रकारों को संदर्भित करने के लिएtipo
सबसे अधिक उपयोग किये जाने वाले ये हैं:
-
text/plain
हालाँकि यह सबसे बुनियादी है, फिर भी इसका उपयोग सबसे अधिक किया जाता है। यह अपेक्षा करता है कि सर्वर एक सरल (सादा) पाठ प्रतिक्रिया लौटाएगा जो यह सूचित करने के लिए पर्याप्त है कि लेनदेन सही है और अधिकतम सहायक जानकारी जैसे कि रिकॉर्ड किए गए डेटा की ऑर्डर संख्या, तुलना का परिणाम, की तारीख जोड़ें। सर्वर… -
application/xml
otext/xml
सर्वर द्वारा प्रारूप में अनुरोध का जवाब देने की प्रतीक्षा करें एक्सएमएल. चुनने का मतलबtext
के बजायapplication
आसान "मानवीय" (बनाम "स्वचालित") पढ़ने की अनुमति देता है। यह द्वंद्व स्वयं दूसरों में उपस्थित होगा माइम प्रकार लेकिन मानक की भविष्य की प्रवृत्ति को प्राथमिकता देना हैapplication
के सामनेtext
प्रारूप एक्सएमएल एक प्रतिक्रिया की अनुमति देता है जिसमें बहुत अधिक डेटा को बहुत ठोस तरीके से संरचित किया जाता है, दोष यह है कि यह नेट डेटा में बहुत अधिक चालाकी जोड़ता है, जिससे प्रतिक्रिया आवश्यकता से अधिक हो जाती है, इसलिए अधिक बैंडविड्थ की आवश्यकता होती है और शायद अधिक इसे प्रोसेस करने के लिए IoT डिवाइस में मेमोरी। -
text/html
सर्वर प्रतिक्रिया होने पर उपयोग किया जाता है एचटीएमएल सादे पाठ (सादा पाठ) के रूप में एन्कोड किया गया जो आमतौर पर एक प्रतिक्रिया को स्वरूपित करता है। चूंकि यह डेटा संग्रहीत करने के बारे में है और प्रतिक्रिया कई संसाधनों के बिना एक छोटे उपकरण तक पहुंच जाएगी, इसलिए इस प्रकार का उपयोग करना आम बात नहीं है। -
application/xhtml+xml
मूलतः यह संस्करण है एक्सएचटीएमएल (एचटीएमएल जैसा एक्सएमएल मान्य) पिछले अनुभाग में दी गई जानकारी। -
application/json
इसका सबसे अधिक उपयोग तब किया जाता है जब सर्वर प्रतिक्रिया में अधिक या कम जटिल संरचना सहित कई डेटा होते हैं। प्रारूप JSON प्रारूप के साथ साझा करें एक्सएमएल एक ठोस संरचना और संरचना द्वारा जोड़े गए पाठ में अधिक संक्षिप्त होने का लाभ जोड़ता है।
-
-
Accept-Charset
उस टेक्स्ट एन्कोडिंग को निर्धारित करता है जिसे प्रतिक्रिया में उपयोग करने का अनुरोध किया गया है। लैटिन अक्षरों को एन्कोड करने के लिए, UTF-8, सबसे पूर्ण, आईएसओ 8859 15, जिसमें यूरो चिन्ह (€) और शामिल है आईएसओ 8859 1, जो सबसे बुनियादी है. -
Accept-Encoding
उस प्रारूप को इंगित करता है जिसके अनुसार सर्वर प्रतिक्रिया को एन्कोड किया जा सकता है। मूलतः यह एक प्रकार के संपीड़न को इंगित करने का कार्य करता है। इनमें से कुछ सबसे अधिक बार होते हैंgzip
deflate
(जिसे अधिक विस्तार से निर्दिष्ट किया जा सकता हैdeflate-raw
odeflate-http
) इंटरनेट ऑफ थिंग्स से जुड़े छोटे उपकरणों में इसका उपयोग करना आम बात नहीं है क्योंकि इसके लिए संसाधनों (मेमोरी और प्रोसेसिंग समय) की एक निश्चित खपत की आवश्यकता होती है जो आमतौर पर इस प्रकार के उपकरणों में दुर्लभ होती है। यह इंगित करना आवश्यक नहीं है कि संपीड़न का उपयोग नहीं किया जाता हैAccept-Encoding: identity
चूँकि ऐसी परिस्थिति को डिफ़ॉल्ट रूप से माना जाता है। -
Accept-Language
उस भाषा को व्यक्त करता है जिसका उपयोग उत्तर में किया जा सकता है। उदाहरण के लिए, स्पेन के स्पैनिश को इस प्रकार निर्दिष्ट किया जाएगाes-ES
या संयुक्त राज्य अमेरिका की अंग्रेजी के रूप मेंen-US
-
Connection
इसका उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि क्लाइंट (IoT डिवाइस) और के बीच स्थापित कनेक्शन के साथ क्या किया जाना चाहिए वेब सर्वर एक बार डेटा प्राप्त हो जाने पर. आमतौर पर मूल्य के साथ प्रयोग किया जाता हैclose
प्रारूप मेंConnection: close
यह इंगित करने के लिए कि ग्राहक को जवाब देने के बाद कनेक्शन बंद कर दिया जाना चाहिए। -
Content-Length
यह आपको अनुरोध के उस हिस्से में व्याप्त बाइट्स की संख्या को इंगित करने की अनुमति देता है जिसमें डेटा शामिल है, जो हेडर के बाद एक है और एक रिक्त रेखा से अलग किया गया है। यह बहुत उपयोगी है क्योंकि यह भेजी गई जानकारी की सत्यता को सत्यापित करने का काम करता है; यदि यह घोषित नहीं किया गया है कि क्या घोषित किया गया है, तो इसे संग्रहीत नहीं किया जाता है क्योंकि यह माना जाता है कि यह सही ढंग से नहीं आया है। आमतौर पर अधिकांश सार्वजनिक IoT सर्वरों को इसकी आवश्यकता होती है। -
Content-Type
यह इंगित करने का कार्य करता है माइम प्रकार जिसके साथ सर्वर पर भेजी गई जानकारी एन्कोड की जाती है। प्रकार आमतौर पर उपयोग किए जाते हैंtext/html
जब सर्वर पर भेजा गया डेटा मानों की एक सरल सूची के रूप में व्यक्त किया जाता है (कुछ इस तरह)।a=3.6&b=4.8
) औरapplication/jsonrequest
(जो प्रकार के समतुल्य होगाapplication/json
जिसके बारे में बात की गई हैAccept
) जब अधिक जटिल संरचना आवश्यक हो, लेकिन निम्नलिखित में से कोई भी भेजा जा सकता है MIME प्रकारों की सूची. -
Cookie
इसका उपयोग एक सत्र पहचानकर्ता को जोड़ने के लिए किया जाता है जिसके साथ स्थानांतरण (क्वेरी, प्रतिक्रिया, क्वेरी ...) की एक श्रृंखला को बनाए रखना होता है जो एक एकल अनुरोध से अधिक जटिल होता है जिसके साथ कुछ संबंधित डेटा भेजना होता है लेकिन अलग-अलग समय पर प्राप्त किया जाता है। -
Referer
वह URL जिसने POST अनुरोध उत्पन्न किया, उदाहरण के लिए वह वेब पेज जहां से इसे भेजा गया था। IoT के लिए उपयोग किए जाने के मामले में, यह प्रासंगिक जानकारी नहीं जोड़ता है क्योंकि जानकारी सीधे पिछले पृष्ठ के बिना भेजी जाती है, इसलिए इसका अक्सर उपयोग नहीं किया जाता है। -
User-Agent
उस डिवाइस की रिपोर्ट करता है जो अनुरोध करता है। सामान्य वेब ट्रैफ़िक में, इंटरनेट ऑफ़ थिंग्स में उपयोग किया जाने वाला ब्राउज़र सर्वर को अनुरोध करने वाले इलेक्ट्रॉनिक डिवाइस के प्रकार को इंगित करने की अनुमति देता है। सर्वर पर स्वयं की पहचान करने से प्रत्येक मामले में प्रतिक्रिया को अलग-अलग स्वरूपित किया जा सकता है, उदाहरण के लिए, एक ब्राउज़र में एक जटिल वेब पेज और एक छोटे IoT डिवाइस पर कुछ चेतावनी डेटा लौटाना।
यह इंगित करने के लिए कि कई अलग-अलग मान एक साथ समर्थित हैं, हेडर में एकल मान के बजाय विकल्पों की अल्पविराम से अलग की गई सूची निर्दिष्ट करना संभव है। इन मानों में प्राथमिकता का क्रम हो सकता है जो प्रत्येक के लिए गुणवत्ता गुणांक q के अनुसार व्यक्त किया जाता है। गुणवत्ता गुणांक को अर्धविराम (;) द्वारा अलग किया जाता है और तारांकन (*) का उपयोग किसी भी प्रकार या उपप्रकार को संदर्भित करने के लिए भी किया जा सकता है।
Accept: text/plain,text/xml,application/json;q=0.8,text/*;q=0.9,application/json
पिछले उदाहरण में प्रारूप की प्राथमिकता JSON सबसे बड़ा (0.9) सादा पाठ और स्वरूपित पाठ का है। एक्सएमएल, जो विनिर्देशन को पूरा करते हैं text/*
, छोटा (0.8) है और उनके बीच बराबर है। यदि संभव हो, तो सर्वर को प्रतिक्रिया को एन्कोड करके प्रतिक्रिया देनी चाहिए JSON.
अधिक संपूर्ण POST अनुरोध के निम्नलिखित उदाहरण में, सर्वर का /iot/grabar_temperatura पृष्ठ, जिसे pollaridad.es कहा जाता है, HTTP प्रोटोकॉल के संस्करण 1.1 का उपयोग करके एक्सेस किया जाता है। क्लाइंट, जिसे Sensoreitor-2000 कहा जाता है, एन्कोडेड डेटा भेजता है JSON, प्रारूप में सादे पाठ के रूप में प्रतिक्रिया की अपेक्षा करें UTF-8 संपीड़न का उपयोग किए बिना स्पेन से स्पैनिश का उपयोग करना, जो, वैसे, इंगित करना आवश्यक नहीं है। सर्वर पर भेजा गया डेटा 65 बाइट्स लेता है। प्रतिक्रिया भेजते समय क्लाइंट और सर्वर के बीच कनेक्शन बंद हो जाएगा।
1
2
3
4
5
6
7
8
9
10
11
12
|
POST /iot/grabar_temperatura HTTP/1.1
Host: polaridad.es
Accept: text/plain
Accept–Charset: utf–8
Accept–Encoding: identity
Accept–Language: es–ES
Connection: close
Content–Length: 65
Content–Type: application/jsonrequest
User–Agent: Sensoreitor–2000
{“estancia”:“pasillo superior”,“temperatura”:22.5,“consumo”:2.25}
|
निम्नलिखित लेख बताता है IoT ऑब्जेक्ट द्वारा भेजी गई जानकारी को संग्रहीत करने के लिए MySQL डेटाबेस को कैसे कॉन्फ़िगर करें
टिप्पणी पोस्ट