пятница, 15 июня 2018 г.

Интеграция домофона в "Умный дом" - начальный уровень

Интеграция домофона в "Умный дом" - начальный уровень

У меня оказался набор домофона "Falcon Eye FE-KIT Квартира", который состоит из монитора, обозначенного как FE-70, и вызывной панели, обозначенной как FE-305.

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

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

Также будет использоваться электромагнитный замок Falcon Eye FE-L500. Не очень важно, какой именно замок, но в этом также есть датчик открытия/закрытия двери, что можно дополнительно использовать.

Вообще планируется просто пока установить домофон вместе с замком и использовать его в таком простом режиме, а затем планируется использование чего-то типа простой СКУД с карточками и набором кода.

Подключение замка к домофону в простом режиме

Вот такое подключение четырехпроводных домофонов, оно стандартно и широко известно.

Проблема следующая. Электромагнитный замок открывается размыканием питания. Домофон же при открытии осуществляет замыкание сухих контактов, т.е. так, как это нужно электромеханическим замкам. Возможно, есть электромагнитные замки с возможностью открытия как замыканием, так и размыканием, но я таких не нашел (ну и не особо искал, поскольку более критичными были цена, наличие, усилие и т.д.). При использовании контроллера СКУД такой проблемы не будет. Но сейчас пришлось использовать обычное реле на 12 В. А также, конечно, можно будет использовать обычную кнопку звонка (работающую на замыкание), а не специализированную кнопку "Выход", имеющую контакты как на замыкание так и на размыкание.

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

Далее будем эту схему улучшать.

Интеграция замка и домофона в "Умный дом"

У нас имеется аналоговый видеорегистратор Hikvision DS-7204HUHI-F1/N. Он также будет установлен в этом помещении, поэтому был заранее куплен.

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

