Приветствую всех читателей Habr. В этой статье хочу поделиться с вами своим новым небольшим проектом.
![](https://habrastorage.org/webt/h1/1u/ls/h11ulskr9n1db0k73egesos4tm4.jpeg)
Звездой этого проекта является датчик температуры и влажности воздуха SONOFF SNZB-02 от компании ITEAD. Этот датчик появился на рынке около 2 лет назад, это было по сути первой попыткой компании ITEAD войти в сегмент Zigbee устройств. Компанией была выпущена серия датчиков в количестве 4 штук и шлюз к ним.
Датчик SONOFF SNZB-02 построен на микроконтроллере cc2530 от компании Texas Instruments, сенсор измеряющий температуру и влажность установлен hdc1080, видимо ITEAD стремились всё сделать на компонентной базе от Texas Instruments.
![](https://habrastorage.org/webt/qb/8x/q7/qb8xq7vgzgckmddjcizf34s4jbc.jpeg)
С помощью настольной лампы, лупы и часа времени схема датчика была перенесена бумагу. Схема не замысловатая, линии интерфейса i2c от HDC1080 на этом датчике выведен на ножки p1.6 и p.17. Светодиод подключен к ножке p1.0 катодом. Кнопка подключена на ножку p2.0 c обвязкой подавляющий дребезг контактов. На плате разведено очень много контактных площадок, на схеме устройство они все отмечены. На фотографии ниже я выделил площадки к которым нужно подпаяться для перепрошивки устройства моей альтернативной прошивкой.
![](https://habrastorage.org/webt/c4/zv/t1/c4zvt1mon6z3hzsocksjmurjytk.png)
Процесс прошивки не должен вызвать каких то затруднений, места для подпайки проводов очень удобные. Для перепрошивки вам понадобится зайти на мой гитхаб и скачать файл с прошивкой. Далее вам понадобится программа SmartRF Flash Programmer версии 1. Как ее скачать и установить оставлю за рамками данной статьи, уверен интернет в этом поможет. Так же вам понадобится CC Debugger или Smart RF04E(рекомендуется из-за простоты подключения).
![](https://habrastorage.org/webt/qo/r9/iz/qor9iz0uu94ge0jg10orgkb0f7a.jpeg)
![](https://habrastorage.org/webt/i4/wh/ro/i4whro6n0a-gyithe-7weemhrlm.jpeg)
![](https://habrastorage.org/webt/-h/iw/2z/-hiw2zbzffkylvskfrvpq75k2_i.jpeg)
![](https://habrastorage.org/webt/hi/p9/iv/hip9ivud40agohgiv2qem3wsp50.jpeg)
Так же на гитхаб выложен исходный код проекта, это для тех кто захочет что то изменить в проекте на свой вкус.
Подпаиваете 5 проводов на площадки указанные на фото и подключаете эти провода на соответствующие подписанные контакты дебагера. Подключаете дебагер в usb порту компьютера, открываете программу SmartRF Flash Programmer v1. Правее поля в пункте Flash Image нажимаете на иконку «обзор» и выбираете файл прошивки скаченный ранее. В пункте Actions выбираете Erase и ниже нажимаете на кнопку Perform actions. После того как вы очистили чип, выбираете Erase and program том же в пункте Actions и снова нажимаете кнопку Perform actions.
![](https://habrastorage.org/webt/gz/ix/ya/gzixyasdnup2fa9azmg0i-jowck.jpeg)
Отпаиваете проводки, собираете датчик обратно в корпус, вставляете батарейку.
Подключите плату ESP8266 к компьютеру с помощью USB-кабеля для передачи данных и убедитесь, что она распознается системой.
Если не установлены необходимые драйверы для вашей платы:
Загрузите форк CCLoader от Jason2866, нажав Download ZIP, и распакуйте его в папку.
Прошейте ESP8266 (NodeMCU) предварительно скомпилированным CCLoader_Arduino.bin из Bin папки загруженного zip-файла, используя один из удобных вам инструментов для прошивки ESP8266, такой как: ESP Flasher, NodeMCU-pyflasher, esptool.py.
Подключите ESP8266 к датчику Sonoff как показано в таблице ниже.
![](https://habrastorage.org/webt/nf/sd/hz/nfsdhzjvrnwurpkz17juvsptx94.png)
Скачайте альтернативную прошивку с моего GitHub. Если файл открывается как текст, щелкните правой кнопкой мыши « Сохранить как… » и сохраните как sonoff.hex.
Скачать objcopy.exe с SourceForge и распакуйте. (Если objcopy.exe не запускается, вам нужно скачать libiconv и распаковать в ту же папку.)
Скопируйте файл альтернативной прошивки .hex в ту же папку и сконвертируйте его в .bin с помощью:
Переместите преобразованный .bin в папку CCLoader.
Установите binutils пакет с помощью менеджера пакетов (пример для Debian: sudo apt install binutils)
Скопируйте файл прошивки .hex в ту же папку и сконвертируйте его в .bin с помощью:
CCLoader будет использовать NodeMCU с загруженным двоичным файлом CCLoader в качестве моста для загрузки прошивки на датчик Sonoff.
Используйте CCLoader_x86_64.exe или CCloader.exe из \Windows папки. Поместите подготовленный .bin в ту же папку, что и исполняемый файл CCLoader.
Команда для запуска процесса прошивки. Измените COM# на номер COM-порта, к которому подключен ваш ESP8266.
Пример: с NodeMCU на COM6
CCLoader_x86_64.exe 6 sonoff.bin 0
Сначала нужно скомпилировать CCLoader:
Поместите подготовленный .bin в ту же папку, что и скомпилированный исполняемый файл CCLoader.
Команда для запуска процесса прошивки:
Пример: с включенным NodeMCU/dev/ttyACM0
Прошивка прошла успешно, если вы видите это:
Если перепрошивка не удалась или зависла на Request sent already! Waiting for respond...:
попробуйте использовать 1 вместо 0 в последнем параметре (./CCLoader [port path] sonoff.bin 1).
Переподключите NodeMCU и повторите попытку.
Проверьте как подключены провода,… снова проверьте как подключены провода.
![](https://habrastorage.org/webt/hi/ce/1s/hice1styl6vnca3khhh0-3a-nnm.jpeg)
Успешная прошивка в Windows выглядит так.
Отпаиваете проводки, собираете датчик обратно в корпус, вставляете батарейку.
Что бы добавить устройство в z2m, необходимо в вэб интерфейсе z2m нажать на кнопку разрешить подключения. После этого нажать и удерживать кнопку на датчике SONOFF SNZB-02 в течение 2 секунд, начнет мигать светодиод и должен начаться процесс входа в сеть.
![](https://habrastorage.org/webt/yc/18/zi/yc18ziz_0foeedm1j0r_sxnakhm.png)
Что бы удалить устройство из сети необходимо на 10 секунд зажать кнопку, по истечении этого времени начнет мигать светодиод, и датчик запустит процедуру выхода из сети. Короткое нажатие инициирует чтение и отправку всех данных с датчика не по расписанию.
Датчик теперь передает данные о температуре и влажности через кластеры температуры и влажности. Датчик можно биндить на эти кластеры к другим устройствам у которых реализован биндинг по данным кластерам. После привязки датчик будет передавать данные о температуре и влажности непосредственно на устройства к которым привязан.
![](https://habrastorage.org/webt/nu/h3/at/nuh3athdoeniwuvmwzfar9tgdao.png)
![](https://habrastorage.org/webt/l7/6a/r1/l76ar1w6wjpgl8lzqtzrstrrxjg.jpeg)
Так же датчик начнет поддерживать работу с кластером oNoFF. Это может пригодиться для прямого управления реле. Для этих целей в датчике реализован простой функционал термостата и гигростата. Для прямого управления датчиком внешними реле необходимо привязать датчик к реле с которым он будет работать. Для этого необходимо перейти на страницу датчика в вэб интерфейсе з2м, перейти на вкладку связь. И в новой строке в первом поле выбрать исходную точку -1, в следующем поле правее в выпадающем списке найти реле к которому планируете привязать датчик. Далее правее в чек боксе oNoFF поставить галочку и нажать на кнопку Связать. После нажать на кнопку на корпусе датчика, что бы датчик проснулся и принял новые конфигурационные данные.
После привязки необходимо перейти на вкладку свойства выставить пороги в разделе термостат или гидростат, после каждого введенного значения в поля, необходимо нажимать на кнопку на корпусе датчика, что бы он проснулся и принял конфигурацию. После выставления порогов нужно активировать контроль переключателем, так же после переключения нажав на кнопку на датчике.
![](https://habrastorage.org/webt/gp/by/r_/gpbyr_8cnxasyj0-k4kajmeomsy.png)
Ну и последний функционал в этой альтернативной прошивке это установка интервала сна, по умолчанию установлен интервал в 5 минут. Доступный диапазон от 1 минуты до 1 часа.
Проект открытый, исходные файлы проекта, прошивка, схема размещены на моем гитхаб
Мой телеграмм чат DIY DEV (вход охраняет привратник, вспоминайте математику ;))
Мой инстаграм
![](https://habrastorage.org/webt/h1/1u/ls/h11ulskr9n1db0k73egesos4tm4.jpeg)
Звездой этого проекта является датчик температуры и влажности воздуха SONOFF SNZB-02 от компании ITEAD. Этот датчик появился на рынке около 2 лет назад, это было по сути первой попыткой компании ITEAD войти в сегмент Zigbee устройств. Компанией была выпущена серия датчиков в количестве 4 штук и шлюз к ним.
Датчик SONOFF SNZB-02 построен на микроконтроллере cc2530 от компании Texas Instruments, сенсор измеряющий температуру и влажность установлен hdc1080, видимо ITEAD стремились всё сделать на компонентной базе от Texas Instruments.
![](https://habrastorage.org/webt/qb/8x/q7/qb8xq7vgzgckmddjcizf34s4jbc.jpeg)
С помощью настольной лампы, лупы и часа времени схема датчика была перенесена бумагу. Схема не замысловатая, линии интерфейса i2c от HDC1080 на этом датчике выведен на ножки p1.6 и p.17. Светодиод подключен к ножке p1.0 катодом. Кнопка подключена на ножку p2.0 c обвязкой подавляющий дребезг контактов. На плате разведено очень много контактных площадок, на схеме устройство они все отмечены. На фотографии ниже я выделил площадки к которым нужно подпаяться для перепрошивки устройства моей альтернативной прошивкой.
![](https://habrastorage.org/webt/c4/zv/t1/c4zvt1mon6z3hzsocksjmurjytk.png)
Процесс прошивки не должен вызвать каких то затруднений, места для подпайки проводов очень удобные. Для перепрошивки вам понадобится зайти на мой гитхаб и скачать файл с прошивкой. Далее вам понадобится программа SmartRF Flash Programmer версии 1. Как ее скачать и установить оставлю за рамками данной статьи, уверен интернет в этом поможет. Так же вам понадобится CC Debugger или Smart RF04E(рекомендуется из-за простоты подключения).
![](https://habrastorage.org/webt/qo/r9/iz/qor9iz0uu94ge0jg10orgkb0f7a.jpeg)
![](https://habrastorage.org/webt/i4/wh/ro/i4whro6n0a-gyithe-7weemhrlm.jpeg)
![](https://habrastorage.org/webt/-h/iw/2z/-hiw2zbzffkylvskfrvpq75k2_i.jpeg)
![](https://habrastorage.org/webt/hi/p9/iv/hip9ivud40agohgiv2qem3wsp50.jpeg)
Так же на гитхаб выложен исходный код проекта, это для тех кто захочет что то изменить в проекте на свой вкус.
Процесс прошивки с помощью SmartRF Flash Programmer v1
Подпаиваете 5 проводов на площадки указанные на фото и подключаете эти провода на соответствующие подписанные контакты дебагера. Подключаете дебагер в usb порту компьютера, открываете программу SmartRF Flash Programmer v1. Правее поля в пункте Flash Image нажимаете на иконку «обзор» и выбираете файл прошивки скаченный ранее. В пункте Actions выбираете Erase и ниже нажимаете на кнопку Perform actions. После того как вы очистили чип, выбираете Erase and program том же в пункте Actions и снова нажимаете кнопку Perform actions.
![](https://habrastorage.org/webt/gz/ix/ya/gzixyasdnup2fa9azmg0i-jowck.jpeg)
Отпаиваете проводки, собираете датчик обратно в корпус, вставляете батарейку.
Процесс прошивки с помощью ESP8266
Подключите плату ESP8266 к компьютеру с помощью USB-кабеля для передачи данных и убедитесь, что она распознается системой.
Если не установлены необходимые драйверы для вашей платы:
Загрузите форк CCLoader от Jason2866, нажав Download ZIP, и распакуйте его в папку.
Прошейте ESP8266 (NodeMCU) предварительно скомпилированным CCLoader_Arduino.bin из Bin папки загруженного zip-файла, используя один из удобных вам инструментов для прошивки ESP8266, такой как: ESP Flasher, NodeMCU-pyflasher, esptool.py.
Подключите ESP8266 к датчику Sonoff как показано в таблице ниже.
![](https://habrastorage.org/webt/nf/sd/hz/nfsdhzjvrnwurpkz17juvsptx94.png)
Скачайте альтернативную прошивку с моего 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 и повторите попытку.
Проверьте как подключены провода,… снова проверьте как подключены провода.
![](https://habrastorage.org/webt/hi/ce/1s/hice1styl6vnca3khhh0-3a-nnm.jpeg)
Успешная прошивка в Windows выглядит так.
Отпаиваете проводки, собираете датчик обратно в корпус, вставляете батарейку.
Работа в сети
Что бы добавить устройство в z2m, необходимо в вэб интерфейсе z2m нажать на кнопку разрешить подключения. После этого нажать и удерживать кнопку на датчике SONOFF SNZB-02 в течение 2 секунд, начнет мигать светодиод и должен начаться процесс входа в сеть.
![](https://habrastorage.org/webt/yc/18/zi/yc18ziz_0foeedm1j0r_sxnakhm.png)
Что бы удалить устройство из сети необходимо на 10 секунд зажать кнопку, по истечении этого времени начнет мигать светодиод, и датчик запустит процедуру выхода из сети. Короткое нажатие инициирует чтение и отправку всех данных с датчика не по расписанию.
Что изменится в работе датчика.
Датчик теперь передает данные о температуре и влажности через кластеры температуры и влажности. Датчик можно биндить на эти кластеры к другим устройствам у которых реализован биндинг по данным кластерам. После привязки датчик будет передавать данные о температуре и влажности непосредственно на устройства к которым привязан.
![](https://habrastorage.org/webt/nu/h3/at/nuh3athdoeniwuvmwzfar9tgdao.png)
![](https://habrastorage.org/webt/l7/6a/r1/l76ar1w6wjpgl8lzqtzrstrrxjg.jpeg)
Так же датчик начнет поддерживать работу с кластером oNoFF. Это может пригодиться для прямого управления реле. Для этих целей в датчике реализован простой функционал термостата и гигростата. Для прямого управления датчиком внешними реле необходимо привязать датчик к реле с которым он будет работать. Для этого необходимо перейти на страницу датчика в вэб интерфейсе з2м, перейти на вкладку связь. И в новой строке в первом поле выбрать исходную точку -1, в следующем поле правее в выпадающем списке найти реле к которому планируете привязать датчик. Далее правее в чек боксе oNoFF поставить галочку и нажать на кнопку Связать. После нажать на кнопку на корпусе датчика, что бы датчик проснулся и принял новые конфигурационные данные.
После привязки необходимо перейти на вкладку свойства выставить пороги в разделе термостат или гидростат, после каждого введенного значения в поля, необходимо нажимать на кнопку на корпусе датчика, что бы он проснулся и принял конфигурацию. После выставления порогов нужно активировать контроль переключателем, так же после переключения нажав на кнопку на датчике.
![](https://habrastorage.org/webt/gp/by/r_/gpbyr_8cnxasyj0-k4kajmeomsy.png)
Ну и последний функционал в этой альтернативной прошивке это установка интервала сна, по умолчанию установлен интервал в 5 минут. Доступный диапазон от 1 минуты до 1 часа.
Проект открытый, исходные файлы проекта, прошивка, схема размещены на моем гитхаб
Мой телеграмм чат DIY DEV (вход охраняет привратник, вспоминайте математику ;))
Мой инстаграм
IgorRJ
Наверное, все-таки 4 модели. Или все-таки 4 физических штуки?