Cмарт розетка REDMOND SkyPort 100S - добавляем в умный дом

Это продолжение моей первой статьи на смарт цоколь Redmond. В этой статье речь пойдет о другом девайсе компании Redmond — Cмарт розетка REDMOND SkyPort 100S. Данное устройство тоже базируется на чипе nRF51822 и как говорится тут сам бог велел попробовать. Итак, была куплена данная розетка. Корпус разбирается так же легко, как и цоколь, доступ к порту программирования еще удобнее. Но забегая вперед скажу что все немного сложнее, чем мне показалось сначала. Схему данной розетки не стал прозванивать, тк уже существует куча обзоров по модернизации и модификации данных розеток.



В одном из обзоров нашел схему, этим и ограничился. Из схемы понятно что задействованы так же как и в смарт цоколе всего 4 пина на модуле nRF51822. На устройстве присутствует тактовая кнопка подключенная к пину p0.00, два светодиода, красный подключен к пину p0.01, зеленый подключен к пину p0.02. Электромагнитное реле на 10A подключено к пину p0.03. Итак запускаем Arduino IDE и начинаем накидывать экземпл:


#define BUTTON_PIN 0
#define RED_LED_PIN 1
#define GREEN_LED_PIN 2
#define RELAY_PIN 3

boolean iswitch = 0;
boolean flag_button = 0;
static uint32_t previousMillis;

//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
//#define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_LOW)
#define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX)
//#define MY_PASSIVE_NODE
#define MY_NODE_ID 201
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED

#define RELAY_ID 1

#include <MySensors.h>

MyMessage lMsg(RELAY_ID, V_STATUS);

void preHwInit() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(RELAY_PIN, OUTPUT);
}

void before()
{
  digitalWrite(RED_LED_PIN, HIGH);
}

void presentation()
{
  sendSketchInfo("REDMOND R nRF51", "1.0");
  wait(300);
  present(RELAY_ID, S_BINARY, "RELAY SWITCH");
  wait(300);
}

void setup()
{
  digitalWrite(RED_LED_PIN, LOW);
  wait(300);
  digitalWrite(GREEN_LED_PIN, HIGH);
  wait(200);
  digitalWrite(GREEN_LED_PIN, LOW);
  wait(200);
  digitalWrite(GREEN_LED_PIN, HIGH);
  wait(200);
  digitalWrite(GREEN_LED_PIN, LOW);
  wait(200);
  digitalWrite(GREEN_LED_PIN, HIGH);
  wait(200);
  digitalWrite(GREEN_LED_PIN, LOW);
  wait(500);
  send(lMsg.set(iswitch));
  wait(500);
}


void loop()
{
  if (digitalRead(BUTTON_PIN) == LOW && flag_button == 0) {
    flag_button = 1;
    previousMillis = millis();
    wait(20);
  }

  if (digitalRead(BUTTON_PIN) == LOW && flag_button == 1) {
    //что нибудь потом добавить, может быть
  }
  if (digitalRead(BUTTON_PIN) == HIGH && flag_button == 1) {

    if ((millis() - previousMillis > 0) && (millis() - previousMillis <= 3000)) {
      if (iswitch == 0) {
        digitalWrite(GREEN_LED_PIN, HIGH);
        wait(10);
      } else if (iswitch == 1) {
        digitalWrite(GREEN_LED_PIN, LOW);
        wait(10);
      }
      flag_button = 0;
      iswitch = !iswitch;
      digitalWrite(RELAY_PIN, iswitch);
      wait(1500);
      send(lMsg.set(iswitch));
    }
    if (millis() - previousMillis > 3000)
    {
      flag_button = 0;
    }
  }
}

void receive(const MyMessage & message) {
  if (message.type == V_STATUS) {
    if (message.sensor == RELAY_ID) {
      if (mGetCommand(message) == 1) {
        if (message.isAck()) {
          //AckG = 1;
        } else {
          wait(50);
          if (iswitch == 0) {
            digitalWrite(GREEN_LED_PIN, HIGH);
          }else
          if (iswitch == 1) {
            digitalWrite(GREEN_LED_PIN, LOW);
          }
          iswitch = !iswitch;
          wait(10);
          digitalWrite(RELAY_PIN, iswitch);
          wait(1500);
          send(lMsg.set(iswitch));
        }
      }
      if (mGetCommand(message) == 2) {
      }
    }
  }
}


