Система плагинов

Начиная с версии 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. Состоит из нескольких методов, которые будут вызваны перед запуском основного цикла демона, во время выполнения цикла и после завершения работы демона.