Дело было вечером,… Прикупил кучку обновленных железок от Sonoff. В составе: Sonoff DUAL R2, Sonoff POW R2 и Sonoff S26F (F-тип розетки). Интерес отчасти академический (на сколько стабильней стали железки на невеселом esp8266/esp8285), а отчасти практический (аквариум на Sonoff работает несколько месяцев без проблем, теперь нужно два терморегулятора, с некоторыми отличиями). О самом простом хочу сейчас рассказать. В результате получился стабильный автономный термостат, с возможностью интеграции в существующую систему автоматизации, и с огромным багажом не используемых здесь возможностей.
Начнем с краткого описания Sonoff S26. По сути это обновленная модель S20, в более симпатичном исполнении. В обновлении вся радиочастотная часть вынесена на отдельную платку, которая торцом припаяна к основной. С чем связано такое решение знает только производитель, возможно для более устойчивой работы нужно было развернуть антенну перпендикулярно, а может упрощение ремонтопригодности. Вся высокочастотная часть сидит на 6 точках припоя.
Схемотехника
WiFi часть собрана на esp8266 + PUYA 25Q80H (1МБ)
Сначала на тип SPI flash не обратил особо внимания, 8мб, прошивальщик тоже 1МБ показывает, вроде бы нигде подножек быть не должно. Все подходящие прошивка помещаются. Эту модель ковырял последней, до этого были перешиты и проверены другие две модели. Проблем с прошиванием не возникло. Но как позже оказалось — PUYA — плод китайского инженеростроения, и понять китайцев могут только китайцы. Скорее всего в протокол внесли незначительные изменения, которые нужно учитывать при прошивке.
В результате много времени было потрачено на перепрошивки, с непонятным поведением устройства после. В результате сдул флешку, запаял первую попавшуюся, оставшуюся с какого-то роутера, объемом 4МБ, с неизвестными прошивальщикам Vendor: 0x7F Device: 0x9D46, но отлично при этом работающую. После этого любая прошивка стартовала предсказуемо. И только после полного завершения работ над термостатом увидел в скомпиленных бинарниках пометки “ESP8266PUYA_1024” и “ESP8266PUYA_1024_VCC”.
Судя по всему нужно было их использовать, но при этом sonoff-tasmota отдельной такой ветки не имеет, соответственно их прошивку без перепайки флеши на текущий момент запустить не удастся.
Выбор проекта для использования
На сегодня есть несколько проектов с esp8266, которые можно так или иначе использовать.
Это:
— 1. WiFi-ioT, с большим конструктором, где можно скомпилировать только то, что нужно. Прошивка стоит $2 (единоразово, вне зависимости от числа пересборок и перепрошивок на одном модуле, поскольку привязывается к ChipID модуля). В целом достаточно неплохой инструмент для тех, кто программировать не умеет, но что нужно получить — точно знает.
— 2. Sonoff-Tasmota, ставший для многих нарицательным именем альтернативных прошивок для модулей от Sonoff. Построен на базе Arduno, с подтягиванием множества библиотек. Можно использовать их готовые бинарники, можно самому собрать среду и делать то, что посчитаете нужным. Именно открытость проекта привлекла многих. Прошивка достаточно стабильна, имеет интерфейсы на разных языках (русский присутствует, в последних ревизиях добавили украинский, правда обозвали его UK :) ). После заливки бинарника, внутри можно выбрать какой именно Sonoff используется — и автоматом подтянется распиновка именно этого модуля. POW R2 уже там есть. Из особенностей — больше подойдет тем, кто внутри дополнительно паяльником работать не собирается, поскольку переназначить GPIO в существующем выбранном модуле достаточно нетривиальная задача.
— 3. 1М смартфон. В целом идея здравая, и если смотреть глобально — это попытка сделать локального Sonoff-а. Тоесть принцип — похожий на тот, который используют ребята из ITEAD, но со своими плюшками и отличиями. После прошивки модуля их бинарником становится возможным управлять модулем со смартфона (WEB интерфейс не предусмотрен), имеют свой сервер, для возможности управлять через интернет, который можно отключить. И есть возможность, подключившись к одному модулю (даже без WiFi роутера, т.е. напрямую) видеть остальные устройства, поскольку развертывается mesh сеть. Кстати, этот тип сети есть и в некоторых других прошивках. Большим минусом для себя отметил то, что при установке приложения — оно очень активно хочет знать мое местоположение, а я очень активно не хочу его предлагать :). Производитель заявляет, что на текущий момент местоположение нужно для корректного определения восхода — заката, плюс есть функцианал реагирования на геолокацию любого из смартфонов, связанных с приложением (ребенок в учебное время вышел за 200м зону от школы — прилетает аларм “загулял” и т.д.). Т.е. такое себе смешивание функциональности sonoff и детских часов с GPS. Есть платные подписки на использование их серверов с сохранением логов и т.д. В целом — съедобно, но не для параноиков. Но еще и закрытый код ставит минус на использовании.
— 4. ESP8266 MegaD api. Для тех, кто знаком с достаточно сильным в рунете проектом ab-log.ru будет интересна прошивка, поддерживающая этот api. Т.е. по сути — это пересобранная под esp8266 прошивка мегадевайса, с урезаниями и легкими дополнениями, связанными с отличающейся архитектурой. Но в целом — отличная реализация, и для тех, у кого автоматика и так собрана на мегадевайсах — будет отличным выбором. Прошивка работает стабильно, аквариум работает именно на ней, проблем нет. Но опять-же код закрытый, и автор достаточно давно перестал обновлять ее. Дата последних мелких правок с отключением MQTT — 03.06.2017.
— 5. MyHome IoT — прошивка под Blink, со всеми плюсами и минусами. Особо не вникал, мне не интересен этот подход.
— 6. ESPurna — в общем “урна” в названии, наверное не случайна, но есть исходники на гите, проект живет, но в чем его изюм — не понял. Хоть и заявлена частичная поддержка SSL/TLS в MQTT. Поддерживается небольшое количество датчиков. Хоть обновляется часто, но поддержки POW R2 нет. В общем — на любителя.
— 7. Sonoff_WiFi_Switch от Третякова, в целом очень интересный проект, код открыт, но собирается с бубном, поскольку нужны определенные библиотеки, определенных версий. Может организовываться в mesh сеть, очень лаконичный и симпатичный дизайн, есть управление удаленными устройствами с аналогичной прошивкой. Но как-то энтузиазм у ребят угасает, а многого так еще и не добавили. Последние готовые бинарники годовалой давности, в исходниках какое-то движение идет, но видно, что на проект автор понемног забивает. Жаль. Выглядит достаточно современно.
— 8. ESPEasy — лично для меня стал открытием, в хорошем смысле этого слова. Код открытый, Используется последнее ядро Arduino 2.4.1 с критическими исправлениями. Используемые либы лежат в исходниках и обновляются синхронно, в случае необходимости. Разворачивается очень быстро на PlatformIO (Кто не в курсе, что это такое — посмотрите хотя бы это видео, если коротко — это удобная замена среды Arduino, с возможностью как портировать свои проекты из Arduino, так и использовать любое существующее ядро, и писать на том языке, который привычен. Нужные библиотеки подтягиваются в один клик, поддержка оборудования во второй, может использовать как Atom, так и Visual Studio Code для своего развертывания). Еще у автора(ов) мне понравился системный подход, четкий дедлайн по выходу версий. В целом, в подходе чувствуется богатый опыт. Значит будет закинут не скоро. Ключевой особенностью данного проекта так-же является поддержка большого количества датчиков (POW R2 уже поддерживается). В этом проекте уже добавлена поддержка той злосчастной PUYA, правда работоспособность так и не проверил, поскольку заметил гораздо позже того, как заменил микросхему. Достаточно грамотно организована работа с spi, ограничивает количество ежедневных сохранений изменений. Сбросить счетчик можно только сняв питание с устройства, иначе всплывают красные флаги и отказываются сохранять, пока не передернешь питание. Т.е. тем самым ограничивают количество записей на spi. На любой GPIO можно повесить любой датчик. Вся логика взаимодействия описывается отдельно. Плохо, что недостаточно готовых примеров, некоторые моменты приходится использовать методом проб и ошибок. Но в целом, когда вникаешь в логику взаимодействий — оказывается все достаточно понятно.
— Этот проект можно сравнить с первым из этого списка, но с открытым исходным кодом (правда на Arduino, в отличии от первого, где чистый C, и SDK от pvvx, что правильней). И поскольку здесь можно легко сделать полностью автономный термостат, с управлением как по HTTP, так и по MQTT (а так-же еще многими путями), именно на базе этого проекта было принято решение расширять возможности стандартного железа Sonoff.
По указанным прошивкам есть темы на 4pda.
Ставим цель для термостата
— 1. Возможность поддержания заданной температуры в полностью автономном режиме. С использованием дельты температур.
— 2. Старт автоматического поддержания температуры либо автоматически, либо нажатием единственной кнопки.
— 3. Минимальное изменение внешнего вида при добавлении датчика температуры (минимальный внешний колхозинг, другими словами).
— 4. Возможность легкой интеграции в существующую систему автоматизации.
Самый главный пункт для меня первый. Устройство предполагается настроить один раз и поставить на постоянную службу без моего участия. Но дистанционный мониторинг необходим.
На стандартной прошивке я его даже не включал, по сему, что там было от производителя — не знаю, да и не хочу знать :) Думаю те, кто использует сервера Sonoff уже и так в курсе, либо уже развернули свой сервер, а может уже научились добавлять свои сертификаты в новую родную прошивку.
Вскрываем:
Видно, что весь модуль esp8266 находится на отдельной плате. Сама плата вставляется в пазы основной, и припаивается шестью выводами.
Сопоставление маркировки с реальными выводами:
J1 — VPP (+3.3В)
J2 — GND
J3 — GPIO12 (реле и красный светодиод)
J4 — GPIO0 (внешняя кнопка, перевод в режим прошивки)
J5 — GPIO13 (синий светодиод, может управляться отдельно, инверсная логика)
J10 — GPIO3 (RX, его вывод на эту колодку для меня остался загадкой, возможно задел под другие устройства, где внешний микроконтроллер по UART будет что-то передавать ESP-шке). В ESPEasy, как и в 99% остальных прошивок задействовать GPIO3 и GPIO1 (RX, TX) не получится, а по TX еще и мусор сыпется при загрузке модуля.
► Расширенная версия обзора доступна на сайте MYSKU.ru
Что в итоге?
Симпатичное устройство, с гидро изолированным датчиком температуры, вставляется в разрыв розетки, куда раньше подключалось устройство без контроля температуры. Можно использовать в аквариумах, при обогреве комнат, для приготовления йогуртов, для поддержания постоянной температуры детского питания, для сушки дерева, да еще много для чего. При этом, в отличии от многих устройств, существующих на рынке — либо гораздо дешевле и красивей при схожей функциональности, либо гораздо функциональней при схожей цене.
Покупалось за свои и ковырялось тоже :)
Если есть интерес — распишу отдельно нюансы по двум другим железкам от Sonoff. И жду другую подобную компактную проходную розетку.
Посмотрю на чем основана, если будет смысл поковырять — напишу еще чего-нить. Со старта она тоже алексу и разные IFTTT поддерживает, но это же не наш путь ;)