Система плагинов
Начиная с версии 0.9.0 поддерживается система плагинов. Плагин в SHCC - это отдельный Composer пакет оформленный определённым образом. Плагины расширяют функционал базовой системы и обеспечивать поддержку оборудования.
Для плагинов, которые используют демоны, активацию и запуск демонов для плагинов необходимо выполнять вручную с помощью systemd, например, активация и запуск демон для плагина с именем PluginName
:
systemctl enable --user shcc@PluginName
systemctl start --user shcc@PluginName
Создание собственного плагина
Для оформления плагина добавьте в composer.json вашего пакета секцию extra
с описанием вашего плагина:
"extra": {
"shcc-plugin": {
"name": "PluginName",
"namespace": "Vendor\\PluginNamespace\\"
}
}
В параметре name
необходимо указать уникальное имя вашего плагина. В системе не может быть установлено одновременно два плагина с одинаковым именем. Однако этот подход позволит создавать форки существующих плагинов, вносить туда необходимые изменения и использовать их вместо оригинальных просто путём удаления зависимости от оригинального плагина и добавления форка.
Параметр namespace
указывает на пространство имён, где располагаются классы, которые должны присутствовать в плагине SHCC.
Класс PluginInfo
Должен реализовывать интерфейс FSA\SmartHome\PluginInfoInterface
. Содержит информацию о плагине.
Пространство имён Devices
Содержит классы, которые используются для взаимодействия с устройствами. Классы должны реализовывать интерфейс FSA\SmartHome\DeviceInterface
.
Класс демона плагина
Класс может иметь любое имя. Получение имени этого класса реализуется через метод в классе PluginInfo
. Демон должен реализовывать интерфейс FSA\SmartHome\DaemonInterface
. Состоит из нескольких методов, которые будут вызваны перед запуском основного цикла демона, во время выполнения цикла и после завершения работы демона.