Adafruit IO ограничение скорости передачи данных - PullRequest
2 голосов
/ 24 апреля 2020

Я пытаюсь отправить данные из нескольких ESP-8266 в фиды моей учетной записи Adafruit IO. Проблема в том, что когда я пытаюсь отправить новые значения, я сталкиваюсь с запретом публикации, потому что нарушается ограничение времени в 2 секунды, когда два или более моих MCU отправляют данные одновременно (я не могу синхронизировать их, чтобы избежать этого). Есть ли возможное решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Я предлагаю рассмотреть эти три варианта:
Отправляющий токен, который отправляется от одного 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-кратной отправки, он ДОЛЖЕН подождать минуту до следующей отправки.

0 голосов
/ 24 апреля 2020

Ответ прост, просто не посылайте так часто.

В мире IoT

  • Если данные нуждаются в частом обновлении (например, двигатель / сервопривод, акселерометр и т. Д. c.), Часто вы хотите сохранить он локальный и не хочет / нужно отправлять его в облако.
  • Если данные должны находиться в облаке, часто нет необходимости обновлять их так часто (например, температура / влажность).

В качестве альтернативы, если вы все еще считаете, что ваши данные настолько критичны, что их необходимо обновлять так часто, выделите один ESP в качестве вашего пограничного шлюза для сбора данных с сенсорных узлов и отправки их в облако в то же время это действительно правильный способ проектирования сети IoT с несколькими сенсорными узлами.

Если это все еще не работает для вас, у вас все еще есть выбор оплаты за услугу премиум-класса, чтобы повысить ограничение скорости, или создать свой собственный облачный сервис и интегрировать его с вашим Edge Gateway.

...