• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

shaman1010

Member
Более ровный кусок CGG1-M, при этом перенес более 5 перепрошивок...
Они же и стоят сильно дороже дешманского градусника.
У последнего вся прелесть в цене, т.е. можно брать как заготовку и внедрять в свои поделки. Конденсатор туда впаивается без проблем (посадочное ведь есть). Но для своих поделок - все-равно более актуально питать от общего источника. Т.е. либо от розетки, либо от большого аккумулятора. Где-то в теплицах, сушилках либо чем-то подобном.
Либо какая-то железка (тот-же "любимый" esp32) в качестве шлюза и исполнительного устройства, и к нему несколько автономных датчиков, по которым рулить отдельными частями территории.
С часами, конечно, засада. Но ведь никто и не обещал, что они там должны быть :)
Насчет приложеньки от сяомишников - она так сильно будет жрать батарею только в том случае, если постоянно дергать датчик. Обычно он дергается, когда в приложеньке тыкаешь на датчик, и ждешь ответа с сиюминутной температурой, заодно подтягиваются и последние 5 (помой-му, давно не заглядывал) значений, для анализа изменений. В обычном режиме - шлюз слушает, пока термометр сам проснется и отчитается о значениях. Если без шлюза, то жор, наверное, будет больше, поскольку приложенька будет дергать термометр при каждом запуске, которых может быть много в течении дня.
 

pvvx

Активный участник сообщества
Они же и стоят сильно дороже дешманского градусника.
Не заметил - 800 руб для E-Inc с датчиком не цена.
Не путайте с другими CGG1, где стоит nRF. Они ровно в два раза дороже, а разница в куске пластмассы - корпус у nRF чипа больше :)
Конденсатор туда впаивается без проблем (посадочное ведь есть). Но для своих поделок - все-равно более актуально питать от общего источника. Т.е. либо от розетки, либо от большого аккумулятора. Где-то в теплицах, сушилках либо чем-то подобном.
Либо какая-то железка (тот-же "любимый" esp32) в качестве шлюза и исполнительного устройства, и к нему несколько автономных датчиков, по которым рулить отдельными частями территории.
С часами, конечно, засада. Но ведь никто и не обещал, что они там должны быть :)
Засада как раз с ESP32 и его работой с BLE.
А с часами уходящими даже на десяток секунд в день, которые они не могут отобразить, т.к. показывают только минуты никакой засады нет. Одной синхронизации в день достаточно.
Насчет приложеньки от сяомишников - она так сильно будет жрать батарею только в том случае, если постоянно дергать датчик. Обычно он дергается, когда в приложеньке тыкаешь на датчик, и ждешь ответа с сиюминутной температурой, заодно подтягиваются и последние 5 (помой-му, давно не заглядывал) значений, для анализа изменений. В обычном режиме - шлюз слушает, пока термометр сам проснется и отчитается о значениях. Если без шлюза, то жор, наверное, будет больше, поскольку приложенька будет дергать термометр при каждом запуске, которых может быть много в течении дня.
Тут у вас две неточности. HA - это Home assistant и там все приложения писаны "сообществом" и они так работают, что выжирают батареи.
Примерно как все программы во всяких маркетах для Андроид, писанных частниками. Не умеют работать с BLE, не знают какие параметры задать, да даже что они есть. Программисты же, а не аппаратчики и не системщики...
И с Xiaomi - без тыкания телефоном датчик долго на шлюзе не провисит. И шлюз пишет точки только раз в час.
 

pvvx

Активный участник сообщества
В Mi-Home для теста напишите любой сценарий - пусть температуре или влажности то-то сделает. И оставьте это дело шлюзу... Отрабатывает на следующий день. Это конкретно. И пофиг какой сервер Китайский или местный. Например кинуть оповещение если влажность более у меня отработал только через пару дней её превышения и прислал всего 3 оповещения с 4-х датчиков :)
Ныне включен местный сервер, но постоянно с датчика ZigBee выпадает кусок давления, обычно дырой от 5 до 8 часов, при этом температура и влажность с того-же датчика стабильна в истории... Mi-Home это не автоматизация, а пиар для продаж.
Работают только местные сценарии с ZigBee, где сервер не имеет участия.
 

pvvx

Активный участник сообщества
Вообще ошарашен что творят – делают устройства для контингента, живущего в многоэтажных ульях, а какой-либо зашиты у устройств нет. Соседский ребенок может читать данные и управлять вашими устройствами не имея при этом никакого спец. оборудования – “мобилой”. Я понимаю ещё вариант, если я ставлю такие побрякушки у себя на даче – там они от дома просто физически из-за расстояний не добьют до соседа или дороги. А в городе всё-же “таунхаус” и двор закрытый, c наблюдением и охраной…

