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

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

pvvx

Активный участник сообщества
@pvvx - какие настройки на максимальную жизнь батареи? Смутила просадка на 5% за день
Просадка чего?
Новая батарея CR2032 имеет напряжение более 3.2 Вольта. Но рабочее напряжение где-то 2.8..2.95 В, в котором она находится 99% жизни.
Начальный спад с завышенного напряжения - это первые доли процента...
Но обычно пользователи сами сажают батарею частыми соединениями для начальных настроек (программирование жрет много - сразу несколько % CR2032, процедура привязки к новым ПИН-кодамам тоже поджирает, но уже менее...) и прочим кривым ПО, которое не умеет работать с BLE.
Не очень понял настройки:
Advertising interval: ms, step: 62.5 ms
Measure interval: 4x(Advertising interval)
Advertising interval - шаг передачи рекламного пакета BLE.
Measure interval - шаг опроса датчика и напряжения батареи.
Кратность возникает для экономии энергии - SOC и системное ПО требует время для восстановления из спящего режима, что есть жручка от батарейки. Лишний раз будить систему = потерять много энергии.
По этому просыпается для передачи и одновременно добавляет опрос сенсоров, смену изображения и прочее. Так выходит значительно меньшее потребление.
В итоге кратность измерение в шагах паузы к передаче - главному жручему событию для BLE...
Почему в Advertising interval макс 10,000 мс (10сек)? Меня бы и раз в минуту устроило.
Стандарт BT/BLE имеет максимум в 10 сек.
Apple и прочая помойка вообще рекомендует до 2 секунд. Иначе в данных "брендах" адаптер BT никогда не увидит термометр.
Я все страницы не читал, может кто спрашивал уже. У https://github.com/atc1441/ATC_MiThermometer есть функция Sensor instant Advertising, если изменения быстрые.
В вашей прошивке она реализованна?
У ATC1441 опрос сенсора происходит с паузой в 10 сек и более.
В моей версии опрос сенсора и батареи можно настроить в сотню микросекунд. В default установках те-же 10 сек. И (при default настройках) каждый интервал опроса сенсора передается всего 4 раза в разных форматах с интервалом рекламы в 2.5 сек...
Т.к. кривые дрова BT у ESP32 теряют очень много пакетов, то реально и часто возникают паузы считывания рекламных пакетов с интервалами более 1 минуты, хотя сенсор за этот период передает 24 пакета...
Нормальные адаптеры BT теряют до 7% при обстановке в сотни датчиков...
 

pvvx

Активный участник сообщества
@pvvx, спасибо за ваш проект! Я у себя также использую датчики IBS-TH1 plus - отлично работают. Мне кажется, что они сделаны абсолютно на той же базе, что и датчики в вашем проекте. Их принципиальное отличие в том, что к ним можно подключать щуп с внешним влагозащищенным датчиком. Порой это незаменимо. На мой взгляд, это было бы классное развитие проекта!
Исходные коды открыты - меняйте и добавляйте что вам нравится.

Датчики транслируют температуру (с двух датчиков, при наличии внешнего), влажность, процент батареи. Там две батареи AAA, возможно что время автономной работы будет больше, чем у устройств батареями типа CR2032. Также появляется возможность использовать аккумуляторы.
А мне этого не нужно, как и большему проценту использующих текущую версию прошивки. Любое дополнение или просто ветвление программы по условиям - это лишнее потребление.
Для DIY есть боле дешевые BLE модули...
 

SAU

New member
да, согласен по всем пунктам.
Только глянул напряжение- доли вольта, а в % аж 3% =) мне кажется, перевод в % не верен
Screenshot_20210628-080529_Chrome.jpg
и по потерям согласен - показания батареи esp32 получал намного чаще, чем показания температуры.
И как с этим бороться? Чаще слать?
Screenshot_20210628-080634_Chrome.jpg
и какие микроконтроллеры с блютус лучше, чем esp32 в плане цена/КПД?
И если все таки на esp32, какие библиотеки для bluetooth лучше других?
 

pvvx

