• Система автоматизации с открытым исходным кодом на базе 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 - минималка - от пару сотен килобайт для тупой кнопки :)
 
Сверху Снизу