Программерам так сложно было встроить pin-code и bind из SDK?

С ZigBee ситуация ещё прикольнее – есть толпы фанатов-пользователей. Часть из них фанатеет по всяким HA, но ничего не петрит в самих устройствах… Спросить даже не у кого, т.к. есть всего пара человек копающихся в уровне прошивок шлюзов, и наверно 1 или 2 которые что-то могут написать в сами SoC ZigBee по всему миру из данных ”сообществ”.

Не у кого даже спросить полный протокол-алгоритм работы по ZigBee датчика пусть даже простейшего выключателя на дверь от Xiaomi - c какими тама оно кодами и доп. шифрами работает, чтобы шлюз слопал.

Вот слепил прошивку с ZigBee (в тот-же термометр), впендюрил туда пару цифр от мас аналогичного xiaomi датчика, да имена производителя те-же… Шлюз не отбрасывает, но “пищит” 2 раза, в его MQTT от датчика события принимаются, но как родной для xiaomi датчик не виден. Что ему там надо? Кто может описать всё по порядку привязки и установления связи?

А то толмуты изучать лень, да в них всё равно не писано что надо xiaomi.

Покупать аналогичные датчики только дня снятия логов – тоже лень – и так хлама… Да и лог ничего особого не дает – это сразу фанаты ZigBee дали, т.к. для этого вума на надо...
 

shaman1010

Member
Ставишь "2000" - за сутки уходит в плюс на 2 секунды, ставишь "-2000" - за сутки уходит тоже в плюс на 2 секунды.
Обшибся. уходят на 2 МИНУТЫ в плюс при корректировке +-2000. Сейчас поставил корректировку в 0 - завтра посмотрю, на сколько уйдут. Если память не изменяет - уходило на минуту дня за 4.
Zigbee работает локально, кнопки включают свет, даже без наличия интернета на шлюзе. По синезубому градуснику в михом-е сценарии лепить - как-то не интересно, т.е. проверить, конечно, можно, только толку от этого не много. По зигби хоть кнопку открытия двери можно приспособить к счетчику воды (с герконом внутри, который). И иметь данные со счетчика долго с мелкой батареи.
Насчет BLE - вроде Макс еще в прошлом году в своем конструкторе добавил, когда еще альтернативных прошивок на градусники небыло, с модернизированного михома ключик вытягивали. Работало. Что там сильно не так с BLE в подобных применениях?
По протоколам zigbee - лучше к Жеке, наверное обратитесь, он свою ZESP, в пользу OpenWRT на вторых шлюзах не забросил. По идее протоколы согласования должны знать, изначально связку esp32-zigbee они по-моему крутили.
 

pvvx

Активный участник сообщества
Обшибся. уходят на 2 МИНУТЫ в плюс при корректировке +-2000. Сейчас поставил корректировку в 0 - завтра посмотрю, на сколько уйдут. Если память не изменяет - уходило на минуту дня за 4.
По синезубому градуснику в михом-е сценарии лепить - как-то не интересно, т.е. проверить, конечно, можно, только толку от этого не много.
Технических проблем не наблюдается.
ZigBee жрет больше, кол-во обслуживаемых устройств в одном месте по сравнению с BLE/MESH одинаково, с BLE/MESH может быть и больше т.к. сама RF посылка короче по времени (т.е. и жрет меньше).
И иметь данные со счетчика долго с мелкой батареи.
Как и в BLE - физической и технической разницы нет. У BLE есть возможность продиагностировать сеть и настройки с обычного смарта или компа. У ZigBee таких качеств нет.
Что там сильно не так с BLE в подобных применениях?
Кривое решение в ПО в шлюзе Xiaomi - обработка вынесена в cloud.
По протоколам zigbee
По самому протоколу вопросов нет, ну кроме таких: Почему в датчиках Xiaomi и прочих досих пор версия ZigBee не 3, а какая-то древняя-дремучая?
Вопросы есть в тему - что надо вписать в датчик ZigBee, чтобы стандартный шлюз Xiaomi стал работать с Mi-Home и cloud Xiaomi, без стороннего ПО. Т.е. как датчику ZigBee притвориться стандартным из списка для Mi-Home? Это не для выкладывания готовых подделок, т.к. будет нарушать пользовательское соглашение в Mi-Home, а чисто для информации.
Для BLE это всё уже известно - используются протоколы шифрования mijia и разные сертификаты-ключи.
 