Активный участник сообщества
и какие микроконтроллеры с блютус лучше, чем esp32 в плане цена/КПД?
И если все таки на esp32, какие библиотеки для bluetooth лучше других?
Любые SoC с BT, кроме ESP32... У ESP32 кривой драйвер BT и плохое распределение на мультизадачность, тем более никто из нормальных программистов уже не занимается таким устаревшим и прориетарным дерьмом от Espressif. Espressif изначально не вкладывал в ПО, а в текущий момент ПО ему пишут пионеры ардуинщики-блогеры...
 

pvvx

Активный участник сообщества
Только глянул напряжение- доли вольта, а в % аж 3% =) мне кажется, перевод в % не верен
Перевод в % верен - аналог от Xiaomi, точнее от Mijia. Равен оригиналу... Но у элемента характеристика напряжение-остаток заряда не линейна и Xiaomi пожидились поставить конденсаторы по питанию, хотя разработчики сделали на плате позиции для них... Економия :)
 

nikolz

Well-known member
Перевод в % верен - аналог от Xiaomi, точнее от Mijia. Равен оригиналу... Но у элемента характеристика напряжение-остаток заряда не линейна и Xiaomi пожидились поставить конденсаторы по питанию, хотя разработчики сделали на плате позиции для них... Економия :)
относительно перевода в %
Вы написали:
"Начальный спад с завышенного напряжения - это первые доли процента..."
Но спад чего? Если энергии, то перевод правильный, а если напряжения - то нет.
----------------------------------------------------
О, сколько нам открытий чудных
Готовят
просвещенья дух...
 

SAU

New member
относительно перевода в %
Вы написали:
"Начальный спад с завышенного напряжения - это первые доли процента..."
Но спад чего? Если энергии, то перевод правильный, а если напряжения - то нет.
----------------------------------------------------
О, сколько нам открытий чудных
Готовят
просвещенья дух...
посмотрите код. Я глянул, как он % переводит. Там есть макс и мин напряжения. % строит на разнице мин, макс и текущего
 

pvvx

Активный участник сообщества
относительно перевода в %
Вы написали:
"Начальный спад с завышенного напряжения - это первые доли процента..."
Но спад чего? Если энергии, то перевод правильный, а если напряжения - то нет.
----------------------------------------------------
О, сколько нам открытий чудных
Готовят
просвещенья дух...
Спад напряжения, по которому алго линейный, а надо специфический, т.к. для диагностики CR2032 с +-30% надо делать подключаемые нагрузки для разных токов и измерять с учетом кривизны падения под разной нагрузкой. Иначе это градусник измеряющий что там с темной материей на краю видимой вселенной...
 

miks69

Member
Подскажите, альтернативная прошивка поддерживает получение уведомлений с термометра в режиме подписки (RemoteCharacteristic->registerForNotify) как в оригинальной прошивке?
 

shaman1010

Member
Начал потихоньку HA настраивать. Больше побаловаться. Поставил BLE монитор от pvvx, который уже в репе, спасибо. И нашелся у меня сяомовский датчик, у которого 4В напряжение... вспомнил, что когда-то поставил на тест связку солнечная микро-панелька, ионистор (два последовательно на 5В). И с апреля (уже по логам посмотрел) все это мероприятие было прилеплено на стекло балкона. Когда напряжение таки превысило 3 с копейками вольта - показания пошли достаточно сильно шуметь и на экранчике был зашкал по контрастности. НО при этом весь блочек прожил больше 4 месяцев. Обнаружив его, решил добавить LDO XC6206 (под рукой были на 2,5В, у них дропаут 0,25В и собственное потреблений 1мкА). И оно сейчас пошло опять работать, но на входе уже 2,5В (лучше все-же 3В брать, на этом контрастность понижена).
В общем выводов два:
1) от 4,5 В градусник не сгорает.
2) добавив мелкую солнечную панель, ионистор и ldo - получается почти вечный градусник :)
IMG_20210808_144209.jpgIMG_20210808_144419.jpgScreenshot_20210808_144915_com.android.chrome.jpg
 

miks69

