Вы уверены, что в данных третьего датчика - 1051913256 - вам нужны все цифры? Не будет достаточно округлить ее до 1051000000 и, соответственно, передавать только 4 значащие цифры?
Как раз примерно столько и выиграете в обьеме, как при увеличении размера буфера с 238 до 300 байт.
Да, все верно, но я подумывал о риске коллизий. …хотя вряд ли это коснется моего изобретения. Возьму 4 последних байта. А по поводу буфера gprs модуля глухо, нет вариантов?
если это ответ на мое сообщение #2 - то я ничего не понял… При чем тут коллизии? Я вам предложил просто переформатировать данные, на передачу это не должно влиять никак.
по итогу: 4 датчика, период 30сек, 30 посылок в час(каждые 2 минуты), 480 измерений - 40кб в час, 28 МБ в месяц.
т.е посылка с 16 записями и ответом где-то 1300 байт, из них полезного (измерений) около 230 байт
230/1300= около 17% , интересно нормальная это эффективность для http? надо покопаться в rested, может удаться с этого камня выжать еще немного воды.
40кб в 1 час = 960кб в сутки, 960кб * 31 (максимальное количество дней в месяце) = 29Мб.
Ну в принципе да.
Но это если отправка прошла по utp с первого раза. А по факту будет tcp (с подтверждающими обратными пакетами), считается и исходящий трафик и трафик подтверждения пакета, и отправка может пройти не с первого раза хорошо. Поэтому я бы умножал на 1.25
А это значит уже 36Мб. Ну я бы как «параноик» рассчитывал на 40Мб.
из биллинга оператора.
Сейчас поднял билинг который раньше делал на Get запросах. Отправлял 1 измерение каждые 30 сек, такое же количество измерений.
здесь получалось около 450 кб в час, 365 мб в месяц.
Разница колоссальная, эффект очевиден. Да и заморочек не так уж, много. Накопили в буфер, выставили смещение, отправлии на веб сервер. Ну а там уже дело техники, нужно всего лишь положить данные в sql базу с учетом смещения.
Можно был и в Геты напихать несколько измерий, но мне эта идея как-то на зашла, парсинг получался какой-то кривой, забросил.
Счас вот писал это и пришла такая мысль, можно было в один get параметр строку всего измерения запихивать. Ну да ладно какнить в следущий раз. Кстати, длина гет запроса может стать ограничением.
вкинул в заголовок http еще коекакую инфу (разберусь с ней потом на стороне сервера, сигнал, количество датчиков, дискретность измерений)
По расчету для 4х датчиков выхожу на 15мб трафика. И это с дискретностью показаний 30 сек.
А идеи по оптимизации все не заканчиваются….
По итогу хочу прийти к Индивидуальной Дискретизации Каждого датчика.
т.е Уличный датчик - на кой его дергать и отправлять каждый 30 сек - 3-4 минут за глаза
Температура в помещении - 2 минут
Ну по остальным надо более подробно потому как надо.
Т.е с сервака устанавливаю каждому датчику множитель к базовой дискретизации , уличный 30сек*6, датчки в помещениях * 4
Гетом раз в час , а можно и в сутки забираю настройки , записываю в еепром. и кручу отправку уже с учетом этих множителей.
Давно давно…был проект, там тысячи устройств, счёт трафика шёл на экономии даже не мегабайт, а отдельных байт.
Так вот, операторы считают даже длину пакета tcp/ip пакета.
Отсюда совет : хотите сократить отправку данных - придумайте побитную упаковку отправляемых данных и отправляйте например одной строкой в dbase64.
Не, устройства работают, операторы просто перестали давать корпоративные тарифы с минимальными тарифицируемыми объёмами в десятки байт. Соответственно и экономия трафика уже не стоит вопрос, все равно за сотню килобайт платить при малейшем подключении
Насколько я понял проблему, основным баластом являются “накладные расходы” http трафика, служебные заголовки и т.д. Например, отправляя GET запрос, сколь малые данные он бы не нес, трафик туда сюда составит около 1к. Наиболее выгодным являет отправка POST запрос с набором измерений. Но все равно, сейчас результаты такие, отправка 200 байт полезных х данных -это 1.2к итого на круг. Ужав 200 байт в 100 я не получу от слова совсем. Поэтому 2 пути:
Впихивать в запрос больше данных (смотррим название темы)
Отправлять запрос реже.
3. МQTT, или UDP. но это не моя тема. Это надо или свой сервак или vps арендовать. Мне на бесплатном хостинге норм.
По уровню оптимизации я уже приблизился к системе Zont, месяц работы тако системы обходится примерно в 30 МБ, т.е это около 15 датчиков + управление. Дискретизация Температуры там около 2.5 мин. Кроме того там есть система экономии трафика. Т.е если веб морду никто не смотрит система ничего не отправляет, как только дернул, она вываливает все накопленные данные за раз. Надо глянуть что там за модем и какой проц.
Сегодня не удалось реализовать алгоритм Индивидуальной дискретизации датчиков, но если такое будет это еще 2х кратная экономия. На этом можно будет остановиться. Хотя и здеь при обдумывании закралась проблема, если ставить множитель базовой дискретизации 5 или 6 на какой-то из датичков я не попадаю в 20 измерений, которые я могу отправить. Они будут заняты датчиками с базовой 30 сек дискретизацией. Короче, все упирается в ограничение объема полезных данных.
Хостер обычно блокирует что либо кроме https трафика, sim800 умеет отправлять https. Но так же он может отправлять что угодно по 443 порту. А уж фильтрует Хостер трафик и разбирает ли он его по косточкам…вопрос сложный, надо пробовать.