xPL — открытый протокол, предназначенный для управления и мониторинга устройств домашней автоматизации . Основная цель разработки xPL — предоставить богатый набор функций и возможностей, сохраняя при этом элегантную, несложную структуру сообщений. Протокол включает в себя возможности полного обнаружения и автоматической настройки, которые поддерживают архитектуру «plug-n-play» — необходимую для обеспечения хорошего опыта конечного пользователя.
xPL выигрывает от строго определенной структуры сообщений, необходимой для того, чтобы устройства с поддержкой xPL от разных поставщиков могли взаимодействовать без риска несовместимости. [1]
Связь между приложениями xPL в локальной сети (LAN) осуществляется по протоколу UDP через порт 3865. [2 ]
Разработка xPL в основном происходила в сообществе DIY, где пользователи писали программное обеспечение для подключения к существующим протоколам и устройствам. Некоторые примеры включают мосты к другим протоколам домашней автоматизации, таким как Z-Wave [3] и UPB . [4] В коммерческом плане программное обеспечение Logitech SqueezeCenter для Squeezebox поддерживает xPL. [5]
Различные устройства взаимодействуют с помощью xPL в локальной сети. Все они транслируют свои сообщения на зарегистрированный IANA UDP-порт 3865 для обработки другими устройствами.
Поскольку в современных операционных системах только одна программа может прослушивать заданный порт, необходим концентратор, пересылающий сообщения на все устройства на одной машине. Устройства регистрируются на концентраторе на частном порту UDP, а концентратор затем пересылает все входящие сообщения на эти частные порты.
Концентратор — это первый компонент xPL, необходимый на машине, на которой работают устройства xPL.
Все устройства регулярно отправляют сообщение heartbeat на концентратор (обычно каждые 5 минут). При отключении они также могут отправить специальное сообщение heartbeat end для концентратора, чтобы он исключил их из своего списка.
Хаб пересылает все сообщения на каждое устройство в своем списке. Фильтрация сообщений не производится: осуществляется слепое перераспределение всех сообщений.
Приложения добавляют функциональные возможности решению для домашней автоматизации, например, управление освещением, восходом/заходом солнца, получение информации о погоде и т. д.
Устройство выбирает свободный порт UDP и отправляет сообщения Heartbeat с этого порта на концентратор на зарегистрированном в IANA порту UDP 3865.
С этого момента устройство прослушивает сообщения на своем частном порту, но отправляет сообщения в широковещательном режиме на порт xPL 3865. Типы сообщений могут быть одними из следующих:
Обширный список приложений можно загрузить из сети. Также предоставляются Tooklits для пользователей, желающих разрабатывать собственные устройства.
Предполагается, что ваш сетевой протокол — UDP/IP, но это ни в коем случае не является обязательным требованием. Если вы хотите, чтобы ваше сообщение XPL перешло из одной транспортной среды в другую (например, из UDP/IP в RS232 ), то вам понадобится мост.
В Windows xPL HAL обрабатывает входящие сообщения xPL и выполняет скрипты для выполнения широкого спектра задач. Конфигурация выполняется либо через Windows-based Manager, либо через браузер. xPL HAL также включает в себя xPL Configuration Manager.
В Linux или Mac OS xpl-central отслеживает все сообщения xPL и может инициировать другие сообщения на основе набора правил, хранящихся в XML-файле.
Протокол xPL может работать через различные среды передачи данных, включая Ethernet , RS232 и RS485.
Все устройства xPL передают свои сообщения по протоколу UDP на зарегистрированный в IANA порт 3865.
Но поскольку только одно приложение может прослушивать заданный порт в каждый момент времени, протокол xPL использует концентратор для ретрансляции всех широковещательных сообщений различным приложениям на одной машине. Приложения подписываются на концентратор на свободном порту, отправляя сообщения heartbeat, которые указывают порт, который они прослушивают. В свою очередь, концентратор пересылает все широковещательные сообщения xPL, которые он получает, каждому приложению в своем списке.
Легкий на проводе, по замыслу
Сообщения xPL основаны на строках, каждая строка заканчивается символом перевода строки (ASCII: 10 десятичных). Ниже приведен пример типичного сообщения xPL:
xpl-команда{прыжок=1источник=xpl-xplhal.myhouseцель=acme-cm12.сервер}x10.базовый{команда=dimустройство=a1уровень=75}
Все сообщения состоят из:
В заголовочном блоке имя цели заменяется на подстановочный символ "*" для широковещательных сообщений. Это касается сообщений tigger и status.
xPL использует четко определенные схемы сообщений, чтобы гарантировать, что приложения от разных поставщиков могут взаимодействовать разумно. Схемы сообщений являются расширяемыми и определяют не только элементы, которые должны присутствовать в сообщении, но и порядок, в котором они появляются.
Это позволяет простым устройствам и приложениям легче анализировать сообщения.
Все существующие схемы сообщений можно найти на домашней странице проекта xPL. Разработчики, желающие создать новую схему, приглашаются сделать это. [7]