Как видите код небольшой и достаточно простой, спасибо за это сообществу Mysensors

Как с кодом было закончено, подключил программатор к устройству и перепрошил. Подключение программатора к розетке делается очень просто, в моем случае я взял два обычных выводных резистора, откусил кусачками проволоку, и проволки сделал крючки, согнув ее, вставил эти крючки в провода программатора и «подцепился» к розетке, на видео видно как я это делаю. Пришло время тестировать то что получилось. Вставил смарт розетку в розетку :), открыл Мажордомо, все нормально, розетка уже присутствовала в сети Майсенсорс. Отправляю первую команду на включение и… ребут :) неожиданный поворот. Первое что пришло в голову, просадка по питанию во вперя включения реле. Сел, переделал программу, убрал включение светодиода при включении реле, что бы снизить потребление. И это сработало, розетка перестала перезагружаться при вкобчении реле.… Но не надолго :). И так стало понятно что модулю не хватает питания. Схема бестрансформаторного блока питания расчитана так, что бы хватало только на работу в режиме BLE. В Mysensors же используется другой режим радиомодуля 2.4 Ггц(совсестимость с RF24 — ANT). Итак имеем дефицит примерно 10мА. Обсудив проблемку в нашем чате Mysensors остановился на решении добавить балластный конденсатор, так как это очень простая манипуляция, то что нужно для повторения. Вот что получилось:





Собрав снова розетку, немного взволнованно приступил к тестам. Отработка теперь шла превосходно. Переписал логику работы программы обратно, добавл еще #define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX), тоесть врубил радио на полную мощьность(да с Mysensors это очень просто).… Работает. Без ошибок. Без перезагрузок. Это победа :)





А есть же еще у этого производителя другие устройства на nRF51822 — датчик дыма, датчик движения, датчик газа, тепловые конвертеры, вентиляторы, увлажнители, очиститили, чайники… ;)

То место где всегда помогут установить библиотеки Mysensors, поддержку плат nRF51-52, разблокировать модули, объяснят как за полчаса собрать на ардуиках сеть сенсоров без головной боли —@mysensors_rus
Добавить в избранное +12 +28
+
avatar
0
код NRF_POWER->DCDCEN = 1 снижает потребление до 8 мА в режиме nrf24, если конечно китайцы не пожмотились на мелкий дроссель.
Можете сделать фотку модуля 51822?
+
avatar
  • berk
  • 07 мая 2019, 15:49
0
не тот случай, это кортекс 0, а не 4, пониженный это 52 серия
+
avatar
+1
У 51822 нет dc-dc, только ldo? Ну может и так, я только на 52832 все делаю, думал у них одинаковая периферия питания.

Upd: глянул доки, все там есть, dc-dc может не работать только если жадные китайцы не поставили дроссель на модуль nrf
+
avatar
  • berk
  • 19 мая 2019, 13:03
0
проверил, действительно пашет, но там >12мА && <13мА, тоесть оптимизация явно уступает модулям nRF52832
+
avatar
0
Но, возможно, теперь хватит штатного питания…
+
avatar
  • berk
  • 19 мая 2019, 17:04
0
Да, возможно, но все же для стабильности рекомендую установку пленочного баластника, я впринципе не понял это китайское решение с смд кондерами, зачем? Тем более что место в розетке точно есть.
+
avatar
  • berk
  • 07 мая 2019, 16:35
0
ок, тогда это отличная новость, может мне на тестах попадались именно модули без индуктивностей. Жрало 15мА. Честно я через них перескочил сразу на 52, а на 51 пожалуй что вот такой фигней побаловатся как в статье…
+
avatar
  • berk
  • 07 мая 2019, 15:48
0
То место где всегда помогут установить библиотеки Mysensors, поддержку плат nRF51-52, разблокировать модули, объяснят как за полчаса собрать на ардуиках сеть сенсоров без головной боли — t.me/mysensors_rus
+
avatar
  • m13ale
  • 07 мая 2019, 15:58
0
Кстати, а чайник Сяоми, который с блютуз, еще не хакнули? Жутко обламывает невозможность включения нагрева по таймеру или хотя бы просто удаленно…
+
avatar
  • berk
  • 07 мая 2019, 19:06
+1
В редмонд чайниках оно есть, но пластик… я вот когда то именно из за этого не купил чайник сяоми, теперь есть чайник редмонд где это возможно, из всей семьи попробовал этот функционал только я,… один раз. Вообщем жаль теперь что когда то не купил сяоми чайник.
+
avatar
  • m13ale
  • 08 мая 2019, 10:10
