esp8266 mqtt php,使用ESP8266进行MQTT发布时出现异常

我正在使用其mqttapi将传感器读数发布到thingspeak。我已经在Huzzah ESP8266板上部署了我的项目。在刚刚发布了一个值之后,我得到了esp异常9,28。我想我的loop()函数有问题。这是我的密码

void loop() {

if(!mqttCli.connected()){

reconnectMQTT();

}

mqttCli.loop();

if(millis()-mqttTimer>mqttInterval){

taskWiFiCallback();

}

}

void taskWiFiCallback(){

Serial.println("task WiFi Started");

if(!mqttCli.connected()){

Serial.println("mqtt not connected");

reconnectMQTT();

return;

}

Serial.println("mqtt Connection established");

Serial.println("State:" + mqttCli.connected());

String topicString ="channels/"+String(channelID)+"/publish/"+String(writeAPIKey);

int topicLength = topicString.length();

char topicBuffer[topicLength];

topicString.toCharArray(topicBuffer,topicLength+1);

Serial.println(topicBuffer);

String dataString = String("field1="+ String(tempC,1) + "&field2=" + String(tempF,1) + "&field3=" + String(humid,1));

int dataLength = dataString.length();

char dataBuffer[dataLength];

dataString.toCharArray(dataBuffer,dataLength+1);

Serial.println(dataBuffer);

Serial.println(mqttCli.publish(topicBuffer,dataBuffer) ? "Published" : "Not Published Bawa, Do Something");

mqttTimer = millis();

}

void reconnectMQTT(){

Serial.println("setting up mqtt");

WiFiClient wifiClient;

mqttCli.setServer(mqtt_server,1883);

mqttCli.setClient(wifiClient);

mqttCli.setCallback(&callback);

// Creating a random client ID

String clientId = "ESP8266Client-";

clientId += String(random(0xffff), HEX);

while(!mqttCli.connected()){

if(mqttCli.connect(clientId.c_str())){

String subTopic = String("channels/"+ String(channelID) +

"/subscribe/json/" + String(readAPIKey));

int subTopicLength = subTopic.length();

char subTopicBuffer[subTopicLength];

subTopic.toCharArray(subTopicBuffer,subTopicLength);

String pubTopic ="channels/" + String( channelID ) +

"/publish/"+String(writeAPIKey);

char pubTopicBuffer[pubTopic.length()];

pubTopic.toCharArray(pubTopicBuffer,pubTopic.length()+1);

String message = String("field1=" + String(tempC,1) + "&field2=" +

String(tempF,1) + "&field3=" + String(humid,1));

char messageBuffer[message.length()];

message.toCharArray(messageBuffer,message.length()+ 1);

Serial.println(messageBuffer);

Serial.println(mqttCli.publish(pubTopicBuffer,messageBuffer) ? "Published" : "Unpublished");

Serial.println(mqttCli.subscribe(subTopicBuffer) ? "Subscribed" : "Unsubscribed");

}else{

Serial.print("failed, rc=");

Serial.println(mqttCli.state());

delay(1000);

}

}

}

我订阅了这个主题,它给出了正确的结果,甚至在reconnemqtt()函数中发布。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值