@proembedded

Страница 503 из 975
Andrew
14.10.2017
12:46:39
я работаю

Andy
14.10.2017
12:47:16
Насчёт большого количества параметров не понял. Суйте в paiload хоть картинки

Vlad
14.10.2017
12:47:17
Например, можно передать один бит, который показывает, что данные с прошлого раза не менялись

Google
Andrew
14.10.2017
12:47:55
передать один бит — это сильно

Vlad
14.10.2017
12:48:40
Если у меня 200-500 параметров, то биты складываются в байты

Andy
14.10.2017
12:48:55
Например, можно передать один бит, который показывает, что данные с прошлого раза не менялись
Кому? Всем подписчикам? Одному? Ждать подтверждения? Ну и от кого то же было бы неплохо знаиь

Andrew
14.10.2017
12:49:18
ну и да, что такое «прошлый раз?»

Vlad
14.10.2017
12:49:46
В предыдущем блоке данных

Andrew
14.10.2017
12:51:50
MQTT не специфиицирует формат передаваемых данных

передавай свои битмаски, в чем проблема

MrSmeet
14.10.2017
12:52:09
Кто работает под clion?

Andrew
14.10.2017
12:52:26
чувак

Я работаю

я работаю

Andy
14.10.2017
12:52:43
Например, можно передать один бит, который показывает, что данные с прошлого раза не менялись
Ааа! Я понял. Вы хотите от протокола транспортного уровня решения для протокола уровня приложения.

Vlad
14.10.2017
12:53:24
Чем тогда его преимущество перед TCP? Там я и передаю что мне нужно

Google
Andrew
14.10.2017
12:55:09
в том, что протокол реализует Pub/Sub, контролирует фрейминг, соединение и QoS

Andy
14.10.2017
12:55:23
Vlad
14.10.2017
12:57:19
Andrew
14.10.2017
12:57:51
поверх tcp

Andy
14.10.2017
12:59:17
А mqtt передается силой мысли?
:) разница будет ощутима если у вас 40 подписчиков в разных сетях

поверх tcp
Точнее поверх ip

Vlad
14.10.2017
13:00:20
Ну и еще вопрос, часто ли вы встречали случай с несколькими подписчиками? И правильно ли я понял, чо в случае с несколькми подписчиками устройство передает данные всем подписчикам. особенно это будет удобно при медленной связи

Точнее поверх ip
Или все-таки TCP/IP?

Vlad
14.10.2017
13:05:28
QoS для IOT надо делать на стороне оператора сети, а не протокола.

Andrew
14.10.2017
13:05:44
короче, основная тема mqtt в том, что ты подписываешься, а потом у тебя дергается callback когда данные приходят. Ну и на другой стороне ты просто отправляешь данные и они доходят всем заинтересованным. + есть брокер, который умеет роутить сообщения

QoS для IOT надо делать на стороне оператора сети, а не протокола.
если у тебя много данных с устройства передается, а канал узкий/нестабильный, то их нужно приоретизировать

Vlad
14.10.2017
13:07:41
это и делается на стороне оператора

Andrew
14.10.2017
13:10:24
да с чего бы

вот у тебя девайс, у него очередь на отправку, у него дернулись две публикации, какой пакет ему первым в очередь ставить?

Vlad
14.10.2017
13:13:24
Обе вместе. В одной публикации. Т.е. накладные расходы будут больше данных

Andrew
14.10.2017
13:16:31
ну окей. В очереди висит 10 сообщений, отправляются примерно раз в секунду. Появилось еще одно сообщение с большим приоритетом. Их тоже все вместе отправлять?

«оба вместе» приоретизация так не работает

и о каких накладных расходах ты все время говоришь

Google
Andy
14.10.2017
13:33:10
Или все-таки TCP/IP?
Да, ты прав. Че-то меня переклинило. Но mqtt все равно лучше для маааленьких букашек

Andrew
14.10.2017
13:35:01
было бы еще в MQTT еще RPC

я понимаю, что это Telemetry Transport

Vlad
14.10.2017
13:50:54
Короче, что сделаи мы. Вначале предается словарь. В неим иут названия полей базы, единицы измерения, мин, макс, смещение, масштаб, комментарий итд. Далее идут блоки. Блок не беольше фиксированного размера. В блоке несколько фреймов. Базовый фрейм содержит все поля, данные по кторым имеются. Делта-фрейм содержит только поля, которые поменялись с предидущего фрейма. В начале фрейма битовая маска с признаком налсчия полей. Дальше идут сами данные.

