我试图处理来自传感器的数据,同时将数据上传到服务器(Thingspeak)。
问题是,每当服务器连接(使用wifi)结束时(我无法找到扩展会话以防止超时的方法),重新连接需要时间,在此期间,我无法处理来自传感器的数据,偶尔会导致数据漏洞。
我听说有一些解决这个问题的方法是使用回调函数,以某种方式使核心在每次尝试连接服务器时都等待来自服务器的响应,同时处理数据来自传感器。
我现在的代码就像这样
loop
{
while(now==prev)
{
processdata;
}
prev=now;
count++;
if(count==15)
{
count=0;
senddata();
}
}
senddata()
{
if(!serverconnected)
{
if(!send connect request()) error message; //after this function calls,
if(!receive connection confirmed()) error message; //takes too long time until this function finishes executing.
}
send data.
}
注释部分的实际功能名称是
client.connect(host, port)
client,verify(fingerprint, host)
起作用 WiFiClientSecure.h
有没有办法使用回调方法来解决这个问题? 在搜索解决方案时,我找到了以下头文件
espconn.h
似乎有我可以使用的回调函数......但我不确定这是使用不同的方法建立到服务器的wifi连接,也不知道如何使用函数本身。
答案 0 :(得分:0)
只要你使用rest api,你将无法舒适地保持会话活着。因此,您最好使用websocket或MQTT类似协议,其中会话由他们处理,您将只负责随时立即将数据推送到服务器。
这个link描述了如何在Thingspeak上完成mqtt客户端连接并将数据推送到它。
从链接中删除了一些代码:
#include <PubSubClient.h>
WiFiClient client;
PubSubClient mqttClient(client);
const char* server = "mqtt.thingspeak.com";
mqttClient.setServer(server, 1883);