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

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

pvvx

Активный участник сообщества
@shaman1010 - там есть Issues и Pull requests. Всё в ваших руках :)

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

pvvx

Активный участник сообщества
А пока, как Франкенштейн, уже наплодил чудовищ - работающих одновременно в Zigbee и BLE.
Полет почти успешный, но есть нестабильности с BLE OTA. Что-то в SDK блоб-либах кривовато. Но со второго прохода OTA проходит.
Zigbee OTA работает нормально.
И пример, как работает кучка термометров у холодной стенки:
1702036779070.png
Всегда разные расхождения от конвекции.

Показание 3-х из них, работающих в BLE и Zigbee одновременно:
1702036802467.png
1702036807900.png
Zigbee опознается по "квадратным" показаниям :)

Зигбисты и WiFi-сты любят квадраты - чем квадратнее, тем им лучше :)
Добавление на график LUMI (Хiaomi Агара):
1702037116123.png
1702037121288.png
 

pvvx

Активный участник сообщества
Квадратные показания так же любят пользователи ESPHome и Tasmota BLE gateway.
Большая часть вопросов о разных нестабильностях в GitHub исходит от них. "Писатели" налепили перегруженных кодов на ESP32 и радуются, что все мучаются... :love:
За ними идут производители разных rPI со встроенными кривыми BT адаптерами.
 

shaman1010

Member
Более нужное - прием BLE рекламы и соединение с устройствами работающими в Coded S8 PHY (LE Long Range). Но что-то не нашел...
Там MIT и на открытой SimpleBLE.
У использования это библиотеки два явных ограничения: 1) ОС, на которой она используется, 2) Реализация внутренних функций в самой библиотеке.
LE Long Range - может и не уметь.
 

pvvx

Активный участник сообщества
Там MIT и на открытой SimpleBLE.
У использования это библиотеки два явных ограничения: 1) ОС, на которой она используется, 2) Реализация внутренних функций в самой библиотеке.
LE Long Range - может и не уметь.
Значит оно ограничено BT4.2 времен 2016 года. Т.е. старьё или ненужный хлам.
Сам автор дает ссылку на https://learn.microsoft.com/en-us/u....allowextendedadvertisements?view=winrt-19041
утверждая что это опциональная фича в BT. :)
 

pvvx

Активный участник сообщества
Другие пытаются сделать HCI устройство на nRF5xxx чипах, чтобы поддерживать BT5, но пока безуспешно. Сам Нордик поковырялся в Android и слепил на его API свой nRF Сonnect, но далее не пошел.
Видимо кто-то диктует табу на это дело :) LE LongRange и BT5+ - хорошая ниша для коммерции уже много лет, т.к. чипы давно это поддерживают, а ОС в пролете...
 

pvvx

Активный участник сообщества
Ныне программеры не будут ничего писать пока им на подносе и на дом не принесут API и толмут с Help, да не разжуют на сотне форумов.
Как итог – в HA всё завяло аналогично с Linux на уровне 2016 года. Zigbee только частично работает с версией 3.0, в Bluetooth не освоен ещё BT4.2, поддержка SSD на зачаточном уровне, …
И ни у кого нет желания изучать всё это глючное распухшее старьё, ведущее в никуда, типа Bluez, т.к. далее это не пригодится - необходима полная переделка с нуля.
 

phoneman2

New member
На MJWSD05MMC работают все типы RF модуляции, включая LongRange. Размеры памяти и всё остальное в прошивке используются такие как описано в даташите TLSR8258.
Отличие MJWSD05MMC от других термометров - OTA использует разметку как у ZigBee.
Уважаемый pvvx, огромное Вам спасибо за проделанную работу. Для меня как ни странно оказался самым востребованным функционал esphome esp32 вывод информации на большой дисплей устройства MJWSD05MMC. К сожалению именно для этого устройства использование функции
long double temp = myvalue; it.print_bignum(temp); дает не верные результаты. Если передавать температуру, приходится умножать значение на 10. А остальные данные не удается передать (я бы хотел использовать несколько устройств, размещенных рядом и передавать атмосферное давление, СО2 в ppm, уличную температуру). Так же не корректно работает функция it.print_unit(). Именно устройства MJWSD05MMC оказались для меня очень удачными дисплеями, которые легко можно разместить в квартире в разных местах и передавать на них различные данные, устройства изящно вписываются в интерьер и не выглядят как колхоз.
Если у Вас вдруг найдется время и желание поправить ПО MJWSD05MMC в части корректного отображения данных передаваемых от esp устройств esphome, то будет очень очень здорово.
 

pvvx

Активный участник сообщества
Для разных моделей термометров с разными экранами формат отображаемых данных разный.
У некоторых термометров нет "смайлика" и есть различия в других сегментах экрана.

MJWSD05MMC использует отображение только одного числа и в одной строке.
Диапазон отображаемых чисел для MJWSD05MMC соответствует возможности дисплея отображать 5 десятичных знаков и задается 32-битным числом со знаком.

ESPHome поддерживает только модель Xiaomi LYWSD03MMC.

Во всех термометрах есть функция отображения любых сегментов LCD или E-Ink
 

phoneman2

New member
Большое спасибо за подробный ответ. К сожалению моих познаний пока не хватает выполнить процедуру "Добавьте функции в ESPHome". Может быть минимально подскажете как это сделать или ссылку дадите?
 

pvvx

Активный участник сообщества
Большое спасибо за подробный ответ. К сожалению моих познаний пока не хватает выполнить процедуру "Добавьте функции в ESPHome". Может быть минимально подскажете как это сделать или ссылку дадите?
Ссылку на ESPHome?

Вам надо писать сюда - https://github.com/esphome/feature-requests
 

shaman1010

Member
А пока, как Франкенштейн, уже наплодил чудовищ - работающих одновременно в Zigbee и BLE.
Попробовал реализовать цепочку TS0201 -> провод TS0201_v45.bin -> OTA прошивка BZdevice (позже пробовал поверх накатывать второй вариант OTA прошивка bin - шьется долго, вроде бы успешно, не ругается)
В результате - BTHome нормально распознал датчик и показывает данные, Z2M - подсоединил датчик, распознал (только картинка от круглого), но никакие данные не шлет.
Где-то не учтена передача типа используемого датчика? (TS0201)
 

pvvx

Активный участник сообщества
Где-то не учтена передача типа используемого датчика? (TS0201)
Z2M не сделал bind (подписку) на передачу нужных ему кластеров.
Без подписки устройство Zigbee 3.0 не шлет ничего, кроме некоторых оповещений (типа спрашивает OTA через дцать минут с рандом).
Конечное устройство не знает кому и чего слать. А орать всем - это моветон.
 

pvvx

Активный участник сообщества
Что вы хотите от Z2M? Там для каждого стандартного Zigbee 3.0 устройства надо писать скрипты на каждое действие. По тому он жрет от 200 мег RAM без нагрузки.
Z2M не шарит в стандарте Zigbee. После опроса списка типовых кластеров всем другим ясно на что подписываться, но не Z2M. Его надо тыкать носом.

А тип устройства и "причуды" (= патчи для каждого устройства) он распределяет по имени устройства.
Надо будет как нибудь сделать прошивку, чтобы пользователи имели возможность менять имя, для полного бардака в Z2M :) :)
 

pvvx

Активный участник сообщества
Другими методами, не направив толпу леменгов - ничего не сдвинется.
Каждое Zigbee устройство имеет толпу ID для возможности различить одно от другого. Но Z2M ... (n)
OTA прошивки в Zigbee не путаются :p
 
Сверху Снизу