• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MQTT

pvvx

Активный участник сообщества
С датчика врабатывается всего 4 переменных разрядностью не более 16 бит. Большей точности у него просто нет, а реальные данные и менее.

Если датчиков 5 шт, то общий поток, при 50 точках в сек, выходит всего 4*2*50*5 = 2000 байт в сек.

Тут не ясно почему вас беспокоит роутер с WiFi AP и тип WiFi соединения? Там только одно – ограничение кол-ва подключенных устройств, т.к. WiFi AP во всех бытовых роутерах всегда ограничена на кол-во соединений…

В этом месте не понятно, зачем MQTT, если вы пишите на python? Там запросто задается любой socket…

Аналогично не понятно, зачем в автономном датчике стоит ESP? Он же выжрет батарейку в раз. Такие потоки доступны любому чипу BLE и основное потребление составит сам датчик (MPU9250). Да и всяких готовых Bluetooth Inclinometer на али уже куча.

В данном деле интересна только интеграция десятка датчиков и прием с отработкой от всей своры на смарте. В этом прокатит только для BLE, т.к. может иметь множественные соединения, а не ограниченные как у WiFi.
 

kharlashkin

New member
С датчика врабатывается всего 4 переменных разрядностью не более 16 бит. Большей точности у него просто нет, а реальные данные и менее.

Если датчиков 5 шт, то общий поток, при 50 точках в сек, выходит всего 4*2*50*5 = 2000 байт в сек.

Тут не ясно почему вас беспокоит роутер с WiFi AP и тип WiFi соединения? Там только одно – ограничение кол-ва подключенных устройств, т.к. WiFi AP во всех бытовых роутерах всегда ограничена на кол-во соединений…

В этом месте не понятно, зачем MQTT, если вы пишите на python? Там запросто задается любой socket…

Аналогично не понятно, зачем в автономном датчике стоит ESP? Он же выжрет батарейку в раз. Такие потоки доступны любому чипу BLE и основное потребление составит сам датчик (MPU9250). Да и всяких готовых Bluetooth Inclinometer на али уже куча.

В данном деле интересна только интеграция десятка датчиков и прием с отработкой от всей своры на смарте. В этом прокатит только для BLE, т.к. может иметь множественные соединения, а не ограниченные как у WiFi.
С датчика вырабатывается 3 по 16 бит] (акселерометр, магнитометр и гироскоп) + кватернион 4 по 16 бит. На контроллере "на лету" идет обработка этих данных, корректировка кватерниона и передача его на ПК.
Я использую Enterprise точку доступа Motorola (есть еще пара Ubiquity, но их автономно настроить не получится, а контроллер ставить на ноут было лень), там ограничения на кол-во соединений нет ни каких подключений кроме этих датчиков - нет, ноут кабелем к ней подключаю. Я математику уже переделал, чтобы отдавать кватернион только когда есть смещение на какое-то значение - мне просто показалось что когда 3 датчика немного не своевременно сообщения приходят.
MQTT - интересно было пощупать что за зверь, ну и более перспективно - можно будет гнать на любое устройство данные через брокер, который находится где угодно. Если рассматривать задержку, то 100 мс для он-лайн игр более-менее приемлемо.
В первых попытках делал все на Arduino 328p + Bluetooth, так как опыта работы с "голубозубом" не было, так и не понял с какой стороны подступиться чтобы цеплять множество устройств, к тому же ограничение на дальность работы. ESP - пусть жрет - это прототип для проверки решений.
 

pvvx

Активный участник сообщества
С датчика вырабатывается 3 по 16 бит] (акселерометр, магнитометр и гироскоп) + кватернион 4 по 16 бит. На контроллере "на лету" идет обработка этих данных, корректировка кватерниона и передача его на ПК.
Там итоговый все равно остается только кватернион.
так как опыта работы с "голубозубом" не было, так и не понял с какой стороны подступиться чтобы цеплять множество устройств, к тому же ограничение на дальность работы.
Дальность у устройств с RF TX +8Дб и более, начиная с BT4.2 одинаковая с WiFi, но т.к. модуляция и прочие параметры самого способа передачи другие, то стабильность гораздо лучше WiFi. Проявляется как меньше выпадений. Аналогично уменьшается максимальная задержка передачи. У WiFi выпадения в городском варианте использования часто более 1 секунды. На BT4.2+ этого не наблюдается.
 

pvvx

Активный участник сообщества
Представьте мышку и клавиатуру с WiFi :) Или что нажимаете кнопку, а оно тормозит на секунды... Это типа WiFi.
 

