Гаражные ворота на Sonoff SV + Apple HomeKit

21 августа 2020, 19:13

На тему управления гаражными воротами написано достаточно много, но эта реализация, пожалуй, будет одна из самых интересных. За $15 и несколько часов времени получено нативное, без прокладок, управление из Apple HomeKit с гибкой логикой контроля полотна. Бонусом шло удовольствие. Элементная база также очень простая:

  1. Sonoff SV ~$5
  2. Me9101 ~$3, концевой переключатель (2 шт)
  3. провода ~$2
  4. Аккумулятор 18650 ($2), моток, провода соединения, монтаж на рейку привода (индивидуально)

Остальное нашлось в бездонных запасах, паяльник пришлось взять в руки целых четыре раза.

Теперь самое интересное: прошивка Sonoff SV. Идеально, на мой взгляд, прошить RavenCore aka RavenSystem aka HAA. Нам понадобится готовый fullhaaboot.bin, скачиваем по ссылке выше. Как и чем прошивать Sonoff - я описывать не стану, есть масса хороших и полезных инструкций, приведу лишь использованный мной код:

./esptool.py -b 115200 --p /dev/<вашпорт> read_flash 0x00000 0x100000 flash_1M.bin
./esptool.py -p /dev/tty.usbserial-A50285BI erase_flash
./esptool.py -p /dev/<вашпорт> --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 fullhaaboot.bin

После прошивки, подключаем Sonoff SV к источнику питания 5V и цепляемся к WiFi точке с названием HAA-XXXXXX (где XX - хвост мас-адреса вашей железки).

k01-1.jpg

Теперь необходимо выполнить два важных действия: 

  1. Замерить время открытия гаражной двери несколько раз. С секундомером открываем/закрываем дверь, замеряем время, округляем в большую сторону. Нужна цифра, покрывающая движение в одну сторону! У меня это вышло = 14 с.
  2. Здесь среди примеров берем готовый JSON и правим его под себя (описание ниже). Полученную строку вставляем в поле JSON Config, выбираем точку wifi, вводим пароль и жмем Save. Обновление занимает существенное время, минут до 10, наберитесь терпения. После добавляем в HomeKit (код как и на все HAA 021-82-017). Видим пиктограмму датчика открытия гаражных дверей.

{"c":{"l":13,"b":[{"g":0,"t":5}]},"a":[{"0":{"r":[{"g":12,"v":1,"i":0.5}]},"1":{"a":0},"2":{"r":[{"g":12,"i":1.5},
{"g":12,"v":1,"i":0.5},{"g":12,"v":1,"i":2}]},"3":{"a":2},"t":40,"d":31,"f3":[{"g":14,"t":0}],"f4":
[{"g":14}],"f2":[{"g":4,"t":0}],"f5":[{"g":4}]}]}

Для любопытных: что означает каждый параметр, можно прочитать на гите в описаниях, а еще воспользоваться конфигуратором построения логики. Для ленивых достаточно заменить параметр "d":31 на полученное время (у меня "d":14). 

NB: Это важный параметр! Если ошибетесь, будете потом лазить в паутине с отверткой и, как я, откручивать плату для коррекции прошивки.

Теперь немного описания той конструкции, что мы будем собирать. Слева на плате бывает в комплекте перемычка, от нее нужно избавиться. При срабатывании (импульс длительностью 0,5 секунды), в этом случае, будет замыкаться пара контактов, обозначенная ниже "сухой контакт". У меня контроллер ворот от фирмы Nice, логика Step (нажатие - открытие - нажатие - стоп - нажатие - закрытие), но в принципе, все контроллеры имеют аналогичную логику и все, что потребуется - это соединение парой проводов сухого контакта Sonoff на соответствующие клеммы гаражного контроллера. 

1600x_image.png?1597954155

Далее потребуется еще 2 мотка провода к датчикам открытия/закрытия. На Sonoff за открытие отвечает gpio14, закрытие - gpio4, рисунок ниже. Провода цепляем к Gpio и GND.

