4 заметки с тегом

умный дом

Как я проектировал систему охраны для коттеджного поселка

На рынке охранных систем очень много решений, но ниша современных беспроводных охранных сигнализаций показалась мне свободной. Отечественные производители предлагают устройства из 80-х годов: огромные короба с микросхемами, отсутствие современных интерфейсов и сложные настройки. Менеджеры по продажам в крупных интернет-магазинах не могут разобраться с функциональностью и подсказать нужное решение.

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

Задача

Со слов заказчика:

У нас тут есть 5 соседних домов (мой и ближайшие соседи) в каждом должна быть одна или две тревожных кнопки (на радиоканале), световая сигнализация на фасаде, и выход на ревун (можно один общий, на все дома). Для чего — в случае чрезвычайной ситуации жилец дома нажимает тревожную кнопку, соседи должны иметь возможность определить, в каком доме ЧС и прийти на помощь. Также нужно установить объемный датчик в одной комнате (в двух домах), с выходом по радиоканалу (на что выход — телефон, сирена какая то, пока не определились).

Я начал со структуры требований. Разбил требования на пункты и пронумеровал.

Список требований

Требования, которые вытекают из условий задачи:
Т1. В каждом доме 1-2 тревожные кнопки на радиоканале.
Т2. Световая индикация на фасаде.
Т3. Ревун общий или один на всех.
Т4. Соседи должны определить в каком доме ЧС.
Т5. Датчик объема в двух домах с выходом по радиоканалу.
Т6. Выход на телефон (GSM).

В ходе проектирования были добавлены еще 2 требования:
Т7. Децентрализация. Если связь с главным узлом потеряна, это не должно приводить к отключению всей системы.
Т8. Если отключение тревоги проходит под принуждением, то необходимо оповестить об этом соседей.

Какие решения есть на рынке?

Я погуглил и прочитал форумы. Задал вопросы специалистам. Позвонил в компании, которые занимаются системами охраны.

Вот системы которые я рассматривал:
— Стрелец
— Болид
— Альтоника
— Астра
— Jablotron
— Visonic
— AJAX
— Лунь

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

Примеры решений

Стрелец-ПРО
Недостатки: Если отключить главный пульт, то система работать не будет. В главном доме при моей конфигурации не будет работать режим “снятие под принуждением”. Стоимость более 170 тыс. руб. Это без GSM модуля. Кроме того, с наличием на складах сейчас есть проблемы, потому что система поставляется в новые больницы.

Наименование Цена
РР-И-ПРО, (БЕЗ АКБ ) Контроллер радиоканальных устройств Стрелец-ПРО 12 942
Пульт-РР-ПРО, Пульт управления сегментом 10 780
РР-ПРО, (БЕЗ АКБ) Контроллер радиоканальных устройств 6 230
БПИ RS-И, Блок преобразования интерфейсов 5 578
БП-12/0,5 Блок бесперебойного питания с АКБ 2,2 А/ч 4 533
Пульт-ПРО, Пульт управления 5 678
Брелок-ПРО, радиобрелок управления. 2 823
Икар-ПРО, охранный извещатель объемный оптико-электронный 2 648
Маяк-12К, Комбинированный оповещатель 486

Альтоника 201
Преимущества в том, что все дома могут быть автономны. Впечатляет дальность действия радиоканала — до 5 км! Есть и GSM модуль, но он не влезает в коробку (для него нужен отдельный корпус). Меня смутило то, что я не понимал как можно интегрироваться с этой системой. Что если мне нужно сделать 5 звонков на мобильные в случае тревоги? Как я это реализую? Стоимость решения более 180 тыс.

Наименование Количество Цена Сумма
РИФ-ОП4(RS-201TDm) 5 10 880 54 400
RS-201R20, Приемник групповой Риф Стринг 5 12 170 60 850
RS-201TK2, Тревожная радиокнопка 10 3 070 30 700
Риф-КТМ-N, Выносная клавиатура 5 2 420 12 100
РАПАН-20ПББП,368,Источник питания 5 700 3 500
АКБ-7-12, Аккумулятор12В, 7Ач 5 680 3 400
АК-433, Антенна круговой направленности 5 3 690 18 450
Маяк-12К, Комбинированный оповещатель 1 486 486
183 887

Астра
Общая стоимость более 60 тыс. руб. без GSM-модуля. Решение мне понравилось. Только не понял что будет если отключить главный пульт? И смогу ли я получить сигнал тревоги, например, на одноплатный компьютер чтобы реализовать свой сценарий? Позвонил в несколько компаний, но ответы на эти вопросы получить не смог.

