前两天更新power-meter项目,打算使用PubSubClient 库实现接入 homeassistant
但在运行项目时发现 esp8266 mqtt推送极其不稳定
排查了 mqtt server 和接收消息的 client,都没有发现问题
用 esp8266 写了个循环推送,也很稳定,排除了板子本身的问题
for(int i = 1; i <= 100; i++){ sprintf(message, "%d", i); client.publish(topic, message); yield(); delay(500); }
代码片段:
void loop(){ while(1){ light1 = analogRead(A0); if(light1 > powerledPin_average){ // led on timeA = micros(); delay(300); break; } yield(); client.loop(); } time_light = timeA - timeB; power = 1. / powerledPin_rate * 1000 * 3600 * 1000000 / time_light; Serial.println(power); sprintf(message, "%f", power); client.publish(topic, message); delay(100); // 加入延时 }
猜测最后一行 publish 的代码来不及处理就继续循环了,故在推送代码后加入延时,问题解决。
Comments NOTHING