Авторизация
Регистрация

Напомнить пароль

Датчик температуры SONOFF SNZB-02 — альтернативный взгляд.

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

Звездой этого проекта является датчик температуры и влажности воздуха 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 выглядит так.

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

Работа в сети Zigbee

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


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

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

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




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

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



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

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

Мой телеграмм чат DIY DEV(вход охраняет привратник, вспоминайте математику ;))
Добавить в избранное
+39 +56
свернутьразвернуть
Комментарии (16)
RSS
+
avatar
+7
  • Colobock
  • 26 сентября 2022, 17:45
Не знаю, в чем дело, но за год из таких трёх датчиков, с оригинальной прошивкой, два уже выкинул, третий тоже периодически ведет себя не адекватно, но редко.
Один включается, коннектится к шлюзу, выжирает батарею за час и выключается. Второй просто ни на что не реагирует. Третий изредка перестаёт слать данные.
С учетом не самых популярных элементов 2450, я решил отказаться от этой модели, выбрал Aubess на 2xAAA.
В то же время 5 датчиков движения SNZB работают всё это время без нареканий.
+
avatar
+3
  • Laeron
  • 26 сентября 2022, 19:18
Подтверждаю. Обладатель одной штуки. Ужасный аппарат. Глючит. Теряет связь через несколько часов. Сжирает батарейки. Батарейка сама тот еще геморрой в виде покупки в оффлайне.

Тоже перешел на 2хААА модели. Еще хорошие были оригинальные от ксяоми, но там цена и в целом не стоят они уже того.
+
avatar
+2
Лаконично и курто!
СПАСИБО!!!
+
avatar
0
А сколько живёт от батарейки с новой прошивкой?
+
avatar
0
  • berk
  • 26 сентября 2022, 20:12

Пока так, месяц что ли уже ему, точно не помню.
+
avatar
0
Ток нечем измерить наверно такой мизерный?
+
avatar
0
  • stels
  • 29 сентября 2022, 08:49
с батаейками вообще не просто в плане прогнозов потребления/емкости
+
avatar
0
  • olegmsn
  • 10 октября 2022, 00:23
меряется этим например (остальное на порядки дороже...)

www.nordicsemi.com/Products/Development-hardware/Power-Profiler-Kit-2

но вот что делать с профилем разряда батарейки и надо ли оно все в DIY — вот это большой вопрос)
+
avatar
+1
Круто, что научились шить zigbee.
+
avatar
+1
  • Klofas
  • 26 сентября 2022, 22:24
Я туевый взял. При той же цене, сразу и часы.
+
avatar
+1
И как впечатления?
P.S.
В 24-часвом варианте могли бы понедельник сделать первым днём недели.
+
avatar
0
  • san_q
  • 29 сентября 2022, 23:39
я такой сразу и IR пульт. Пульт отлично управляет в отсутствии прямой видимости. Алиса видит только созданные пульты, температуру и влажность не видит.
+
avatar
0
Этот WiiFi, а обсуждаемый — Zigbee
+
avatar
+2
  • KBlack
  • 26 сентября 2022, 22:34
Хороший обзор!
Подскажите что за девайс на предпоследнем фото, на который выводятся данные? Что-то кастомное я так понимаю.
+
avatar
+4
  • berk
  • 26 сентября 2022, 22:48
Да, это один из моих проектов, зигби датчик со2, он понимает биндинг.
t.me/zigberu/41329?single
+
avatar
+5
  • dansar
  • 27 сентября 2022, 06:12
Спасибо за исходный код.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.