1600x_image.png?1597950461

В результате все выглядит примерно вот так, корпус появится через недельку-другую эксплуатации, не люблю неучтенных косяков, хотя, в данном случае, все повело себя идеально буквально с первой попытки. Кстати, справа от Sonoff расположен бюджетный бесперебойник, что позволит видеть состояние датчика в случае отключения электричества, но можно обойтись и без него. Ну и самое веселое - навеска датчиков открытия. Я не стал возиться с магнитными самоделками (хотя герконы магнитик обойдутся существенно дешевле потраченных $6) и приколхозил к рейке пару ME9101. Они хороши тем, что имеют пару NO/NC и ход гибкого штока во все стороны, отклонение более, чем на половину от видимого на фото, приводит к замыканию пары NO. В общем их удобно цеплять в любой конфигурации, они не требовательны к углам и имеют большой допуск. Затем наступает фаза калибровки: датчик НЕ должен цеплять за полотно (у меня это было, так как сперва зацепил его за серединку и ниже) и должен срабатывать практически в момент касания полотна пола.

1600x_image.png?1597950461

Собственно, вот и все хитрости. Соединяем кто как любит и умеет все провода, подключаем питание и наслаждаемся. Конфигурация логики (задается JSON'ом) такова, что дверь "норовит закрыться" при встрече препятствия и четко отдает крайние положения, таким образом, если вдруг захотите открыть гараж, находясь в Турции, вам не придется ломать голову о положении дверей и давить на пиктограмму 50 раз в ожидании заветного "трынь!! закрыто!" :)

Есть еще один финт, не относящийся к конструкции. С помощью Shortcuts ("Команды" по-нашему, появились с iOS 12.x) можно создать простейший скрипт, который спросит 2-3-х значный код при нажатии на экранный шорткат. Останавливаться на этом не буду, там все просто и нет никакого кода, все собирается из элементарных кирпичиков. Метод будет полезный тем, кто не любит случайных нажатий или регулярно дает телефон поиграть детям.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Денис Мерцалов (denisM)
    Денис Мерцалов (denisM) отредактировано 8 месяцев назад

    1000x_image.jpg?1598205939

    Если использовать таким образом реле как сухой контакт то при подключении DC 5-24V производитель пишет что нужно удалить резисторы по сторонам от перемычки.
    Ну и придется использовать свой блок питания конечно, потому что не на всех приводах ворот есть DC24V например.

    Сам использую SV, только прошил Tasmota, c ней удобно всю логику прописать в Nodered

    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) 8 месяцев назад

      Конечно свой блок питания и UPS на 18650, как иначе. Tasmota хорошая, но я не люблю работу через прокладки.

  2. Дмитрий Дзюба (dmagraf)
    Дмитрий Дзюба (dmagraf) 8 месяцев назад

    настраивал можно сказать идентично только подсоединял вот так

    1000x_image.png?1598991893
    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) 8 месяцев назад

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

      • Роман Волков (rmnvlkv)
        Роман Волков (rmnvlkv) 6 месяцев назад

        а разве эта схема по датчику открытия закрытия не наоборот сделана? 14 - закрыто 4 открыто ... и что такое 3V3 на вашей схеме 

        • Жданов Павел (cybercat)
          Жданов Павел (cybercat) 6 месяцев назад

          14 или 4 не принципиально, это элементарно JSON-конфигом перекинуть. Пин 3V3 не используется, чисто информационно на рисунке.

  3. Дмитрий Дзюба (dmagraf)
    Дмитрий Дзюба (dmagraf) 8 месяцев назад

    В любом случае читатель получил несколько вариантов реализации

  4. (t3sc0)
    (t3sc0) 8 месяцев назад

    господа, может кто-то знает способ автоматизировать уличные распашные ворота таким образом, чтобы они открывались больше, чем на 90°? хотя бы 110-120

    не могу найти привод подходящий, который стоил бы не как крыло от боинга

    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) 8 месяцев назад

      Так ходом штока регулируется же, разве не так? Стоимость разная, если "калитка" то за 200 евро (на алике дешевле) можно комплект найти, а большие тяжелые ворота... Ну это KRON'ы от 700.

  5. Роман Волков (rmnvlkv)
    Роман Волков (rmnvlkv) 6 месяцев назад

    У меня логика ворот такая же (ОТРКРЫТЬ-СТОП-ЗАКРЫТЬ-СТОП), я пока не подцепил герконы, но в HomeKit два положения кнопки (открыть-закрыть) пока идет открытие остановить нельзя, как реализовать СТОП?

    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) 6 месяцев назад

      Просто давим на кнопку еще раз, sonoff посылает короткий импульс и - стоп... Не могу понять в чем подвох :)

      • Роман Волков (rmnvlkv)
        Роман Волков (rmnvlkv) 6 месяцев назад

        видимо делов датчиках (еще не подключил), видимо не видит что процес пошел, и не дает такой опции ... 

      • Роман Волков (rmnvlkv)
        Роман Волков (rmnvlkv) 6 месяцев назад

        датчики подцепил состояния с них приходят ... но у меня хоть хомките, хоть в EVE только два состояния кнопки ОТКРЫТО - ЗАКРЫТО и она как тумблер ... и ворота пытаются находиться в одном из этих состояний 

        • Жданов Павел (cybercat)
          Жданов Павел (cybercat) 6 месяцев назад
          JSON свой скиньте, посмотрим, что там нет то :)

          • Роман Волков (rmnvlkv)
            Роман Волков (rmnvlkv) 3 месяца назад

            Json копипаст из данного мануала, меняю только время открытия/закрытия ворот и все. Помимо отсутствия оставновки еще очень сильно напрягает, то что при выключении/включении элекричества ворота открываются автоматически ))) 

  6. Роман Волков (rmnvlkv)
    Роман Волков (rmnvlkv) 3 месяца назад

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

    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) 3 месяца назад

      GPIO12 это реле. Залить новый просто: 8 раз кликаем по кнопке, а потом заходим по адресу http://haa-xxxxxx.local, где xxxxxx последние 4 цифры мас-адреса вашего соноффа. В последних прошивка после .local надо еще порт добавлять 4567. В соот окне увидите json, там и меняйте

  7. Роман Волков (rmnvlkv)
    Роман Волков (rmnvlkv) отредактировано 3 месяца назад

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

    по умолчанию вот этот кусок, как раз стопит ворота и сразу переключает на обратное направление. 

    "2":{"r":[{"g":12,"i":1.5},
    {"g":12,"v":1,"i":0.5},{"g":12,"v":1,"i":2}
    

    если кто подробно опишет как реализовать логику "открывать-стоп-закрывать-стоп" буду очень благодарен, но формат кнопки в хомекит должен измениться как минимум.  

    Второй ключевой момент, это то что после ребута, всегда идет команда на открытие ворот, какое бы значение для параметра S не было выбрано. Подали питание на Sonoff SV он открывать ворота ((( 

    Initial State

    Initial state is defined by the "s" key contained within the accessory object.

    KeyStateDescription
    "s"0Open 
    1Closed (default)
    5Last state before restart
    6Opposite to last state before restart

    The initial state that an accessory enters on boot can be set using the "s" option.

    Check each accessory for details on whether Initial State is supported.


    Пробовал все варианты, все равно открывает ворота ... не очень логично, заходи кто хочешь после возобновления подачии электричества. 
    Если кто подскажет как исправить не считая варианта с UPS буду очень благодарен. 

    Все это справедливо для контролера ворот CAME

    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) 2 месяца назад

      Вот мой конфиг:

      {

        "c":{

          "l":13,

          "b":[{"g":0,"t":5}],

          "ct":4,

          "0":{"r":[{"g":12}]},

          "n":"garazhd"

        },

        "a":[{

          "t":40,

          "d":16,

          "b":[{"g":0}],

          "s":5,

          "0":{"r":[{"g":12,"v":1,"i":0.5}]},

          "1":{"a":0},

          "2":{"r":[{"g":12,"i":1.5},{"g":12,"v":1,"i":0.5},{"g":12,"v":1,"i":2}]},

          "3":{"a":2},

          "f3":[{"g":14,"t":0}],

          "f4":[{"g":14}],

          "f2":[{"g":4,"t":0}],

          "f5":[{"g":4}]

        }]

      }

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

      "2":{"r":[{"g":12,"i":1.5},{"g":12,"v":1,"i":0.5},{"g":12,"v":1,"i":2}]}, ->

      "2":{"r":[{"g":12,"i":1.5},{"g":12,"v":1,"i":0.5}]},

      Но надо проверять/тестировать, я не вникал особо.

      • Роман Волков (rmnvlkv)
        Роман Волков (rmnvlkv) 2 месяца назад

        пробовал так сделать, но тогда нужно два раза кнопку нажимать ... У меня кнопка не имеете логики Push, у меня состояние кнопки 0 (открыто) и 1 (закрыто), то во время открытия нужно 1 раз нажать и она переключится в ноль, но ворота продолжат открывание, а второй раз при переводе снова в еденицу, ворота остановятся, чтобы запустить в обратную сторону опять надо два нажатия ... к кому бы обратится с вопросом кто хорошо знает эту прошивку и конфиги 

  8. (tymchyshyn90)
    (tymchyshyn90) отредактировано месяц назад

    Здравствуйте! Интересует зачем два переключателя что бы опредилить состояние открыты ли ворота? Я думаю установить один геркон на ворота внизу у самого пола. Этого не будет достаточно? Тоесть геркон замкнут - гараж закрыт, и наооборот. 

    И еще у меня есть идея автоматизировать открытие ворот. Как ее лучше реализировать, не подскажите? Первый вариант который я думал - когда я включаю зажигание в машине, телефон сразу же соединяется по блютусу. Это событие можно и использовать. И добавить еще обязательно проверку GPS, что бы это работало только дома. Тоесть получается, что как только я заведу машину - ворота сами начнут открываться. Вроде бы все как надо, но еще жена на машине иногда ездит. От тут и проблемма будет. Телефон ее уже не будет автоматом подключатся. А если она свой подключит вручную, то тогда у меня будет тоже самое.

    Второй вариант - датчик движения. Не совсем то, да и мы в гараже часто ходим.

    Третий вариант - поставить какой-то микрофон. И сделать какой-то умный анализатор звука. Что бы определять по звуку что машина завелась. Этот вариант мне кажется надежней, но не знаю как правильно его сделать.

    Может кто стыкался с такой задачей и предложит еще какие нибудь варианты?

    • Жданов Павел (cybercat)
      Жданов Павел (cybercat) месяц назад

      Все верно, концевиками я ловлю крайние состояния и тогда Apple HomeKit корректно отображает статус.

      Что касается идей, то есть 2 подхода: реализовывать на стороннем железе с любой фантастической логикой и передвать команду на открытие, хоть звук, хоть датчик дыма. Второй - открыть на телефоне программу автоматизаций (HomeKit Shortcuts в моем случае), посмотреть доступные варианты событий и исходить их них. Этот способ проще и реалистичней.

      Ну и проверка. Доступ в дом - критическая автоматизация с точки зрения безопасности. Всегда представляем: меня нет дома. что произойдет при ложном срабатывании? какие есть варианты кросс-проверки? как я защищу систему от злоумышленника (кто-то под воротами газанул на мотоцикле - датчик звука поймал выхлоп и открыл ворота)? как с телефона я буду исправлять ситуацию если произошло несанкционированное открытие?

      Вот когда решите для себя эти вопросы, могу помочь с чем-то практическом плане :)

      • (tymchyshyn90)
        (tymchyshyn90) месяц назад

        На счет безопасности вы правы. Сегодня еще пришла идея установить под капотом какой-то автономный датчик и что бы он через RF или Zigbee отслылал сигнал контроллеру что машина завелась. Ложного срабатывания так не должно бы быть

        • Жданов Павел (cybercat)
          Жданов Павел (cybercat) месяц назад

          У RF безопасность стремится к 0, лучше зигби. Подскажу хинт. Можно взять какой-то датчик (типа датчика открытия дверей xiaomi), вскрыть его и подпаяться к сигнальным контактам. Тогда датчик сможет сигнализировать о старте движка, к примеру.

          • (tymchyshyn90)
            (tymchyshyn90) месяц назад

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

            • Жданов Павел (cybercat)
              Жданов Павел (cybercat) месяц назад

              Подпаяться надо к датчику, машину курочить не надо, пару тонких пинов в релейный блок отлавливать старт, вот и все. Поедете на ТО - снимите ))

              • (tymchyshyn90)
                (tymchyshyn90) отредактировано месяц назад

                Хорошо, соединюсь я например к реле топливного насоса. Мне тогда нужно будет поставить параллельно еще одно реле для замыкания моих контактов (вместо геркона) на датчике. Потому что не факт, что датчик от 12В работает. Все верно?

                • Жданов Павел (cybercat)
                  Жданов Павел (cybercat) месяц назад

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

      • (tymchyshyn90)
        (tymchyshyn90) месяц назад

        Все же, я не до конца понял логики концевиков-переключателей. Ворота закрыты, переключатель в первом положении, система знает что в этом положении их статус "Закрыто". Как только они начнут открываться - переключатель изменит значение и система об этом узнает и поменяет статус на "Открыто" и такое состояние будет до того момента пока ворота не закроются и переключатель сново не изменит значение. Я так вижу логику, и не могу понять зачем второй переключатель. 

        • Жданов Павел (cybercat)
          Жданов Павел (cybercat) месяц назад

          Что если полотно ворот "залипло" приподнявшись на 10см? Как отловить с помощью одного датчика?

          • (tymchyshyn90)
            (tymchyshyn90) месяц назад

            Ну если я устновлю геркон в самом низу у пола, то он разомкнется когда ворота немного приоткроются и "залипнут"

  9. Дмитрий Дзюба (dmagraf)
    Дмитрий Дзюба (dmagraf) месяц назад
    Привет!
    появилась необходимость добавить в настройки еще одну плюшку в виде экстренной остановки ворот на GPIO05, мож кто реализовал да есть готовый конфиг?
  10. Дмитрий Дзюба (dmagraf)
    Дмитрий Дзюба (dmagraf) месяц назад

    с помощью инструментов HAA добавил возможность экстренной остановки но пока нет возможности фактически проверить

    {"c":{"0":{"r":[{"g":12 }]},"l":13,"b":[{"g":0,"t":5 }]},"a":[{"0":{"r":[{"g":12,"v":1,"i":0.5 }]},"1":{"a":0 },"2":{"r":[{"g":12,"i":1.5 },{"g":12,"v":1,"i":0.5 },{"g":12,"v":1,"i":2 }]},"3":{"a":2 },"10":{"r":[{"g":5,"t":1,"i":1 }]},"t":40,"d":18,"f3":[{"g":14,"t":0 }],"f4":[{"g":14,"t":1 }],"f8":[],"s":0,"b":[]}]}

К списку статей

Устройства в материале

Sonoff SV

Производитель: ITEAD
Заказать на:

Провода dupont "мама-мама" F-F

Производитель: noname
Заказать на:

ME-9101 мгновенный концевой переключатель

Производитель: noname
Заказать на:

DIY UPS 5V 18650

Производитель: noname
Заказать на:

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Тематические чаты

Похожие статьи

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit