اینترنت اشیا IOT برد ESP8266 برد Nodemcu برد ویموس Wemos

راه اندازی و کار با ماژول ESP8266، قسمت دهم: متد POST انتقال دیتا

نوشته شده توسط معین صابری

در سلسله آموزش های ماژول ESP8266، قسمت دهم به متد POST و تبادل داده از طریق این روش می پردازیم. در قسمت پیشین متد GET و نحوه تبادل داده از طریق این روش را در ماژول ESP بررسی کردیم. در این آموزش به توابع و دستورات برنامه نویسی آردوینو جهت استفاده از متد POST می پردازیم. متد POST یکی از متدهای پروتکل HTTP جهت ارسال و دریافت داده است. این متد بر خلاف متد GET، داده ها را از سمت سرور cach نکرده و این موضوع سبب می شود تا همیشه بروز ترین داده ها از سرور دریافت گردد. دراین آموزش نحوه استفاده از این متد را مورد بررسی قرار می دهیم.  در ادامه این آموزش، با مرجع تخصصی ESP8266 به زبان فارسی، دیجی اسپارک، همراه باشید.

 


متد POST تعریف و کاربرد


متد POST یکی از مهم ترین و پرکاربردترین متدها جهت تبادل داده در پروتکل HTTP است. این متد که عملکردی بسیار شبیه به متد GET دارد، قادر به ارسال داده ها به سرور و دریافت پاسخ از سرور است. در مروگرها، متد POST بر خلاف متد GET، آدرس مسیر ارسال داده ها را از دید کاربر پنهان می کند. بدین ترتیب امنیت تبادل داده افزایش می یابد. البته این موضوع در پردازنده های ESP که بحث مرورگر مطرح نیست، موضوعیت ندارد. در اینجا، زمان کار با سرورهای اینترنتی و تبادل داده در فضای وب، متد POST اهمیتی بیش از پیش پیدا می کند. با توجه به اینکه معمولا سرورها دارای حافظه کش هستند، بنابراین استفاده از متد POST بسیار حائز اهمیت است. این متد داده ای را کش نمی کند و در ارتباط بین سرور و ماژول ESP، بسیار کاربردی است. جهت ارسال و دریافت داده در متد POST، می بایست همانند متد GET آدرس سرور، شماره پورت و آدرس صفحه ای که مسئول دریافت داده است تعیین شود.

 

مطابق تصویر فوق می توانیم داده ها را به سرور ارسال کرده و همانند متد GET، از سرور پاسخ دریافت کنیم. این پاسخ می تواند یک پیام متنی، فرمان خاموش/روشن شدن رله و …. باشد. در متد POST بر خلاف متد GET، از آنجاییکه داده ها در سمت سرور کش نمی شوند، لذا همواره بروزترین داده ها از سررور دریافت می گردد. در این آموزش به شرح توابع و دستورات متد POST پرداخته و سپس ضمن یک مثال عملی، نحوه کار با آن را مشاهده می کنیم.

 


توابع آردوینو متد POST


همانطور که پیشتر نیز گفته شد، استفاده از متد POST روندی کاملا مشابه متد GET دارد. در اینجا نیز می بایست آدرس، شماره پورت و مسیر صفحه ای که قرار به ارسال داده است، تعیین شود. برای این منظور ابتدا باید کتابخانه کلاینت را فراخوانی نماییم.

#include <ESP8266HTTPClient.h

 

پس از اضافه نمودن کتابخانه، می بایست ارسال و دریافت داده را با تعریف یک شی از کلاس کتابخانه HTTPClient به صورت زیر شروع کنیم.

HTTPClient client

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


نمونه برنامه


در این قسمت به ارائه یک نمونه برنامه می پردازیم. در این برنامه ماژول ESP به صورت STA تعریف شده تا به یک مودم خانگی متصل شود. پس از اتصال و دریافت آی پی، به سروری با آدرس example.com متصل شده و داده ها را ارسال می نماید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


لوازم مورد نیاز


مبدل سریال به USB

ماژول ESP8266-12E

ماژول مبدل SMD به DIP

 


جمع بندی


در سلسله آموزش های ماژول ESP8266، در قسمت دهم به متد POST و نحوه ارسال داده تحت این متد به کمک دستورات آردوینو پرداختیم. متد POST یکی از مهم ترین و کلیدی ترین متدها تحت پروتکل HTTP جهت تبادل داده است. این متد که شبیه به متد GET استفاده می شود، قادر به ارسال داده ها به سرور و دریافت پاسخ از سرور است. در این آموزش به تعریف این متد، نحوه کار با آن و دستورات آردوینو جهت کار با آن پرداختیم. در نهایت با ارائه یک برنامه، نحوه تبادل داده را به صورت عملی مشاهده کردیم.

 

چنانچه مطالب این آموزش را گنک یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده و یا کدها وجود دارد می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۵ دیدگاه

  • سلام
    ممنون از شما برای این پروژه
    در طرف سرور چه کدی باید نوشت؟
    یعنی روی هاست چه php باید آپلود کرد؟

  • سلام وخسته نباشید
    اگه میشه یه راهنمایی درمورد ارسال دیتا با ماژول ESP8266-01 به‌ گوشی اندرویدی برای نمایش حالت تصویر در یک نرم‌افزار D3 ویژلایزر نمایید ممنونم از لطفتون

  • سلام وقت بخیر
    امکانش هست راهنمایی کنید مشکل برنامه چی هست
    sketch_nov16aaaa:16:13: error: call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
    ۱۶ | http.begin(“http://example.com/data_st”); //ایجاد url برای ارسال داده ها در اینجا فرض کرده ایم که آدرس صفحه دریافت کننده داده در سرور، data_st است.
    | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    exit status 1
    call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)

    • سلام
      با توجه به باگ های قبلی کتابخانه، در ورژن جدید باید به صورت زیر عمل کنید:
      WiFiClient wifi;
      http.begin(wifi,“http://example.com/data_st”)