前两天更新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