Приветствую всех читателей Habr. В этой статье хочу поделиться с вами своим новым небольшим проектом.



Звездой этого проекта является датчик температуры и влажности воздуха SONOFF SNZB-02 от компании ITEAD. Этот датчик появился на рынке около 2 лет назад, это было по сути первой попыткой компании ITEAD войти в сегмент Zigbee устройств. Компанией была выпущена серия датчиков в количестве 4 штук и шлюз к ним.

Датчик SONOFF SNZB-02 построен на микроконтроллере cc2530 от компании Texas Instruments, сенсор измеряющий температуру и влажность установлен hdc1080, видимо ITEAD стремились всё сделать на компонентной базе от Texas Instruments.



С помощью настольной лампы, лупы и часа времени схема датчика была перенесена бумагу. Схема не замысловатая, линии интерфейса i2c от HDC1080 на этом датчике выведен на ножки p1.6 и p.17. Светодиод подключен к ножке p1.0 катодом. Кнопка подключена на ножку p2.0 c обвязкой подавляющий дребезг контактов. На плате разведено очень много контактных площадок, на схеме устройство они все отмечены. На фотографии ниже я выделил площадки к которым нужно подпаяться для перепрошивки устройства моей альтернативной прошивкой.



Процесс прошивки не должен вызвать каких то затруднений, места для подпайки проводов очень удобные. Для перепрошивки вам понадобится зайти на мой гитхаб и скачать файл с прошивкой. Далее вам понадобится программа SmartRF Flash Programmer версии 1. Как ее скачать и установить оставлю за рамками данной статьи, уверен интернет в этом поможет. Так же вам понадобится CC Debugger или Smart RF04E(рекомендуется из-за простоты подключения).






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

Процесс прошивки с помощью SmartRF Flash Programmer v1


Подпаиваете 5 проводов на площадки указанные на фото и подключаете эти провода на соответствующие подписанные контакты дебагера. Подключаете дебагер в usb порту компьютера, открываете программу SmartRF Flash Programmer v1. Правее поля в пункте Flash Image нажимаете на иконку «обзор» и выбираете файл прошивки скаченный ранее. В пункте Actions выбираете Erase и ниже нажимаете на кнопку Perform actions. После того как вы очистили чип, выбираете Erase and program том же в пункте Actions и снова нажимаете кнопку Perform actions.



Отпаиваете проводки, собираете датчик обратно в корпус, вставляете батарейку.

Процесс прошивки с помощью ESP8266


Подключите плату ESP8266 к компьютеру с помощью USB-кабеля для передачи данных и убедитесь, что она распознается системой.

Если не установлены необходимые драйверы для вашей платы:

Загрузите форк CCLoader от Jason2866, нажав Download ZIP, и распакуйте его в папку.

Прошейте ESP8266 (NodeMCU) предварительно скомпилированным CCLoader_Arduino.bin из Bin папки загруженного zip-файла, используя один из удобных вам инструментов для прошивки ESP8266, такой как: ESP Flasher, NodeMCU-pyflasher, esptool.py.

Подключите ESP8266 к датчику Sonoff как показано в таблице ниже.



Скачайте альтернативную прошивку с моего GitHub. Если файл открывается как текст, щелкните правой кнопкой мыши « Сохранить как… » и сохраните как sonoff.hex.

Windows


Скачать objcopy.exe с SourceForge и распакуйте. (Если objcopy.exe не запускается, вам нужно скачать libiconv и распаковать в ту же папку.)

Скопируйте файл альтернативной прошивки .hex в ту же папку и сконвертируйте его в .bin с помощью:

objcopy.exe --gap-fill 0xFF --pad-to 0x040000 -I ihex sonoff.hex -O binary sonoff.bin


Переместите преобразованный .bin в папку CCLoader.

Linux


Установите binutils пакет с помощью менеджера пакетов (пример для Debian: sudo apt install binutils)

Скопируйте файл прошивки .hex в ту же папку и сконвертируйте его в .bin с помощью:

objcopy --gap-fill 0xFF --pad-to 0x040000 -I ihex sonoff.hex -O binary sonoff.bin


Прошивка


CCLoader будет использовать NodeMCU с загруженным двоичным файлом CCLoader в качестве моста для загрузки прошивки на датчик Sonoff.

Windows


Используйте CCLoader_x86_64.exe или CCloader.exe из \Windows папки. Поместите подготовленный .bin в ту же папку, что и исполняемый файл CCLoader.

Команда для запуска процесса прошивки. Измените COM# на номер COM-порта, к которому подключен ваш ESP8266.

CCLoader_x86_64.exe [COM#] sonoff.bin 0


Пример: с NodeMCU на COM6
CCLoader_x86_64.exe 6 sonoff.bin 0

Linux


Сначала нужно скомпилировать CCLoader:

  • cd to CCLoader/SourceCode/Linux
  • run


gcc main.c -o CCLoader


Поместите подготовленный .bin в ту же папку, что и скомпилированный исполняемый файл CCLoader.

Команда для запуска процесса прошивки:

./CCLoader [port path] sonoff.bin 0

Пример: с включенным NodeMCU/dev/ttyACM0

./CCLoader /dev/ttyACM0 sonoff.bin 0

Прошивка прошла успешно, если вы видите это:

Upload successfully!
File closed!
Comport closed!


Возможные проблемы


Если перепрошивка не удалась или зависла на Request sent already! Waiting for respond...:

попробуйте использовать 1 вместо 0 в последнем параметре (./CCLoader [port path] sonoff.bin 1).

Переподключите NodeMCU и повторите попытку.

Проверьте как подключены провода,… снова проверьте как подключены провода.


Успешная прошивка в Windows выглядит так.

Отпаиваете проводки, собираете датчик обратно в корпус, вставляете батарейку.

Работа в сети


Что бы добавить устройство в z2m, необходимо в вэб интерфейсе z2m нажать на кнопку разрешить подключения. После этого нажать и удерживать кнопку на датчике SONOFF SNZB-02 в течение 2 секунд, начнет мигать светодиод и должен начаться процесс входа в сеть.



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

Что изменится в работе датчика.


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




Так же датчик начнет поддерживать работу с кластером oNoFF. Это может пригодиться для прямого управления реле. Для этих целей в датчике реализован простой функционал термостата и гигростата. Для прямого управления датчиком внешними реле необходимо привязать датчик к реле с которым он будет работать. Для этого необходимо перейти на страницу датчика в вэб интерфейсе з2м, перейти на вкладку связь. И в новой строке в первом поле выбрать исходную точку -1, в следующем поле правее в выпадающем списке найти реле к которому планируете привязать датчик. Далее правее в чек боксе oNoFF поставить галочку и нажать на кнопку Связать. После нажать на кнопку на корпусе датчика, что бы датчик проснулся и принял новые конфигурационные данные.

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



Ну и последний функционал в этой альтернативной прошивке это установка интервала сна, по умолчанию установлен интервал в 5 минут. Доступный диапазон от 1 минуты до 1 часа.

Проект открытый, исходные файлы проекта, прошивка, схема размещены на моем гитхаб

Мой телеграмм чат DIY DEV (вход охраняет привратник, вспоминайте математику ;))

Мой инстаграм

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


  1. IgorRJ
    26.09.2022 20:39

    Компанией была выпущена серия датчиков в количестве 4 штук и шлюз к ним.

    Наверное, все-таки 4 модели. Или все-таки 4 физических штуки?