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

TLSR8251 + LCD + термометр = LYWSD03MMC XIAOMI Bluetooth термометр

nikolz

Well-known member
В самом термометре оф. версия хранит данные что-то за 4 месяца, если не более. Шаг то ли 1 час, то ли 30 мнут... Точно не помню, т.к. оф.версией не пользуюсь.
Время в термометре гуляет, т.к. нет часового кварца - Xiaomi пожидилось.
Reading recorded measurements on original firmware.
Всё описано на github.
У модифицированной прошивки 20 тысяч замеров. Шаг записи задается. По умолчанию - 10 минут = 4.5 месяца.
Получил вот такой пакет рекламы с LYWSD03MMC с официальной прошивкой:
02010000 A4C13888BF14:0106 1695FE:30585B0501:A4C13888BF14:28 01 00 CA
он обработан MAC перевернут и выделен Тип объявления 16 и UUID маяка Xiaomi Mi 95FE , но странно то,
что в нем нет измеренных значений температуры и влажности (на экране сенсора 24.8 и 29%)
вернее сказать есть всего три байта в конце 28 01 00
CA - это мощность RSSI
------------------------
Кто-нибудь может объяснить , что не так?
 

pvvx

Активный участник сообщества
Получил вот такой пакет рекламы с LYWSD03MMC с официальной прошивкой:
02010000 A4C13888BF14:0106 1695FE:30585B0501:A4C13888BF14:28 01 00 CA
он обработан MAC перевернут и выделен Тип объявления 16 и UUID маяка Xiaomi Mi 95FE , но странно то,
что в нем нет измеренных значений температуры и влажности (на экране сенсора 24.8 и 29%)
вернее сказать есть всего три байта в конце 28 01 00
CA - это мощность RSSI
------------------------
Кто-нибудь может объяснить , что не так?
А где "пакет" то? Это какие-то куски...
 

pvvx

Активный участник сообщества
Тип объявления 16 и UUID маяка Xiaomi Mi 95FE , но странно то,
что в нем нет измеренных значений температуры и влажности (на экране сенсора 24.8 и 29%)
Да и оф. прошивка передает значения один раз в 10 минут в виде пачки быстро следующих реклам. В остальное время, каждую секунду с гаком, передается пустой пакет mijia, на передачу которого просто тупо садит батарейку :p
 

nikolz

Well-known member
А где "пакет" то? Это какие-то куски...
это весь пакет для сенсора с правильным отображением MAC и удаленными значениями длины пакета и ADn блоков.
Длина используется для выделения блоков и не передается.
мой сниффер распаковывает и передает пакеты на терминал вот в таком виде
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:C2
02010000 68273793A9E6:02011A:1BFF7500420401017E68273793A9E66A273793A9E50108329F000000:B2
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:AA
02010000 6CE8C685912A:020106:1107FC9DD0B3CB84E0840642F3F7E2E0BFCB:BA
02010001 70E6C6C92754:02011A:020A0C:0AFF4C0010054B1C0B09C3:BA
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:C2
02010000 68273793A9E6:02011A:1BFF7500420401017E68273793A9E66A273793A9E50108329F000000:C2
02010000 A4C13865FA4A:020106:111695FE30585B05014AFA6538C1A4280100:CA
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:C2
02010000 68273793A9E6:02011A:1BFF7500420401017E68273793A9E66A273793A9E50108329F000000:C2
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:AA
02010000 68273793A9E6:02011A:1BFF7500420401017E68273793A9E66A273793A9E50108329F000000:AA
02010001 70E6C6C92754:02011A:020A0C:0AFF4C0010054B1C0B09C3:BA
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:C2
02010000 68273793A9E6:02011A:1BFF7500420401017E68273793A9E66A273793A9E50108329F000000:C2
02010000 68273793A9E6:02011A:1BFF7500420401207E17070000000000000000000000000000000000:B2
02010000 68273793A9E6:02011A:1BFF7500420401017E68273793A9E66A273793A9E50108329F000000:AA
-----
Да и оф. прошивка передает значения один раз в 10 минут в виде пачки быстро следующих реклам. В остальное время, каждую секунду с гаком, передается пустой пакет mijia, на передачу которого просто тупо садит батарейку :p
спасибо за ответ.
---------------------------
Зачем в пакете сенсора два раза передается MAC адрес рекламщика, в чем тайный смысл дублирования?
 

pvvx

Активный участник сообщества
02010000 A4C13865FA4A:020106:111695FE30585B05014AFA6538C1A4280100:CA
Это и есть "пустой" пакет. В нем есть инфа только о том в каком состоянии находится регистрация и весь его смысл - типа устройство online.
Дешифрация информации в пакете указана и тут:
Зачем в пакете сенсора два раза передается MAC адрес рекламщика, в чем тайный смысл дублирования?
Только такие домыслы:
Для системы mijia это может быть использовано для дублирования данной рекламы другим устройством, со своим MAC.
Не все драйвера/ПО операционных систем выдают MAC адрес самого устройства при сканировании. К примеру этого сервиса нет в расширениях Chrome. Вы можете получить данные из рекламы, но не можете получить MAC устройства :p
Лучше это спрашивать у больных Persecutory delusion. От них и так много бед в электронике...
 