Астра-812 Pro Прибор приемно-контрольный с встроенной клавиатурой и радиомодулем
Наименование Цена Количество Сумма
Астра-812 Pro 7 761 1 7 761
Астра-РИ-М РР 2 400 5 12 000
Астра-3221 1 312 5 6 560
Астра-РИ-М РПДК (ИО 10110-1) 1 062 5 5 310
Астра-8131 2 809 4 11 236
Астра-712/0 исп. 2А 2 427 5 12 135
Маяк-12-К 486 5 2 430
Астра-5121 1 767 2 3 534
60 966

AJAX
В процессе поиска наткнулся на интересный проект — AJAX. Мне понравился сайт компании. Описание устройств на доступном для потребителя языке. Написал в чат, задал вопросы и сразу получил ответы.
Сделал заказ. Со мной связался менеджер, к сожалению, технически не подкованный. На вопросы он ответить не смог, скидку делать отказался. Зато пытался делать мне Upsale, не разобравшись в моей проблеме. И это немного раздражало.

Из минусов:
— Нет открытого API, интеграции с MQTT или любым протоколом для умного дома. Нельзя, например получить сигнал тревоги и реализовать свой сценарий. Это есть в планах развития, но непонятно когда будет реализовано.
— Хабы (центральные узлы системы) нельзя связать между собой. В моём случае, если поставить во все дома по хабу, то нельзя будет передать сигнал тревоги на хаб соседа.
— Ретрансляторы связаны с хабом через слабый радиоканал (используется радиомодуль RFM69). Заявлена дальность до 2 км, но по факту можно надеяться лишь 100-200 метров.
— Ретрансляторы не связаны друг с другом. Только с хабом. Нельзя поставить два ретранслятора подряд, чтобы увеличить дальность покрытия.

Плюсы:
— Впечатляют заявленные характеристики надежности (ниже подробнее расписал). Особенно резервирование: 2 GSM модуля и Lan из коробки.
— Начинка устройств современная, и есть система автообновления прошивки.
— Встроенные ИБП. Не нужно монтировать отдельный короб для аккумулятора.
— Наличие мобильного приложения и даже приложение для MacOS. Хотя, я уже приготовился работать с COM-портами, глючными Windows-программами и всем чем угодно.
— Дизайн. Легко впишется в любой интерьер.

Надежность системы
— Система имеет 4 канала связи: радиоканал, интернет и 2 GSM модуля. В случае недоступности одного из каналов используется резервный. GSM используется для уведомления соседей (помимо сирены и мобильного приложения). Если недоступна основная сим-карта, звонок и SMS будут отправлены через резервную сим-карту.
— Хабы и ретрансляторы имеют резервное питание на 35 часов.
— Датчики и извещатели работают по радиоканалу и питаются от батарей. Срок службы батареи — 2 года. Уведомление о необходимости замены батарей будет направлено через мобильное приложение.
— В случае выхода из строя центрального хаба, ретранслятор берет на себя функцию управления датчиками и извещателями.
— Система распознает глушение радиоканала и использует хоппинг частот. Если одна частота занята, будет использована резервная.
— Система распознает повреждение корпуса, демонтаж хаба или ретранслятора (в корпус встроен акселерометр).

Наименование Количество Цена Сумма
Центральный контроллер (Хаб) 1 13 750 13 750
Ретранслятор 4 5 018 20 070
Датчик объема 2 4 470 8 940
Свето-звуковой индикатор уличный 5 5 590 27 950
Карманный брелок 5 1 350 6 750
Настенная сенсорная клавиатура 5 4 250 21 250
98 710

Схема расположения оборудования

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

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

Работа с очередью MQTT в Python

Заметка для начинающих. Хочу показать пример работы с MQTT на Python.
Я использую MQTT в реле, которое управляет световыми приборами в доме. Реле подписывается на топик и ждет команды. В зависимости от поступившей команды, реле подает напряжение на приборы.

Импортируем класс и создаем инстанс

Тут я сразу создаю флажок connected_flag. Он мне будет нужен для работы с коллбэками.

import paho.mqtt.client as mqtt

mqttc = mqtt.Client('relay_listener')
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_disconnect = on_disconnect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
# Uncomment to enable debug messages
#mqttc.on_log = on_log
# Признак успешного соединения
mqttc.connected_flag=False

Подключаемся к серверу

Теперь самое интересное. Я использую loop_start() для того, чтобы mqtt клиент начал делать попытки подключения. Как только подключение установится, сработает событие on_connect, в котором я поставлю флажок connected_flag.

Первая распространенная ошибка — делать только одну попытку подключения. Нет никакой гарантии что связь с сервером будет в момент первой попытки соединения. Мы же работаем с «домашним» сетевым оборудованием. В итоге скрипт периодически будет вылетать с ошибкой при запуске и заметим мы это не сразу.