pvvx

Активный участник сообщества
Почему нет, и наверно не будет, варианта альтернативной прошивки термометров с ZigBee - у пользователей нет никакой возможности сделать OTA или поменять настройки с помощью подручных средств. Основное подручное средство на сегодня у пользователей – это Chrome эксплорер и он мульти-платформенен и все платформы имеют BLE поддержку, а не ZigBee.
ZigBee - это вымирающий протокол, точнее вытесняемый BLE.
 

shaman1010

Member
При выставленной корректировке в 0 - часы (401-е, которые) отстали за сутки на 11 минут. Гы... А вторые, дешманские, при том, что отставали на минуту в день, при корректировке в 1000 - за сутки в минутах не отстали. В общем - на текущем этапе - дешман за 3,5 обгоняет дешман за 11. :) Правда дешман за 3,5 не использует low power mode и подключен к БП.
Насчет умирающего зигби - мейби, но пока еще его крутят, сяомитовцы в частности.
 

pvvx

Активный участник сообщества
Насчет умирающего зигби - мейби, но пока еще его крутят, сяомитовцы в частности.
Не видел изделий с маркировкой даты новых партий.
И Xiaomi не показатель - это производитель самого хлама из самого самого старого хлама :)
И наблюдаю SDK от того-же Telink в которых смесь BLE/МЕSH и Zigbee одновременно - даже gateway. При этом конфиги задаются через BLE :)
 

pvvx

Активный участник сообщества
При выставленной корректировке в 0 - часы (401-е, которые) отстали за сутки на 11 минут. Гы... А вторые, дешманские, при том, что отставали на минуту в день, при корректировке в 1000 - за сутки в минутах не отстали.
Измените температуру :) будут другие уходы.
Не понимаю, что вы хотите получить от встроенного RC генератора, калибровка которого производится один раз когда вы вставляли батарейку :)
Был запрос - "дайте коррекцию часов" - я встроил :) Коррекция работает, а остальное меня не касается.
Не нравится - напишите какой программный алго вам больше понравится - впихну и буду ссылаться на вас :)
 

pvvx

Активный участник сообщества
SDK от Telink я ломать не буду. Пересчеты с RC к кварцу каждое пробуждение-засыпание в данном SDK делаются в бинарной либе, первый старт высчитывает отношение кварца к RC.
В других вариантах SDK от Telink эти части кода с исходниками... Если менять SDK, то его надо прикладывать к проекту, а там заголовки по лицензии нехорошие... Пишите в Telink, подписывайте NDA и публикуйте, а мне энто NDA нафиг не сдалось. :)
 

shaman1010

Member
Коррекция работает, а остальное меня не касается.
Как в том фильме "Меня терзают смутные сомнения" - если я корректировку выставляю "2000" - за сутки убегают вперед на 2 минуты, если "-2000" - за сутки убегают вперед на 2 минуты, если корректировка "0" - за сутки отстают на 11 минут. Точно в корректировке +2000 и -2000 работают в разные стороны?
 

shaman1010

Member
И Xiaomi не показатель - это производитель самого хлама из самого самого старого хлама :)
Начнем с того, что сяоми - это не производитель, а торговая марка, для которой изделия клепают все, кто прошел отбор сяомистов.
И кому, как ни Вам, известно, что в изделии правильно написанный софт может достаточно сильно повысить юзабельность изделия. Софт они писать в большинстве случаев умеют (их медиакоробки с относительно куцым железом работают шустрей по двум причинам - специально добавленные инструкции в 905-е и хорошо адаптированный андроид для их же коробок). И да, с точки зрения рентабельности производства - чем дешевле итоговая себестоимость изделия, и чем раскреченней товар (больше выходная стоимость) - тем маржинальней продукт. И, поскольку там, в частности, госинвестиции - маржинальность имеет значение :)

По поводу часов - никак не придумаю изящный способ автоматической корректировки. ПодскАжите?
 

pvvx

Активный участник сообщества
Как в том фильме "Меня терзают смутные сомнения" - если я корректировку выставляю "2000" - за сутки убегают вперед на 2 минуты, если "-2000" - за сутки убегают вперед на 2 минуты, если корректировка "0" - за сутки отстают на 11 минут. Точно в корректировке +2000 и -2000 работают в разные стороны?
А вы лог смотрели?
1616856917773.png
Send delta time ok
Device StepTimeSec: 1000125.000 us

1616856910256.png
Send delta time ok
Device StepTimeSec: 999875.000 us

