NEO COOLCAM Wifi Smart Plug. Как WiFi розетка превращается в прокачанную пинговалку-ребутер.

Если какое-либо из ваших устройств постоянно зависает, то правильней всего — отремонтировать его, либо обзавестись новым, лишенным подобных недостатков. Но иногда это невозможно, иногда экономически не целесообразно, а иногда нужно поставить временный костыль, пока новое оборудование в пути. В прошлом своем обзоре я заикнулся о том, что в пути еще одна “умная” розетка едет, которая в миниатюрном корпусе и с поддержкой Alexa, Google Home, IFTTT. Поскольку было абсолютно неизвестно, на какой базе она построена — первым делом разобрал :)

Вот так выглядит пришедшая кучка.

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

И здесь я повертел в руках розетку, и единственное место, куда могло бы поместиться реле — это межштыревое пространство. Сопоставил размер реле, которое туда поместится с цифрой 2кВт, и в уме пробежались очередные формулы из китайской математики.

Первый сюрприз, еще не открывая:

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

Второй сюрприз:

внутри все тот-же esp8266 с неудобной spi flash на 1МБ.

Для того, чтобы разобрать дальше — нужно выкрутить два винта, которые вкручены через плату в торец силовых клемм. И это:

Третий сюрприз:

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

Выкрутил, отогнул земляной контакт и вытянул бутерброд. Здесь появился:

Четвертый сюрприз (на этот раз приятный):

китайцы вынесли достаточно большую антенну на боковую стенку. Т.е. по крайней мере с приемом проблем быть не должно.

Смотрим реле, которое на ali целых $1,5 стоит, и видим во-первых маленький для 2кВт габарит, а во-вторых нестандартное расположение контактных групп, относительно друг-друга. Это еще один намек на то, что заменять данное реле будет и неудобно и не очень бюджетно.

Паяльник в руки, и через 2 минуты в руках три разобранных этажа.

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

Пятый сюрприз:

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

Здесь уже абсолютно все говорит о том, что через данную реле можно относительно безболезненно прогонять ватт 300-500, а лучше 20-30 :) Собственно это, в первую очередь, сузило сферу применения данного реле.

Дальше — больше. Китайцы, конечно, молодцы, что умудряются совмещать несовместимые вещи. И в данном случае блок питания — бестрансформаторный. Упс… Это, конечно, уже не огромный гасящий конденсатор, а вполне опробованное китайцами решение, прижившееся в светодиодных 220В светильниках. Внутри один драйвер, гордо называющийся “ASZAHA”, но не имеющий даташита в свободном доступе. Два дросселя на входе, один на выходе — и имеем 12В для управления релюхой. Здесь выбор 12В оправдан, поскольку нужен меньший ток. Подобные светодиодные драйвера обеспечивают от 3 до 15Вт. На высоких напряжениях, под 100В нужно обеспечить от 30 до 150мА ток, что вполне вписывается в габаритные размеры. Здесь, скорее всего, тоже БП обеспечивает мощность в районе 3Вт. Проверять не стал, поскольку не имеет смысла, и сгорает только один раз :)

Шестым сюрпризом стал:

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

На средней части бутерброда расположено реле и DC-DC с 12В на 3.3В для питания esp8266. Вполне оправданное и логичное здесь решение. DC-DC собран тоже на чем-то местно-китайском, с маркировкой cm8j.

В верхней части — esp8266 с обвесом. Здесь самое плохое — spi flash, живущая по своим правилам. Об этом писал в прошлом обзоре. Но зато нормальная антенна, и расположена наиболее грамотно.

Фен в руки, 2 минуты и флешка сдута (не отработала ни разу), а на ее место поставлена нормальная 4МБ (32Мб) для экспериментов.
На этом предварительные ласки окончены. Перевернем подопытную :)

А здесь в целом неплохо. Аккуратно выведены пятачки RX, TX, питания. Кроме них здесь же пятачки GPIO0 и GPIO2.
После прозвонки полный список выведенных GPIO выглядит так:
GPIO0 — не используется, можно задействовать под SCL
GPIO1 — TX
GPIO2 — не используется, можно задействовать под SDA
GPIO3 — RX
GPIO4 — используется под распаянный LED
GPIO5 — полностью разведен под второй LED (нужен резистор и сам LED)
GPIO12 — используется для управления реле, разведен в месте соединения плат
GPIO13 — используется под штатную кнопку.