Сразу после loop_stop() я снимаю флаг mqttc._thread_terminate. Думаю, это баг текущей версии компонента MQTT. Если этого не сделать, то перестанет работать loop_forever().

loop_forever() подвешивает основной поток навечно в режиме ожидания.

mqttc.loop_start()
mqttc.connect(mqtt_credentials_from_file_dict.get("localnet").get("host"), 1883, 60)

# Попытки соединения
while not mqttc.connected_flag: #wait in loop
	time.sleep(1)

mqttc.loop_stop()
mqttc._thread_terminate = False

mqttc.loop_forever()

Подписываемся на топик

Вторая распространенная ошибка. Посмотрим на on_connect.
При обрыве соединения с сервером важно каждый раз вызывать subscribe. Если сделать subscribe только в момент первого соединения, то клиент забудет название канала, на который подписан.

def on_connect(mqttc, obj, flags, rc):
	if rc == 0:
		mqttc.connected_flag=True
		res = mqttc.subscribe(listen_topic, 2)
		if res[0] != mqtt.MQTT_ERR_SUCCESS:
			logging.info(str(datetime.datetime.now()) + " The client is not subscribed")

	if rc == 1:
		logging.info(str(datetime.datetime.now()) +  " Connection failed: incorrect protocol version")
	if rc == 2:
		logging.info(str(datetime.datetime.now()) +  " Connection failed: invalid client identifier")
	if rc == 3:
		logging.info(str(datetime.datetime.now()) +  " Connection failed: server unavailable")
	if rc == 4:
		logging.info(str(datetime.datetime.now()) +  " Connection failed: bad app_id or access_key")
	if rc == 5:
		logging.info(str(datetime.datetime.now()) +  " Connection failed: not authorised")

Получаем и обрабатываем сообщение

Тут вроде бы ничего особеного. Но есть третья распространенная ошибка. Не забывайте, что Python может работать с несколькими потоками. И если мы будем обращаться к одному и тому-же ресурсу одновременно, то получим ошибку. Так что добавляем Lock() или аналог при необходимости.

def on_message(mqttc, obj, msg):
	print(str(datetime.datetime.now()) +  " Recieved data. Topic: "+msg.topic+". Msg:"+str(msg.payload))
 Нет комментариев    63   2020   MQTT   python   умный дом

Подбираю удобный интерфейс для управление умным домом

Для управления домом я использую систему OpenHab (OH). В OH настроена вся логика управления домашними устройствами. Например, если в комнате нажали выключатель №3, то OH должен включить потолочные светильники №7 и №8.

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

Так выглядит приложение OpenHab Basic UI:

Basic UI нам не подходит. Так что будем подбирать что-то другое.

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

Что рассматриваем:
— Habpanel (родной интерфейс системы OpenHab)
— CometVisu (система визуализации для KNX и OpenHab)
— Apple Homekit

Habpanel
Выглядит приятно. Посмотрите:

Я приступил к созданию интерфейса в Habpanel. Для этого в Habpanel есть специальный режим «Редактирования». Нужно нарисовать панельки и добавить на них витжеты. На выходе должен получиться html.

В процессе создания я столкнулся с проблемами:
— В режиме редактирования не видно самого витжета. Приходится постоянно переключаться между режимами чтобы понять что происходит;
— Интерфейс получается не адаптивным. Для смартфона и планшета нужно создать 2 разных интерфейса. А это еще 2 дня к разработке и вечные правки в двух-трёх местах;
— Я не нашел удобного витжета для управления LED подсветкой. Попробовал использовать стандартный и почувствовал боль. А у меня в каждой комнате есть LED.

Стандартный витжет для управления LED в Habpanel. Три спектра, цифры. Спектры зависят друг от друга. И если случайно нажать не туда, то цвета на верхнем спектре пропадают и вернуть нельзя. Почуствуй себя мастером по подбору красок!

CometVisu
Мне понравилась идея управлять домом на 3D карте. Чем-то напоминает фантастические фильмы. Если бы я снимал кино, то делал бы интерфейс тут.

Покопавшись в документах и исходниках CometVisu, я понял что быстро создать удобный интерфейс не получится. Как минимум нужно отрисовать 3D-карты этажей. И со смартфона управлять домом не получится. Такой интерфейс подойдет, если прикрепить несколько планшетов на каждом этаже. Оставлю эту идею на будущее.

