• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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, не стандартизированы и каждый как хочет так и меняет.
 
Сверху Снизу