0
Ну вот утром автоматом, вместе с будильником, включается свет, телевизор с новостями и тут был еще в тему уже горячий чайник, но такой фичи у сяоми нет. Можно, конечно с вечера в режиме подогрева оставить, но это как-то не экономно…
+
avatar
  • m13ale
  • 10 мая 2019, 09:21
0
Увы, это ничем не поможет…
There is NO way to heat up water if Keep Warm mode is off.
+
avatar
0
Где купить сиё чудо?
+
avatar
  • berk
  • 07 мая 2019, 16:22
0
в инет магазах, гуглите по названию модели +купить, но там далеко не вся техника IOT на нужных чипах
+
avatar
0
На Озоне 980 + доставка. Дешевле не нашёл. А так средняя цена по больнице 1500. Может, есть какой то конкретный магазин? Можно в личку.
+
avatar
  • berk
  • 07 мая 2019, 17:05
0
я на некой мульварке брал, но там под тыщу тоже. На сайте производителя вроде 1400р, следовательно это рекомендованная цена, остальное это дело ритейла когда и на что делать скидки. Надо ловить момент…
+
avatar
  • berk
  • 07 мая 2019, 16:42
0
+
avatar
+7
За текст спасибо, но ничего непонятно )))
+
avatar
  • berk
  • 07 мая 2019, 17:29
+1
И Вам спасибо за добрый коммент, а если хотите понять, вэлкам
+
avatar
0
зачем было читать тогда?
+
avatar
  • spc
  • 07 мая 2019, 23:46
+1
Затем, что, быть может, автор хотел не только похвастаться, как он крут, а вообще рассказать, как эту гадость с Bluetooth можно вообще использовать для автоматики. А автор не смог.
+
avatar
  • berk
  • 08 мая 2019, 00:02
-3
Продолжу Вашу мысль, на правах автора ;)… а не смог потому что видимо и не собирался))… Да, это вам не гибридное вафля реле Саноффф, но веть главное что бы перешли ;)
+
avatar
0
ну стандартного протокола тут нет, просто он использовал библиотеку ардуиновскую + мажордомо, который должен поддерживать протокол этой библиотеки
обычно используется mqtt поверх тцпип или зигби и усб адаптер для кучи всяких готовых датчиков или самопальных на базе зигби

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

