• Управление Умным Домом с телефона — мой опыт. EasyHome - управление умным домом с iOS, Android, Windows

    Не так давно был представлен Z-Wave модуль для Raspberry Pi - RaZBerry, который превращает мини-компьютер в полноценный контроллер умного дома. Управление Z-Wave сетью осуществляется с помощью web-интерфейса, использующего HTTP/JavaScript API. Используя JavaScript можно создать набор функций для автоматизации (включение/выключение света, проверка температуры, опрос датчика движения и др.), которые затем можно выполнить, послав HTTP запрос.

    Продукт компании OpenRemote с одноименным названием позволяет создавать мобильные приложения для умного дома без программирования, при этом в одном приложении могут использоваться разные технологии: Z-Wave, KNX, X10, ZigBee, управление компьютером по ssh и др.

    OpenRemote это сервер выполняющий любые команды и конструктор интерфейсов в котором вы создаете кнопки, переключатели, надписи и др. и этим элементам уже назначаете команды, в нашем случае это HTTP запросы на выполнение JavaScript функций на сервере Z-Wave.

    Далее я по пунктам расскажу как создать пульт управления умным домом для iPhone и Android! А вот так будет выглядеть наше приложения, когда мы закончим:

    Под катом много картинок.

    1. Создание сети Z-Wave c помощью контроллера Raspberry Pi + RaZberry

    • Установка ПО RaZberry на Raspberry Pi
    • Добавление Z-Wave устройств
    • Проверка работы устройства
    2. Установка OpenRemote контроллера и мобильного приложения

    3. Создание дизайна приложения и логики его работы

    • Разработка дизайна
    • Ассоциация кнопок с командами
    4. Резюме

    Создание сети Z-Wave c помощью контроллера Raspberry+RaZberry

    RaZberry - это плата подключаемая к Raspberry Pi через GPIO, позволяющая создавать и управлять Z-Wave сетью. Для лучшего понимая прочтите Faq . В комплекте с платой идет софт, который нужно установить.

    Установка ПО RaZberry на Raspberry

    Установщик поддерживает только Debian-based дистрибутивы (Raspbian, Xbian и др.) Однако ручками можно поставить ПО и на OpenElec и другие ОС.
    Выполните команду для установки ПО Z-Way:
    wget -q -O - http://razberry.z-wave.me/install | sudo bash
    После установки, нужно обязательно перезагрузить Raspberry Pi, чтобы применить изменения для Serial порта.

    Чтобы попасть в панель управления умным домом перейдите по адресу http://IP_OF_YOUR_RASPBERRY:8083 . Интерфейс программы очень простой, разобраться в нем не составит труда, есть документация . Максимальную совместимость с интерфейсом имеют браузеры: Chrome, Safari, Firefox, другие браузеры: IE, Opera могут работать некорректно.

    Добавление Z-Wave устройств

    Определимся со списком используемого оборудования:
    - Реле Fibaro Single Switch 3kW 2 шт.
    - Датчик открытия двери/окна и температуры Fibaro Door/Window Sensor 1шт.

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

    Проверка работы устройства

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

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

    Для управления устройством перейдите на вкладку Управление устройствами → Выключатели

    О предоставленном API автоматизации

    Удостоверившись, что все устройства работают правильно, попробуем теперь управлять ими удаленно. Есть несколько способов:

    1. С помощью HTTP/JSON API
    2. C помощью JavaScript API

    HTTP/JSON API использует простой синтаксис для управления устройствами.
    Включить свет можно из браузера:
    http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.SwitchBinary.Set(255)
    Или запросить температуру:
    http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.commandClasses.data.val.value
    JavaScript API позволяет писать различные скрипты автоматизации, например: включить/выключить свет, опросить датчик, получить температуру, выключить свет через 2 минуты после включения. Эти скрипты могут работать как самостоятельно (например: ночью свет включается только на 15%, чтобы не слепить глаза), так и могут быть вызваны удаленно с помощью HTTP/JSON API .

    Скрипт включения света:
    SwitchOn = function(N,I) { zway.devices[N].instances[I].SwitchBinary.Set(255); }
    Вызов скрипта включения света:
    К сожалению прямое обращение к устройствам с помощью HTTP/JSON API из OpenRemote проблематично по нескольким причинам:

    1. Символы должны быть перекодированы в UTF-8 в Констукторе OpenRemote
    2. При опросе датчиков OpenRemote ожидает «on» или «off», а Z-Wave датчики могут прислать 255 или 0.
    3. Для каждого устройства придётся писать свой запрос, а с помощью JS можно использовать только одну функцию для включения различных устройств, изменяя в запросе только параметр функции - номер устройства.

    При использовать JavaScript API все эти проблемы исчезают - несколько функций «хэлперов» помогут преобразовать термины Z-Wave в удобные для OpenRemote понятия.
    Более подробно о синтаксисе HTTP/JSON API и JavaScript API можно почитать в недавней .

    Создание JS скриптов для удаленного управления

    JS скрипты находятся в /opt/z-way-server/automation/ , создадим файл в котором будут храниться наши функции автоматизации openremote.js , чтобы он автоматически загружался при включении Z-Way, в конец главного файла автоматизации main.js добавьте:
    // ====================================================== executeFile(automationRoot + "/" + "tags.js"); executeFile(automationRoot + "/" + "openremote.js"); startAutomation();
    /opt/z-way-server/automation/openremote.js
    // Включение устройства SwitchOn = function(N,I) { zway.devices[N].instances[I].SwitchBinary.Set(255); } // Выключение устройства SwitchOff = function(N,I) { zway.devices[N].instances[I].SwitchBinary.Set(0); } // Запрос на статус датчика (сработал/не сработал) SensorStatus = function(N,I) { return zway.devices[N].instances[I].SensorBinary.data.level.value; } // Запрос на состояние устройство (включено/выключено) SwitchStatus = function(N,I) { return zway.devices[N].instances[I].SwitchBinary.data.level.value; } // Запрос температуры с округлением до целого Temperature = function(N,I) { return Math.round(zway.devices[N].instances[I].commandClasses.data.val.value); }

    Параметр N - номер устройства в сети.
    Параметр I - внутри одного устройства может быть физически несколько устройств (каналов), например 2 реле или датчик температуры, датчик движения, датчик освещенности. Параметр I это номер канала внутри устройств. Если устройство содержит только одно физическое устройство, то это параметр равен 0.

    После создания файла нужно либо перезапустить Z-Way командой:
    /etc/init.d/Z-Way restart
    либо подгрузить скрипт вручную, послав запрос из браузера:
    http://192.168.1.113:8083/JS/Run/executeFile("automation/openremote.js")
    Проверить работоспособность функций можно из браузера.
    Включить свет:
    http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)
    Запросить температуру:
    http://192.168.1.113:8083/JS/Run/Temperature(8,2)
    В отладке очень хорошо помогает лог Z-Way сервера:
    tail -f /var/log/z-way-server.log
    Если все работает, переходим к следующему пункту!

    Установка OpenRemote контроллера

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

    На сайте OpenRemote есть очень подробная инструкция по установке, которой и предлагаю воспользоваться:
    Официальная инструкция по установке OpenRemote на английском языке

    Замечу лишь, что OpenRemote написан на Java и нам нужна версия виртуальной машины с аппаратной поддержкой плавающей запятой:
    JAVA для ARM процессоров в поддержкой плавающей запятой

    Установите мобильное приложение для вашего телефона:
    Мобильное приложение OpenRemote

    Перед тем как приступить к разработке приложения, для лучшего понимая посмотрите как оно будет работать:

    Создание дизайна приложения и логики его работы

    Все предыдущие шаги были лишь подготовкой к главному - созданию мобильного приложения!
    Откройте облачный Конструктор http://designer.openremote.org . Разобраться в нем не составит труда!

    Разработка дизайна

    Сразу перейдем к разработке дизайна.

    1. Перейдите на вкладку UI Designer и создайте новую панель, назвав ее например, iPhone4.

    2. Перетяните из правой панели кнопки и изображения на экран iPhone.

    3. В свойствах изображения (правая панель) загрузите ваши картинки и с помощью полей Left, Right, Width, Height расположите их на экране как вам нужно. Я загрузил изображения квадрата и лампочки, также добавил надпись.

    Создание команд управления и сенсоров

    Теперь нужно на кнопки назначить команды, а картинка лампочки должна изменяться в зависимости от состояния света (включен/выключен).

    1. Перейдите на вкладку и создайте новый девайс, назвав его например, Raspberry.

    2. Выберите только что созданный девайс Raspberry и создайте новую команду для него New → New command . Выбираем протокол HTTP , вводим URL JS-команды и метод устанавливаем POST .
    Эта команда включает устройство №6. Аналогично создаем команды включения других устройств и команды выключения.
    http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)

    3. Теперь нужно создать команду для опроса состояния света. Это команда будет вызываться каждые 2 секунды, поэтому если вы вручную выключите свет, то в нашем приложении это сразу станет заметно. Как обычно New → New command , но дополнительно нужно указать с какой периодичность проводить опрос Polling , устанавливаем 2s , буква s обязательна.

    4. Создадим Sensor, который будет обрабатывать полученные значения от этой команды и передавать их изображению или надписи. New → New Sensor , выбираем команду, которую будет выполнять сенсор, устанавливаем тип custom , добавляем два состояния on и off , ассоциируем их с возвращаемыми значениями Z-Wave.

    Ассоциация кнопок с командами

    1. Последний этап разработки приложения, ассоциация кнопок с командами. Вернитесь к дизайнеру приложения UI Designer , выберите вашу кнопку и в её свойствах установить команду, которую она должна выполнять.

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

    3. В свойствах изображения выберите какая картинка будет показана если сенсор прислал on и какая, если сенсор прислал off .

    Синхронизация с мобильным приложением

    1. Наше приложение готово, осталось его только залить в телефон. Перейдите по адресу контроллера OpenRemote 17 января 2016 в 18:52

    Управление Умным Домом с телефона - мой опыт

    • Умный дом ,
    • DIY или Сделай сам

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

    Итак, самое время заняться интеграцией с мобильными устройствами.

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

    В своем ПЛК я создал модуль Mobdus Slave с входными и выходными регистрами и написал блок синхронизации, а дальше в среде иридиум набросал простенький интерфейс.

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

    На мобильное устройство нужно поставить приложение i2 Control. Оно бесплатное, но для того чтобы загрузить в него созданный проект нужно купить лицензии. В моем случае это были бесплатные демо-лицензии.

    Так выглядел интерфейс моего умного дома в приложении i2 Control на iPhone. Приложение я поставил на все мобильные устройства имеющиеся в семьи и тут я наткнулся на первую проблему. Ккогда работаешь на ноутбуке, а телефона под рукой нет, то было бы удобнее управлять светом непосредственно с ноутбука.

    Сделать на Iridium Mobile это можно, но нужно поставить программу i2 Control для Mac (или для Windows) и подключись лицензию. Во-первых, у меня закончились бесплатные демо-лицензии, а во-вторых запускать программу только, чтобы включить или выключить свет не очень-то удобно. С тем же успехом я могу зайти через удаленный десктоп на сервер, где обычно все время запущен CoDeSys с визуализацией. Собственно, я обнаружил, что чаще я так и делаю, вместо запуска специализированного приложения на телефон или планшете.


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

    От установки i2 Control на свой Mac я отказался и довольствовался управлением только с телефона и планшета.

    Спустя некоторое время всплыла вторая проблема. Запуск приложения i2 Control занимает достаточно долгое время. Например, на моем iPhone 6 оно стартует около 9 сек. Наверное, если бы задача была управление медиа-центром, то это время было бы приемлемо - пока найдешь все пульты, включишь всю технику, настроишь нужное сочетание, то явно пройдет больше времени. Однако для управления светом эти 9 секунд оказались неприемлемо долго и зачастую я предпочитал встать и выключить свет, чем запускать приложение (сейчас вышел Iridium server, который по идее решает эту проблему, но руки протестировать его у меня пока не доходят).

    Жить с умным домом и не управлять им с телефона было как-то неправильно и поэтому я решил седлать еще одну попытку. Идея была такая - на домашнем севере поднять веб-сервер и вынести все управление на веб-страницу. Знакомые посоветовали Node JS - мол, модная и перспективная платформа, а так как мне все-равно было что изучать (я не знал ничего), то остановился на Node JS. Единственное, что не хотелось делать - это разбираться в HTML, поэтому я заказал frontend у фрилансера, а на Github’е нашел библиотеку для работы в Modbus и очень быстро (сам удивляюсь) сделал задуманное.

    Так выглядит сейчас интерфейс моего умного дома на Iphone. Интерфейс адаптивный, поэтому он хорошо смотрится на любых устройствах. Например, вот так он смотрится на моем макбуке:

    На десктопе айфона у меня сделана ссылка на эту страницу, которая загружается достаточно быстро 1-3 сек. Я добавил ее также в закладки в браузеры и теперь управление светом всегда под рукой. Сервер Node JS выполняет также роль между ПЛК (контроллером умного дома) и контроллером z-wave, который используется для беспроводного управления разными лампами (об этом я расскажу в будущем).

    Традиционно в конце плюсы и минусы решения.

    Плюсы: Быстрый адаптивный интерфейс, который работает на любых устройствах, цена (я заплатил только за разработку фронтона).

    Минусы: Необходимость программирования. И если добавление выключателей делается достаточно просто (я, например, перед Новым Годом добавил управление елкой), то, например, интерфейс к медиа-центру это целый и большой проект.

    Управление Умным Домом с помощью смартфонов на платформе Android

    Концепция «Умного дома» уготовила особое место для мобильных технологий. До недавнего времени это перспективное направление не находило широкого применения, оно больше считалось эксклюзивным. Но сейчас ситуация изменилась коренным образом, стало возможным управление «Умным домом» с помощью смартфонов или планшетов, в которых использована платформа Android. Это дает возможность постоянно иметь при себе мобильное устройство управления, которое предназначено для организации связи с интернетом, деловых записей, звонков и прочих функций. Открытый беспроводной протокол предоставил возможность управления домом при помощи планшета с операционной системой Android, так как имеет доступ к приборам и устройствам, находящимся в доме и подключенным к электросети.

    Отдельные попытки, предпринимаемые ранее, оборудовать бытовые приборы автоматикой, не смогли наделить дом или квартиру интеллектом. Сейчас обычный смартфон или планшет, может стать универсальным пультом дистанционного управления, благодаря которому можно будет как выключать в комнатах , так и включать телевизор или кофеварку. Но, перечисленные функции - это далеко не все возможности системы. Наличие мобильной консоли считается готовой платформой для любых приложений, которые могут не только вести правильный учет продуктов в вашем холодильнике, но, и эффективно управлять потреблением электрической энергией, отопления, что обязательно скажется на экономии семейного бюджета. Сам смартфон с платформой Android - это звено коммуникации между владельцем и «умным домом». Благодаря уровню покрытия мобильной связи, оставаться на связи со своей квартирой, даже находясь на большом расстоянии от нее, не составит никакого труда.

    В настоящее время осуществляется выпуск специальных приборов, позволяющих осуществлять интеграцию различных «умных» элементов дома. Сам процесс управления происходит через доступный к пониманию интерфейс при помощи смартфона или планшета. Для этой цели можно использовать не только смартфон, но и консоль операционной системы Android. В интеллектуальной сети могут быть объединены совершенно разные группы приборов: системы вентиляции, отопления, водоснабжения, а также система управления шторами, дверями, электроосвещением и прочее. Приложение, установленное на телефоне, может отражать - сколько потрачено в доме электроэнергии, состояние охранной системы, климатическая обстановка в доме. Оно может распознавать конкретные аварийные ситуации в доме (утечку газа или воды, возникновение пожара, проникновение посторонних лиц в дом) и вовремя направить сигнал - в службу спасения, милицию или на электронную почту. Соблюдая меры , связь может вестись с использованием шифрованного соединения (такого же, как для транзакций при финансовых операциях). Это делается с единственной целью - во избежание подсоединения посторонних лиц к управлению домом.

    Совсем недавно в свет вышла новая платформа Android Home, основным назначением которой является объединение всех устройств системы «умный дом». Данная операционная система очень интенсивно развивается и уже сегодня дает большие возможности по децентрализации управления системой «умный дом» с помощью мобильных устройств на базе ОС Android.

    Теперь появилась возможность управления телевизором, спутниковым ресивером, стиральной машиной, диммерами в доме и светильниками с помощью любого устройства имеющего за основу платформу Android. Управление данными устройствами и подсистемами происходит посредством интернет соединения, что делает мобильное устройство универсальным пультом, позволяющим управлять процессами в доме из любой точки планеты. Кроме управления системами в доме, разработчик ОС Android всемирно известная компания Google предлагает интеграцию системы мультирум с развлекательными сервисами от компании Google. Это делает возможным распространение развлекательного медиа-контента с очень большой скоростью, у пользователей появляется возможность наслаждаться любимой музыкой или просмотром легендарного фильма прямо из интернета. Интеграция данных возможностей в систему мультирум делает возможным использование данных услуг практически в любом месте дома.

    Концепция построения системы «умный дом» на базе платформы Android призвана облегчить управление системой посредством использования любого мобильного устройства на идентичной операционной системе. Говоря про аналоги, Z-Wave или ZigBee, хочется заметить, что они пригодны для управления системой охраны или климат-контроля, но при децентрализованном управлении развлекательными системами операционной системе Android пока нет достойных конкурентов.

    Вадим Балашов, iOS-разработчик из команды мобильной «Почты Mail.Ru», рассказал сайт, как он создал в своей квартире «умный дом» и разработал приложение для часов и бота для Telegram, чтобы управлять системой устройств.

    Немного о розетках

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

    Ну что ж, паяльник есть, руки тоже. Начал думать над реализацией, но сразу возникло очень много вопросов. Например, какой контроллер использовать для управления? У меня был опыт программирования контроллеров линейки AVR от Atmel. Выглядит всё довольно просто: реле, транзистор для развязки и управление одним пином контроллера.

    Задачи встало две. Во-первых, контроллер и реле надо питать, а во-вторых, контроллером нужно управлять. С питанием представилось три варианта.

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

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

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

    Я начал изучать имеющиеся готовые системы, на которых можно было бы построить «умный дом». Сразу решил, что связь модулей должна быть беспроводная. Осталось выбрать технологию. Сначала варианта было два - Wi-Fi и Bluetooth. Они очень распространены, под них много готовых решений.

    Но Wi-Fi, работающий на 2,4 ГГц, не слишком удобен с точки зрения организации сети. Высокое распространение и отсутствие регулирования при установке точек доступа делает эту частоту сильно зашумлённой. Хочется иметь более или менее стабильную систему, чтобы у меня не подвисало переключение розеток, когда работает соседский роутер.

    Это оказалось не самой серьёзной проблемой. Гораздо более страшный враг Wi-Fi - микроволновая печь. Магнетрон моей микроволновки излучает волны на частоте 2,45 ГГц - когда она включается, вокруг не работает ничего. Гаснет стриминг Bluetooth аудио, гаснет стриминг видео по Wi-Fi, файлы не качаются, страницы не открываются. Причём неважно, какой конструкции у вас микроволновка, встроенная или отдельно стоящая - она по-любому будет вносить помехи. Поэтому от использования Wi-Fi и Bluetooth я тоже отказался.

    Z-Wave

    Начал изучать, какие ещё существуют решения. Например, у ZigBee несколько стандартов частоты: есть 2,4 ГГц, а есть в районе 1 МГц. Но тут я наткнулся на статью на «Хабрахабре», где рассказывалось про Z-Wave. Впечатлился. Базовые модули Z-Wave сейчас выпускают всего две компании в мире - Sigma и Mitsumi. Его размеры - примерно сантиметр на сантиметр. По сути, это микроконтроллер с приёмопередатчиком. Его даже можно перепрошивать, но чаще всего в готовом виде монтируют сверху на плату, подключают к нему UART, и он работает как приёмопередатчик.

    Все устройства, которые хотят получить значок «Совместимо с Z-Wave», должны пройти сертификацию. Платформа закрытая, что даёт некоторое преимущество с точки зрения совместимости. Для сравнения: в продаже очень много Bluetooth-решений для домов, и почти все они не совместимы между собой. А все устройства Z-Wave совместимы - благодаря единому закрытому стандарту, который тем не менее эволюционирует. Доступна платная SDK, стоит примерно $2 тысячи. Если вы собираетесь одну штучку дома спаять - это дорого. А если намереваетесь наладить производство 2 тысяч устройств, то получите всего доллар разницы на каждое - вполне неплохо.

    Дальность связи у стандарта Z-Wave около 30 метров. Одно из его преимуществ в том, что устройства выстраиваются в ячеистую сеть (mesh) и практически в каждом модуле есть таблица маршрутизации. Поймав сигнал, любой модуль знает, надо передать его дальше или нет. То есть почти каждый модуль является ещё и ретранслятором. «Почти» - потому что в Z-Wave существуют «спящие» устройства, которые не участвуют в ретрансляции. Такие устройства обычно работают от батареек и выходят на связь при необходимости.

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

    На Amazon продаётся масса Z-Wave-устройств. Есть модули, встраиваемые в розетку и выключатели, есть модули для построения системы безопасности. Замки, сирены, освещение, датчики дыма, датчики протечки воды - что угодно. Я нашёл даже автоматическую кормушку для котов.

    Что касается рабочей частоты, то она находится в районе 900 кГц. Эта частота не является открытой для всех стран в мире, для каждой страны нужно проходить сертификацию и получать разрешение на использование этой технологии, поэтому в разных странах несущие частоты немного отличаются. В Европе частота 868,42 МГц, в России - 869,0 МГц, в США и Канаде - 908,42 МГц, в Гонконге - 919,82 МГц, в Австралии - 921,42 МГц.

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

    При выстраивании ячеистой сети используется режим Explorer Frame: все устройства «затихают», контроллер запускает сканирование сети, и устройства начинают по очереди отвечать. Происходит своеобразная перекличка, когда каждое устройство выстраивает свою таблицу маршрутизации. Например, этот режим рекомендуется включать после перестановки мебели: есть вероятность, что передвинутый шкаф начал экранировать сигнал между какими-то устройствами, но открыл пространство между другими.

    Считается, что стандарт обеспечивает устойчивую работу на расстоянии 30 метров на открытых пространствах и до 10 метров - в квартирах. Конечно, расстояние устойчивой связи между модулями, размещёнными в розеточных нишах, будет ещё меньше, но за счёт маршрутизации всё работает достаточно стабильно.

    Теперь поговорим о коммерческих контроллерах. Наиболее распространены две марки: Fibaro и Vera. У Fibaro есть серии - Home Center и Home Center Light. У Vera тоже две серии контроллеров, одна подороже, вторая подешевле. Все они поддерживают базовые наборы правил, и вы вполне сможете сделать так, чтобы при включении одного устройства активировалось другое, а через какое-то время выключалось или делало что-нибудь ещё. Но если вам нужно реализовать более сложное поведение, то придётся программировать самостоятельно. В качестве языка используется Lua.

    Есть и третья, менее распространённая марка - Zipabox, но эти контроллеры, судя по описанию, не поддерживают расширенную автоматизацию. Тем не менее Zipabox интересен тем, что у него есть модули расширения, которые стыкуются, как конструктор.

    Но мы сейчас поговорим о другом проекте, имеющем отношение к Raspberry Pi. Это проект сообщества, которое решило сделать максимально дешёвое «железо». Сегодня Raspberry Pi в розницу стоит около 4000 рублей. На Amazon можно купить за $50, при текущем курсе это почти в полтора раза дешевле. На Raspberry Pi поднимается веб-сервер с пользовательским интерфейсом, для которого можно писать автоматизацию на JS. В качестве «железа» используется плата расширения, которую назвали RaZberry, выглядит она так:


    А вот пример интерфейса панели управления, которая называется Z-Way. Он отображается в браузере, неплохо работает и на планшетах.


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



    Одно из преимуществ Z-Way - проект открытый, вот ссылка на GitHub. Команда разработчиков «с офисом в интернете», как пишут они сами, раскидана по разным странам: Россия, Германия, Швейцария. Интерфейс можно бесплатно скачать с GitHub, при желании - пересобрать что-то самому. И всё это прекрасно управляется из админки.

    Управление

    Я начал думать, как реализовать более удобное управление системой, чем с компьютера через админку. Это сегодня есть приложения для Android и iOS, а два года назад официальный клиент под Android оставлял желать лучшего: я так и не понял, как им пользоваться. Нашёл, настроил, подключился, но пользоваться не смог. В то время я был адептом Windows Phone, под который не было клиента. «На коленке» написал клиент для себя - когда выключатели рассинхронизировались, жена обращалась ко мне за помощью.

    Год назад, в феврале-марте 2015 года, компания Pebble запустила сбор средств на создание новой версии часов - Pebble Time. Я поддержал проект, и к октябрю часы уже были в моём распоряжении. Я подумал, что это прекрасная штука для управления «умным домом». Ведь телефон не лежит всегда в кармане, дома я просто кладу его куда-нибудь, а часы обычно на руке. К тому же Pebble, в отличие от часов на Android Wear или Apple Watch, подключается и к iPhone (которым я к тому времени пользовался) и к телефонам на базе Android.

    Pebble


    У Pebble довольно много достоинств. Во-первых, они целую неделю работают на одном заряде. Пользователи Apple Watch знают эту боль, когда уже к вечеру нужно искать зарядку. Кроме того, у Pebble экран всегда показывает время, потому что сделан на базе цветных электронных чернил. Есть поддержка двух основных операционных систем. Часы водоустойчивы. А ещё они имеют аппаратный порт. Подключаются «умные» ремешки, которые можно делать самому (на сайте Pebble есть подробное описание).

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

    Работу Pebble обеспечивает операционная система на базе OpenRTOS. Приложения для часов напоминают веб-приложения. Фронтенд исполняется на часах и пишется на C, а бэкенд работает в телефоне и пишется на JavaScript. Разработчики веб-приложений сейчас пришли в ужас: где это видано, фронтенд на С, а бэкенд на JS?

    Но это легко объяснимо: C как наиболее компактный для компиляции язык очень удобен для создания встраиваемых приложений, а плюс JS в том, что он одинаково хорошо исполняется на iPhone и Android. JS работает внутри телефона и обеспечивает интерфейс для выхода в интернет и доступа к GPS. Сами часы имеют встроенный акселерометр, гироскоп и магнитный компас, то есть базовый набор «железа».

    В итоге я написал приложение для управления своей системой «умного дома». Сначала для последней версии часов, а потом реализовал поддержку самой первой модели Pebble - с чёрно-белым экраном.


    Настройки делаются в виде HTML-страницы. Для разработки Pebble советуют использовать Slate Frontend Framework. Страница должна быть расположена в вебе, что само по себе странно, потому что без подключения к интернету вы ничего не настроите.

    После того как я написал приложение, я выложил его в официальный магазин приложений и забыл о нём. Его установили 40 человек, и я начал получать отзывы. Я давно не программировал на С и с ужасом вспомнил, что с выделением памяти - и, что ещё страшнее, с её высвобождением - нужно работать вручную. Поэтому в первой версии я сделал статический массив для восьми устройств, которые у меня были, и всё это прекрасно работало у меня дома.

    Но в сетях, где больше восьми устройств, понятное дело, не работало. И первый отклик был из Дании: «А можно ли сделать больше?» Я, конечно, сказал, что можно, и ещё за один вечер перевел приложение на динамические массивы. Товарищ был счастлив, но не очень долго.

    Оказалось, что у него около 54 логических устройств - выключатели и датчики, причём один физический модуль может быть сразу несколькими логическими устройствами. Например, у меня дома есть датчик, который одновременно отслеживает движение, температуру, влажность и освещённость, и в системе он виден как четыре датчика. А у датчанина больше 50 устройств, и он жаловался, что для выключения чего-либо ему приходится очень долго пролистывать весь список на часах.

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

    Потом мне написал о проблеме другой пользователь моей программы. Приложение умело отображать датчики, а управлять могло только выключателями, причём выключателями типа «Вкл» / «Выкл». Но существует много других управляемых устройств - например, диммеры, для которых можно устанавливать значения от 0% до 100%. Или RGB-модули, на которых можно выставлять любой цвет.

    Я согласился добавить поддержку подобных устройств, но попросил прислать структуру его сети, чтобы посмотреть, как они выглядят живьём. Он прислал, я посмотрел - выглядят классно, но непонятно, что с этим делать. Я полез в настройки и выяснил, что в Z-Way есть виртуальные устройства. Такому устройству можно выставить тип, например, Multilevel Switch, и оно превращается в виртуальный диммер.


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

    Потом я взялся за RGB. Это управление светодиодными полосами, которые могут отображать любой цвет. RGB-освещение появилось в стандарте Z-Wave не так давно, поэтому изначально оно выглядело в системе как три диммера. То есть все устройства рапортовали, что они три диммера, и можно было отдельно управлять красным, зелёным и синим каналом. Для удобной работы со старыми устройствами в современных системах управления сделали виртуальное устройство RGB-освещения, в котором можно задать три диммера.


    Поскольку мы уже умеем задавать Dummy Dimmer, то можем сделать Dummy RGB. Это тоже хорошо работало, но поддержку управления цветом я пока ещё не реализовал - отправил «заказчику» только управление диммерами. И для него я как раз настраивал поддержку чёрно-белых часов.

    Виртуальные устройства

    В чём ещё мощь виртуальных устройств в Z-Wave? Возьмём виртуальное HTTP-устройство, и пусть у вас есть любое другое устройство, которое несовместимо со стандартом Z-Wave, но управляется с помощью HTTP-запросов.


    Тогда мы пишем HTTP-запрос на включение: адрес, который нужно дёрнуть, запрос на выключение и запрос на получение статуса устройства. Вероятнее всего, устройство, которое не поддерживает Z-Wave, не поддерживает и ответ в формате On / Off.

    Для его поддержки можно ввести Inline JavaScript, который будет преобразовывать ответ с вашего устройства в On или Off. А имея виртуальное устройство, дальше мы можем делать всё, что угодно. Например, интегрировать в эту систему любое устройство на базе контроллеров ESP8266. То есть мы делаем три конца, на которые устройство умеет реагировать, а дальше любую обвязку.

    Сцены

    Это набор состояний логических устройств. Сцену нельзя включить или выключить - её можно только активировать. У меня, например, сделана сцена Away, которую я активирую, выходя из дома. Она выключает свет в ванной и туалете, выключает розетки в ванной и на кухне. Активация сцены Away выключает всё, что есть управляемого у меня дома. Также у меня есть сцена Back. Она включает обратно две розетки, но не свет: вернувшись, вы включите его тогда, когда он будет нужен.

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

    И последнее. Z-Way на часах хорош, но управлять можно только дома. Если хочется управлять извне, то можно сделать бота для Telegram. Он у меня простенький: ему посылают команду Light, он спрашивает: «Где?» - и показывает пиктограммки туалета и ванной. Выбираешь место, он спрашивает: «Что сделать?» - и показывает светящуюся лампочку и чёрную. Выбираешь чёрную, и он говорит: «Ок, свет в ванной выключен».

    Заключение

    Это увлечение «умным домом» у меня происходило наплывами. Я в какой-то момент загорелся идеей, заказал модули, встроил один, который управлял только светом в туалете и ванной. Ещё заказал датчик движения, температуры и влажности. Повесил в ванной и сделал классную автоматизацию: свет в туалете автоматически отключается через 15 минут, если забыли выключить, а свет в ванной включается при входе, по датчику движения, а выключается через 15 минут. Всё классно - кроме того, что жить с этим невозможно. Оказалось, что 15 минут в туалете - это на самом деле мало, особенно если там хорошо ловится Wi-Fi. А он ловится хорошо. Увеличение периода ожидания не помогло, так что эту автоматику я пока отключил и заказал ещё один датчик движения.

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

    В чем заключается понятие «умный» дом? В любом магазине бытовой техники можно увидеть телевизоры со Smart TV, пылесосы, сплит-системы и пр. Для удобного использования смарт-устройств разработчики предлагают специальные пульты. У этих устройств как свои преимущества, так и недостатки. Поэтому недавно появились гаджеты для преобразования Bluetooth-сигналов с мобильных устройств на Андроид в понятный бытовым устройствам формат - ИК-декодеры.

    Вслед за таким гаджетам в Google Play стали появляться Андроид-приложения для управления домом. Вот самые популярные приложения для Android, заменяющие ПДУ:

    Remote Control for TV

    Удобный виртуальный пульт для управления телевизором. Нет лишних кнопок, базовый набор включает управление громкостью и выбором каналов. Работает в 3х режимах: обычный ИК-порт, «ИК-Blaster» и общая Wi-Fi сеть.

    Плюсы программы: три варианта соединения с телевизором; простой интерфейс; поддержка множества моделей «умных» ТВ-систем.

    Smartphone Remote Control

    Это универсальный ПДУ для ТВ с функцией Smart TV. Принцип работы похож на Remote Control for TV. Есть базовые клавиши для управления громкостью и выбором ТВ-каналов. Есть набор базовых функций (переход в 3D-режим, вызов списка каналов и добавление в избранное). Есть поддержка ИК-порта или Wi-Fi сети. Среди больших плюсов - отсутствие оплаты за приложение.

    Плюсы: очень понятный интерфейс; поддержка Wi-Fi и ИК-подключение, бесплатное приложение.

    Universal Remote TV

    Очень похоже на предыдущие приложения по своим функциям. Единственное отличие – более удобное расположение на виртуальном ПДУ, как на обычном пульте, поэтому быстрее привыкаешь к интерфейсу. Также здесь есть поддержка ИК-порта, Wi-Fi, прямой коннект при вводе IP-адреса.

    Минусы: нет очевидных плюсов.

    Remote Control Pro

    Универсальный пульт дистанционного управления для смартфона или планшета на Android. Опять же, здесь есть поддержка управления через Wi-Fi сеть и ИК-порт. Очень простое управление, также можно напрямую установить контакт через локальную Wi-Fi сеть. Отличие – самый удобный дизайн интерфейса, неброская гамма и удобное расположение кнопок.

    Плюсы приложения: Wi-Fi, ИК-порт для подключения; удобный дизайн интерфейса.

    Универсальный пульт Galaxy

    Универсальный пульт для всевозможной бытовой техники, но только с ИК-портом. Данное приложение работает лишь с приборами, поддерживающими управление через инфракрасные лучи. Знает протоколы большинства моделей ТВ, DVD-проигрывателей, кондиционеров, это огромное преимущество по сравнению с другими программами.

    Настройка не требует особых навыков. Единственное, что нужно - выбрать тип и марку гаджета в предлагаемом списке.

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

    Минусы: нет демо-версии, приложение платное.

    Вот видео, продолжающее тему ПДУ и других программ для управления «умным» домом: