Xiaomi LYWSD03MMC с прошивкой Zigbee
Xiaomi LYWSD03MMC с прошивкой Zigbee

TL;DR: Да, можно программно изменить датчик для работы в сети Zigbee, достаточно по воздуху перезаписать прошивку

Многим пользователям умного дома известен квадратный датчик температуры и влажности от Xiaomi LYWSD03MMC. Его очевидные плюсы — это LCD экран, подключение к системе умного дома MiHome и конечно же цена. Его без преувеличения можно назвать если не самым, то точно одним из самых дешевых "умных" датчиков, которые имеют интерфесы для подключения к умному дому. В данном случае это популярный bluetooth, который позволяет подключиться к датчику со смартфона и увидеть показания. Поэтому он завоевал своё место в сердцах строителей умных домов как дешевое и надёжное беспроводное решение.

Однако, датчик помимо своих достоинств не был лишён и недостатков. Нерегулярные отправки данных в эфир, требование ключа для расшифровки, а также сложности в подключении к открытым системам управления умным домом, таким как HomeAssistant, OpenHab, и т.д. Возможно эти причины привели к созданию пользовательской прошивки https://github.com/atc1441/ATC_MiThermometer/, и затем её доработаной версии https://github.com/pvvx/ATC_MiThermometer/ которая существенно расширяла исходные возможности, такие как отправка нешифрованных пакетов в сеть, что позволяло подключать датчик без дополнительных усилий, настройка регулярности отправки данных в эфир, различные другие регулировки. Это ещё больше повысило популярность данного датчика.

Но у bluetooth на сегодняшний день есть достаточно неприятные ограничения в использовании в открытых системах умного дома. Датчики и управляемые устройства даже в рамках протокола bluetooth целиком ограничены экосистемой отдельного производителя. Если вы купили шлюз Xiaomi, вы не сможете подключить к нему датчики Tuya. Чайник Redmond не будет работать ни с чем, кроме своего родного шлюза. Или же как вариант использовать вместо шлюза смартфон с десятком приложений - по одному на каждый бренд - и ни о какой интеграции в единую систему речи уже не может идти. (Тут я могу порекламировать мою утилиту ble2mqtt для работы с некоторыми устройствами разных производителей, в т.ч. требующих подключения, и управлением по MQTT. Но в нём список поддерживаемых устройств ограничен и каждое новое устройство - это новое изобретение вендора). Частично эта проблема решается отдельными интеграциями для каждого отдельного бренда в Home Assistant, но ситуация далека от идеала.

Тут на помощь может придти сеть ZigBee, которая стандартизует не только физический уровень взаимодействия, но и работу всей сети целиком. А также стандартизует атрибуты устройств так, что датчик протечки любого производителя на уровне сети выглядит одинаково. (Тут надо сделать замечание, что ряд производителей отступает от этого правила, но это всё ещё не мешает держать и управлять всеми zigbee устройствами в одной сети с помощью централизованного механизма). Для управления сетью обычно используется отличный проект zigbee2mqtt или же встроенные в умный дом системы управления. Например, в Home Assistant есть возможность использовать как встроенный компонент Zigbee Home Automation , так и выше упомянутый zigbee2mqtt или HOMEd Zigbee с помощью компонента MQTT.

Датчик в интерфейсе zigbee2mqtt
Датчик в интерфейсе zigbee2mqtt

Как же подружить bluetooth датчик из заголовка статьи с зигби сетью? Оказалось, что производитель чипов Telink предоставляет для своих изделий SDK под ряд популярных протоколов. Bluetooth, Bluetooth Mesh, Telink Mesh (не слишком популярный), а также Zigbee. Это значит, что микроконтроллер поддерживает работу с ZigBee, осталось только его научить. Сказано-сделано. Результатом проведённой работы стал репозиторий https://github.com/devbis/z03mmc/ где лежит исходный код, бинарные сборки в релизах, а также инструкция по прошивке. Поддерживается как конвертация по воздуху используя наработки проекта atc1441/pvvx, так и с помощью проводов и UART-USB адаптера, также с помощью скрипта из вышеупомянутых проектов. Дополнительно, в репозитории лежит конвертор для подключения устройства в zigbee2mqtt. За счёт полного соблюдения стандартов, в ZHA он залетит без дополнительных усилий.

Геркон, припаянный к датчику температуры
Геркон, припаянный к датчику температуры

Что в итоге? Мы получаем возможно самый дешевый зигби датчик на рынке, да и ещё с экраном в придачу, который отвечает всем стандартам сети ZigBee. Помимо этого за счёт открытости прошивки и исследованности платы, открывается простор для аппаратных доработок датчика. Например, уже есть варианты для блютус прошивки, где используется геркон, что с программной доработкой позволит сделать датчик открытия, или протечки. Или наоборот, управлять контактом реле (с дополнительным питанием).

А что если попробовал, но прошивка не понравилась? Всегда существует возможность отката на любую другую прошивку припаявшись проводами к тестпоинтам, используя утилиту TLSR825xComFlasher.py. Можно прошивать как оригинальную прошивку, так и любую пользовательскую.

Что дальше? Я планирую добавить регулировку отображения в Фаренгейтах. Также аналогичные микроконтроллеры стоят в некоторых других датчиках, что возможно сподвигнет кого-то доделать прошивку для работы с другими устройствами со схожим функционалом.

Ссылки:

Комментарии (65)


  1. datacompboy
    17.10.2023 08:56
    +6

    Результатом проведённой работы стал репозиторий https://github.com/devbis/z03mmc/ где лежит исходный код,

    Чуть больше подробностей про как бульдог с носорогом скрещивались (можно со слайдами) было бы вкусно почитать :)


    1. belokobylskiy Автор
      17.10.2023 08:56
      +14

      Подробности достаточно скучные. Telink предоставляет SDK как для блютуса, так и для зигби. Потому задача стояла взять Zigbee SDK, примеры работы с датчиком и экраном из соответствующих проектов и заставить работать в зигби сети, попутно читая про стандарты ZCL и особенности работы чипов Telink.

      Самое интересное было обнаружить, что чип tlsr8251 (который декларируется как blutooth only) и tlsr8258 где заявлено Zigbee + Bluetooth, это одно и тоже, просто маркировка разная. Но и это было обнаружено другими исследователями, я лишь взял на себя программную часть.


      1. datacompboy
        17.10.2023 08:56

        У них даже памяти (озу/пзу) одинаково? я помню были чипы где по сути одно или другое просто потому, что и то и то не влезало сразу


        1. belokobylskiy Автор
          17.10.2023 08:56
          +8

          Да, идентичные совсем. Есть вариации с разным количеством выводов, но эти варианты есть и для "старшей" (по документации) модели. По сути - всё один чип.


  1. 3cky
    17.10.2023 08:56

    Изменилась ли продолжительность работы датчика от батарейки после перепрошивки на Zigbee?


    1. belokobylskiy Автор
      17.10.2023 08:56

      Не было проведено исследований, возможно изменилась. У меня нет аппаратуры для замера потребления. Оно может быть выше, это покажут натурные эксперименты спустя какое-то время.


    1. blind_oracle
      17.10.2023 08:56
      +2

      Зигби вполне лоялен к батарее, аналогичные датчики Xiaomi (без экрана) с родным Zigbee работают год-два на одной CR2032 спокойно.


      1. belokobylskiy Автор
        17.10.2023 08:56
        +2

        Это может зависеть и от программной части. Это моя первая прошивка для батарейных устройств, потому вполне возможно потребуются изменения для снижения потребления батарейки.


        1. blind_oracle
          17.10.2023 08:56
          +1

          Само собой. Код не читал, но если всё "по заветам SDK" и правильные режимы сна используются между измерениями - не вижу почему оно не должно работать как надо :)


          1. j0ker13
            17.10.2023 08:56

            С эти тут не очень - хотелось бы правок )


            1. Aquahawk
              17.10.2023 08:56

              а что за интерфей на скринах? График прикольный, не только линия, но и разброс


              1. j0ker13
                17.10.2023 08:56

                Home assistant


  1. nbkgroup
    17.10.2023 08:56

    Как на перепрошитом в Zigbee датчике войти в режим сопряжения? На нем нет кнопок.


    1. RingoAl
      17.10.2023 08:56

      Он сам входит. Если не вошел, то замкнуть RST+GND на 3+ сек и батарейку передернуть.


  1. Aquahawk
    17.10.2023 08:56

    Интересно, я у себя всё строил на ble, и с диммерами всё прекрасно работает, но с этих датчиков (при приёме на raspberry pi 3b+) регулярно теряются пакеты. Может и попробую на зигби.


    1. Kill_Voice
      17.10.2023 08:56

      Сорри, промахнулся веткой(


    1. blind_oracle
      17.10.2023 08:56
      +1

      Зигби всё же mesh сеть и там получше с надёжностью работы. Хотя, конечно, те же Xiaomi меш используют странно - если их роутер, через который они работали, отвалился - то новый они искать не будут, пока не сделаешь сопряжение заново.

      По крайней мере так было раньше, может в новых что-то допилили. У тех же IKEA и прочих Филипсов таких проблем нет.


  1. Aquahawk
    17.10.2023 08:56

    Посоветуете, какой приёмник zigbee будет наиболее качественным да raspbery pi? Можно USB, а можно и отдельным сетевым устройством, в принципе.


    1. Aquahawk
      17.10.2023 08:56

      рекомендовали брать оборудование из https://www.zigbee2mqtt.io/guide/adapters/


    1. blind_oracle
      17.10.2023 08:56

      Из списка выше у меня есть "Slaesh's CC2652RB stick" и пара "SONOFF Zigbee 3.0 USB Dongle Plus ZBDongle-P" - все работают отлично.

      Есть ещё несколько простых на TI CC2531, с ними в общем тоже проблем не было, но они устаревшие уже и много ограничений на размер сети и т.п.


    1. Kill_Voice
      17.10.2023 08:56

      Можно взять любой из этого списка https://www.zigbee2mqtt.io/guide/adapters/. Сам использую CC2652, сейчас порядка 100 девайсов, полет нормальный. Для небольшой сети (до 15 устройств) можно использовать CC2531 но он сильно менее производительный


    1. WondeRu
      17.10.2023 08:56

      У меня донгл SONOFF работает очень хорошо на несколько этажей (mesh там нет)


  1. and7ey
    17.10.2023 08:56

    Касательно ble2mqtt: есть ли какое-то руководство как добавлять новые устройства? Например, есть зубная щетка Oclean Z1. Как изучать протокол ее работы, чтобы потом в ble2mqtt добавить? в nRF connect что-то смотреть? оригинальное приложение дебажить?


    1. belokobylskiy Автор
      17.10.2023 08:56
      +1

      Возможно и то и другое. Для добавления нужен алгоритм работы, если это просто адверт пакеты, то да, нужно их насканировать и потом попытаться разобрать. Если это подключение, то тут может потребоваться дебажить оригинальное приложение. В отличие от зигби, там всё очень индивидуально. Для каких-то устройств я использовал разобранные другими протоколы, для каких-то была документация производителя. Проще всего если уже есть код на другом языке и нужно только перенести.


      1. and7ey
        17.10.2023 08:56

        На таком уровне все и так понятно :). Вопрос был именно про руководство - пошаговый гайд, чего надо попробовать. Например, в коде приложения ищите вот то-то. Рядом будет вот это. И т.п.


        1. belokobylskiy Автор
          17.10.2023 08:56
          +2

          Ну принцип обычно простой, надо посмотреть какие характеристики в BLE есть.
          Про вашу щётку чуть описано тут https://github.com/custom-components/ble_monitor/issues/561

          Дальше можно почитать оттуда значения, найти что-то ценное. И потом сделать датчик на основе какого-нибудь существующего. (Я не делал примеров, т.к. буквально, каждый датчик - это какая-то отдельная схема работы. Просто не хватает выборки, чтобы было что-то универсальное)

          Если сложный случай, можно взять APK, дизассемблировать его http://www.javadecompilers.com/apk и смотреть код, как именно разбирается то или иное значение.


          1. and7ey
            17.10.2023 08:56

            Ок, спасибо (обсуждение щеток я видел, там говорится про необходимость активного соединения - непонятно нужно ли это для ble2mqtt).

            Но меня все-таки алгоритм действий интересовал.
            Был у меня другой кейс - контроллер светодиодных лент SP107E. Я и через nRF Connect смотрел чего делает, и приложение разбирал. И даже для HA компонент пытался сделать. Но это было в стиле "попробую-ка посмотреть вот сюда". Какой-то прям пошаговый гайд сильно бы помог. Но коль его нет, то нет.


  1. isden
    17.10.2023 08:56

    У сабжевого аппарата есть один недостаток - он врет ~+8-10% по влажности :(

    Ну или мне так повезло, и все три дивайса были из одной партии с кривым датчиком.


    1. Aquahawk
      17.10.2023 08:56

      Все дешёвые датчики надо калибровать. Для калибровки надо купить хороший датчик, а это та ещё проблема. Он мало того что врёт, так ещё и плывёт со временем.


    1. DurRandir
      17.10.2023 08:56

      Хуже, я вижу до 15% погрешности, и это я еще с температурным диапазоном не жестил, только при "нормальных комнатных условиях".


    1. Kill_Voice
      17.10.2023 08:56

      Использую CGG1 что в целом полный аналог кроме дисплея, после прошивки https://github.com/pvvx/ATC_MiThermometer/ работать стал сильно лучше, как и по качеству показаний, так и по длительности работы на одной батарейке


  1. DurRandir
    17.10.2023 08:56

    >Датчики и управляемые устройства даже в рамках протокола bluetooth целиком ограничены экосистемой отдельного производителя

    Все cяомишные девайсы разломаны, и отлично читаются по BT с чего угодно. Нет смысла перешивать на zigbee, если уже нет хаба.


    1. kAIST
      17.10.2023 08:56
      +2

      Почему нет смысла? У меня, например, есть яндекс станция с zigbee, есть парочка таких термометров, но нет никакого хаба с bluetooth (и не вижу смысла его покупать только под эти датчики).


      1. DurRandir
        17.10.2023 08:56

        Ну здесь тогда станция выступает как хаб, и она уже есть? Я вместо BT хаба использую просто приемник в компе.


        1. kAIST
          17.10.2023 08:56

          Комп должен быть постоянно включен, то есть не годится на роль хаба. Да и просто смотреть температуру, смысла мало - надо включать ее в сценарий умного дома. С кондиционером у меня это получилось, а на зиму собираюсь прикрутить "умные" винтели на батареи, чтобы они регулировали температуру дома по сценариям.


          1. DurRandir
            17.10.2023 08:56

            >Комп должен быть постоянно включен

            Если я скажу потребление своего компа 24/7, половину читателей удар хватит)


      1. kAIST
        17.10.2023 08:56
        +1

        Отчитываюсь - с Яндекса станцией заработала с пол пинка, показывает температуру, влажность и заряд батареи. Перепрошил термометр прямо из браузера со смартфона по инструкции с гитхаба (ссылка в посте).


    1. Aquahawk
      17.10.2023 08:56

      Я вижу постоянные потери на ble от LYWSD03MMC


  1. kamaz1
    17.10.2023 08:56

    А существуют ли недорогие датчики температура, влажность, co2. можно и без экрана.


    1. DurRandir
      17.10.2023 08:56
      +1

      В виде готовых устройств прям "дешевого" СО2 нет. Точной влажности - тоже (вся дешевая будет как обозреваемый). CO2 у меня вот такой - https://dadget.ru/catalog/datchiki_kachestva_vozdukha/detektor_uglekislogo_gaza/, но смотрю их сейчас в продаже нет.


      1. belokobylskiy Автор
        17.10.2023 08:56

        У меня такой же датчик и я доволен его качеством. Есть возможность считывать показания по USB HID для интеграции в умный дом. В продаже можно искать на маркетплейсах по модели "mt8057s"


        1. Aquahawk
          17.10.2023 08:56

          Хороший датчик, но он в районе 2000 ppm ломает usb https://github.com/huhamhire/node-co2-monitor/issues/6


          1. belokobylskiy Автор
            17.10.2023 08:56

            Не замечал такого. Пользуюсь самописным сервисом https://github.com/devbis/co2mqtt


            1. Aquahawk
              17.10.2023 08:56

              спасибо, попробую


            1. Anonym
              17.10.2023 08:56

              К нему можно еспшку прикрутить и прошить esphome, будет по вайфаю работать


    1. belokobylskiy Автор
      17.10.2023 08:56
      +2

      Сам по себе принцип работы датчика co2 подразумевает, что он не может быть дешевым. Даже просто сенсор без обвязки - это 20-25$, потому готовый датчик будет стоит от 4к рублей. Есть ненастоящие датчики co2, где он вычисляет некоторое значение, которое имеет мало отношения к реальности. Такие могут стоить дешево, но я не рекомендую их к приобретению, т.к. они не позволяют мониторить реальные значения.


    1. blind_oracle
      17.10.2023 08:56

      Датчик СО2 собирается из модуля Sensirion SenseAir S8, какого-нибудь копеечного ESP32, и трёх проводов. Сверху накатывается ESPHome. Общая цена будет баксов 20. Дешевле смысла нет - точность будет плюс минус километр.


  1. jst0
    17.10.2023 08:56

    Я пока не понял, в чем польза Zigbee, или скорее не понял, зачем оно мне. У меня дома и на даче множество таких датчиков и они прекрасно работают с Тасмотой. Отдельный шлюз не нужен: у меня всюду раскиданы реле Sonoff Dual R3 (лайт-версия тоже подходит), в которых прозорливые китайцы в качестве микроконтроллера поставили esp32. Перешиваем Sonoff в tasmota32-bluetooth, получаем ключ от каждого датчика, забираем данные как удобно (mqtt или просто по http) - профит!


  1. SantaClaus16
    17.10.2023 08:56

    Использую десяток датчиков на прошивке pvvx. Из того что нравиться - возможность настроить тайминг отчета о температуре. В большинстве мест это минута, в некоторых 10. Так же отключаю отображение батарейки и смайлик использую как комфорт индикатор. Читаю все это через esp32 -> ha. Собственно нареканий за два года у меня нет, разве что в частном доме мне приходится держать отдельную esp32 для сбора показаний с этажа куда ha не добивает. Так вот zigbee для меня, хороший вариант отказаться от отдельной esp на этаже, но как быть с таймингами и мелкими настройками о которых писал?


  1. Harwest
    17.10.2023 08:56


    Попробовал перешить один.
    Telink Flasher 6.2/6.4 нифига не берет - прошил из под старого флешера https://atc1441.github.io/TelinkFlasher.html
    z2m версии 1.33.1-1 датчик не опознал, попросил кастом парсер, хотя якобы "For zigbee2mqtt you need to add custom converter if you use version 1.33.1 or earlier"
    Ну и слишком уж частое обновление показаний- чуть ли не раз в 5 сек., и при этом дисплей постоянночуть взмаргивает. Прям напрашивается применение фильтра "скользящего окна" хотя бы на 20-30 сек.

    Бесит редактор местный- никак не вставить между словами пробел, скобку и даже запятую!


    1. belokobylskiy Автор
      17.10.2023 08:56

      Пулреквест с поддержкой устройства в проект zigbee2mqtt я только вчера сделал и его вчера приняли. Чтобы заработало из коробки, нужно установить девелоперскую версию начиная с сегодняшней даты или дождаться ноябрьской версии. Частота отправки настраивается через стандартные механизмы reporting в з2м.


      1. Harwest
        17.10.2023 08:56

        Ага, видел. Пока закинул внешний конвертер в z2m. На сс2538 все в порядке, на efr32 датчик не видится никак: пробовал zha, z2m, менял номера каналов - бесполезно.


  1. past
    17.10.2023 08:56

    А следующую версию прошивки придется заливать уже с паяльником?


    1. belokobylskiy Автор
      17.10.2023 08:56

      Прошивка поддерживает стандартный механизм обновления OTA. Для zigbee2mqtt можно обновлять через локальный индекс https://www.zigbee2mqtt.io/guide/usage/ota_updates.html#local-ota-index-and-firmware-files

      Главное, чтобы версия в OTA заголовке отличалась от той, что стоит в датчике.


      1. past
        17.10.2023 08:56

        Отлично!


  1. past
    17.10.2023 08:56
    +1

    Прошил один, sonoff zigbee bridge с тасмотой подхватил в момент


  1. N0Good
    17.10.2023 08:56
    +1

    Прям отлично! Огромное вам спасибо. О том, что LYWSD03MMC теоретически может в Zigbee было известно, вроде, давно, но вот прошивок никто не делал. А теперь вот, благодаря вам, есть. Попробовал пока один из своих перевести, ZHA смог его подтянуть не с первого раза, но смог. Правда влажность что-то ну ооочень долго первое показание вытягивало. Будем тестировать дальше. Тоже, как у комментатора выше, использую дополнительную esp32 для расширения области покрытия Bluetooth, и, как следствие, заколупался менять батарейки в датчиках. Посмотрим что будет на Zigbee.


  1. DiKey
    17.10.2023 08:56

    Имею дома около 15 таких датчиков.

    Данные снимаю (и дату в датчиках устанавливаю) программой: MiTemp2.

    Что интересно: встроенные часы в этих датчиках, спешат с огромной скоростью. Чуть ли не на минуту в сутки. Кто-то знает, почему так?

    Родной MiHome, и через него Яндекс.Дом тоже позволяют работать с графиками температуры и влажности, но не так удобно, как маленькая MiTemp2.

    Жаль, это приложение не работает с последней официальной прошивкой 2й версии. (


    1. vvzvlad
      17.10.2023 08:56

      Кто-то знает, почему так?

      Часовой кварц не поставили, процессором считают, да еще и без калибровки видимо.


  1. past
    17.10.2023 08:56

    А нету ли возможности откалибровать датчик?
    Повесил рядом с аналогичным, но с врожденным зигби https://aliexpress.ru/item/1005005261958249.html

    Разница в 1 градус


  1. booroondookZ
    17.10.2023 08:56

    Был датчик LYWSD03MMC, прошитый прошивкой ATC_v43.bin и работающий уже порядка полугода. Ничто не предвещало беды, пока я не прочитал эту статью. Начал шить на ПК через PVVX-флешер. Прошил ATC_ota_40000.bin. Вроде, нормально. Начал тем же способом шить z03mmc.bin. Прошил, внешне всё нормально (дисплей показывает цифры, похожие на правду). Запускаю обнаружение в Z2M - не спаривается (вернее, даже не находится). Запускаю обнаружение в другом Z2M (другой хост, канал) - не находится. Замыкал Reset с Gnd и на 3, и на 5, и на 10 секунд - никаких изменений. Дергал батарейку - аналогично.
    Чертыхаюсь, беру паяльник, припаиваю USB-UART, зашиваю через USBCOMFlashTx (получается, что повторно) z03mmc.bin. Ура - датчик обнаружился в Z2M и успешно спарился. Показывает температуру, влажность, батарейку и прочую ерунду. На радостях прописываю его в Home Assistant (попутно удаляя его блютусное альтер-эго). Собираюсь прошить еще один датчик (мечтая, что на этот-то раз обойдется без проводов). Туды-сюды, покурил, поужинал, прошел час. Гляжу в Home Assistant - температура 27,1 градуса, обновление было час назад. Что за фигня? Открываю Z2M - и тоже 27,1 градуса. Ну, быть такого не может - в помещении не выше 23 градусов, а 27 было, когда он у меня на столе рядом с паяльником лежал, да я его теплыми руками тискал. Выдергиваю батарейку, вставляю назад - оппа, 23,2 градуса на табло. Ура? Да не ура - в HA и Z2M по-прежнему 27,1 и факт обновления больше часа назад.
    В-общем, решил я его обратно к BLE вернуть. Тем более, что мне не понравилось явное завышение температуры. Ну не было у меня в этом помещении никогда не то, что 37, но даже и 23 градусов! Обычная температура там - 21,7 - 22,5 градуса. Это я говорю к тому, что упомянутые 23,2 тоже неверные. Уж не знаю, что тому причиной - возможно, при работе Zigbee как-тио сильнее греются внутренние элементы на плате, и это "аукается" на градуснике?

    Возврат на BLE возможен, но только через провода (так, по крайней мере, уверяет нас автор статьи). Хорошо, припаиваю снова провода (благо, не успел их еще убрать далеко), запускаю онлайновый USBCOMFlashTx, шью прошивку ATC_v43.bin. Ура - прошилось. Но теперь же надо настроить! Запускаю Telink Flasher, поиск устройств, и... голый Вася! Нет моего датчика среди найденных! Запускаю этот же флешер на смартфоне - то же самое, датчика нет.
    Последнее, что я смог предпринять - это опять же через USBCOMFlashTx залил оригинальную прошивку Xiaomi - в надежде, что раз не Telink Flasher, то хотя бы Mi Home со смартфона его обнаружит. Результат - не обнаруживается.
    И что теперь делать? Остается только любоваться на экран, который показывает температуру и влажность.


    1. belokobylskiy Автор
      17.10.2023 08:56

      Интересный случай. Возможно вам поможет сделать перед прошивкой по uart очистку флеш-памяти в чипе. В питоновской утилите есть такая команда "ea".


      1. booroondookZ
        17.10.2023 08:56

        Я делал очистку (насколько это позволяет  USBCOMFlashTx - там есть кнопка соответствующая). Не помогло.

        Кстати, заметил интересный факт. USBCOMFlashTx прошивает "порциями" по 256 байт. И вот вчера вечером, во время очередной прошивки, я начал считать в уме эти порции. Насчитал 31. Умножил 31 на 256 - получил 7936 байт. Получается, что прошивка залилась не полностью, что ли? Но ведь  USBCOMFlashTx показал "ОК", никаких ошибок выдано не было.

        И еще. Уже после написания вчерашнего поста я снова прошил в датчик прошивку z03mmc.bin. И... о, чудо! Датчик влетел в Z2M.

        Короче, если сегодня будет время, попробую прошить локальным Python-прошивальщиком.

        И вот еще проблема. Мне вдруг показалось, что датчик показывает температуру где-то примерно на 1,5 градуса выше реальной. Я понимаю, что все термометры врут, поэтому даже не стал сравнивать его показания с каким-то другим термометром, т.к. нет у меня термометра со 100%-ным доверием. Вместо этого я просто поднял из БД Home Assistant'а статистику по показаниям этого датчика за последние две недели - когда он был еще BLE'шным (он же как бьыл, так и есть в одном и том же помещении у меня в доме). И да, действительно убеждаюсь в том, что после перехода на Zigbee показания увеличились примерно на 1,5 градуса. Я не знаю, чем это вызвано - возможно, Zigbee вызывает повышенный нагрев внутренних элементов, что влияет на показания термометра.

        Далее - в Zigbee2MQTT я обнаружил возможность коррекции показаний температуры (ну, и влажности тоже, но сейчас не об этом). Так вот. Первое, что смущает - это возможность коррекции с точностью только до целого градуса (а хотелось бы хотя бы до одной десятой). Ну а второе - это то, что эта коррекция совершенно никакого влияния на показания датчика не оказывает - и температура на экране, и температура, отjбражаемая в Z2M и HA, не изменилась.


        1. booroondookZ
          17.10.2023 08:56

          Можно, я продолжу свою грустную историю. Я вчера немножко соврал - на самом деле, я прошил не один датчик, а целых три. При этом проблемы, описанные вчера, были действительно только у одного датчика. Остальные два прекрасно прошились по воздуху, никаких проводов к ним паять не пришлось. Однако, это не говорит, что проблем с ними нет. Есть, еще как.

          Первое - они точно так же, как и первый датчик , стали завышать температуру где-то на 1,5 - 2 градуса. Отсюда делаю вывод, что завышение температуры - это не особенность одного отдельно взятого датчика, а общая проблема обсуждаемой технологии.

          Второе - коррекция температуры через Zigbee2MQTT всё-таки работает - зря я вчера грешил на неё. Но однако, работает она так - на своем экране датчик показывает одну температуру, а в Zigbee2MQTT (и далее в умный дом) приходит уже скорректированная. Другими словами, хочется взять фломастер и на корпусе датчика написать "отображаемая температура завышена, вычитайте полтора градуса".

          Третье. По прошествии суток (к сожалению, весь сегодняшний день был в разъездах и заботах) с печалькой обнаружил в Z2M состояние "Оффлайн" для двух датчиков из трех, вчера перешитых (того самого "сверхпроблемного" и еще одного - ну а третий пока держится). Что с ними делать? Идти передергивать батарейки? И так придется делать каждый день, да?


          1. Aquahawk
            17.10.2023 08:56

            https://habr.com/ru/articles/767886/#comment_26073202

            смотрите как у человека батарейку жрёт. Он поди температуру завышает потому что греется, и дохнет выжрав батарейку, у вас есть график батарейки?