Dual

New member
Искал Гуглом информацию по LYWSD03MMC, нашёл только эту тему более-менее детальную. Вопросы такие:
1) До какой температуры работает датчик (видел самое низкое в приложении -21,5, что соответствовало истине) ?
Могу поделиться опытом за прошлую зиму.
Датчик с родной батарейкой от продавца, данные забирал android приложением "MiTemp2"
Стоковая прошивка.
Temp.JPG
 

pvvx

Активный участник сообщества
Падение напряжения на практически новой батарейке CR2032 в LYWSD03MMC B1.9, включенной ровно неделю назад, при перемещении из +22С в -10.5С (хвост графика):
1638876325802.png
составляет 0.009В на градус.
А батарейка CR2032, проработавшая более года с альтернативной прошивкой уже не будет работать при -10С, т.к. на ней уже 2.64В (+22С) в последние месяцы...
 

nikolz

Well-known member
Это и есть "пустой" пакет. В нем есть инфа только о том в каком состоянии находится регистрация и весь его смысл - типа устройство online.
Дешифрация информации в пакете указана и тут:
Только такие домыслы:
Для системы mijia это может быть использовано для дублирования данной рекламы другим устройством, со своим MAC.
Не все драйвера/ПО операционных систем выдают MAC адрес самого устройства при сканировании. К примеру этого сервиса нет в расширениях Chrome. Вы можете получить данные из рекламы, но не можете получить MAC устройства :p
Лучше это спрашивать у больных Persecutory delusion. От них и так много бед в электронике...
Вопрос затоку:
1) можно ли реализовать прием данных из рекламы лишь конкретного мак адреса без соединения.
2) можно ли в TLSR реализовать передачу рекламы лишь на одном канале.
 

pvvx

Активный участник сообщества
1) можно ли реализовать прием данных из рекламы лишь конкретного мак адреса без соединения.
Есть такое - белый список. Выступает в качестве фильтра, иногда и аппаратного...
Перед какими либо действиями надо задать список мак адресов для белого списка.
А в настройках приема рекламы надо поменять константную переменную на условие включения этого фильтра.
Реклама вообще-то на любых модулях с BLE принимается без соединения...
2) можно ли в TLSR реализовать передачу рекламы лишь на одном канале.
Смотрите SDK - процедура назначения рекламы имеет операнд, который указывает на каком канале или каналах (маска бит) будет транслироваться основная реклама.
И эта маска есть у всех просмотренных SDK к разным чипам...
А с BT 5.0 существует расширенная реклама, которая всегда идет не на основных 3 каналах (чтобы не мешало другим.). И эти сообщения не ограничены по длине...
Но на основных 3 каналах выдается указание на каком канале модуль ведет трансляцию расширенной рекламы..
 

pvvx

Активный участник сообщества
@nikolz - Стандарты и SDK к BLE меняются быстрее, чем вы осваиваете азы BLE... Если не догоните, то будете плодить массу ошибок перебирая функции из SDK...
Обычным терминалом рекламы BLE уже давно нет смысла смотреть - запутаетесь в потоках :)
 

nikolz

Well-known member
@nikolz - Стандарты и SDK к BLE меняются быстрее, чем вы осваиваете азы BLE... Если не догоните, то будете плодить массу ошибок перебирая функции из SDK...
Обычным терминалом рекламы BLE уже давно нет смысла смотреть - запутаетесь в потоках :)
Спасибо за ответы, но в моих задачах BLE не подходит, поэтому шибко с ним не вожусь.
Да стандарты на BLE меняются быстро, вот уже и BLE 5.3 сделали.
Все это лишь подтверждает сказанное мною ранее, что BLE не для умного дома и умных приборов.
В итоге скорострельно лепят новые версии дабы залатать старые дырки.
 

pvvx

Активный участник сообщества
BL702 тоже нормально принимает BLE рекламу (в доках значится что и 5.0):
1638958851316.png
Для примера это вывод в текстовом виде в UART 2 мегабит в сек и в бинарном в USB-CDC...
Такое пишется, проверяется, программируется через USB за 5 минут на дешманской RV-Debugger-BL702.
Да стандарты на BLE меняются быстро, вот уже и BLE 5.3 сделали.
Все это лишь подтверждает сказанное мною ранее, что BLE не для умного дома и умных приборов.
В итоге скорострельно лепят новые версии дабы залатать старые дырки.
Это только ваше мнение - производители считают иначе и практически перешли на BLE для всех бытовых устройств, включая всякие вумные дома.
Да и народ ныне выкидывает старые WiFi (особенно с ESP) и заменяет на BLE с CR2032 - уже толпа таких сообщений только в репе на github про Xiaomi термометр.
Стандарт меняют по причине что теперь, после выхода 5.0 в него всё старое вписывается - уже и audio, давно и IP сети, всякие датчики и ручные безделушки...
 

