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

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

volaltd

Member
предположу что у Вас сбивается программа измерения для AM2302. У него протокол на основе разной длительности High и low длительности 25 мкс 50 мкс и 70 мкс.
Ваша прога на ардуине вполне может тормозить при измерении разности интервалов.
У меня нет таких разбросов. Есть пять датчиков AM2302 и 4 датчика LYWSD03MMC .
Все тестировал на парах соли. Погрешность по влажности в пределах паспорта т е не более 4%.
Вот такая у меня ардуина на базе BluePill STM32F103, работает с 6-ю датчиками, по два на место измерения дабы видеть на сколько оно точно. Если загляните в исходники, то увидите что чтение сделано аппаратно таймерами, в режиме PWM Input, а вся последовательность пишется в память за счет DMA. Потяните такой полет мысли? :)
А кабы читали вы спеку, то знали бы что там есть CRC, которая не сойдется при ошибках обмена.
Я даже заморочился подать на них отдельно питание с линейного стабилизатора и обвесил каждую линию обмена защитными диодами.
IMG_20210503_100617.jpgIMG_20210503_100631.jpg
А вот смотрите что оно прямо сейчас выдает (слева среднее значение по показаниям, а по середине и справа данные с установленных практически рядом сенсоров):
sensors.jpg

И это еще я из 15шт отобрал те что более-мение правдоподобны.

В довершение как думаете на вот этой макетке с ESP32 и прошивкой EasyESP для чего три колодочки по 4-пина и рядом BME280? ;)
IMG_20210503_102210.jpg
 

Вложения

volaltd

Member
А где тот ваш описанный случай -40..+80С и пром. исполнение? В таком виде (корпусе) оно не лучше Xiaomi. Окислится от конденсата в парнике уже через месяц...
Мне бы сначала с DHT22 на BME280 с CAN переехать, а уже после буду строить парник. А то знаете, пока с одними датчиками выяснишь что не сам дурак, потом с другими выяснится что они только до 80% влажность меряют нормально, тут третьи в цене в 5 раз прибавят, а у четвертых выяснится что при полном доме IT-шников нужно быть очень умным чтобы их применить, то уже и на работу пора идти.

Мы ж с вами взрослые люди и знаем что лаком для ногтей все измазать кроме сенсора и вот она самая лучшая влагозащита :)

Чтобы из Xiaomi LYWSD03MMC сделать датчик протечки и влажности почвы, надо дописать пару кило кода и сделать самое сложное действие - припаять два провода на выходящие в отсек батареи контакты маркированные как GND и "reset" (это если нет отвертки открутить крышку и припаять толпу датчиков на все выводы платы...)
Аналогично и со всеми дверными/оконными контактами у Xiaomi.
Но это незя - цена таких датчиков выйдет в 3..4 раза дешевле и попортит продажи Xiaomi :)
Одно непонятно, для чего при этом использовать этот термометр, а не взять сразу какой из TB-03/04 ?
 

nikolz

Well-known member
Вот такая у меня ардуина на базе BluePill STM32F103, работает с 6-ю датчиками, по два на место измерения дабы видеть на сколько оно точно. Если загляните в исходники, то увидите что чтение сделано аппаратно таймерами, в режиме PWM Input, а вся последовательность пишется в память за счет DMA. Потяните такой полет мысли? :)
А кабы читали вы спеку, то знали бы что там есть CRC, которая не сойдется при ошибках обмена.
Я даже заморочился подать на них отдельно питание с линейного стабилизатора и обвесил каждую линию обмена защитными диодами.
Посмотреть вложение 11124Посмотреть вложение 11125
А вот смотрите что оно прямо сейчас выдает (слева среднее значение по показаниям, а по середине и справа данные с установленных практически рядом сенсоров):
Посмотреть вложение 11127

И это еще я из 15шт отобрал те что более-мение правдоподобны.

В довершение как думаете на вот этой макетке с ESP32 и прошивкой EasyESP для чего три колодочки по 4-пина и рядом BME280? ;)
Посмотреть вложение 11128
Вы написали: Два моих AM2303 поставленные рядом показывали влажность с что-то около 15% разницы,
И где разброс в 15% ?
-------------------
у меня все работает на ESP8266 еще датчик CO2 и управление 8 реле.
вот показания:
1620033674143.png
 

