我试图从多个ESP-8266发送数据到我的Adafruit帐户的提要。问题是,当我尝试发送新值时,我将面临发布禁令,因为当我的两个或多个MCU同时发送数据时,就违反了2秒的时间限制(我无法同步它们以避免这种情况)。这个问题有什么解决办法吗?
发布于 2020-04-24 08:52:54
我建议考虑这三种选择:
从一个ESp发送到下一个的发送令牌。所以基本上所有的ESP都是不允许发送的。如果接收到令牌,则允许发送-等待,适当的时间限制将令牌交给下一个ESP。该解决方案通过AP/路由器连接所有Arduino,并将使用客户端到客户端通信。
如果下一个ESP不可用(重置/断电等),您可以选择列表中的下一个,并向服务器发出附加警告。
第二种解决方案可以是(更灵活和动态的,但SPO -单点故障)设置一个ESP作为数据收集器来完成发送。
如果ESps位于不同的位置,则必须设置它们以满足以下要求:
如果您有一个免费的Adafruit帐户,利率限制是每分钟30个数据点。如果超过此限制,将向{username}/throttle MQTT主题发送通知。如果您想知道您的用户帐户何时超过了Adafruit IO速率限制,您可以订阅该主题。此限制适用于HTTP和MQTT API上的所有数据记录修改操作,因此,如果您有多个设备或客户端发布数据,请确保将更新延迟到低于帐户限制的总速率。
所以它不是2秒限制,而是30/min (如果是pro的话是60/min),所以您限制将每个ESP发送到公式:
30 / Number of ESPs sending to I/O -> 30 / 5 = 6 ==> 5 incl. saftey margin意味着每个ESP在一分钟内只允许发送5次。重要的,如果5次发送限制上升,则必须在下一次发送之前等待一分钟。
发布于 2020-04-24 12:20:23
答案很简单,只是不要那么频繁地发送。
在IoT世界里
如果数据需要频繁更新(如电动机/伺服、加速度计等),则
或者,如果您仍然认为您的数据是如此关键,需要如此频繁地更新,请指定一个ESP作为您的边缘网关,从传感器节点收集数据,并立即发送到云,这实际上是多传感器节点的IoT网络设计的正确方法。
如果这仍然不适用于您,您仍然可以选择付费服务来提高费率限制,或者构建您自己的云服务并将其与您的边缘网关集成。
https://stackoverflow.com/questions/61397189
复制相似问题