а бт мало подходит для автоматики, чисто костыль
только если тупо с телефона щелкать
+
avatar
0
" датчик дыма, датчик движения, датчик газа, тепловые конвертеры, вентиляторы, увлажнители, очиститили, чайники… ;)"
а где температурный датчик?((
Хочу такую розетку европейскую БЕЗ переходников, что бы дистанционно включать отопление (калорифер 1000Вт) с контролем температуры.
Sonoff замечательно, но не хочу возиться с проводкой.((
Кто-что посоветует?
Розеток то все наделали, но или беда с датчиком, либо с штекером!
+
avatar
  • berk
  • 07 мая 2019, 18:01
0
температурный датчик? ну не я эту розетку делал… но там бп греется и место мало, так что в любом случае врал бы, если он по вашей идее должен воздух мерять, а если нагрев самого девайча то достаточно 7 строк кода и у вас камень будет это мерять. Ну а воздух в комнате правильно мерять чем то типа такого или такого повесив в полутора метрах от пола на стену, а дальше через УД сценариями включайте и выключайте что надо,… я про эту умную розетку ;)
+
avatar
0
Можно было сделать выносной датчик. Хочется что-то одно выбрать и не городить огород.
Или ваш т.датчик увидится через приложение Редмонда?
+
avatar
  • berk
  • 07 мая 2019, 19:23
0
Она больше не с редмоннд, она теперь вообще не в курсе что это такое. Теперь она Mysensors. Ну а добавлять выносные датчики( это типа как на такое же китайщине саноф?), то как бы не вопрос, могу сказать что если возьметесь то у вас все получится, пинов там достаточно свободных и вывести линию айтуси или шину ваир на штекер кастомный не вопрос. Но в моем понимании датчик должен висеть на стене… Вот смотрите мне ничего не мешает щас подключить к этой розетке электроконвертер, зайти в Мажордомо, привязать датчик температуры в комнате к этой розетке запустить простой сценарий — если T< 20 = ON иначе если T> 22 = OFF и не «парится»

PS… не понял сначала про какой датчик,… да мой датчик естественно не видит приложение редмонд, и розетка теперь его не видит. Датчики я делаю сам такие или такие или даже такие и работает это все на MySensors
+
avatar
0
А вот вопрос на засыпку, режим ретранслятора на 52832 включаете? Работает? А usb гейт на нем же не пробовали делать? У меня что-то не получилось, работает нестабильно, зависает. Подозреваю что дело в эмуляции eeprom, но ни от кого жалоб не видел, как будто я один mysensors на NRF использую. При чем ноды без ретрансляции работают идеально.
Так и приходится гейты на esp и arduino делать, а ноды на NRF
+
avatar
  • berk
  • 08 мая 2019, 10:34
0
Репитеры на нрф5 честно не тестировал, сеиал гейт собирал, тестировал, все норм. В чате народ собирал массово гейты +5100 +5500, вроде никто не отписывал о проблемах. Но теперь поставлю на тест репитеры, гляну
+
avatar
0
Ну раз так, возможно дело в моих модулях. Надо другую модель будет попробовать…
+
avatar
  • iProxx
  • 07 мая 2019, 23:15
0
Wi-Fi версия:
aliexpress.com/item/32950360272.html

Wi-Fi + RF:
aliexpress.com/item/32952150158.html

или совсем дешёвый вариант:
aliexpress.com/item/32993647682.html
+
avatar
+1
статьи на смарт цоколь
как это? О_о
+
avatar
  • berk
  • 07 мая 2019, 21:11
-2
Что смущает?
+
avatar
0
на каком это языке написано?
+
avatar
  • berk
  • 08 мая 2019, 12:27
0
Ок,… мне правда не нравится такая манера общения, в полемическом смысле… но вы гость. Примерно стало понятно что это претензия :) суть претензии в чём?… в контексте данной статьи.
+
avatar
+1
в чем суть претензии?
если вы пишете обзоры в интернете для большой аудитории людей, не кажется ли вам, что эти обзоры должны быть написаны грамотно?
если нет, забейте.
+
avatar
0
Да, статья «для продолжающих»
Кто хочет начать «с нуля», найдите мою статью на Гиктаймс, там все разжевано, и тема ВТ раскрыта
+
avatar
  • berk
  • 08 мая 2019, 12:16
0
Какой то опыт нужет да, это не ардуино модули.… Но при чем сдесь BT?
+
avatar
0
а) про ВТ спрашивали выше
б) многим он ближе/понятнее, чем MySensors

Если что, я довольно часто пишу в тему nrf5 action! на форуме mysensors, а дома у меня все датчики на них (еще со времен nRF24)
+
avatar
  • berk
  • 08 мая 2019, 12:31
0
Ясно, «nrf5 action!» хорошая тема. Ближе в плане восприятия на слух, новичкам, тут да. Но реализаций достойных и таких же удобных аля MySensors не встречал.
+
avatar
0
есть MESH SDK родной, с MQTT и роутингом в LAN
+
avatar
  • berk
  • 08 мая 2019, 12:58
0
Ваши статьи об этом на гиктаймс? Ссылка была бы тут уместна
+
avatar
0
Зачем мне эти извращения? У меня mysensors есть

Статья: habr.com/ru/post/407683/
+
avatar
0
Вопрос автору: к каким контактам подпаивали конденсатор?
+
avatar
  • berk
  • 08 мая 2019, 12:15
0
Там два баластных смд кондера, C3, С5, к любому на выбор. Мне показалось удобным к C5. Предпологаю что потянет если вообще выпаять этот С5. Может быть даже и лучше будет. Но у меня задача была показать простое решение.
+
avatar
0
Спасибо. А номинал какой?
+
avatar
  • berk
  • 08 мая 2019, 12:36
0
Я взял такой же номинал 0.47мф, 400V. Но ток хз там какой у смдэшных предпологаю 400V. Места там мало, не ошибитесь с размером
+
avatar
  • BTN
  • 08 мая 2019, 12:38
0
А может кто нибудь подсказать как избавиться от гула в данной розетке? Даже днём если особо не шумно, то я его слышу, а уж ночью… В итоге две переехали под навес уличный для подогрева авто, а одна используется периодически, когда нужно что либо «вкл-выкл» когда нас нет.
+
avatar
  • berk
  • 08 мая 2019, 12:46
0
Думаю тут только покупка другой розетки с иным типом БП.