volaltd

Member
Вы написали: Два моих AM2303 поставленные рядом показывали влажность с что-то около 15% разницы,
И где разброс в 15% ?
-------------------
у меня все работает на ESP8266 еще датчик CO2 и управление 8 реле.
вот показания:
Данная система работает на AM2302 или DHT22, AM2303 серого цвета и стоят дороже, покупал на али две штуки ввиду надежды заменить на более правильные без переделки всего что уже сделано, но первый же тест показал разброс.

Специально для ваc:
IMG_20210503_125047.jpgIMG_20210503_125055.jpg

GPIO-21 - правый AM2303, GPIO22- средний AM2303, GPIO23 - левый AM2302, и сравните с BME280. si7021 кажись все распаял уже, не предоставлю для сравнения. Не 15%, но 10% видите?
 

volaltd

Member
Допускаю брак, подделку и т.д., но и при прайсе 10$ за экземпляр особо в лотерею играть не прикольно, особенно когда нужно 15-20 штук.

Ксяоми выглядит привлекательно, но тут нужно садиться и в очередной раз изучать новую экосистему Telink, закрывать дыру с обновлением кем угодно, вероятно менять или шифровать рекламные пакеты, и хез как строить прием ввиду того что в каждой окрестной квартире хорошо если по одному WiFi роутеру забивает 2.4ггц.

Попробую еще прием BLE на RPi, но пока остаюсь при своих BME280 и CAN :)
 

pvvx

Активный участник сообщества
Термометры перешил, да сразу влажность минусует 5%, а вот что любой кому не лень сосед может мне их перешить просто телефоном из браузера безовсяких напрягов - дырень еще та...
Custom прошивку с введенным pin-code сосед не прошьет, и bindkey не узнает чтобы расшифровать передаваемые данные с включенной опцией шифровки по mijia протоколу...
 

pvvx

Активный участник сообщества
Ксяоми выглядит привлекательно, но тут нужно садиться и в очередной раз изучать новую экосистему Telink, закрывать дыру с обновлением кем угодно, вероятно менять или шифровать рекламные пакеты, и хез как строить прием ввиду того что в каждой окрестной квартире хорошо если по одному WiFi роутеру забивает 2.4ггц.
За вас уже всё попробовали и изучили - в худшей что вы сможете найти обстановке с десяnками WiFi и прочим - процент сбитых пакетов около 7.
Для более качественного прима, что нафиг не нужно, вам следует соблюсти простые условия:
1. На пути сигнала между датчиком и приемником не ставить источников шума по всей ширине диапазона 2,4 ГГц значительно превышающих уровни сигналов датчика и приемника. WiFi с сотней антенн при смещении в сторону на пару метров от прямой траектории уже не помеха.
2. Не использовать то оборудование, что любят Ардуинщики и любители именно RPi. Там обычно используется самая худшая программная часть по части приема - будет громадное кол-во потерянных пакетов.
 

pvvx

Активный участник сообщества
Ксяоми выглядит привлекательно, но тут нужно садиться и в очередной раз изучать новую экосистему Telink
Не изучайте - изучите ESP32 и почините ему драйвер BLE, чтобы не пропускал пакетики...
На JDY-10 выходит, что даже при соединении с ним по BLE он ещё успевает принимать и ретранслировать в ту-же антенну необходимое для бытовых нужд кол-во рекламных пакетов от десятка BLE датчиков. Несравнимо с ESP32, особенно одновременно работающим по WiFi.
 

pvvx

Активный участник сообщества
Попробую еще прием BLE на RPi, но пока остаюсь при своих BME280 и CAN :)
Эл.Шокер вам в руки и пощелкать рядом или прямо в бронированный кабель CAN (если он бронирован) :)

Из JDY-10 за 100 рупь или самого термометра но с большей батарейкой, выходит шлюз для Android телефона или Windows с простейшим адаптером BT, который отрабатывает все датчики BLE не занимая WiFi и прочих каналов.
Так-же в него возможно дописать функциональность половины пакетов из зоопарка “HA” и резервные сценарии. Но я знаю, что вам надежность не нужна и по этому - не беспокойтесь: в ближайшее время исходников такого не выложу.
 

