|
編了幾個(gè)用于OneNet上傳數(shù)據(jù)和獲取數(shù)據(jù)的函數(shù),貢獻(xiàn)出來(lái)
個(gè)人感覺(jué)使用官方的庫(kù)比較占內(nèi)存,太多的功能和函數(shù)其實(shí)用不上,所以就自己編了幾個(gè)實(shí)用的函數(shù),貢獻(xiàn)出來(lái)
歡迎大家積極實(shí)用OneNet。 - void setup() {
- // put your setup code here, to run once:
- #define WiFi_Port Serial3
- #define Debug_Port Serial
- }
- void loop() {
- // put your main code here, to run repeatedly:
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于向OneNet發(fā)送數(shù)據(jù),根據(jù)你的需要可以隨意發(fā)送同一個(gè)設(shè)備下的n個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn)。本函數(shù)無(wú)返回值。 //
- //***********************************************************************************************************************//
- //本函數(shù)需要調(diào)用函數(shù):String build_Post_HTTP_Header(unsigned long Device, String Host, String Key) //
- //他用來(lái)構(gòu)造 HTTP頭字符串 //
- //其中 Device 為OneNet上的設(shè)備,為無(wú)符號(hào)長(zhǎng)整數(shù)型; //
- //Host 為OneNet的HTTP主機(jī)"api.heclouds點(diǎn)com",可以定義為一個(gè)字符串再引,也可直接使用; //
- //Key 為 OneNet上對(duì)應(yīng)設(shè)備的Apikey,或用戶的Masterkey,為字符串型 //
- //***********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) Make_Post_Json(),這是用于構(gòu)造相應(yīng)Json字符串的函數(shù); //
- //***********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) returnmsg_ok_conWiFi();這個(gè)函數(shù)是判斷是否完成了TCP連接; //
- //***********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) returnmsgWiFi();主要是為了查看WiFi模塊是否正確接受了發(fā)送的數(shù)據(jù)以及回顯情,如不需要可用//來(lái)注銷(xiāo); //
- //***********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) returnmsg_ok_finishWiFi();主要是用來(lái)判斷OneNet是否返回了正確信息 //
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- void Post_Data()
- {
- String Send_info = build_Post_HTTP_Header(131278, "api.heclouds點(diǎn)com", "b6724PQP4FEVVI3sqMb3QIHh6boA" );
- int len = Send_info.length() + Make_Post_Json().length() + 4; //計(jì)算總長(zhǎng)度,如用透?jìng)鲃t不需要,+4是加的 WiFi_Port.print("\r\n\r\n"); 兩個(gè)換行和兩個(gè)回車(chē);
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- delay(500);
- WiFi_Port.print("AT+CIPSEND=");
- returnmsgWiFi();
- WiFi_Port.println(len);
- returnmsgWiFi();
- delay(500);
- WiFi_Port.print(Send_info);
- returnmsgWiFi();
- WiFi_Port.print(Make_Post_Json());
- returnmsgWiFi();
- WiFi_Port.print("\r\n\r\n");
- returnmsg_ok_finishWiFi();
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于構(gòu)造一個(gè)Json數(shù)據(jù)串 //
- //本函數(shù)需要調(diào)用函數(shù):String Build_Json (String ID, long Value) //
- //其中ID 為OneNet上的設(shè)備中”數(shù)據(jù)流“ID,為字符串型; //
- //Value 為對(duì)應(yīng)的數(shù),為長(zhǎng)整數(shù)型; //
- //他的返回值為構(gòu)造好的,包含一數(shù)據(jù)流的數(shù)據(jù)點(diǎn)Json數(shù)據(jù)串; //
- //***************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) String ADD_Post_JsonPar(String Json, String ID, long Value) //
- //他是用來(lái)給已構(gòu)造好的Json數(shù)據(jù)串增加一個(gè)數(shù)據(jù)流數(shù)據(jù)點(diǎn); //
- //Json 為前面已構(gòu)造好的一個(gè)完整Json數(shù)據(jù),ID為需要增加的數(shù)據(jù)流的ID, Value為對(duì)用的數(shù)據(jù); //
- //他的返回值為構(gòu)造好的含有多個(gè)數(shù)據(jù)流數(shù)值的Json串 //
- //***************************************************************************************************************//
- //如需增加多個(gè)數(shù)據(jù)流的數(shù)據(jù),只需多次調(diào)用函數(shù) String ADD_Post_JsonPar(String Json, String ID, long Value) //
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- String Make_Post_Json()
- {
- String _Json = Build_Post_Json("A01", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A02", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A03", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A04", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A05", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A06", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A07", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A08", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A09", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A10", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A11", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A12", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A13", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A14", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A15", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A16", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A17", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A18", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A19", random(1000));
- _Json = ADD_Post_JsonPar(_Json, "A20", random(1000));
- return _Json;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于構(gòu)造一個(gè)只包含一個(gè)數(shù)據(jù)流數(shù)據(jù)點(diǎn)的基本Json數(shù)據(jù)串 //
- //其中ID 為OneNet上的設(shè)備中”數(shù)據(jù)流“ID,為字符串型; //
- //Value 為對(duì)應(yīng)的數(shù),為長(zhǎng)整數(shù)型; //
- //他的返回值為構(gòu)造好,包含一數(shù)據(jù)流的數(shù)據(jù)點(diǎn)數(shù); //
- //形成Json數(shù)據(jù)串如此例:{"datastreams":[{"id":"TEMP","datapoints":[{"value":12345 }]}]} // //
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
- String Build_Post_Json (String ID, long Value)
- {
- String _Value = Value + String("");
- String _Json = "{\"datastreams\":[{\"id\":\"";
- _Json += ID;
- _Json += "\",\"datapoints\":";
- _Json += "[{\"value\":";
- _Json += _Value;
- _Json += "}]}]}";
- return _Json;
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用來(lái)給已構(gòu)造好的Json數(shù)據(jù)串增加一個(gè)數(shù)據(jù)流數(shù)據(jù)點(diǎn); //
- //Json 為前面已構(gòu)造好的一個(gè)完整Json數(shù)據(jù),ID為需要增加的數(shù)據(jù)流的ID, Value為對(duì)用的數(shù)據(jù); //
- //他的返回值為構(gòu)造好的含有多個(gè)數(shù)據(jù)流數(shù)值的Json串 //
- //*************************************************************************************************************************************//
- //如需增加多個(gè)數(shù)據(jù)流的數(shù)據(jù),只需多次調(diào)用函數(shù) String ADD_Post_JsonPar(String Json, String ID, long Value) //
- //形成Json數(shù)據(jù)串如此例:{"datastreams":[{"id":"TEMP","datapoints":[{"value":45 }]},{"id":"HUMI","datapoints":[{"value":32 }]}]} // //
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- String ADD_Post_JsonPar(String Json, String ID, long Value)
- {
- int LENS = Json.length();
- String _Json = Json.substring(0, LENS - 2); //-2是先去掉最后兩個(gè)字符“]}",然后追加”,"以及需要增加的ID的對(duì)應(yīng)Json字符串,并加回"]}",夠造成一個(gè)完整的Json數(shù)據(jù)串
- _Json += +",{\"id\":\"";
- _Json += ID;
- _Json += "\",\"datapoints\":";
- _Json += "[{\"value\":";
- String _Value = Value + String("");
- _Json += _Value;
- _Json += "}]}]}";
- return _Json;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于構(gòu)造POST HTTP頭字符串 //
- //其中 Device 為OneNet上的設(shè)備,為無(wú)符號(hào)長(zhǎng)整數(shù)型; //
- //Host 為OneNet的HTTP主機(jī)"api.heclouds點(diǎn)com",可以定義為一個(gè)字符串再引,也可直接使用; //
- //Key為 OneNet上對(duì)應(yīng)設(shè)備的Apikey,或用戶的Masterkey,為字符串型 //
- //**************************************************************************************************************//
- //形成的HTTP頭字符串如下: //
- //POST http://api.heclouds點(diǎn)com/devices/77654/datapoints HTTP/1.1\r\n “\r\n”代表一個(gè)回車(chē)一個(gè)換行,兩個(gè)字符 //
- //Host: api.heclouds點(diǎn)com\r\n //
- //api-key: asdjoiSKFMdmcdslk1398247\r\n //
- //Connection: close\r\n //
- //Content-Length: 68\r\n\r\n 這里要兩次回車(chē)換行 //
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- String build_Post_HTTP_Header(unsigned long Device, String Host, String Key)
- {
- String _Device = String("") + Device;
- int Lens = Make_Post_Json().length();
- String _lens = Lens + String("");
- String HTTP_Header = "POST http://api.heclouds點(diǎn)com/devices/" + _Device + "/datapoints HTTP/1.1\r\n";
- HTTP_Header = HTTP_Header + "Host: " + Host + "\r\n";
- HTTP_Header = HTTP_Header + "api-key: " + Key + "\r\n" ;
- HTTP_Header = HTTP_Header + "Connection: close" + "\r\n" ;
- HTTP_Header = HTTP_Header + "Content-Length: " + _lens + "\r\n\r\n";
- return HTTP_Header;
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于向OneNet獲取(GET)一個(gè)或n個(gè)數(shù)據(jù)流的當(dāng)前數(shù)據(jù)點(diǎn),返回值為返回的Json字符串。 //
- //*********************************************************************************************************************//
- //本函數(shù)需要調(diào)用函數(shù):String build_Post_HTTP_Header(unsigned long Device, String Host, String Key) //
- //他用來(lái)構(gòu)造 HTTP頭字符串 //
- //其中 Device 為OneNet上的設(shè)備,為無(wú)符號(hào)長(zhǎng)整數(shù)型; //
- //Host 為OneNet的HTTP主機(jī)"api.heclouds點(diǎn)com",可以定義為一個(gè)字符串再引,也可直接使用; //
- //Key 為 OneNet上對(duì)應(yīng)設(shè)備的Apikey,或用戶的Masterkey,為字符串型 //
- //*********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) Make_GET_Json(),這是用于構(gòu)造相應(yīng)Json字符串的函數(shù); //
- //*********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) returnmsg_ok_conWiFi();這個(gè)函數(shù)是判斷是否完成了TCP連接; //
- //*********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) returnmsgWiFi();主要是為了查看WiFi模塊是否正確接受了發(fā)送的數(shù)據(jù)以及回顯情,如不需要可用//來(lái)注銷(xiāo); //
- //*********************************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) returnmsg_GET_S_WiFi();主要是用來(lái)生成返回值字符 //
- //他的返回值就是包含相應(yīng)數(shù)據(jù)流當(dāng)前數(shù)據(jù)點(diǎn)值的Json數(shù)據(jù)串 //
- //*********************************************************************************************************************//
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- String GET_Datapoints()
- {
- int len = Make_GET_Json().length() + 4; //計(jì)算總長(zhǎng)度,如用透?jìng)鲃t不需要,+4是加的 WiFi_Port.print("\r\n\r\n"); 兩個(gè)換行和兩個(gè)回車(chē);
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- delay(1000);
- WiFi_Port.print("AT+CIPSEND=");
- returnmsgWiFi();
- WiFi_Port.println(len);
- returnmsgWiFi();
- delay(1000);
- WiFi_Port.print(Make_GET_Json());
- returnmsgWiFi();
- WiFi_Port.print("\r\n\r\n");
- String _ResulT = returnmsg_GET_S_WiFi();
- WiFi_Port.println("AT+CIPCLOSE");
- return _ResulT;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于分析String GET_Datapoints()取回的數(shù)據(jù)流的數(shù)據(jù)點(diǎn) //
- //_Result為String GET_Datapoints()函數(shù)取回的結(jié)果; //
- //_Stream為想要分析的數(shù)據(jù) //
- //返回值為對(duì)應(yīng)的數(shù)據(jù)流的相應(yīng)數(shù)值 //
- //如需分析多個(gè)數(shù)據(jù),調(diào)用多次即可 //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- int Analyze_GET_Result(String _Result, String _Stream)
- {
- int _No1 = _Result.indexOf(_Stream);
- String _SubS1 = _Result.substring(_No1 - 22, _No1 - 3);
- int _No2 = _SubS1.indexOf(":");
- int _No3 = _SubS1.indexOf("}");
- String _SubS2 = _SubS1.substring(_No2 + 2, _No3 - 1);
- int _n = atoi(_SubS2.c_str());
- return _n;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于構(gòu)造一個(gè)包含一個(gè)或多個(gè)數(shù)據(jù)流數(shù)據(jù)點(diǎn)的GETJson數(shù)據(jù)串 //
- //本函數(shù)需要調(diào)用函數(shù):String Build_GET_HTTP (String ID, String Key, long Device, String Host) //
- //其中ID 為OneNet上的設(shè)備中”數(shù)據(jù)流“ID,為字符串型; //
- //其中 Device 為OneNet上的設(shè)備,為無(wú)符號(hào)長(zhǎng)整數(shù)型; //
- //Host 為OneNet的HTTP主機(jī)"api.heclouds點(diǎn)com",可以定義為一個(gè)字符串再引,也可直接使用; //
- //Key 為 OneNet上對(duì)應(yīng)設(shè)備的Apikey,或用戶的Masterkey,為字符串型 //
- //他的返回值為構(gòu)造好的,包含相應(yīng)數(shù)據(jù)流的數(shù)據(jù)點(diǎn)Json數(shù)據(jù)串; //
- //******************************************************************************************************//
- //本函數(shù)還調(diào)用函數(shù) String ADD_GET_HTTP_Par(String Json, String ID) //
- //他是用來(lái)給已構(gòu)造好的Json數(shù)據(jù)串增加一個(gè)數(shù)據(jù)流數(shù)據(jù)點(diǎn); //
- //Json 為前面已構(gòu)造好的一個(gè)完整Json數(shù)據(jù),ID為需要增加的數(shù)據(jù)流的ID; //
- //他的返回值為構(gòu)造好的含有多個(gè)數(shù)據(jù)流數(shù)值的Json串 //
- //******************************************************************************************************//
- //如需GET多個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),只需多次調(diào)用函數(shù) String ADD_GET_HTTP_Par(String Json, String ID) //
- //******************************************************************************************************//
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- String Make_GET_Json()
- {
- String _GET_HTTP= Build_GET_HTTP ("T001", "ankjsdvndfrehvngjoitre13290", 46788, "api.heclouds點(diǎn)com");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T002");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T003");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T004");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T005");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T006");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T006");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T007");
- _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T008");
- return _GET_HTTP;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于構(gòu)造 GET 數(shù)據(jù)流數(shù)據(jù)點(diǎn)的Json字符串 //
- //其中 Device 為OneNet上的設(shè)備,為無(wú)符號(hào)長(zhǎng)整數(shù)型; //
- //Host 為OneNet的HTTP主機(jī)"api.heclouds點(diǎn)com",可以定義為一個(gè)字符串再引,也可直接使用; //
- //Key為 OneNet上對(duì)應(yīng)設(shè)備的Apikey,或用戶的Masterkey,為字符串型 //
- //ID為需要獲取數(shù)據(jù)點(diǎn)的數(shù)據(jù)流的ID //
- //返回值為構(gòu)造好的GET HTTP頭和Json的組合。 //
- //*******************************************************************************************//
- //他的返回Json數(shù)據(jù)串如下: //
- // GET /devices/54365/datapoints?datastream_id=K1 HTTP/1.1\r\n //
- //Host: api.heclouds點(diǎn)com\r\n //
- //api-key: asdjoiSKFMdmcdslk1398247\r\n //
- ///////////////////////////////////////////////////////////////////////////////////////////////
- String Build_GET_HTTP (String ID, String Key, long Device, String Host)
- {
- String _Device = Device + String("");
- String _HTTP = "GET /devices/" + _Device + "/datapoints?datastream_id=" + ID + " HTTP/1.1\r\n";
- _HTTP = _HTTP + "Host: " + Host + "\r\n";
- _HTTP = _HTTP + "api-key:" + Key + "\r\n";
- return _HTTP;
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于對(duì)構(gòu)造好的包含一個(gè)數(shù)據(jù)流數(shù)據(jù)點(diǎn)的GET HTTP頭和Json字符串組合,增加一個(gè)需要讀取的數(shù)據(jù)流 //
- //Json 為前面已構(gòu)造好的一個(gè)完整Json數(shù)據(jù),ID為需要增加的數(shù)據(jù)流的ID ; //
- //返回值為增加一個(gè)數(shù)據(jù)流后的GET HTTP頭和Json字符串組合 //
- //****************************************************************************************************//
- //如需增加多個(gè)數(shù)據(jù)流的數(shù)據(jù),只需多次調(diào)用函數(shù) String ADD_HTTPPar(String Json, String ID) //
- //****************************************************************************************************//
- //他的返回Json數(shù)據(jù)串如下: //
- // GET /devices/54365/datapoints?datastream_id=K1,K2 HTTP/1.1\r\n //
- //Host: api.heclouds點(diǎn)com\r\n //
- //api-key: asdjoiSKFMdmcdslk1398247\r\n //
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
- String ADD_GET_HTTP_Par(String Json, String ID)
- {
- int _Lens = Json.length();
- int _Point1 = Json.indexOf(" HTTP/1.1");
- String SubString1 = Json.substring(0, _Point1);
- String SubString2 = Json.substring(_Point1, _Lens);
- String _HTTP = Json.substring(0, _Point1);
- _HTTP += ",";
- _HTTP += ID;
- _HTTP += Json.substring(_Point1, _Lens);
- return _HTTP;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)生成GET命令返回的信息字符串用于后續(xù)的分析 //
- //如大于3分鐘未返回結(jié)束信息則認(rèn)為超時(shí)失敗,執(zhí)行AT+CIPCLOSE,強(qiáng)行關(guān)閉TCP連接 //
- //判斷是否結(jié)束的關(guān)鍵字是"\"error\":\"succ\"}" //
- //返回值為系統(tǒng)返回的Json 數(shù)據(jù)串 //
- ///////////////////////////////////////////////////////////////////////////////////////////////
- String returnmsg_GET_S_WiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 180000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
- return "false";
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- // Debug_Port.println(TEMPdata);
- delayMicroseconds(500);
- }
- if (_TEMPdata.indexOf("\"error\":\"succ\"}") > 3)
- {
- Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- return _TEMPdata;
- }
- }
- }
- //********************************************************** OneNet WiFi send Data *******************************************************************************************************
- /////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為整數(shù)類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid 對(duì)應(yīng)數(shù)據(jù)流的ID,thisData 對(duì)應(yīng)數(shù)據(jù)流的數(shù)值 //
- /////////////////////////////////////////////////////////////////////////////////////////////
- //
- void sendDataWiFi(String APIkey, int thisData, unsigned long deviceid ,String Host, String sensorid)
- {
- int l = getLength(thisData);
- int D = getLength(deviceid);
- int S = sensorid.length();
- int lenss = 53 + S + l;
- int lll = getLength(lenss);
- int lens = 214 + D + S + l + lll;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n"); returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("{\"datastreams\":[{\"id\":\"");
- WiFi_Port.print(sensorid);
- returnmsgWiFi();
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- returnmsgWiFi();
- WiFi_Port.print(thisData);
- WiFi_Port.print("}]}]}");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send 2 Data *******************************************************************************************************
- /////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為整數(shù)類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid1 對(duì)應(yīng)數(shù)據(jù)流1的ID,Data1 對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- // sensorid2 對(duì)應(yīng)數(shù)據(jù)流2的ID,Data2 對(duì)應(yīng)數(shù)據(jù)流2的數(shù)值 //
- /////////////////////////////////////////////////////////////////////////////////////////////
- void send2DataWiFi(String APIkey, int Data1, int Data2, unsigned long deviceid,String Host, String sensorid1 , String sensorid2)
- {
- int l1 = getLength(Data1);
- int l2 = getLength(Data2);
- int D = getLength(deviceid);
- int S1 = sensorid1.length();
- int S2 = sensorid2.length();
- int lenss = 53 + 36 + S1 + l1 + S2 + l2; //增加一個(gè)數(shù)據(jù)流Lenss固定長(zhǎng)度需要增加36;
- int l3 = getLength(lenss);
- int lens = 214 + 36 + D + S1 + l1 + S2 + l2 + l3; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- ////////////////////////////////////////////////////////////////////sensor data
- WiFi_Port.print("{\"datastreams\":[");
- ///////////////////////////////////////////////////////////////////sensor1
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid1);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data1);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid2);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data2);
- WiFi_Port.print("}]}");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor end
- WiFi_Port.print("]}");
- ////////////////////////////////////////////////////sensor data end
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send 3 Data *******************************************************************************************************
- /////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為整數(shù)類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid1 對(duì)應(yīng)數(shù)據(jù)流1的ID,Data1 對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- // sensorid2 對(duì)應(yīng)數(shù)據(jù)流2的ID,Data2 對(duì)應(yīng)數(shù)據(jù)流2的數(shù)值 //
- // sensorid3 對(duì)應(yīng)數(shù)據(jù)流3的ID,Data3 對(duì)應(yīng)數(shù)據(jù)流3的數(shù)值 //
- /////////////////////////////////////////////////////////////////////////////////////////////
- void send3DataWiFi(String APIkey, int Data1, int Data2, int Data3, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3)
- {
- int l1 = getLength(Data1);
- int l2 = getLength(Data2);
- int l3 = getLength(Data3);
- int D = getLength(deviceid);
- int S1 = sensorid1.length();
- int S2 = sensorid2.length();
- int S3 = sensorid3.length();
- int lenss = 53 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3; //增加一個(gè)數(shù)據(jù)流Lenss固定長(zhǎng)度需要增加36,增加2個(gè)數(shù)據(jù)流需要增加2次36;
- int lll = getLength(lenss);
- int lens = 214 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加2個(gè)數(shù)據(jù)流需要增加2次36;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- delay(00);
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: "); returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: "); returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- ////////////////////////////////////////////////////////////////////sensor data
- WiFi_Port.print("{\"datastreams\":[");
- ///////////////////////////////////////////////////////////////////sensor1
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid1);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data1);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid2);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data2);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid3);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data3);
- WiFi_Port.print("}]}");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor end
- WiFi_Port.print("]}");
- ////////////////////////////////////////////////////sensor data end
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send 4 Data *******************************************************************************************************
- /////////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為整數(shù)類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid1 對(duì)應(yīng)數(shù)據(jù)流1的ID,Data1 對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- // sensorid2 對(duì)應(yīng)數(shù)據(jù)流2的ID,Data2 對(duì)應(yīng)數(shù)據(jù)流2的數(shù)值 //
- // sensorid3 對(duì)應(yīng)數(shù)據(jù)流3的ID,Data3 對(duì)應(yīng)數(shù)據(jù)流3的數(shù)值 //
- // sensorid4 對(duì)應(yīng)數(shù)據(jù)流4的ID,Data4 對(duì)應(yīng)數(shù)據(jù)流4的數(shù)值 //
- /////////////////////////////////////////////////////////////////////////////////////////////
- void send4DataWiFi(String APIkey, int Data1, int Data2, int Data3, int Data4, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3, String sensorid4)
- {
- int l1 = getLength(Data1);
- int l2 = getLength(Data2);
- int l3 = getLength(Data3);
- int l4 = getLength(Data4);
- int D = getLength(deviceid);
- int S1 = sensorid1.length();
- int S2 = sensorid2.length();
- int S3 = sensorid3.length();
- int S4 = sensorid4.length();
- int lenss = 53 + 36 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一個(gè)數(shù)據(jù)流Lenss固定長(zhǎng)度需要增加36,增加3個(gè)數(shù)據(jù)流需要增加3次36;
- int lll = getLength(lenss);
- int lens = 214 + 36 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加3個(gè)數(shù)據(jù)流需要增加3次36;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- delay(00);
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- ////////////////////////////////////////////////////////////////////sensor data
- WiFi_Port.print("{\"datastreams\":[");
- ///////////////////////////////////////////////////////////////////sensor1
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid1);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data1);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid2);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data2);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor3
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid3);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data3);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor4
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid4);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data4);
- WiFi_Port.print("}]}");
- returnmsgWiFi();
- //////////////////////////////////////////////////////////////sensor end
- WiFi_Port.print("]}");
- ////////////////////////////////////////////////////sensor data end
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send Data *******************************************************************************************************
- /////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送一個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為字符數(shù)組類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid 對(duì)應(yīng)數(shù)據(jù)流1的ID,thisData對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- /////////////////////////////////////////////////////////////////////////////////////////
- void sendDataWiFiC(String APIkey, char *thisData, unsigned long deviceid,String Host, String sensorid )
- {
- int l = strlen(thisData);
- int D = getLength(deviceid);
- int S = sensorid.length();
- int lenss = 53 + S + l;
- int lll = getLength(lenss);
- int lens = 214 + D + S + l + lll;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("{\"datastreams\":[{\"id\":\"");
- WiFi_Port.print(sensorid);
- returnmsgWiFi();
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- returnmsgWiFi();
- WiFi_Port.print(thisData);
- WiFi_Port.print("}]}]}");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send 2 Data *******************************************************************************************************
- //////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為字符串類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid1 對(duì)應(yīng)數(shù)據(jù)流1的ID,Data1 對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- // sensorid2 對(duì)應(yīng)數(shù)據(jù)流2的ID,Data2 對(duì)應(yīng)數(shù)據(jù)流2的數(shù)值 //
- //////////////////////////////////////////////////////////////////////////////////////////
- void send2DataWiFiC(String APIkey, char * Data1, char * Data2, unsigned long deviceid,String Host, String sensorid1 , String sensorid2)
- {
- int l1 = strlen(Data1);
- int l2 = strlen(Data2);
- int D = getLength(deviceid);
- int S1 = sensorid1.length();
- int S2 = sensorid2.length();
- int lenss = 53 + 36 + S1 + l1 + S2 + l2; //增加一個(gè)數(shù)據(jù)流Lenss固定長(zhǎng)度需要增加36,增加1個(gè)數(shù)據(jù)流需要增加1次36;
- int l3 = getLength(lenss);
- int lens = 214 + 36 + D + S1 + l1 + S2 + l2 + l3; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加1個(gè)數(shù)據(jù)流需要增加1次36;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- delay(00);
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- ////////////////////////////////////////////////////////////////////sensor data
- WiFi_Port.print("{\"datastreams\":[");
- ///////////////////////////////////////////////////////////////////sensor1
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid1);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data1);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid2);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data2);
- WiFi_Port.print("}]}");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor end
- WiFi_Port.print("]}");
- ////////////////////////////////////////////////////sensor data end
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send 3 Data *******************************************************************************************************
- //////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為字符串類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid1 對(duì)應(yīng)數(shù)據(jù)流1的ID,Data1 對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- // sensorid2 對(duì)應(yīng)數(shù)據(jù)流2的ID,Data2 對(duì)應(yīng)數(shù)據(jù)流2的數(shù)值 //
- // sensorid3 對(duì)應(yīng)數(shù)據(jù)流3的ID,Data3 對(duì)應(yīng)數(shù)據(jù)流3的數(shù)值 //
- //////////////////////////////////////////////////////////////////////////////////////////
- void send3DataWiFiC(String APIkey, char * Data1, char * Data2, char * Data3, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3)
- {
- int l1 = strlen(Data1);
- int l2 = strlen(Data2);
- int l3 = strlen(Data3);
- int D = getLength(deviceid);
- int S1 = sensorid1.length();
- int S2 = sensorid2.length();
- int S3 = sensorid3.length();
- int lenss = 53 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加2個(gè)數(shù)據(jù)流需要增加2次36;
- int lll = getLength(lenss);
- int lens = 214 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加2個(gè)數(shù)據(jù)流需要增加2次36;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- delay(00);
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- ////////////////////////////////////////////////////////////////////sensor data
- WiFi_Port.print("{\"datastreams\":[");
- ///////////////////////////////////////////////////////////////////sensor1
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid1);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data1);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid2);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data2);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid3);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data3);
- WiFi_Port.print("}]}");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor end
- WiFi_Port.print("]}");
- ////////////////////////////////////////////////////sensor data end
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send 4 Data *******************************************************************************************************
- //////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送四個(gè)數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為字符串類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid1 對(duì)應(yīng)數(shù)據(jù)流1的ID,Data1 對(duì)應(yīng)數(shù)據(jù)流1的數(shù)值 //
- // sensorid2 對(duì)應(yīng)數(shù)據(jù)流2的ID,Data2 對(duì)應(yīng)數(shù)據(jù)流2的數(shù)值 //
- // sensorid3 對(duì)應(yīng)數(shù)據(jù)流3的ID,Data3 對(duì)應(yīng)數(shù)據(jù)流3的數(shù)值 //
- // sensorid4 對(duì)應(yīng)數(shù)據(jù)流4的ID,Data4 對(duì)應(yīng)數(shù)據(jù)流4的數(shù)值 //
- //////////////////////////////////////////////////////////////////////////////////////////
- void send4DataWiFiC(String APIkey, char * Data1, char * Data2, char * Data3, char * Data4, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3, String sensorid4)
- {
- int l1 = strlen(Data1);
- int l2 = strlen(Data2);
- int l3 = strlen(Data3);
- int l4 = strlen(Data4);
- int D = getLength(deviceid);
- int S1 = sensorid1.length();
- int S2 = sensorid2.length();
- int S3 = sensorid3.length();
- int S4 = sensorid4.length();
- int lenss = 53 + 36 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加3個(gè)數(shù)據(jù)流需要增加3次36;
- int lll = getLength(lenss);
- int lens = 214 + 36 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一個(gè)數(shù)據(jù)流Lens固定長(zhǎng)度需要增加36,增加3個(gè)數(shù)據(jù)流需要增加3次36;
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- delay(00);
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- ////////////////////////////////////////////////////////////////////sensor data
- WiFi_Port.print("{\"datastreams\":[");
- ///////////////////////////////////////////////////////////////////sensor1
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid1);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data1);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor2
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid2);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data2);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor3
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid3);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data3);
- WiFi_Port.print("}]},");
- returnmsgWiFi();
- ///////////////////////////////////////////////////////////////////sensor4
- WiFi_Port.print("{\"id\":\"");
- WiFi_Port.print(sensorid4);
- WiFi_Port.print("\",\"datapoints\":[{\"value\":");
- WiFi_Port.print(Data4);
- WiFi_Port.print("}]}");
- returnmsgWiFi();
- //////////////////////////////////////////////////////////////sensor end
- WiFi_Port.print("]}");
- ////////////////////////////////////////////////////sensor data end
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- //********************************************************** OneNet WiFi send GPS Data *******************************************************************************************************
- ////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于發(fā)送GPS數(shù)據(jù)流的數(shù)據(jù)點(diǎn),數(shù)值為整數(shù)類(lèi)型 //
- // APIkey OneNet對(duì)應(yīng)設(shè)備的MasterKey或Apikey //
- // deviceid 對(duì)應(yīng)設(shè)備的ID //
- // Host HTTP服務(wù)器名稱(chēng) //
- // sensorid 對(duì)應(yīng)GPS數(shù)據(jù)流的ID //
- // LON 對(duì)應(yīng)經(jīng)度的數(shù)值 //
- // LAT 對(duì)應(yīng)緯度數(shù)值 //
- // HEIGH 對(duì)應(yīng)海拔高度數(shù)值; //
- ////////////////////////////////////////////////////////////////////////////////////
- void sendGPSDataWiFi(char* HEIGH, unsigned long deviceid, String sensorid,String Host, char* LON, char* LAT, String APIkey )
- {
- int l = strlen(HEIGH);
- int D = getLength(deviceid);
- int S = sensorid.length();
- int Lonlen = strlen(LON);
- int Latlen = strlen(LAT);
- int lenss = 53 + 28 + S + l + Lonlen + Latlen;
- int l2 = getLength(lenss);
- int lens = 214 + 28 + D + S + l + Lonlen + Latlen + l2;
- WiFi_Port.println(lens);
- WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
- returnmsg_ok_conWiFi();
- Debug_Port.println("connecting...");
- WiFi_Port.print("AT+CIPSEND=");
- returnmsgWiFi();
- WiFi_Port.println(lens);
- returnmsg_ok_1WiFi();
- WiFi_Port.print("POST http://api.heclouds點(diǎn)com/devices/");
- returnmsgWiFi();
- WiFi_Port.print(deviceid);
- returnmsgWiFi();
- WiFi_Port.print("/datapoints HTTP/1.1");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("Host: ");
- returnmsgWiFi();
- WiFi_Port.print(Host);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("api-key: ");
- returnmsgWiFi();
- WiFi_Port.print(APIkey);
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.println("Connection: close");
- returnmsgWiFi();
- WiFi_Port.print("Content-Length: ");
- returnmsgWiFi();
- WiFi_Port.print(lenss);
- returnmsgWiFi(); WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("{\"datastreams\":[{\"id\":\"");
- returnmsgWiFi();
- WiFi_Port.print(sensorid);
- returnmsgWiFi();
- WiFi_Port.print("\",\"datapoints\":[{\"value\":{\"lon\":\"");
- returnmsgWiFi();
- WiFi_Port.print(LON);
- returnmsgWiFi();
- WiFi_Port.print("\",\"lat\":\"");
- returnmsgWiFi();
- WiFi_Port.print(LAT);
- returnmsgWiFi();
- WiFi_Port.print("\",\"ele\":\"");
- returnmsgWiFi();
- WiFi_Port.print(HEIGH);
- returnmsgWiFi();
- WiFi_Port.print("\"}}]}]}");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- returnmsgWiFi();
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- WiFi_Port.print("\r\n");
- returnmsg_ok_finishWiFi();
- }
- ///////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷串口發(fā)揮至是否有關(guān)鍵字“OK” //
- //如60秒內(nèi)無(wú)正確返回,強(qiáng)制執(zhí)行AT+CIPCLOSE,強(qiáng)行關(guān)閉TCP連接 //
- ///////////////////////////////////////////////////////////////////////////////
- void returnmsg_okWiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 60000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
- return ;
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- //Debug_Port.println(_TEMPdata);
- delay(2);
- }
- if (_TEMPdata.indexOf("OK") > 0)
- {
- // Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break;
- }
- else
- {
- delay(1);
- }
- }
- return;
- }
- ///////////////////////////////////////////////////////////////////
- //本函數(shù)用于打印WiFi的串口返回信息,用于Debug,無(wú)實(shí)際作用 //
- ///////////////////////////////////////////////////////////////////
- void returnmsgWiFi()
- {
- String _TEMPdata = "";
- while (!WiFi_Port.available())
- {
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- delay(1);
- }
- Debug_Port.print(_TEMPdata);
- _TEMPdata = "";
- return;
- }
- ///////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷串口發(fā)揮至是否有關(guān)鍵字“OK”和“ready” //
- //如60秒內(nèi)無(wú)正確返回,強(qiáng)制執(zhí)行AT+CIPCLOSE,強(qiáng)行關(guān)閉TCP連接 //
- ///////////////////////////////////////////////////////////////////////////////
- void returnmsg_ok_readyWiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 60000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
-
- return ;
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- //DebugDebug_Port.println(_TEMPdata);
- delayMicroseconds(800);
- }
- if ((_TEMPdata.indexOf("OK") > 0) && (_TEMPdata.indexOf("ready") > 0))
- {
- // Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break;
- }
- }
- return;
- }
- ///////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷是否正確的完成了TCP連接; //
- //判斷標(biāo)志為返回了“OK”以及"CONNECT" //
- //如超過(guò)20秒還沒(méi)收到以上兩個(gè)關(guān)鍵字,則主動(dòng)執(zhí)行一次關(guān)閉連接操作并退出 //
- ///////////////////////////////////////////////////////////////////////////////
- void returnmsg_ok_conWiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 20000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
- returnmsgWiFi();
- return ;
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- delay(1);
- }
- if ((_TEMPdata.indexOf("OK") > 3) && (_TEMPdata.indexOf("CONNECT") > 0))
- {
- Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break;
- }
- }
- return;
- }
- ////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷服務(wù)器收到相應(yīng)的命令后是否正確的執(zhí)行并返回了相應(yīng)的信息。 //
- //判斷標(biāo)志為返回了“OK”以及"CLOSED" //
- //如超過(guò)20秒還沒(méi)收到以上兩個(gè)關(guān)鍵字,則主動(dòng)執(zhí)行一次關(guān)閉連接操作并退出。 //
- ////////////////////////////////////////////////////////////////////////////////////
- void returnmsg_ok_finishWiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 20000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
- returnmsgWiFi();
- return ;
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- // Debug_Port.println(_TEMPdata);
- delayMicroseconds(700);
- }
- if ((_TEMPdata.indexOf("CLOSED") > 3) && (_TEMPdata.indexOf("OK") > 0))
- {
- Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break;
- }
- else
- {
- ;
- }
- }
- return;
- }
- /////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷CIPSEND后是否返回了“OK”或“close” //
- //收到任何一個(gè)都退出。 //
- /////////////////////////////////////////////////////////////////////////////////////////
- void returnmsg_ok_errWiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- while ( WiFi_Port.available())
- {
- _TEMPdata += char( WiFi_Port.read());
- //Debug_Port.println(_TEMPdata);
- delay(2);
- }
- if ((_TEMPdata.indexOf("OK") > 1) || (_TEMPdata.indexOf("ERROR") > 1))
- {
- Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break ;
- }
- }
- return ;
- }
- /////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷CIPSEND后是否返回了“OK”和“close” //
- //如超過(guò)20秒沒(méi)有還沒(méi)收到以上兩個(gè)關(guān)鍵字,則主動(dòng)執(zhí)行一次關(guān)閉連接操作并退出。 //
- /////////////////////////////////////////////////////////////////////////////////////////
- void returnmsg_ok_closeWiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 20000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
-
- return ;
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- // DebugDebug_Port.println(_TEMPdata);
- delayMicroseconds(700);
- }
- if ((_TEMPdata.indexOf("close") > 3) && (_TEMPdata.indexOf("OK") > 0))
- {
- Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break;
- }
- else
- {
- ;
- }
- }
- return;
- }
- /////////////////////////////////////////////////////////////////////////////////////////
- //本函數(shù)用于判斷CIPSEND后是否返回了“>” //
- //如超過(guò)20秒沒(méi)有還沒(méi)收到以上關(guān)鍵字,則主動(dòng)執(zhí)行一次關(guān)閉連接操作并退出。 //
- /////////////////////////////////////////////////////////////////////////////////////////
- void returnmsg_ok_1WiFi()
- {
- String _TEMPdata = "";
- unsigned long _PT0 = 0;
- unsigned long _PT1 = 0;
- _PT0 = millis();
- _TEMPdata = "";
- while (1)
- {
- _PT1 = millis();
- if (_PT1 - _PT0 > 20000)
- {
- Debug_Port.println(" ");
- Debug_Port.println("Get error..................");
- WiFi_Port.println("AT+CIPCLOSE");
-
- return ;
- }
- while (WiFi_Port.available())
- {
- _TEMPdata += char(WiFi_Port.read());
- // DebugDebug_Port.println(_TEMPdata);
- delay(2);
- }
- if (_TEMPdata.indexOf(">") > 0)
- {
- Debug_Port.println(_TEMPdata);
- Debug_Port.println("");
- _TEMPdata = "";
- break;
- }
- else
- {
- delay(1);
- }
- }
- return;
- }
- ///////////////////////////////////////////////////////////////////
- //本函數(shù)用于計(jì)算一個(gè)長(zhǎng)整型數(shù)值的長(zhǎng)度 //
- //返回值為int類(lèi)型數(shù)值 //
- ///////////////////////////////////////////////////////////////////
- int getLength(unsigned long someValue)
- {
- int digits = 1;
- int dividend = someValue / 10;
- while (dividend > 0) {
- dividend = dividend / 10;
- digits++;
- }
- return digits;
- }
復(fù)制代碼
|
|