в целом вполне нормальное количество, но из-за отсутствия гальванической развязки на I2C можно разве что дисплейчик повесить. Хотя в данную конструкцию можно отлично вписать датчик CO2, ему для работы как раз нужно 5-16В, которые есть около реле.

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

Что интересного можно построить с подобными входящими?

Из очень полезного — розетку для зависающих роутеров, либо для роутеров, неспособных самостоятельно переподключаться после разрыва связи. Вполне живое решение. И очень малый габарит самой розетки здесь играет в плюс — в 99,99% случаев эта проходная розетка влезет под основную вилку.

И раз ребутилка не обделенная “умом” — думаем, какой функционал может пригодиться, и на базе какой прошивки можно с минимумом усилий собрать подобный девайс.

Зависание можно определить по пропавшему пингу цели. Пинговать можно как интернетовский 8.8.8.8, так и ip самого роутера. В целом можем пинговать любую другую железку в инфраструктуре.
Не помешает возможность задать плановые перезагрузки.
Нужно какое-то осознанное управление, как с кнопки, так и с web интерфейса, но без обязательного доступа к интернету.
Синхронизация времени по NTP серверу (в локальной сети, или в интернет — без разницы) тоже пригодится.
Возможность WOL-ом запустить удаленную железку, вполне возможно.
Простой и понятный выход в safe mode, если розетку уже перенесли, а предварительные настройки на другой сервер сделать забыли.
И возможность видеть погоду с gismeteo.ru, narodmon.ru, или просто данные с разнесенных датчиков — будет только плюсом.
Думаю все уже догадались, что с минимальным геморром, особенно для тех, у кого с программированием на «ВЫ» — это проект Макса WiFi-ioT.
Ключик к прошивке обойдется в $2, зато устройство через полчаса будет готово к эксплуатации.

Я выбрал такие опции в прошивке:
Gismeteo.ru
Virtual GPIO
Virtual SENS
Ping тест
TCP/UDP Клиент
WakeOnLan
Время и NTP
Датчики GET запросом
Поддержка календаря
Ручная установка времени
Web KEY
GPIO
Обновление OTA
Auto OTA
Работа с прерываниями
Планировщик заданий
Конструктор main page 2
Logic2
IP security
Safe GPIO (здесь в настройках указать gpio13 и включение при 0)
Конструктор строк
Русский шрифт

Дальше допаял второй светодиод (зеленый :) ) и, собственно все. Остальное — настройки.

Прошиваем — как обычно. В РОЗЕТКУ НЕ ВСТАВЛЯЕМ. До подачи 3.3В зажимаем пинцетом gpio0 и gnd. Вначале льем пустой бинарник, по размеру впаянной spi flash. По идее в этом проекте может и заведется родная, не пробовал.
Затем отключаем питание, еще раз зажимаем gpio0 и gnd, подаем питание. Вливаем скомпилированную однофайловую прошивку с сайта, с 0х00000 адреса.

Еще раз передергиваем питание, и если все нормально — появится беспарольная точка доступа wifi-iot, подключаемся к ней, идем на 192.168.4.1 и занимаемся дальнейшими настройками. Когда введете имя своей wifi сети и ее пароль — переподключайтесь на свою сеть и продолжайте. Здесь особо не расписываю — для “бывалых” esp-шников ничего нового :)

Из нюансов по настройке:
NTP я использовал — 62.149.0.30
Номер своего города для gismeteo смотрите здесь. (gismeteo какое-то время назад перестал работать в данном проекте, но уже все починили, все работает)

GPIO2 — INPUT (используется как dummy устройство, для обхода неоднозначностей)
GPIO4 — OUTPUT INVERT (поскольку инверсная логика) дальше в логике используем 1, когда включено и 0, когда выключено.
GPIO5 — OUTPUT INVERT
GPIO12 — OUTPUT INVERT
(если нужно, чтобы устройство сохраняло свое состояние при отключении питания — то на GPIO12 поставьте галку на Flash, это признак того, что КАЖДОЕ изменение сохраняется на spi flash и при следующей подаче питания будет именно в последнем состоянии. Но это гораздо быстрее изнашивает flash) Для данного случая розетка должна быть всегда включена, при возобновлении питания. Поэтому галочки не ставим.

