Adafruit IO在Arduino上的最新价值

时间:2017-09-09 18:46:57

标签: arduino mqtt adafruit

我正在为使用Adafruit IO MQTT库的Adafruit Huzzah制作基本草图。这是通过各种来源和示例的复制/粘贴来组合在一起的,而且大部分都是有效的 - 但有一件事我无法弄清楚。

现在,我正在使用一行代码,每次通过我订阅的Feed收到新消息时都会触发处理程序:

group->onMessage("daniel", handleMessage);

这很好,并且我需要它来处理更新的值。

然而,我想要做的是在setup()例程期间获取feed上的最后一个已知值,而不是等待新值到来。

在MQTT的说法中,我认为这被称为保留消息,我认为Adafruit IO默认使用它,但我不知道如何在启动()过程中获取这些值。

任何人都可以帮助我吗?

(如果您有兴趣,到目前为止,这是我的代码:https://github.com/LimeBlast/family-box/blob/master/family-box.ino

3 个答案:

答案 0 :(得分:1)

简短的回答是,你不做任何事。

保留消息的传递方式与普通消息相同(通过onMessage回调),只要您订阅该主题,就会立即发送。

答案 1 :(得分:1)

我也有这个问题。这是完整的爆炸

get()函数将要求Adafruit服务器仅将提要的最后一个值重新发送到此客户端。接收到该值后,将执行处理程序。

exampleFeed->get();  

答案 2 :(得分:0)

看到我刚刚找到了我所问问题的答案,我才发现它是正确的,然后才在此处发布。

设置供稿后,我要查找的命令是function renameDir(dirs){ dirs.forEach(function(e){ if(e.name.match(/\s+/g)){ var cname = e.name.replace(/\s+/g,'_'); var cpath = e.path.replace(e.name,cname); fs.rename(e.path,cpath,function(err,data){ if(err) console.log(err) else{ console.log('success'); e.path = cpath; e.name = cname; } }); } var nested = cDT(e.path) if( nested.children && (nested.children.length > 0) ) renameDir(nested.children); }); } as shown in this example