Adafruit IO数据速率限制

问题描述 投票:1回答:1

我试图从多个ESP-8266发送数据到我的Adafruit IO账户上的feeds.问题是,当我试图发送新的值时,我面临着禁止发布,因为当我的两个或更多的MCU碰巧在同一时间发送数据时,违反了2秒的时间限制(我不能同步它们以避免这种情况).有什么可能解决这个问题吗?

arduino mqtt iot adafruit
1个回答
1
投票

我建议考虑这三个选项。一个发送令牌,从一个ESP发送到下一个ESP。所以基本上所有的ESP都可以发送。如果令牌被收到,其允许发送 - 等待适当的时间限制手令牌到下一个ESP。这个解决方案有所有的Arduinos通过一个AProuter连接,并将使用客户端到客户端的通信。 它可以设置为故障安全,所以如果下一个ESP不可用(电池重置等),你采取下一个列表,并向服务器发出一个额外的警告第二种解决方案可以是(更灵活和动态的,但SPO - 单点故障)设置一个ESP作为数据采集器做发送。如果ESP是在不同的位置,你必须设置他们,他们满足以下要求。

如果你有一个免费的Adafruit IO账户,速率限制是每分钟30个数据点。 如果你超过了这个限制,将会有一个通知发送到{username}throttle MQTT主题。如果您想知道您的用户账户何时超过Adafruit IO速率限制,您可以订阅该主题。这个限制适用于所有通过HTTP和MQTT API的数据记录修改动作,所以如果你有多个设备或客户端发布数据,一定要延迟他们的更新,使总速率低于你的账户限制。

所以其不是2秒的限制,而是30min(60min,如果亲),所以你限制发送每个ESP的公式。

30 / Number of ESPs sending to I/O -> 30 / 5 = 6 ==> 5 incl. saftey margin

意思是每个ESP在一分钟内只允许发送5次。重要提示 如果5次发送上限到了,必须要等一分钟才能进行下一次发送。


0
投票

答案很简单,就是不要那么频繁的发送。

在物联网世界里

  • 如果数据需要频繁的更新(如电机伺服、加速度计等),往往是你想把它保存在本地,而不想把它发送到云端。
  • 如果数据需要在云端,往往不需要如此频繁的更新(比如温湿度)。

或者,如果你仍然认为你的数据非常关键,需要如此频繁地更新,那么,将一个ESP作为你的边缘网关,收集传感器节点的数据,并将其一次性发送到云端,这实际上是一个多传感器节点的物联网网络设计的正确方式。

如果这对你来说还是不行的话,你还可以选择付费购买高级服务来提高速率上限,或者是建立自己的云服务,并与你的Edge网关整合。

© www.soinside.com 2019 - 2024. All rights reserved.