Apple Homekit
Наверное, самое популярное приложение для управление умным домом. Раньше в Homekit можно было подключать только устройства, сертифицированные Apple. К счастью Apple открыла протокол и разработчики написали интерфейсы для взаимодействия с Homekit. Например, сервер Homebridge эмулирует iOS HomeKit API и позволяет легко подключать любые устройства. Энтузиасты уже разработали Homebridge Plugin for OpenHAB2. Так что я легко настроил связку Openhab2 > Homebridge Plugin > Homebridge > HomeKit. Выглядит сложновато. Но работает идеально, как часы. И быстро, потому что написано на NodeJS.

Я добавил управление освещением в гостинной и вот что получилось:

В компании Apple разработали действительно удобные элементы управления умным домом. Даже управление LED-подстветкой не вызвало вопросов. Все очень доступно и понятно. Управлять устройствами можно с ноутбука, планшета или Apple TV. Можно настраивать разные сценарии. Например: «Включить подсветку в прихожей, когда я подъезжаю на машине к дому», «Пропылесосить и проветрить дом, если меня нет дома в понедельник с 10 до 14», «Прогреть машину сразу после того как я включил чайник утром».

Но есть некоторые нюансы, которые важно знать:
— В доме постоянно должно быть включено одно из устройств Apple. Это может быть Apple TV, iPad или умная колонка. Если устройство потеряет сеть, управлять домом не получится. На этот случай у меня есть резервное неудобное приложение OpenHab Basic UI.
— Apple Homekit не работает по VPN. Это мне, как разработчику, не удобно. В доме полным ходом идет ремонт и я делаю все настройки удаленно. Нет смысла дышать пылью в процессе отладки. К счастью, эта проблема решилась установкой дополнительного сервера Homebridge в моей домашней сети.

Сегодня приступаю к настройке системы вентилиции в Homekit. Там много нюансов. Обязательно, напишу об этом позже.

 Нет комментариев    128   2020   homekit   openhab   умный дом

Мой первый «Умный дом» на OpenHab

Моим самым любимым занятием в детстве были конструкторы. Спасибо родителям, у меня их было много: «юный техник», «юный химик», всевозможные лего и мозайки. Потом я увлекся радиодеталями: собирал цветомузыку, радиоприемники и мелкую электронику по схемам из советских журналов.


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

Недавно ко мне обратился клиент с просьбой настроить «Умный дом». С предыдущим подрядчиком они не сработались и проект остался в готовности 70%. Я поехал смотреть объект — двухэтажный загородный дом в районе Рублевского шоссе. При осмотре меня напугало отсутствие проектной документации, сотни висящих проводов без маркировки и полное отсутсвие технического задания. На момент осмотра хозяйка дома даже не понимала как включить обычное освещение, не говоря уже о вентиляции, отоплении и LED-подсветках. Во мне говорил опыт управления проектами и золотое правило PM-а «No scope — no go!». Но я не сдержался и начал делать. Желание помочь клиенту и поиграть в электронику победило здравый смысл.

Как выяснилось, мозг умного дома — это одноплатный компьютер (аналог Raspberry Pi) с установленной системой OpenHab. OpenHab — система управление умным домом с открытым исходным кодом.

Интерфейс OpenHab:

В момент первого осмотра удалось каким-то чудом перезапустить сервер OpenHab. И частично в доме заработал свет. Но счастье продолжалось не долго, потому что у компьютера сломался SSD-диск и больше сервер не загружался. Решено было начать с замены этого компьютера. Я заказал Intel NUC с SSD от того же Intel и оперативной памятью от Crucial. Железо обошлось в 13 тыс. руб. Это конечно не промышленное решение, но точно надежней безымянного «китайца» и в несколько раз производительнее. За пару дней я поднял и настроил новый сервер с OpenHab и поехал пробовать на объекте. Новый сервер заработал сразу же без «танцев с бубном». Да будет свет! В доме заработало освещение. Ура!

Компьютер Intel NUC:

Кстати о освещении. Ко всем выключателям уже была подведена витая пара, которая подключена к самодельному контролеру на базе Omega2. Omega2 — это недорогой контролер (700 руб.) с Linux системой внутри. На контроллере крутится скрипт на Python. Этот скрипт принимает команды от выключателей и передает их на сервер OpenHab по протоколу MQTT. Сервер OpenHab принимает команды и отправляет их на реле, которое подает электричество на осветительные приборы. Реле, кстати, тоже оказалось самодельным на базе того-же Omega2. Классная штука. Зачет инженеру, который спроектировал эту систему.

Так выглядит Omega2:

А это реле:

С освещением, кажется, разобрались. Впереди меня ждет система вентиляции с модулем управления JL201 и LED-панели на чипе ws281.

 Нет комментариев    149   2020   intel nuc   omega2   openhab   умный дом