API响应中的错误,使用ESP8266 Arduino库读取多个字段。

10次浏览(过去30天)
嘿,
我目前正在ArduinoIDE为ESP8266编程,以读取已经上传到TS的传感器数据。
为此,我使用函数:
ThingSpeak.readMultipleFields (CHANNELID READKEY)。
不幸的是,我发现服务器不再返回正确的数据。
下面是Arduino库在调用ThingSpeak.readMultipleFields(CHANNELID,READKEY)后的一些调试日志:
:readRaw (channelNumber: 13xxxxx readAPIKey: H89OOxxYFXxxxxxx后缀url:“/ feed / last.txt ?状态=true&location=true"
连接默认ThingSpeak: api.thingspeak.com:80...成功。
获得“/渠道/ 13 xxxxx / feed / last.txt吗?状态=真实位置= true "
得到了200状态
内容长度:210
发现报头结束
回应:“{”created_at”:“2021 - 04 - 06 - t20:25:06z”、“entry_id”:5。”field1”:零。”field2”:零。”field3”:零。”field4”:零。”field5”:“27.82000”、“field6”:“28.96680”、“纬度”:零。”经度”:零。”海拔高度”:零。”状态”:零}”
读:“{”created_at”:“2021 - 04 - 06 - t20:25:06z”、“entry_id”:5。”field1”:零。”field2”:零。”field3”:零。”field4”:零。”field5”:“27.82000”、“field6”:“28.96680”、“纬度”:零。”经度”:零。”海拔高度”:零。”状态”:零}”
断开连接。
如您所见,字段4返回“null”。
当用函数读取相同的Channel和field时:
ThingSpeak。readFloatField (CHANNELID、字段ID, READKEY)
我得到:
ts::readStringField(channelNumber: 13xxxxx readAPIKey: H89OOxxYFXxxxxxx field: 4)
:readRaw (channelNumber: 13xxxxx readAPIKey: H89OOxxYFXxxxxxx后缀url:“字段/ 4 /最后”
连接默认ThingSpeak: api.thingspeak.com:80...成功。
得到“/渠道/ 13 xxxxx /字段/ 4 /最后”
得到了200状态
内容长度:8
发现报头结束
回应:“29.94141”
读:“29.94141”
断开连接。
这就是正确的值。
我使用的最新版本从TS arduino库。我已经在Github上打开了一个问题,但没有反应。
有人有什么想法吗?
问候!

接受的答案

克里斯托弗Stapels
克里斯托弗Stapels 2021年4月12日
我认为你也在比较两种不同的操作。第一个是读取最新提要条目或所有字段值。第二个是对字段的最后一个条目的调用,该调用可能不会返回最后一个提要,它可能返回来自旧提要的字段条目。字段调用查找最后一个非空项。正如维诺德所说,与完全出口相比,可能会显示出问题。
2的评论
克里斯托弗Stapels
克里斯托弗Stapels 2021年4月14日
您将需要使用多个调用来读取一个字段以获得该行为。读取多个字段使用单个提要条目(公共时间戳)从多个字段读取和提取数据。
您可以使用readraw命令读取多个提要条目,然后自己解析结果。

登录评论。

更多答案(1)

维诺德
维诺德 2021年4月12日
我认为在某个时间点查看响应可能会导致您得出错误的结论,因为通道是在您从检索提要切换到仅检索字段期间更新的。我建议您从通道的“导入/导出数据”选项卡下载数据,并确认库为您提供了正确的读数。

社区

更多答案在ThingSpeak社区

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!