Все это заливается на сервер. На сервере есть возможность смотреть графики, делать экспорт в CSV итд.

Andrew
14.10.2017
13:52:19
главное, не забывать цепь смазывать периодически

вы реально этими битовыми масками-то сколько сэкономили?

Vlad
14.10.2017
13:54:46
Раза 4 минимум.

Andrew
14.10.2017
13:55:56
я так понимаю, большая чать полей — это 1-4 байта

Vlad
14.10.2017
13:56:29
Где-то так. До 8

Andrew
14.10.2017
13:56:58
а сколько типов полей?

Vlad
14.10.2017
13:58:33
Фиг знает.. Штук 30-50

Andrew
14.10.2017
13:59:25
и сколько данных за раз передается?

всмысле сколько типично полей обновляется за квант передачи

Vlad
14.10.2017
14:02:09
Зависит поведения системы. В покое может почти ничего не меняться (10%), в динамике процентов 50%.

Andrew
14.10.2017
14:03:06
а как вообще параметры группируются? Есть какой-то таймер, который смотрит, что поменялось и отправляет пачку?

Vlad
14.10.2017
14:04:33
Просто раз в секунду или реже. Параметры могут приходить, например раз в 10 мс. Но отправляем реже.

Andrew
14.10.2017
14:07:29
ну то есть у вас раз в секунду отправляются около 20-и параметров в среднем по 4 байта, т.е. около 80 байт. Если бы вы запаковали это во что-нибудь стандартное типа протобуфера или msgpack, то получилось бы порядка 200 байт. Точно ради экономии 100 байт стоило писать велосипед?

Vlad
14.10.2017
14:12:53
Протобуф не подходит. Это хорошо, если у вас все клиенты используют одинаковый формат. У нас есть возможность добавлять поля не меняя ПО на другом конце

Andrew
14.10.2017
14:13:15
окей, msgpack для вас идеальный вариант

Google
Andrew
14.10.2017
14:13:29
как раз для динамических данных

Vlad
14.10.2017
14:19:20
Получится сложнее и медленнее.

Andrew
14.10.2017
14:21:16
все ясно

Vlad
14.10.2017
14:23:12
Объясняю. Проблема 1. Надо передавать не только данные но их отсутвие.

Andrew
14.10.2017
14:24:16
у вас соединение висит, запили keepalive какой-нибудь и будет уверенность, что данных нет

Vlad
14.10.2017
14:24:37
Надо уметь быстро извлекать конкретное поле из фрейма. В случае msgpack надо будет распарсить все даныне с начала фрейма. У меня можно на основе битовой маски

Admin
ERROR: S client not available

Andrew
14.10.2017
14:25:20
так а что в битовой маске лежит, как из нее достать смещение поля?

Vlad
14.10.2017
14:26:07
Это другое. Вот есть у меня температура ОЖ, количество бензина и заряд батарейки. В каждую секнду может поменяться любой парметр. Но меняются они редко. Поэтому, если не менялись, то и не предаются.

Andrew
14.10.2017
14:26:21
да, это понятно

Vlad
14.10.2017
14:26:58
Для этого и битовая маска. В ней для отсутвующих полей ставится ноль.

Andrew
14.10.2017
14:27:18
и это тоже понятно

но как из флага в битмаске получить позицию параметра в посылке?

Vlad
14.10.2017
14:27:43
В случае msgpack все равно придется передавать признак.

Andrew
14.10.2017
14:28:06
в msgpack это будет map и каждому параметру свой ключ соответствует

Vlad
14.10.2017
14:28:14
Есть массив размеров полей. Придется в цикле просумировать.

Andrew
14.10.2017
14:30:05
я согласен, что msgpack линейно парсится, но там парсинг не сильно дольще будет, чем расчет смещения циклом по массиву размеров полей

ну и да, парсится-то это все на сервере

Vlad
14.10.2017
14:46:25
Серверу тоже тяжело

Andrew
14.10.2017
14:48:32
у вас миллион пользователей?

Google
Petr
14.10.2017
14:49:07
вангую что это шина данных между мозгами автомобиля