Также будет использоваться Мегадевайс. Его можно подрубить к разным системам "Умного дома" - Вера, OpenHab, IOBroker и т.д. У меня управляющий блок MegaD-2561 и исполнительный блок с несколькими реле и несколькими входными линиями MegaD-7I7O-R (на сайте сейчас уже немного другой блок). 

  • 1. Просто открытие замка замыканием / размыканием контактов через релейный выход Меги

  • 2. Получение сигнала вызова
  • Я провел некоторые замеры. Если кратко, то на вызывную панель в режиме ожидания подается 5 В, во время вызова — подается 12 В. В режиме ожидания между аудио и питанием — 0 В, во время вызова — примерно 7-8 В. Т.е. удобно следить за напряжением между аудио и питанием (белый и красный провода).

    Чтобы узнать об измении напряжения будем использовать классную штуку от создателя Меги — "датчик напряжения".

    С его помощью Мега видит это напряжение. Соответсвенно, сигнал мы получили. Он работает постоянно во время вызова, что удобно. Важно: На Меге обязательно надо включить защиту от дребезга контактов!

    Уточнение: Имеется ввиду то, что мы выбрали слежение за напряжением между аудио и питанием, а не напряжение, подаваемое на панель, потому что с помощью указанного сенсора можно отследить переход с 0 В до 7 В, а с 5 В до 12 В - уже не так просто.

    Увы, это не работает на Лоране. Светодиод индикации входной линии горит, но тускло. Видимо, этого недостаточно, чтобы вход "сработал". На Меге тоже светодиод горит не так ярко, как при обычном замыкании. Но ей хватает чтобы интерпритировать это как срабатывание.


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


  • 4. Отключение панели
  • У всех подобных проводных домофонов существует недостаток. Контакты замка там вынесены в вызывную панель, выходящую на улицу. Желающему проникнуть за дверь достаточно снять эту панель и замкнуть соответствующие контакты, и все, добро пожаловать.

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

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


  • 5. Просмотр камеры домофона
  • Этот домофон имеет отдельный видео-выход на внешний экран. Это удобно, но не принципиально, поскольку можно подключиться прямо в линию (желтый и черный провода) - должно быть тоже самое. Регистратор имеет возможность отдавать видео с аналоговых камер в цифровом формате. У этого регистратора пути следующие (101 означает первый канал регистратора и т.д.):

    Видео: rtsp://ЛОГИН:ПАРОЛЬ@АЙПИ:554/Streaming/Channels/101

    Скриншот: http://ЛОГИН:ПАРОЛЬ@АЙПИ/ISAPI/Streaming/channels/101/picture?snapShotImageType=JPEG

    Добавляем в контроллер "Умного дома" где возможно видео, где невозможно - скриншот.


  • 6. Запись картинки на регистратор при вызове в домофон
  • Регистратор имеет тревожные входы. Настроим Мегадевайс так, чтобы при вызове, о чем речь шла ранее, срабатывал релейный выход. Этот релейный выход заведем на тревожные входы регистратора. Регистратор настроим на запись по срабатыванию тревожного входа.

    Кстати, регистратор позволяет записывать также и звук. Его можно снять с линии (белый и черный провода).

    Вот что получилось в результате:

    Оригинал схемы


  • X. Что еще можно сделать
  • Например:

    К сожалению, камера домофона работает не всегда, а только когда вызывная панель активна. Поэтому просто так в камеру не посмотреть через наш "Умный дом". Можно подумать как эмулировать вызов или активацию вызывной панели с монитора. Можно автоматически это делать, например когда раскрыл камеру в приложении (я так делаю в OpenHab), или как-то по тревоге от других устройств, или периодически и т.д.

    Уточнение: Я не описываю как это реализуется в контроллере "Умного дома", потому что контроллеры могут быть разные, сцены там нужно писать по-своему и т.д. Грубо говоря, в контроллере будет два датчика (например, датчик двери и датчик движения) и четыре выключателя (открытие двери, сигнал на регистратор по которому будет вестись запись, отключение контактов замка внешней вызывной панели и отключение аудио-сигнала от регистратора). Взаимодействие реализуйте сами как удобно.

    четверг, 23 февраля 2017 г.

    Плагин для отправки СМС для Веры - начальный уровень

    Плагин для отправки СМС для Веры - начальный уровень

    Я недавно сделал плагин для отправки СМС через сервис sms.ru.

    Он получился очень простой, и я планирую его немного развить. Но на данном этапе (версия 0.2) он мне кажется идеальным примером для пояснения как вообще устроены плагины для Веры с точки зрения обычного человека (не программиста). Коим я и являюсь - обычным человеком, а не программистом. Поэтому описываю все крайне просто и на пальцах, так что прошу прощения за такой стиль изложения.

    Итак, плагин состоит из следующих текстовых файлов:

    • D_SMSru1.xml
    • D_SMSru1.json
    • I_SMSru1.xml
    • S_SMSru1.xml
    • L_SMSru1.lua

    Файл D_SMSru1.xml - файл устройства, он как бы главный, но в нем ничего интересного нет. Просто смотрите комментарии в файле и меняйте его под свои нужды. Просто делайте все как там.

    Файл I_SMSru1.xml - это основной файл, где описаны все функции, действия, выполняемый код и т.д. Часть кода можно из него перенести в файл L_SMSru1.lua.

    Файл S_SMSru1.xml - это тоже формальность. Там перечисленны "действия", выполняемые плагином. Т.е. просто не забыть их туда вписать, опять же, согласно этому образцу. А все основное, само выполнение "действий", и т.д. - это все описывается в файле I_SMSru1.xml.

    Файл L_SMSru1.lua - это просто кусок кода на lua, который вынесен из файла I_SMSru1.xml. Я его никогда раньше не использовал, но почему-то в OpenLUUP плагины делают с его использованием. Возможно, это для того, чтобы этот код был доступен для других плагинов. Я в него вынес функцию, которая запускается в начале. В общем, смотрите комментарии в коде что там происходит.

    D_SMSru1.json - это файл для описания интерфейса устройства. Т.е., вот это:

    Я опять решил просто расставить комментарии в этих файлах, так что открывайте их и смотрите.

    Вот переменные, которые нужны устройству (Advanced -> Variables)

    Ссылка на файлы: https://drive.google.com/file/d/0B6bs8cRm74RlUHdEemh0TXNYSDA/view


    Создание устройства

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

    Сначала файлы нужно загрузить в контроллер

    App -> Develop apps -> Luup files

    После этого уже можно создать устройство здесь:

    App -> Develop apps -> Create device

    Больше ничего заполнять не надо.

    После этого перезагружаем LUUP и обновляем браузер - устройство появится.

    вторник, 31 января 2017 г.

    Управление реле Лоран через систему автоматизации умного дома OpenHab

    Управление компонентами модуля Лоран через систему домашней автоматизации OpenHab

    Решил я начать с описания того, как управлять модулем Лоран в OpenHab. Будем считать что это в честь релиза OpenHab 2.

    Я надеюсь, что это кому-то будет полезно, даже если и не для подключения Лорана, то просто как пример как это устроено, для того чтобы сделать что-то свое. Если будет интересно, буду еще писать про OpenHab, что я сам делал и с чем столкнулся

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

    Я называл свой тестовый модуль Laurent 4, IP-адрес у него 192.168.0.104, http-команды соответствующие.

    Должны быть установлены аддоны:

    • HTTP Binding
    • RegEx Transformation

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

    Сначала создаем устройства. За них отвечают файлы в папке ПАПКА_OPENHAB\conf\items с расширением items.

    Создадим файл Laurent4.items. Например, выключатель для реле 1 будет там выглядеть так:

    Switch Laurent4Relay1 "Реле 1" <light> (gLaurent4, gSwitches) {http=">[ON:GET:http://192.168.0.104/cmd.cgi?cmd=REL,1,1] >[OFF:GET:http://192.168.0.104/cmd.cgi?cmd=REL,1,0]" }

    Прочитать это можно следующим образом:

    Выключатель с внутренним именем Laurent4Relay1 (имя может быть любое, но уникальное), с именем в интерфейсе Реле 1 (если потом не будет указано другое), с динамической картинкой, в начале названия которой слово light (не обязательно), входящий в группы gLaurent4 и gSwitches (не обязательно), использующий http, посылающий команду http://192.168.0.104/cmd.cgi?cmd=REL,1,1 при переводе в состояние ON и посылающий команду http://192.168.0.104/cmd.cgi?cmd=REL,1,0 при переводе в состояние OFF.

    Соответственно, выходная линия будет выглядеть так:

    Switch Laurent4Outline1 "Выходная линия 1" <light> (gLaurent4, gSwitches) {http=">[ON:GET:http://192.168.0.104/cmd.cgi?cmd=OUT,1,1] >[OFF:GET:http://192.168.0.104/cmd.cgi?cmd=OUT,1,0]" }

    Датчик температуры также сделать очень легко и выглядеть он будет так:

    Number Laurent4Temp "Температура [%.1f °C]" <temperature> (gLaurent4, gSensors) {http="<[http://192.168.0.104/state.xml:10000:REGEX(.*?<temp>(.*?)</temp>.*)]" }

    Прочитать это можно следующим образом:

    Числовое значение с внутренним именем Laurent4Temp (имя может быть любое, но уникальное), с именем в интерфейсе Температура (если потом не будет указано другое), с точностью один знак после запятой, после значения будет добавлено слово °C, с картинкой с названием temperature, входящее в группы gLaurent4 и gSensors (не обязательно), использующее http, что-то принимающее, находящееся по адресу http://192.168.0.104/state.xml, обновляющееся каждые 10000 милисекунд, извлекающее информацию из файла с помощью регулярного выражения, (не даваясь в подробности) нужное значение находится между словами <temp> и </temp>.

    За отображение всех компоненентов отвечают файлы в папке ПАПКА_OPENHAB\conf\sitemaps с расширением sitemap.

    Создадим файл Laurent4.sitemap.

    И пишем там:

    Switch item=Laurent4Relay1

    Switch item=Laurent4Outline1

    Text item=Laurent4Temp valuecolor=[ =="NULL" = "lightgray ", > 30 = "red", >= 27 ="yellow" , >= 23 = "green", < 23 = "aqua" ]

    Тут я думаю все понятно, но только еще есть бонус в виде valuecolor, означающее следующее: если значения нет, цвет будет серым, если значение больше 30 - цвет будет красный, больше либо равно 27 - желтый, больше либо равно 23 - зеленый, меньше 23 - голубой.

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

    Добавляем в файл Laurent4.items следующие виртуальные устройства, которые нужны нам будут только для получения значений из Лорана:

    String Laurent4RelayString "Laurent 4 Relay String: [%s]"{http="<[http://192.168.0.104/state.xml:6900:REGEX(.*?<rele>(.*?)</rele>.*)]" }

    String Laurent4OutlineString "Laurent 4 Outline String: [%s]" {http="<[http://192.168.0.104/state.xml:7000:REGEX(.*?<out>(.*?)</out>.*)]" }

    String Laurent4InlineString "Laurent 4 Inline String: [%s]" {http="<[http://192.168.0.104/state.xml:1000:REGEX(.*?<in>(.*?)</in>.*)]" }

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

    Теперь эти строки предстоит обработать, извлечь оттуда индивидуальные значения для элементов и назначить этим элементам. Делать это придется через правила.

    Правила - это файлы в папке ПАПКА_OPENHAB\conf\rules с расширением rules.

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

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

    Кроме того, желательно поместить в нужную папку также и следующие иконки:

    • light.svg
    • light-off.svg
    • light-on.svg
    • temperature.svg
    • window.svg
    • window-closed.svg
    • window-open.svg

    (Формат svg используется по умолчанию, можно в настройках указать png)

    Папка для иконок такая: ПАПКА_OPENHAB\conf\icons\classic

    Взять их можно здесь, например: https://github.com/eclipse/smarthome/tree/master/extensions/ui/iconset/org.eclipse.smarthome.ui.iconset.classic

    Чтобы подключиться к интерфейсу, в браузере вводим его адрес. У меня, например, http://localhost:8080/basicui/app?sitemap=Laurent4


    Да, да, выглядит немного страшновато, но мы сейчас не о том. Интерфейс можно сделать любой, использовать любые иконки (из Fibaro, например), подключить ImperiHome, сделать HabPanel и т.д.

    Главное - все работает!

    Ссылка на файлы: https://drive.google.com/file/d/0B6bs8cRm74Rlc053ZlBkbEM4UHM/