Member
Подскажите, альтернативная прошивка поддерживает получение уведомлений с термометра в режиме подписки (RemoteCharacteristic->registerForNotify) как в оригинальной прошивке?
Похоже, что никто не в курсе данного вопроса, и даже сам разработчик кастомной прошивки?
 

pvvx

Активный участник сообщества
Похоже, что никто не в курсе данного вопроса, и даже сам разработчик кастомной прошивки?
Безусловно не в курсе! И зачем мне это знать? Точнее про то, что там у вас своё и кривое, да и какие непонятки гуляют в голове... Это ваше личное и обсуждать не хочу...
т.к. в описании сказано что есть такая команда даже для нестандартной notify всех параметров:
0x33​
Start/Stop notify measures in connection mode
а кроме этого даны стандартные uuid с notify c примерами работы для эксплорера.
 

miks69

Member
Безусловно не в курсе! И зачем мне это знать? Точнее про то, что там у вас своё и кривое, да и какие непонятки гуляют в голове... Это ваше личное и обсуждать не хочу...
т.к. в описании сказано что есть такая команда даже для нестандартной notify всех параметров:
0x33​
Start/Stop notify measures in connection mode
а кроме этого даны стандартные uuid с notify c примерами работы для эксплорера.
После отправки данной команды ничего не изменилось
 

miks69

Member
Безусловно не в курсе! И зачем мне это знать? Точнее про то, что там у вас своё и кривое, да и какие непонятки гуляют в голове... Это ваше личное и обсуждать не хочу...
т.к. в описании сказано что есть такая команда даже для нестандартной notify всех параметров:
0x33​
Start/Stop notify measures in connection mode
а кроме этого даны стандартные uuid с notify c примерами работы для эксплорера.
Уведомления пошли после включения галочки "Tx measures" в настройках конфигурации прошивки. При этом формат данных уведомления нигде не описан, пришлось самому "декодировать".
В общем у кого там свое, кривое или нет, и у кого какие непонятки в голове гуляют, это еще большой вопрос.
По моему мнению, если вы делаете альтернативную прошивку, то нужно хотя бы придерживаться кодов и форматов, заданных в оригинальной прошивке, и используемых в стандартной BLE-библиотеке, в которой например вкл/выкл уведомлений делается кодом 0x00/0x01/0x02.
В любом случае спасибо вам за ваши пояснения и ваш ответ, хоть и грубый.
 

pvvx

Активный участник сообщества
нужно хотя бы придерживаться кодов и форматов, заданных в оригинальной прошивке, и используемых в стандартной BLE-библиотеке, в которой например вкл/выкл уведомлений делается кодом 0x00/0x01/0x02.
Это в вашей библиотеке? В моей другой код.
В оригинальной прошивке нет вкл/выкл notify и все форматы не стандартные, не по технологии/стандартам Bluetooth
При этом формат данных уведомления нигде не описан, пришлось самому "декодировать".
Для этого даны примеры кода разбора на JS/Python и полный код исходников самой прошивки на СИ.
Где он ещё должен быть описан? В туалете?
 

miks69

Member
Для этого даны примеры кода разбора на JS/Python и полный код исходников самой прошивки на СИ.
Где он ещё должен быть описан? В туалете?
Форматы обмена данными обычно даются в описании, а не в примерах, и уж тем более не в туалете, хотя, как показывает практика, всякое в жизни бывает )))
 

pvvx

Активный участник сообщества
ESP32 core -> libraries -> BLE -> BLERemoteCharacteristic.cpp -> void BLERemoteCharacteristic::registerForNotify(...)
А ESP32 - это чистая отсебятина Ардуино-школоты и сам ESP32 ужасно работает с BLE устройствами (так и не отлажены внутренние дрова).
Форматы обмена данными обычно даются в описании, а не в примерах, и уж тем более не в туалете, хотя, как показывает практика, всякое в жизни бывает )))
Пришлите описание которое вам нравится - прикреплю ссылку.
Текущая версия и так содержит стандартные UUID (с Notify) и описанные в текущем стандарте BLE. А дополнительные пользовательские настройки, со своим UUID, не стандартизированы и каждый как хочет так и меняет.
 
Сверху Снизу