nikolz

Well-known member
BL702 тоже нормально принимает BLE рекламу (в доках значится что и 5.0):
Посмотреть вложение 11529
Для примера это вывод в текстовом виде в UART 2 мегабит в сек и в бинарном в USB-CDC...
Такое пишется, проверяется, программируется через USB за 5 минут на дешманской RV-Debugger-BL702.
Это только ваше мнение - производители считают иначе и практически перешли на BLE для всех бытовых устройств, включая всякие вумные дома.
Да и народ ныне выкидывает старые WiFi (особенно с ESP) и заменяет на BLE с CR2032 - уже толпа таких сообщений только в репе на github про Xiaomi термометр.
Стандарт меняют по причине что теперь, после выхода 5.0 в него всё старое вписывается - уже и audio, давно и IP сети, всякие датчики и ручные безделушки...
Относительно белого списка.
Я так понимаю что это все тот же режим сканирования
только мас адреса фильтруются.
Меня же интересует прием лишь включение, прием одного мак адреса и выключение применика.
Есть такой режим?
------------------------
конечно перешли. А куда они денутся с подводной лодки. Но это не значит что BLE оптимален для указанных мною устройств.
Все еще впереди.
 

pvvx

Активный участник сообщества
Относительно белого списка.
Я так понимаю что это все тот же режим сканирования
только мас адреса фильтруются.
Да.

Меня же интересует прием лишь включение, прием одного мак адреса и выключение применика.
Есть такой режим?
Совершенно не понятно что вам требуется. Описывайте подробнее...
BLE реклама типовым устройством выдается через задержку в которой есть постоянный тай-аут и добавка рандом задержки, чтобы уменьшить коллизии, чтобы передачи расходились по времени, даже если заданы одинаковые таймауты.
По этому проснуться через фиксированное время и принять BLE рекламу с малым окном приема от устройства невозможно. Это не WiFi. Для этого существуют другие методы.
Есть специализированные типы BLE, где период между рекламами фиксирован - это всякие спец. маяки для определения местоположения...
 

pvvx

Активный участник сообщества
Дуплекс реализован в MESH. Устройство передает рекламный пакет и ждет ответа. Время активного состояния у конечного устройства в MESH может быть пару мс при токе к 6 мА.
А обычный BLE (не маяк, который не умеет соединяться и т.д.) после передачи каждого пакета рекламы включает приемник на чуть более пятьсот мкс для приема запроса от ведущего. Ведущий может запросить дополнение к рекламе или потребовать соединение... Т.е. в режиме рекламы так-же существует типа "дуплекс"...
Ваш любимый ESP-NOW нервно курит в сторонке :p
 

pvvx

Активный участник сообщества
И с какого-то 5.x стандарта для BLE есть вариант выдачи рекламы по событиям, а не постоянно...
Но это не значит что BLE оптимален для указанных мною устройств.
Все еще впереди.
Вот "стандартизаторы" всё пишут и уточняют, пытаясь устаканить всеобщий разброд и шатания в приемлемые рамки, т.к. в BLE уже развелось сверх большое кол-во наворотов.
 

volaltd

Member
И с какого-то 5.x стандарта для BLE есть вариант выдачи рекламы по событиям, а не постоянно...
Вот "стандартизаторы" всё пишут и уточняют, пытаясь устаканить всеобщий разброд и шатания в приемлемые рамки, т.к. в BLE уже развелось сверх большое кол-во наворотов.
По факту клали все на эти стандарты и делают как им проще и быстрее :)
 

pvvx

Активный участник сообщества
По факту клали все на эти стандарты и делают как им проще и быстрее :)
Не заметил - стандарты пишут для крупных производителей, а не для китайцев с Али-экспресс или очумелых ручек c Arduino.
Это в ESP поклали на всё, включая любые стандарты IP, TCP и прочего.
----
Эта фиговина XMWSDJ04MMC на чем? На TLSR825x? (заказал пачку "на поковырять" давно, но что-то долго идут...)
А то надоели LYWSD03MMC с блеклым экраном LCD...
 

volaltd

Member
[QUOTE="pvvx, post: 83839, member: 6"
Эта фиговина XMWSDJ04MMC на чем? На TLSR825x? (заказал пачку "на поковырять" давно, но что-то долго идут...)
[/QUOTE]
Сча окажется собрали совсем на другой элементной базе, будете снова изучать новый прорывный китайский SoC вместо взять и сделать своё под свои потребности? Не сильно дороже и дольше выходит с учётом склада из промахов )
 
Сверху Снизу