interrupt: (нужно использовать для быстрого реагирования на кнопку)
Int1 on GPIO13 — Time Key
Time for Key — 5 (в секундах, на какое время меняется состояние gpio)
GPIO for Key — 12 (здесь реле, при нажатии на кнопку — на 5 сек. отключаем нагрузку, затем она подключается обратно). 5 сек должно хватить на разряд конденсаторов в БП ведомого устройства. Можно поиграться временем.

Ping test — задействуем, и задаем узел, который будем пинговать. При пропадании пинга в течении минуты розетка уберет на 5 сек питание (это время не настраивается) и затем будет продолжать данную процедуру каждые 3 минуты, до момента появления доступа к узлу.

Edit main — редактирование части web интерфейса под себя. Можно нарисовать красивые кнопки (css стилями, поскольку максимум 600 байт дано). У меня так:

<style>     P {       text-indent: 1.5em; /* Отступ первой строки */      text-align: center; /* Выравнивание по центру */     }    </style>     <p>По GISMETEO:  <b>_GTT_</b>°C ... <b>_GTH_</b>%% ... <b>_GTP_</b>мм</p>  Нет пинга _GPIO4_  Есть пинг _GPIO5_

Web Key — «GPIO12 — ВЫКЛ»
Это кнопка, которая появится в интерфейсе, и назначение ее понятно из названия :) Отключает нагрузку.

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

И самое сложное (хоть на первый взгляд таким не кажется) это заполнение логики действий.
Как сделал я:
При отключении нагрузки (не важно, с кнопка на 5 сек, от пинговалки или просто при отключении кнопкой в интерфейсе) — гаснут оба светодиода.
При доступе контролируемого узла горит зеленый светодиод (gpio5)
При пропадании пинга — горит красный (gpio4) и каждые 3 минуты на 5 сек гаснет.
После появления доступа — снова загорается зеленый светодиод.
Поскольку логический модуль обрабатывается отдельно, со своей дискретностью изменение свечения светодиодов происходит с задержкой до 1 минуты. Поскольку это лишь удобные информеры — не критично.
При коротком нажатии кнопки на розетке — на 5 сек отключается нагрузка и подключается обратно.
Если нужно зайти в safe mode — зажимаем кнопку, затем вставляем в розетку. Появится точка доступа wifi-iot.

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

Сами модули логики у меня выглядит так:

1) Event options - GPIO2, Time 0                        1. if GPIO12 = 0                            false - Event state 1                            true - Event state 0    2) Event - GPIO4, Time 0                        1. if GPIO2 = 1                            false - Next step                            true - Event state 0                        2. Ping test = 0                            false - Event state 0                            true - Event state 1    3) Event - GPIO5, Time 0                        1. if GPIO2 = 1                            false - Next step                            true - Event state 0                        2. Ping test = 1                            false - Event state 0                            true - Event state 1

Итого задействовал 3 правила, по 1..2 шага в каждом. При желании можно их скомпоновать в одно.
В целом смотрятся легко, но пришел к такому виду через несколько итераций, поскольку в некоторых случаях поведение логики не соответствовало ожидаемому. В таком варианте все нормально.

Розетку брал здесь. Ну как брал — это моя первая и пока единственная 1-центовая халява :) В целом цена ее колеблется в диапазоне $10…$12. Ключ к прошивке — еще $2.
Из плюсов подобной реализации именно пинговалки, можно отметить компактность и хорошее расположение антенны. А также много выведенных пинов.
Из минусов — отсутствие гальванической развязки, слабое реле (для 2кВт), тонкие силовые дорожки, неремонтопригодная, в части питания, схемотехника.

Для использования по прямому назначению 2кВт, Alexa, Google Home, IFTTT — не использовать ни в коем случае.
Для переделки во вполне годную пинговалку с квалкомом и мандрами — очень неплохой вариант, в первую очередь из-за габаритов.

Для любителей автоматики на wifi сетях напоминаю, любую wifi сеть в нижнем диапазоне (2,4ГГц) можно напрочь лишить работоспособности вот такой малявкой.

(Фото нашел в сети ;) )

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

Пока доезжают акционные sonoff basic по $3,5 — уже придумал во что их переделать. Тоже вполне очевидное решение, но как всегда есть нюансы :)

Добавить в избранное 0

(c) 2017 Источник материала

Пролистать наверх