arduino - MQTT client.publish() 和 delay()

标签 arduino delay mqtt publish-subscribe

我有一个小型本地物联网网络,其中包含一些在 Arduino IDe 中编程的 Wemos D1 节点。其中一些连接了两个传感器,例如雨水和湿度。 我想每分钟发送一次值,一分钟下雨,一分钟湿度。 下面的代码通常与 delay(5000); 一起工作,但是一旦我有了类似 delay(60000); 的节点显然开始只发布雨水并跳过湿度(我有一个 mosquitto_sub -h myIP -v -t '#' 正在运行以监听消息。

这是我的loop(),所有的感应和发送都在这里发生:

void loop() {
    if (!client.connected() && WiFi.status() == 3) {
        reconnect();
    }
    client.loop();

    int val = digitalRead(rainSensor);     // read the input pin
    rain_str = String(val);
    rain_str.toCharArray(rain, rain_str.length() + 1); 
    client.publish(rainTopic, rain);
    delay(60000);

    int val2 = analogRead(humidSensor);     // read the input pin
    humid_str = String(val2);
    humid_str.toCharArray(humid, humid_str.length() + 1);
    client.publish(humidTopic, humid);
    delay(60000);
}   

最佳答案

如果您没有在 MQTT_KEEPALIVE 秒(通常为 15 秒)内调用 client.loop() 函数,您将收到 MQTT_CONNECTION_TIMEOUT。

确保以更短的间隔调用 client.loop()。使用计数器计数到 60 或更好地使用计时器函数,如 Ticker 库。

关于arduino - MQTT client.publish() 和 delay(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42533152/

相关文章:

c - 逆时针旋转字节数组

http - 如何发送 POST 到 ThingSpeak?

python - 我如何做一个时间延迟?

java - 如何打印HiveMQ客户端中的所有主题? (MQTT)

java - 是否有类似 DefaultMqttPahoClientFactory 的东西用于创建异步客户端?

python - pySerial发送和接收多个数据

visual-studio-code - VS代码: Arduino Board Configuration offers no boards to select

c - MQTT 客户端同时发布和订阅

javascript - JavaScript 中的延迟动画

淡出前的 JQuery 延迟