В js при этом передается только 32-х битное значение шага счета времени в 1/16 us cfg.step_time = value.getUint32(1,true); = utc_time_tick_step
А время в UTC (секундах с 1970.1.1) utc_time_sec в прошивке вычисляется так:
C:
    while(clock_time() -  utc_time_sec_tick > utc_time_tick_step) {
        utc_time_sec_tick += utc_time_tick_step;
        utc_time_sec++; // + 1 sec
    }
Проц спит всё время. Проснувшись, врубается кварц 24 МГц, SDK в регистр счетчика clock_time() тактируемый через делитель 2 к 3 (16 МГц) прибавляет значение промежутка сна от RC генератора.
Перед засыпанием время переводится в тики RC и вписывается в таймер пробуждения тактируемый от RC и далее отключается кварц 24 МГц и CPU вместе с другими потрохами SoC... И на цикл.
В момент активности процедура выше и подсчитывает сколько проспали сек с прошлого вызова...

11 минут быть не может - это ваши шалости и к прошивке никак не относятся. Нечего вырубать питание у термометра, т.к. при рестарте время берется из памяти записанных замеров, а там шаг как раз ваши 10..11 минут :p
 

pvvx

Активный участник сообщества
Если вам нужны точные часы - припаяйте часовой кварц к чипу и поменяйте в main.c blc_pm_select_internal_32k_crystal(); на blc_pm_select_external_32k_crystal().
Для получения 6-того или даже 7-мого знака точности (+-1 ppm) поправьте емкости на кварцах. Ими управляет сам чип и паять не требуется, а требуется скорректировать параметры в blc_app_loadCustomizedParameters();
Большую точность сможете получить только по GPS.
 

shaman1010

Member
11 минут быть не может - это ваши шалости и к прошивке никак не относятся. Нечего вырубать питание у термометра,
Там свежая батарея стоит. Могло случиться только зависание (когда я спал :) )

Если вам нужны точные часы - припаяйте часовой кварц к чипу и поменяйте в main.c blc_pm_select_internal_32k_crystal(); на blc_pm_select_external_32k_crystal().
Для получения 6-того или даже 7-мого знака точности (+-1 ppm) поправьте емкости на кварцах. Ими управляет сам чип и паять не требуется, а требуется скорректировать параметры в blc_app_loadCustomizedParameters();
Большую точность сможете получить только по GPS.
Спасибо.
Кроме GPS есть еще синхронизация по NTP (если сюда доступ к сети организовать), либо по сигналам точного времени из вышек (как швейцарские часы иногда читерят). Нужна какая-то входная антенна с контуром и разобраться, как синхронизироваться (никогда не задавался вопросом, что там вышки ежечасно щебечут)
 

pvvx

Активный участник сообщества
Кроме GPS есть еще синхронизация по NTP (если сюда доступ к сети организовать)
NTP - это всего синхронизация с джиттером в сотни и десятки ms и без точного собственного источника не имеет смысла.
А GPS - тут уже зависит от аппарата и может давать постоянный сигнал строба с постоянной точностью уже к наносекундам...
У радиоприемника точность зависит от расстояния до станции и задержек в самом приемнике... - без GPS расстояние не узнаете... :)
 

pvvx

Активный участник сообщества
Так сигнал GPS в здании (особенно многоэтажном) затухает так, что с часами к окну два раза в сутки бегать нужно :) А это уже хуже, чем радиовышка.
На современных не затухает (хватает отражений), если вы живете не в пещере, а есть какие дырки в свет в виде окон :)
А в "особенно многоэтажном" люди не живут - это скорее всего "офисы" для канцелярских крыс и там внешних стен часто нема.
 

pvvx

Активный участник сообщества
Тут пнул ещё немного в прошивке с ZigBee...
Шлюз кушает - т.е. термометр регистрируется по нажатию кнопок на шлюзе и вылазит в Mi-Home в виде "Датчик влажности и ...":
1616889102670.png
Передачу значений пока не делал, т.к. в SDK ZigBee 3.0, а у Xiaomi - в пределе 2.0 и надо писать несколько табличек с кучей ненужных значений, чтобы потом это всё передавалось и выжирало батарейку, т.к. нужной информации в пакетах ZigBee менее 0.1%, как и в раздутом коде - каждый бит сопровождается тысячами запросов - ответов и у каждой посылки свой оригинальный формат и обработка... Это ZigBee !!! - специально созданный формат для малых чипов с размером прошивки от 3-х до бесконечности раз больше чем для BLE - минималка - от пару сотен килобайт для тупой кнопки :)
 
Сверху Снизу