Класс Yeelight\GenericDevice
Является основным классом для взаимодействия с устройствами Yeelight.
Класс создан на базе официальной документации.
Настройка параметров устройства производится с помощью массива параметров, полученных из пакетов обнаружения устройств. Для получения параметров из сетевого пакета может быть использован метод класса YeelightPacket::getParams(). Однако для управления лампами Yeelight достаточно одного установленного поля “location” значением вида “yeelight://192.168.1.100:55443”, где 192.168.1.100 - IP адрес устройства, 55443 - порт.
Соединение с лампой устанавливается во время отправки первой команды, после чего соединение остаётся активным до уничтожения объекта или отправки команды на разъединение.
Устройство поддерживает стандартные методы интерфейса Smarthome\DeviceInterface, которые необходимы, в основном, для работы системы.
Служебные методы класса Yeelight\GenericDevice
- disconnect() - принудительно завершает соединение с лампой.
- getActions() - (УСТАРЕЛО) возвращает список изменений состояния лампы после обновления данных и очищает его. Из-за особенностей протокола обмены с лампой подлежит удалению.
Основные методы для отправки команд класса Yeelight\GenericDevice
Имена методов состоят из части send и имени команды из документации Yeelight. Параметры для команд максимально упрощены, например резкое и плавное включение выбирается автоматически исходя из параметра длительность нарастания/затухания.
Все методы возвращают номер отправленной команды.
Параметр $duration определяет время эффекта затухания/нарастания. При значении равном 0 параметры изменяются без эффекта (sudden). При значении отличном от нуля применяется эффект (smooth). Время эффекта указывается в миллисекундах. Допускается указание времени эффекта от 30мс и более.
-
sendGetProp(array $params): int - отправка запроса на получение свойств лампы. В качестве параметра указывается массив с именами необходимых параметров.
sendSetCtAbx(int $ct_value, int $duration=0): int
- установка значения цветовой температуры.sendBgSetCtAbx(int $ct_value, int $duration=0): int
- установка значения цветовой температуры для фоновой подсветки.sendSetRGB(string $rgb, int $duration=0): int
- установка значения RGB цвета лампы.sendBgSetRGB(string $rgb, int $duration=0): int
- установка значения RGB цвета фоновой подсветки.sendSetHSV(int $hue, int $sat, int $duration=0): int
- установка цвета лампы через цветовую модель HSV.sendBgSetHSV(int $hue, int $sat, int $duration=0): int
- установка цвета фоновой подсветки через цветовую модель HSV.sendSetBright(int $bright, int $duration=0): int
- установка яркости лампы (в процентах).sendBgSetBright(int $bright, int $duration=0): int
- установка яркости задней подсветки (в процентах).sendSetPower(bool $on, int $duration=0, $mode=0): int
- включение или выключение лампы в соответствии с параметром.sendBgSetPower(bool $on, int $duration=0, $mode=0): int
- включение или выключение фоновой подсветки в соответствии с параметром.sendToggle(): int
- включение/выключение лампы.sendBgToggle(): int
- включение/выключение фоновой подсветки.sendSetDefault(): int
- сохранение текущего состояния лампы в качеств режима по умолчанию.sendBgSetDefault(): int
- сохранение текущего состояния фоновой подсветки в качеств режима по умолчанию.sendStartCF(int $count, int $action, string $flow_expression): int
- запуск режима перетекания цвета.sendBgStartCF(int $count, int $action, string $flow_expression): int
- запуск режима перетекания цвета для фоновой подсветки.changingState(int $duration, int $mode, string $value, int $brightness): string
- не отправляет команды на лампу. Позволяет создать 1 блок состояния для $flow_expression.sendStopCF(): int
- остановка режима перетекания цвета.sendBgStopCF(): int
- остановка режима перетекания цвета фоновой подсветки.sendSetScene(array $params): int
- установка сцены.sendBgSetScene(array $params): int
- установка сцены для фоновой подсветки.sendCronAdd(int $type, int $value): int
- добавить задание в планировщик заданий лампы.sendCronGet(int $type): int
- получить текущие задания из планировщика лампы.sendCronDel(int $type): int
- удалить задание из планировщика заданий лампы.sendSetAdjust(string $action, string $prop): int
- задаёт значение цвета или цветовой температуры лампы.sendBgSetAdjust(string $action, string $prop): int
- задаёт значение цвета или цветовой температуры фоновой подсветки.sendSetMusic(string $host='', int $port=0): int
- включает музыкальный режим.sendSetName(string $name): int
- установка имени лампы.sendDevToggle(): int
- включение/выключение лампы и фоновой подсветки.getResponse(): string
- позволяет получить данные, которые присылает лампа в ответ на команды. Команды приходят не мгновенно, поэтому имеет смысл после выполнения команды выполнить задержку, после чего получать данные. В ответе будут присутствовать результаты выполнения команд, а также события от лампы (в том числе те, что произошли во время соединения с лампой от других источников команд). Сообщения разделены спецсимволами/r/n
. Порядок результатов выполнения команд и изменения статуса лампы не постоянный и может изменяться от запроса к запросу.
Стандартные методы интерфейсов
Кроме собственных методов класс поддерживает интерфейсы возможностей устройств \SmartHome\Device\Capability:
- PowerInterface;
- ColorHsvInterface;
- ColorRgbInterface;
- ColorTInterface.