Vlad
14.10.2017
14:54:25
Например, пользователь может попросить построить график по параметру за неделю. Надо будет распарсить 500 000 записей

вангую что это шина данных между мозгами автомобиля
Между мозгами там другое. Но это тоже делаем

Andrew
14.10.2017
14:55:13
но они же уже были переданы на сервер и лежат в бд, при чем тут протокол?

Vlad
14.10.2017
15:03:40
В бд раскладывать не хочется. Это ещё тормознее

Либо во что-то колоночное

Andrew
14.10.2017
15:03:58
и где у вас данные в итоге лежат?

Vlad
14.10.2017
15:08:44
Сейчас в виде отдельных файлов. И сервак который их отдает. Агрегаты в базе

Andrew
14.10.2017
15:10:34
у меня всё…

Vlad
14.10.2017
15:11:07
Будем переделывать. Набираем разработчика

Andrew
14.10.2017
15:11:41
https://habrahabr.ru/company/oleg-bunin/blog/329062/

Vlad
14.10.2017
15:15:40
Я в курсе. Но есть и минусы этих подходов.

Cate
14.10.2017
17:10:07
Друзья. Тут кто-то хотел много интересных докладов на встрече и все такое.

Я что-то не наблюдаю желающих докладики докладывать.

Друзья, готова программа докладов на встречу в рамках ITGM #11: 28 октября, Петербург. 12:00 - 12:45 Кирилл Тихонов (Navico) - "Вычисления на этапе компиляции для микроконтроллерного кода." Кирилл покажет как можно было раньше и можно теперь переносить часть дорогостоящих вычислений из микроконтроллера на персональный компьютер на этапе компиляции. 45 минут 13:00 - 13:45 Павел Курочкин (GenRnD.ru) - "Рассказ про новинки с Embedded Linux Conference Europe 2017 " Павел поделится впечатлениями от выставки Embedded Linux Conference Europe 2017, расскажет о новинках и тенденциях в разработках встраиваемых систем. 45 минут 15:00 - 15:45 Строков Андрей (2600) - "Избавиться от проводов за 60 минут" Мастер-класс с антеннами, кабелями и нескучными картинками, чтобы почувствовать запах эфира, разобраться, почему большая антенна — не всегда хорошо, а маленький импеданс — не всегда непонятно. Как разводить платы, чтобы запеленговать самолет и как принять вайфай из соседнего города. 45 минут 16:00 - 16:45 Круглый стол - "Тендеции развития IoT" 45 минут Полная программа и регистрация: http://embedded.group/

Valentin
14.10.2017
19:59:51
Где вас можно посмотреть в онлайне?

пикотранзистор
14.10.2017
20:01:09
Научно-технический центр “Протей”, Санкт-Петербург, инженер-программист C++, зарплата от 90к на руки Ищем инженера-программиста в отдел, занимающийся программной поддержкой железок собственной разработки (http://protei-st.ru/products/mks/): реализация высокоуровневого API, системных утилит, драйверов. Область деятельности: телефония традиционная, нетрадиционная и VoIP. Минимальные навыки: - C++ (в т.ч. C++11) и C, системы контроля версий (работаем с svn, mercurial и git) - понимание сетевой модели OSI и умение работать с сокетами через POSIX API - эксперт в администрировании локалхоста Будет плюсом: - python - опыт написания юнит-тестов - опыт работы с микроконтроллерами/DSP - знания в области цифровой обработки сигналов - опыт работы с alsalib Условия: - команда 3-4 человека - белая зарплата по ТК РФ с регулярным пересмотром - ДМС, полностью оплачиваемый больничный - гибкий график О компании: - разработка и производство аппаратно-программных телекоммуникационных решений (x86, arm, fpga) - 250+ сотрудников, 15 лет на рынке - средний возраст сотрудников компании - 28 лет - офис в 10 минутах от метро «Выборгская» - у большинства разработчиков в компании Linux на десктопе (в команде - у всех), да и разрабатываем под Linux Резюме слать сюда: physical_ci@protei.ru. Могу ответить на любые вопросы и в личку (@picokun) или даже тут (я рядовой программист в отделе). P.S. В отделе с секретами не работаем, форм допуска ни у кого нет, так что можно свободно выезжать заграницу :)

kiltum
14.10.2017
21:25:26
Но что такое «нетрадиционная телефония»?

Страница 503 из 975