volaltd

Member
Custom прошивку с введенным pin-code сосед не прошьет, и bindkey не узнает чтобы расшифровать передаваемые данные с включенной опцией шифровки по mijia протоколу...
Виктор, при всем моем уважении к вам за проделанную вами работу, но решения вы писали "для себя", а не для тех кто попробует им воспользоваться. На сколько я уже поварился в этом - очень напоминает мою позапрошлую работу в большой корпорации, где периодически всплывали целые забытые всеми сервера, на которые больше 5 лет никто не заходил, но при этом выполняющие какую-то очень важную функцию. "Ого, у нас и такое есть" - очень частая была реакция. Извините, но я не хочу то, где без плотного вкуривания всей темы BLE, без кучи времени на вникнуть в мудреный код, нельзя пользоваться. Работаю и с openssl, и с AES, и с RSA, и DES, но вот bind у меня плотно ассоциируется с bind у socket, но не с encrypt data. Очень хорошо что оно надежно и функционально, но если это все интуитивно не понятно с первого взгляда, то пасиба, есть на что более полезное потратить время. А сосед прошьет потому, что по умолчанию нет никакого дефолтового пароля, без смены которого дальше не дает пройти.
 

pvvx

Активный участник сообщества
Виктор, при всем моем уважении к вам за проделанную вами работу, но решения вы писали "для себя", а не для тех кто попробует им воспользоваться. На сколько я уже поварился в этом - очень напоминает мою позапрошлую работу в большой корпорации, где периодически всплывали целые забытые всеми сервера, на которые больше 5 лет никто не заходил, но при этом выполняющие какую-то очень важную функцию. "Ого, у нас и такое есть" - очень частая была реакция. Извините, но я не хочу то, где без плотного вкуривания всей темы BLE, без кучи времени на вникнуть в мудреный код, нельзя пользоваться. Работаю и с openssl, и с AES, и с RSA, и DES, но вот bind у меня плотно ассоциируется с bind у socket, но не с encrypt data. Очень хорошо что оно надежно и функционально, но если это все интуитивно не понятно с первого взгляда, то пасиба, есть на что более полезное потратить время. А сосед прошьет потому, что по умолчанию нет никакого дефолтового пароля, без смены которого дальше не дает пройти.
Т.е. вы на меня вешаете все глупости Xiaomi?
Какое отношение к описанному вами имеет моя прошивка, если в ней пин-код ставится, сообщения шифруются?
Народу вообще требуется обратное - полностью открытая и не защищенная система. Под эти условия и настроены default настройки.
А то, что у вас какие-то неверные ассоциации с bind, то как это может касаться других?
 

pvvx

Активный участник сообщества
Извините, но я не хочу то, где без плотного вкуривания всей темы BLE, без кучи времени на вникнуть в мудреный код, нельзя пользоваться. Работаю и с openssl, и с AES, и с RSA, и DES, но вот bind у меня плотно ассоциируется с bind у socket, но не с encrypt data.
Вы очень похожи на бабушку открывшую для себя меню роутера.
Смысл сего - все ваши знания устарели и не натягиваются на действительность. Об этом и предупреждал всех поклонников Arduino. Оно уже сейчас выродилось в вариант закачки готового кода без разборки что там внутри, но делается путем вставки текстового примера в амбразуру, вместо HTML странички с кнопкой "обновить прошивку".
 

pvvx

Активный участник сообщества
Сейчас прошивки от Xiaomi и прочих для датчиков IoT в основном работают по BLE. Но уже наблюдается смещение в сторону MESH. Представляю как вы запоете, если прошивка будет с MESH. Знаний и описаний в сети про это “кот наплакал”. А в SDK разных производителей приводятся примеры исключительно для выключателя и лампочки :p

Ковырять что-то в MESH планирую не ранее чем после лета. Счас оно мало актуально, но стандарт уже сформировался у Xioami, Tuya и в пром.сфере освещения.

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

----