kharlashkin

New member
Там итоговый все равно остается только кватернион.
Дальность у устройств с RF TX +8Дб и более, начиная с BT4.2 одинаковая с WiFi, но т.к. модуляция и прочие параметры самого способа передачи другие, то стабильность гораздо лучше WiFi. Проявляется как меньше выпадений. Аналогично уменьшается максимальная задержка передачи. У WiFi выпадения в городском варианте использования часто более 1 секунды. На BT4.2+ этого не наблюдается.
Ну так поделились бы исходниками или документацией с примерами. "Каждая лягушка хвалит свое болото"
 

pvvx

Активный участник сообщества
Ну так поделились бы исходниками или документацией с примерами.
Большинство простейших исходников в открытом доступе.
Документацию с примерами я не могу написать, т.к. это занимает больше времени чем создать и отладить новую систему на каком новом MCU или типа... Тем более к документации всегда будут претензии... А если ещё весь созданный хлам сопровождать, то когда жить-то?
"Каждая лягушка хвалит свое болото"
Из болота WiFi меня BLE и вытянул.

Да, вы бы уточнили конкретику, какой пример нужен (?).
 

pvvx

Активный участник сообщества
Несколько лет назад было такое для ESP8266, как пример оверлея (код может загружаться с внешнего ресурса на исполнение как подпрограмма):
 

pvvx

Активный участник сообщества
На самый дешевый BLE есть UBIA - но это универсальный драйвер BLE/USB/ADC/DAC/I2C/UART
На нем в качестве теста и MPU9250 гонял, программу опроса I2C писать проще на javascript, а чип BLE в этом деле выступает как тупой контроллер I2С.
Там надо всё переписывать, лепить класс устройства... Оно то росло по мере тестов ещё без наличия итогов и конкретизации команд, т.е. писалось тяп-ляп чтобы только проверить. А счас времени нет на него. Позже накалакаю классы в js...
Но типа для вашей поделки нужен не универсальный, а конкретный драйвер заточенный на MPU9250. Но мне MPU9250 с BLE не понравился - при быстром опросе MPU9250 жрет много, больше чем имеющиеся BLE чипы в режиме передачи данных от него-же.
Критерий нормы по потреблению для BLE - это работа более полгода от CR2032. Всё остальное - баловство и прошлый век чипов (датчиков).
 

nikolz

Well-known member
kharlashkin,
По-моему мнению, Вы не оптимально решаете свою задачу.
MQTT - имеет смысл использовать если у Вас множество получателей и источников асинхронной информации
В этом случае делается брокер - т е посредник который накапливает и отдает данные при асинхронном к нему обращении
как я понял из ваших картинок - у вас и близко к этому ничего нет.
-----------------
Ваша задача решается очень просто и эффективно на основе классической схемы сервер-клиент по протоколу UDP
При этом Вы получите желаемую скорость обмена а программа будет до безобразия простой.
---------------
 

kharlashkin

New member
На самый дешевый BLE есть UBIA - но это универсальный драйвер BLE/USB/ADC/DAC/I2C/UART
На нем в качестве теста и MPU9250 гонял, программу опроса I2C писать проще на javascript, а чип BLE в этом деле выступает как тупой контроллер I2С.
В этом случае мне придется переносить всю обработку на ПК, более того и прошивку для MPU9250 тоже как то грузить с ПК на датчик, как-то выглядит сильно сложно.
Ваша задача решается очень просто и эффективно на основе классической схемы сервер-клиент по протоколу UDP
При этом Вы получите желаемую скорость обмена а программа будет до безобразия простой.
Согласен что Socket лучше подойдет, но опять же тогда завязка на ПК (ну или сервис). Тогда вопрос встает в канале между контроллером датчика и конечным софтом а вдруг UDP залочен у провайдера, а вдруг не стандартные порты на маршрутизаторе закрыты. Писал же что интересно пощупать что за зверь MQTT, переписать пару строчек на Socket проблем не вижу вообще - 10-к строчек.
 

pvvx

Активный участник сообщества
kharlashkin,
По-моему мнению, Вы не оптимально решаете свою задачу.
MQTT - имеет смысл использовать если у Вас множество получателей и источников асинхронной информации
В этом случае делается брокер - т е посредник который накапливает и отдает данные при асинхронном к нему обращении
как я понял из ваших картинок - у вас и близко к этому ничего нет.
-----------------
Ваша задача решается очень просто и эффективно на основе классической схемы сервер-клиент по протоколу UDP
При этом Вы получите желаемую скорость обмена а программа будет до безобразия простой.
---------------
Подкиньте нам эту безобразно простую программу, а мы посмотрим - годится или нет.
 

