Ранее
Объекты
Класс CBlinds:
Здесь posMax – это вручную задаваемое максимальное значение положения в модуле. Его следует уставновить равным MaxPos в конфигурации модуля. Используется в методах setOpen и setClose.
Свойства posPresetX – так же вручную задаваемые параметры воможных положений. Например у меня posPreset1 – это закрытие не до упора, для вечера, чтобы можно было видеть улицу в щель. posPreset2 – чуть более плотное закрытие без щели, но ролеты не до конца сомкнуты. Итп.
pos и isManuallyLocked – это свойства автоматически обновляемые из MQTT и методами класса – для последующего использования в интерфейсе и скриптах.
cmd – команда привязанная к MQTT.
Пример метода setOpen:
$posMax = $this->getProperty('posMax');
if (empty($posMax)) {
$posMax = 60;
}
// send to MQTT, to the 'cmd' topic
setGlobal($this->object_title.'.'.'cmd','mva-'.$posMax);
Здесь вместо mva0
, шлем mva-19
для того чтобы компенсировать проблему дрейфа: последовательное mvr19
и mvr-19
не вернет вточности в исходное положение, т.к. опускать легче и за 19 секунд ролета сместится на большее расстояние чем при подъеме за те же 19 секунд. Поэтому setOpen – это своего рода гарантированый возврат в полностью открытое положение, которое выполняется минимум раз в сутки. Для компенсации дрейфа можно было бы сделать подъем и за 20 секунд, или mva-1
, но сделал mva-19
на случай отключения электричества – при этом сбросится внутренний счетчик положения, а при таком подходе модуль в любом случае откроет ролету полностью. Не забываем что если внутренний счётчик положения оказывается вне диапазона [0, MaxPos], модуль сбрасывает значение в крайнее положение. Т.е. после отработки mva-19
, pos будет установлен 0.
Пример метода setPreset1:
if (!empty($this->getProperty('posPreset1'))) {
// send to MQTT, to the 'cmd' topic
setGlobal($this->object_title.'.'.'cmd','mva'.$this->getProperty('posPreset1'));
}
Также определены объекты данного класса с собственными значениями в posMax и posPresetX:
Конфигурация MQTT
Каждая пара cmd и pos имеет соответсвующую привязку к свойствам cmd и pos каждого из объектов:
Использование
Собственно использование заключается в вызове методов setOpen, setClose, setPresetX, toggleState при желаемых событиях, а также отображение статуса из свойств pos и isManuallyLocked.
Пример моего скрипта, который вызывается при смене времени суток, либо при включении/выключении света на кухне. Идея такая что днем – ролеты полностью открыты, ночью – полностью закрыты, в сумерках – зависит от того включен ли в помещении свет. Такаже во время отпуска – чуть по другому.
В зале скрипт еще более запутанный – тут уже две ролеты: одна на окне, вторая на двери на террасу. Тут в правила добавлен телевизор – при включённом теливизоре окно прикрывается чтобы солнце не мешало. На двери настроено отложенное закрытие и установка в posPreset3 для предварительного “уведомления” о том что дверь будет заблокирована через 2 минуты.
Также на плане помещений добавлено управление и графическое отображение статуса из pos и isManuallyLocked: