در آموزش های قبلی ثبت نام در وب پنل اینترنت اشیاء و کار با نرم افزار MQTTBOX آموزش داده شد. در این مقاله قصد داریم تا اتصال به سرور پلتفرم اینترنت اشیاء از طریق ماژول ESP8266 را آموزش دهیم.
برای تست ابتدا در وب پنل https://cloud.iotplus.ir با نام کاربری که همان شماره همراه ثبت نام شده می باشد لوگین کنید، سپس در قسمت “کانال های ارتباطی” یک کانال ارتباطی ایجاد نمایید.
شکل کلی کانال ایجاد شده مثلا بصورت “0912xxxxxxx/ch1” می باشد.

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

برای ایجاد ویجت کاربری در منوی سمت راست به قسمت “ابزارها (Widgets)” وارد شوید، برای این آموزش ابزار دیباگر را به دستگاه اضافه نمایید. این ابزار برای نمایش تمام پیام های وارد شده و اسال پیام استفاده می شود.
** دقت کنید : سعی کنید دستورات ارسالی برای کار با وب پنل را بصورت JSON بنویسید، آموزش این نوع رشته حرفی در پست های قبل داد شده، لطفا مطالعه بفرمایید.
کد و کامپایل Arduino Ide برای اتصال به پلتفرم اینترنت اشیاء
برای نوشتن کد اتصال به سرور ESP شما نیاز به اطلاعات ارتباطی به پلتفرم اینترنت اشیاء یا کلود را دارید، جهت دریافت اطلاعات اتصال به سرور در وب پنل به قسمت “اطلاعات ارتباطی” وارید شود.

در این قسمت اطلاعات به صورت کد زیر جهت استفاده در IDE آردینو بنویسید :
1 2 3 4 5 6 7 8 9 |
// cloud webpanel in right menu "Connection Information" const char* host = "cloud.iotplus.ir"; const uint16_t port = 3033; //=======user login information======= const char* username = "yourpanel username"; const char* password = "yourpanel password"; //=========Channel Address ========== const char* device_channel_address="09xxxxxxxxx/ch1"; |
در نهایت نمونه کد زیر جهت تست اربتاط به پلتفرم کامپایل و روی برد NodeMcu یا ESP8266 پروگرم کنید. دقت نمایید در پارامترهای تعریف شده، موارد مورد نیاز را که بصورت پارامتر تعریف شده اصلاح نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
//#######IOTPLUS.IR############################### //##Connect ESP8266 (NODEMCU ) TO IOTPLUS Cloud### //########iotplus.ir the best Iranian MQTT Cloud## //####Wirten By M.Hasani########################## ///========Library===============================// #include <arduino.h> #include <IPAddress.h> #include <ESP8266WiFi.h> #include <ESP8266WiFiGeneric.h> #include <PubSubClient.h> WiFiClient client; PubSubClient mqt(client); //=======Define Parameters=======/// const char* ssid = "WifiName"; //-->edit this const char* ssid_password = "wifi password";//-->edit this //===cloud connection data you cand view this information on your // cloud webpanel in right menu "Connection Information" const char* host = "cloud.iotplus.ir"; const uint16_t port = 3033; //=======user login information======= const char* username = "webpanel username"; //-->edit this const char* password = "webpanel password"; //-->edit this const char* device_channel_address="channel on your webpanel"; //-->edit this int temp=0; bool _flagsubs=false; unsigned long recTimeout; //===Call back receive Messages===== void MqttCallBack(char* topic, byte* payload, unsigned int length) { // handle message arrived String msg; for (int i=0;i<length;i++){ msg.concat((char)payload[i]); } Serial.print("Mqtt message recieve: "); Serial.println(msg); } void subscribeToChannel(String topic){ Serial.print("Connected to=> "); Serial.println(host); Serial.print("Subscribe to Channel Address=> "); Serial.println(topic); mqt.subscribe(topic.c_str()); } void reconnect(){ //======Waite and connect to host again after 5 second...... if (millis()>(recTimeout+5000)){ Serial.println("Recconnect to cloud..."); //Not: Connection id should be random for any user---please generate random string String Id=username; Id.concat("AB001"); ///just any word you want should be random--> i build complex with your username----> 0912xxxxxxxAB001 mqt.connect(Id.c_str(),username,password); recTimeout=millis(); } } void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println("MQTT Cloud https://iotplus.ir"); Serial.println("Initialing..."); Serial.print("Connecting to => "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, ssid_password); //loop for check wifi connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Config MQTT Setting..."); mqt.setServer(host,port); mqt.setCallback(MqttCallBack); //Not: Connection id should be random for any user---please generate random string String Id=username; Id.concat("AB001"); ///just any word you want should be random--> i build complex with your username----> 0912xxxxxxxAB001 Serial.println("Start Connecting to cloud..."); mqt.connect(Id.c_str(),username,password); } void loop() { //loop check mqtt connection mqt.loop(); if (!mqt.connected()){ ///reconnect to server and sunscribe reconnect(); _flagsubs = false; }else if(mqt.connected() && _flagsubs==false) { _flagsubs = true; subscribeToChannel(device_channel_address); } } |
خروجی ترمینال بعد از اتصال به کلود و سابسکرایب شدن به کانال وب پنل بصورت زیر خواهد بود.

ویدی آموزش این پست نیز به زودی آپلودخواهد شد.