pvvx

Активный участник сообщества
В этом случае мне придется переносить всю обработку на ПК, более того и прошивку для MPU9250 тоже как то грузить с ПК на датчик, как-то выглядит сильно сложно.
Я про это и написал, что для конечного изделия надо делать специальную версию. Там всё сильно упрощается и особенно уменьшается потребление самого чипа BLE.
PS: Для WiFi так-же нужно иметь специальную дополнительную железяку - роутер.
 

pvvx

Активный участник сообщества
В новых BLE ещё добавили функцию определение расстояния, что в таком деле как определение местной (стартовой) позиции может пригодится.
Вообще проблема не в датчиках, а в функциональности и нужды в таком устройстве. Реализация доступна уже более пятилетки в любом виде, но в бытовом сегменте не нашло спроса и места.
Я вот чё суда к вам залез - думал уже есть простой пример с несколькими датчиками и прикрутить его в WebBluetooth для баловства в простую страницу для эксплорера... А тут питон и всякие MQTT - ненужный наворот и куча overhead.
 

kharlashkin

New member
В новых BLE ещё добавили функцию определение расстояния, что в таком деле как определение местной (стартовой) позиции может пригодится.
Вообще проблема не в датчиках, а в функциональности и нужды в таком устройстве. Реализация доступна уже более пятилетки в любом виде, но в бытовом сегменте не нашло спроса и места.
Я вот чё суда к вам залез - думал уже есть простой пример с несколькими датчиками и прикрутить его в WebBluetooth для баловства в простую страницу для эксплорера... А тут питон и всякие MQTT - ненужный наворот и куча overhead.
Реализация вышла дороговата - тыц и тыц (как пример), поэтому и не нашла спрос в быту. В сравнении с этими ценами Valve Index® Base Station за $149 штука уже не так дорого. Вот копия моего старого кода, без сложной математики на контроллере https://github.com/sslobodyan/MPU-9250DMP можете переделать под себя как угодно.
 

pvvx

Активный участник сообщества
Готовые платки под это дело от Arduino.
Там все примеры есть.
Есть аналогичные платки и от Adafruit.
Реализация вышла дороговата - тыц и тыц (как пример), поэтому и не нашла спрос в быту. В сравнении с этими ценами Valve Index® Base Station за $149 штука уже не так дорого. Вот копия моего старого кода, без сложной математики на контроллере https://github.com/sslobodyan/MPU-9250DMP можете переделать под себя как угодно.
Смарт-часы с нужным датчиком, экраном и акб стоят на али 350 руб.

Как пример
Может и дешевле есть...
 

pvvx

Активный участник сообщества
Мне 15 датчиков с аккумуляторами (Wemos D1 mini + Battery shield + Proto shield + GY 9250) обошлись примерно в $100. Правда паял два дня все до кучи ;)
Ну и как - какой из бытовых роутеров выдерживает 15 ESP ? :)
Эта тема интереснее, чем всё остальное. Т.е. о том как включить более нескольких десятков датчиков в быту в одну сеть...
Для этого есть... Опять BLE, т.е. разновидность - Mesh и Zigbee.
 

kharlashkin

New member
Ну и как - какой из бытовых роутеров выдерживает 15 ESP ?
Вопрос в одновременной передаче, а не одновременном подключении, именно поэтому я добавлял проверку на изменение кватерниона и только лишь когда изменения есть - отправлять данные.
Мой домашний - Xiaomi Mini Wifi Router на нем тоже попробую, есть так же где-то в кладовке TP-LINK TL-WR741ND его очередь тоже будет. Именно поэтому все тесты делаю пока на Motorola, потому как по логике, эта ТД лучше должна быть.
Кстати мое первоначальное желание было пробовать nrf24L01+. Для теста есть Arduino pro mini + nrf24L01+ и аккумуляторы с платами, правда всего в 4-х экземплярах.
 

pvvx

Активный участник сообщества
Надо как-то освоить энти Zigbee и Mesh. Определиться с их граничными режимами стабильности работы в куче... Это как-бы следующий этап - времени на всё не хватает.
Сомневаюсь, так как отдельный MPU9250 стоит около $3 - потому что с магнитометром. Там скорее всего более дешевый чип MPU6500 который будет "плыть" по оси Z.
Там вообще тапотун - датчик шагов. У него совсем другой алго и уже всё адаптировано в самом железе датчика.
А чипы MPU уже безбожно устарели - жрут много, а толку мало.
 
Сверху Снизу