Я предлагаю рассмотреть эти три варианта:
Отправляющий токен, который отправляется от одного ESp к следующему. Таким образом, в основном все ESP не могут отправлять. Если токен получен, ему разрешено отправлять - ждет соответствующего временного предела и передает токен следующему ESP. В этом решении все Arduinos подключены через точку доступа / маршрутизатор и будут использовать связь между клиентом и клиентом.
Это может быть отказоустойчивой настройкой, поэтому, если следующий ESP недоступен (сброс / разрядка батареи и т. Д. c), вы берете следующее в списке и выдаете дополнительное предупреждение серверу
Второе решение может быть (более гибким и динамичным c НО SPO - единая точка отказа) настроить один ESP в качестве сборщика данных для выполнения отправки.
Если ESps находятся в разных местах, вы должны настроить их так, чтобы они соответствовали следующее требование:
Если у вас есть бесплатная учетная запись Adafruit IO, ограничение скорости составляет 30 точек данных в минуту. Если вы превысите этот лимит, уведомление будет отправлено на {username} / throttle MQTT topi c. Вы можете подписаться на topi c, если хотите wi sh, чтобы узнать, когда превышен лимит скорости ввода-вывода Adafruit для вашей учетной записи пользователя. Это ограничение применяется ко всем действиям по модификации записей данных через API-интерфейсы HTTP и MQTT, поэтому, если у вас есть несколько устройств или клиентов, публикующих данные, не забудьте отложить их обновления настолько, чтобы общая скорость была ниже предела вашей учетной записи.
так что это не предел 2 se c, а 30 / мин (60 / мин, если pro), поэтому вы ограничиваете отправку каждого ESP формулой:
30 / Number of ESPs sending to I/O -> 30 / 5 = 6 ==> 5 incl. saftey margin
означает, что каждый ESP находится только в течение минуты разрешено отправлять 5 раз. Важное замечание , если превышен лимит 5-кратной отправки, он ДОЛЖЕН подождать минуту до следующей отправки.