MWELCOME TO BIGIOT很稳,但是设备一直显示不在线

作者:MarkBlain | 更新时间:2017-12-25 | 浏览量:2408

ESP8266远程控制LED,按照例程操作后,串口一直正常显示{"M":"WELCOME TO BIGIOT"},但是网页端“智能设备”一直显示“不在线”。很蛋疼。求助啊!!


评论:共10条

贝壳物联 评论于:2017-12-25 07:56:18
显示{"M":"WELCOME TO BIGIOT"}说明与服务器建立了联系,但是并没发送正确的登录信息,告诉服务器是谁连接上来了。
MarkBlain 回复于:2017-12-25 09:34:27
回复 @贝壳物联:
我用的是《远程控制通讯——基于Arduino + ESP8266控制LED灯并返回控制结果》的源码,希望能看一下,感激不敬!!!!
/*

*注意 :Arduino IDE版本请使用1.6.5-1.8.2
*/

#include <aJSON.h>
//============= 此处必须修该============
String DEVICEID="1"; // 这里已经改成服务器端ID ========
String APIKEY="493822592"; // 这里也改成服务器端密码========
//=======================================
const int LED = 4;// LED正极连接针脚4
unsigned long lastCheckInTime = 0; //记录上次报到时间
const unsigned long postingInterval = 40000; // 每隔40秒向服务器报到一次
String inputString = "";
boolean stringComplete = false;
boolean CONNECT = true;
char* parseJson(char *jsonString);
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
delay(5000);
}
void loop() {
if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {
checkIn();
}
serialEvent();
if (stringComplete) {
inputString.trim();
//Serial.println(inputString);
if(inputString=="CLOSED"){
Serial.println("connect closed!");
CONNECT=false;
}else{
int len = inputString.length()+1;
if(inputString.startsWith("{") && inputString.endsWith("}")){
char jsonString[len];
inputString.toCharArray(jsonString,len);
aJsonObject *msg = aJson.parse(jsonString);
processMessage(msg);
aJson.deleteItem(msg);
}
}
// clear the string:
inputString = "";
stringComplete = false;
}
}
void checkIn() {
if (!CONNECT) {
Serial.print("+++");
delay(500);
Serial.print("\r\n");
delay(1000);
Serial.print("AT+RST\r\n");
delay(6000);
CONNECT=true;
lastCheckInTime=0;
}
else{
Serial.print("{\"M\":\"checkin\",\"ID\":\"");
Serial.print(DEVICEID);
Serial.print("\",\"K\":\"");
Serial.print(APIKEY);
Serial.print("\"}\r\n");
lastCheckInTime = millis();
}
}
void processMessage(aJsonObject *msg){
aJsonObject* method = aJson.getObjectItem(msg, "M");
aJsonObject* content = aJson.getObjectItem(msg, "C");
aJsonObject* client_id = aJson.getObjectItem(msg, "ID");
//char* st = aJson.print(msg);
if (!method) {
return;
}
//Serial.println(st);
//free(st);
String M=method->valuestring;
String C=content->valuestring;
String F_C_ID=client_id->valuestring;
if(M=="say"){
if(C=="play"){
digitalWrite(LED, HIGH);
sayToClient(F_C_ID,"LED on!");
}
if(C=="stop"){
digitalWrite(LED, LOW);
sayToClient(F_C_ID,"LED off!");
}
}
}
void sayToClient(String client_id, String content){
Serial.print("{\"M\":\"say\",\"ID\":\"");
Serial.print(client_id);
Serial.print("\",\"C\":\"");
Serial.print(content);
Serial.print("\"}\r\n");
lastCheckInTime = millis();
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
}
}
}
贝壳物联 回复于:2017-12-25 11:12:22
回复 @MarkBlain:示例代码看不出问题来
MarkBlain 回复于:2017-12-25 14:39:33
回复 @贝壳物联:能否告知一下测试方法或技术文档,谢谢!
hzc1111 评论于:2018-02-24 01:56:01
同样出现此问题+1
MarkBlain 回复于:2018-02-26 09:05:58
回复 @hzc1111:我调通了。你将心跳包延时改为2000.同时注意ESP8266干电池3v(两节干电池)供电
hzc1111 回复于:2018-02-27 05:15:34
回复 @MarkBlain:我的其实也没问题,原来是我把设备ID填错了笑哭了 笑哭
shannon 评论于:2018-02-24 22:22:27
同问+1
ericsma 评论于:2018-03-16 17:40:10
刷个分?
13682710810 评论于:2020-03-12 21:45:27
很玄学,试了很久突然就好了。官网代码改了一些
返回顶部