На странице http://wiki.telink-semi.cn/wiki/chip-series/TLSR825x-Series/ содержится SDK V3.3.2 and Tools в архиве которого sig_mesh_sdk\firmware\vendor\common\mi_api даны полные библиотеки для шифрования mijia под распространённые архитектуры: cortex-m0plus, cortex-m3, cortex-m33, cortex-m33f, cortex-m4, cortex-m4f , но исключена библиотека для чипов Telink. Данные библиотеки выдают исключительно заключившим договор с mijia.
Это очень странно и, главное, не понятна цель - зачем Telink выкладывает пакет библиотек mijia для всех других чипов BLE, кроме своего?
 

pvvx

Активный участник сообщества
Эти библиотеки позволяют вам легко и непринужденно собрать аналог любого Xiaomi устройства к примеру на nRF и подобных cortex чипах, которые будут регистрироваться в экосистеме Mi-Home. Специализированная прослойка - API для mijia к чипам распространяется свободно – лежат на git от mijia: https://github.com/MiEcosystem/mijia_ble_standard
 

volaltd

Member
Эти библиотеки позволяют вам легко и непринужденно собрать аналог любого Xiaomi устройства к примеру на nRF и подобных cortex чипах, которые будут регистрироваться в экосистеме Mi-Home. Специализированная прослойка - API для mijia к чипам распространяется свободно – лежат на git от mijia: https://github.com/MiEcosystem/mijia_ble_standard
Спасибо, но трудозатраты на все это в разы превышают для меня полезность. Прохожу мимо.
 

pvvx

Активный участник сообщества
Одно непонятно, для чего при этом использовать этот термометр, а не взять сразу какой из TB-03/04 ?
Оно уже с батарейкой, индикатором и сенсором. При этом цена для пользователя одинакова, а работы меньше.
На BLE модулях можно лепить аналог "HA", например для увлажнителя или обогревателя - датчик на Xiaomi LYWSD03MMC, а выключатель, дублирующий установленный триггер на JDY-10. работающий по скану пассивной рекламы...
Можно и мощнее сценарии вписать - раздельно по температуре и влажности... Но пока нафиг не сдалось - тогда зачем "HA" с rPI4 и SSD?
 

Kruzo

New member
На странице http://wiki.telink-semi.cn/wiki/chip-series/TLSR825x-Series/ содержится SDK V3.3.2 and Tools в архиве которого sig_mesh_sdk\firmware\vendor\common\mi_api даны полные библиотеки для шифрования mijia под распространённые архитектуры: cortex-m0plus, cortex-m3, cortex-m33, cortex-m33f, cortex-m4, cortex-m4f , но исключена библиотека для чипов Telink. Данные библиотеки выдают исключительно заключившим договор с mijia.
Это очень странно и, главное, не понятна цель - зачем Telink выкладывает пакет библиотек mijia для всех других чипов BLE, кроме своего?
Ради интереса взглянул, если речь об stand-auth-cortex либах, там 13 коротких функций обертки, приведу для примера одну:
void auth_data_process(uint8_t *pdata, uint16_t len)
{
rxfer_process(&rxfer_auth, pdata, len);
}
Скажем час потратить в си записать для компиляции. Это на эти обертки нужно договор заключать 🙃?
 

Kruzo

New member
А, понял. rxfer_process то кода нет в этом архиве, только заголовок. Короче это обертка, над другой либой, которой нет в архиве.
 

pvvx

Активный участник сообщества
А, понял. rxfer_process то кода нет в этом архиве, только заголовок. Короче это обертка, над другой либой, которой нет в архиве.
Нету всего одного файла standard_auth.с, который дает в \sig_mesh_sdk\firmware\vendor\common\mi_api\libs\standard_auth\ *.a и *.lib
Описание функций в mible_standard_auth.h, все стандартные, но две - нет.
Заняты шифровкой "DevID", bindkey и id для mijia ( команды: mible-login-info, mible-setup-info). Сама шифровка стандартная.

Остальные функции из всей mi_api вообще не нужны. Они известны, описаны и давно работают в custom прошивке термометра...
 

pvvx

Активный участник сообщества
А т.к. в пользовательском соглашении Mi-Home запрещен реверс - я не могу выложить готовые функции не взяв их из независимого публичного источника :)
 
Сверху Снизу