Сценарии для офиса: Управление освещением
Введение в автоматизацию освещения в офисе
Автоматизация освещения в современных офисных пространствах перестала быть элементом роскоши и стала насущной необходимостью, продиктованной тремя основными факторами: энергоэффективностью, комфортом сотрудников и соблюдением нормативных требований. Грамотно спроектированная система не только снижает операционные расходы на электроэнергию на 30-60%, но и повышает продуктивность, создавая благоприятную рабочую среду.
Цели автоматизации:Для реализации этих целей в профессиональных инсталляциях используются проверенные промышленные технологии:
- DALI (Digital Addressable Lighting Interface): Это цифровой протокол, ставший золотым стандартом для управления освещением в коммерческих зданиях. Он позволяет управлять каждым светильником индивидуально, диммировать его с высокой точностью, объединять в группы и сцены, а также получать обратную связь о его состоянии (работает / неисправен).
- Modbus: Универсальный промышленный протокол, который чаще всего используется для подключения к контроллеру различной периферии: многофункциональных датчиков (движения, освещенности, температуры), релейных модулей для управления недиммируемыми нагрузками (например, кулеры, розетки) и другого оборудования. На нашей платформе он используется как по шине RS-485 (Modbus RTU), так и через Ethernet (Modbus TCP).
- KNX: Более комплексный и дорогой стандарт для полной автоматизации зданий. В контексте чистого управления освещением он избыточен по сравнению с DALI, но может использоваться в проектах, где на одну шину завязаны и климат, и шторы, и безопасность.
> 📋 Ключевые понятия:
> * Энергоэффективность: Мероприятия, направленные на рациональное использование энергетических ресурсов.
> * Датчики присутствия: Устройства, определяющие наличие людей в помещении. В отличие от датчиков движения, они способны детектировать даже мелкие движения сидящего за столом человека.
> * Световая сцена: Заранее настроенная комбинация состояний (вкл/выкл, яркость) нескольких групп светильников, вызываемая одной командой.
Сердцем всей системы является наш контроллер на базе Linux (Debian). Он собирает данные со всех датчиков и отправляет команды исполнительным устройствам. Вся логика, описывающая сценарии, реализуется в среде визуального программирования Node-RED. Это позволяет инженеру не писать сложный код, а "собирать" алгоритмы из готовых функциональных блоков, что многократно ускоряет пусконаладку и упрощает последующее обслуживание системы.
---
Практика: Управление по датчикам присутствия
Это самый базовый и наиболее эффективный сценарий для экономии электроэнергии. Его логика проста: "Есть человек — есть свет, нет человека — нет света". Он идеально подходит для зон с переменной посещаемостью: коридоров, санузлов, переговорных, кладовых и кухонь.
Подключение датчиков и исполнительных устройств
Для реализации сценария нам понадобятся датчики и исполнительные устройства (реле или DALI-драйверы).
* Простой датчик с выходом "сухой контакт": Подключается к любому универсальному входу (UI) контроллера. Замыкание или размыкание контактов сигнализирует о движении.
* Многофункциональный Modbus-датчик (например, WB-MSW v.3): Подключается к шине RS-485. Преимущество в том, что по двум проводам он передает в контроллер целый набор данных: факт движения, уровень освещенности, температуру, влажность и даже уровень шума.
* Реле контроллера: Используются для коммутации недиммируемых групп света. Выход реле (например, `RL-01`) подключается в разрыв фазного провода, идущего к светильникам.
* DALI-драйверы: Для диммируемых светильников. Управление происходит по шине DALI.
Разбор логики в Node-RED
Рассмотрим классический алгоритм с задержкой выключения. Задача: при обнаружении движения свет включается мгновенно. Если движение прекращается, система должна подождать некоторое время (например, 5 минут) и только потом выключить свет. Если в течение этого времени движение возобновится, таймер должен быть сброшен.
Для этого идеально подходит узел `trigger`.
ASCII-схема потока (`FLOW-OFFICE-LIGHT-001`):[mqtt in]------------>[trigger]------------>[function]------------>[mqtt out]
(датчик движения) (задержка 5 мин) (формирование команды) (включение/выключение)
Настройка узлов:
* Topic: `/devices/wb-msw-v3_45/controls/Motion` (адрес вашего датчика WB-MSW).
* Output: `a parsed JSON object` (если датчик отправляет JSON, иначе `a string`). Датчик WB-MSW отправляет `1` при движении и `0` при его отсутствии.
* Send: `1` (сообщение, которое будет отправлено на включение света).
* then send: `0` (сообщение для выключения света).
* after: `5` minutes (время задержки).
* Extend delay if new message arrives: `✓` (галочка должна быть установлена. Это ключевая настройка для сброса таймера).
* Name: `Prepare Relay Command`
* Код:
// Входящий msg.payload будет '1' или '0' от узла trigger
const command = msg.payload;
// Меняем топик на топик управления реле
msg.topic = "/devices/wb-mr6c_21/controls/K1/on";
// Устанавливаем payload в виде строки, как требует драйвер реле
msg.payload = command.toString();
// Для отладки добавляем статус
if (command == 1) {
node.status({ fill: "green", shape: "dot", text: "Свет ВКЛ" });
} else {
node.status({ fill: "red", shape: "dot", text: "Свет ВЫКЛ" });
}
return msg;
* Topic: `оставить пустым` (будет взят из `msg.topic`).
> 💡 Подсказка: Чтобы свет не включался днем, когда и так достаточно светло, можно добавить простую проверку. Перед узлом `trigger` поставьте узел `switch`, который будет пропускать сообщения о движении (`1`) только если значение с датчика освещенности (из топика `/devices/wb-msw-v3_45/controls/Illuminance`) ниже определенного порога (например, 300 люкс).
Реализация "коридорного режима"
В длинных коридорах или open-space зонах неудобно, когда свет включается только в непосредственной близости. "Коридорный режим" решает эту проблему, упреждающе включая свет по ходу движения.
Логика: сработал датчик №2 — включить свет в зонах №1, №2 и №3.
Реализация в Node-RED осуществляется через узел `function`, который на одно входящее сообщение генерирует несколько исходящих.
Пример кода для узла `function`:// msg.topic от входящего MQTT-узла содержит ID датчика
// Например: /devices/wb-msw-v3_corridor_2/controls/Motion
const sensorId = msg.topic.split('/')[2]; // Получаем "wb-msw-v3_corridor_2"
const command = msg.payload == '1' ? '1' : '0'; // 1 для включения, 0 для выключения
let commands = [];
let zonesToControl = [];
// Определяем, какие зоны включать, в зависимости от датчика
switch (sensorId) {
case "wb-msw-v3_corridor_1":
zonesToControl = [1, 2];
break;
case "wb-msw-v3_corridor_2":
zonesToControl = [1, 2, 3];
break;
case "wb-msw-v3_corridor_3":
zonesToControl = [2, 3, 4];
break;
// ... и так далее
}
// Формируем массив команд для каждой зоны
zonesToControl.forEach(zoneNum => {
commands.push({
topic: `/devices/wb-mr6c_corridor/controls/K${zoneNum}/on`,
payload: command
});
});
// Отправляем массив сообщений, каждое из которых будет обработано отдельно
return [commands];
Этот узел `function` нужно подключить напрямую к `mqtt out`, который разошлет все команды. Логика с задержкой выключения (`trigger`) применяется к каждой зоне отдельно.
---
Теория: Поддержание постоянной освещенности (Constant Light)
Этот сценарий — вершина интеллектуального управления светом в офисе. Его цель — поддерживать заданный уровень освещенности на рабочих поверхностях (например, 500 люкс) в течение всего дня, плавно диммируя светильники для компенсации меняющегося естественного света из окон. Это не только создает максимально комфортные условия для глаз, но и обеспечивает колоссальную экономию электроэнергии в дневное время. Ключевой технологией для реализации этого сценария является DALI.
> ⚠️ Внимание: Шина DALI имеет ограничения: не более 64 устройств на одной линии и максимальная длина до 300 метров. Пренебрежение правилами проектирования и пусконаладки, такими как отказ от топологии "шина" или превышение длины кабеля, может привести к нестабильной работе всей системы освещения.
Протокол DALI и его преимущества
Как мы уже знаем, DALI — это цифровой протокол управления освещением. В отличие от простого релейного управления (ВКЛ/ВЫКЛ), он предлагает ряд уникальных возможностей:
- Индивидуальная адресация: Каждому светильнику или DALI-драйверу в процессе пусконаладки (commissioning) присваивается уникальный короткий адрес (Short Address) от 0 до 63. Это позволяет управлять им независимо от остальных.
- Групповое управление: Светильники можно объединять в группы (Group Address). Например, все светильники над одним рядом столов могут быть в одной группе. Отправив одну команду группе, можно управлять всеми светильниками в ней.
- Точное логарифмическое диммирование: Яркость DALI-светильников регулируется в диапазоне от 0.1% до 100% по логарифмической кривой, что соответствует особенностям человеческого зрения. Это обеспечивает плавное, незаметное для глаз изменение яркости.
- Обратная связь: Контроллер может в любой момент опросить светильник и узнать его текущую яркость, а также получить информацию о неисправности лампы или самого драйвера. Это открывает возможности для предиктивного обслуживания.
Принцип работы функции Constant Light
Механизм поддержания постоянной освещенности основан на контуре обратной связи, состоящем из трех элементов:
Алгоритм ПИД-регулирования
Чтобы система работала плавно, без резких скачков и "раскачки" (когда яркость постоянно колеблется вокруг нужного значения), для расчета коррекции используется ПИД-регулятор (пропорционально-интегрально-дифференциальный). В Node-RED для этого есть готовый узел `node-red-contrib-pid`.
- Пропорциональная (П) часть: Чем больше ошибка, тем сильнее изменяется яркость. Это основной компонент, обеспечивающий быструю реакцию.
- Интегральная (И) часть: Накапливает ошибку с течением времени. Если света постоянно чуть-чуть не хватает, интегратор постепенно "докрутит" яркость до нужного уровня, убирая статическую ошибку.
- Дифференциальная (Д) часть: Реагирует на скорость изменения ошибки. Она помогает сгладить реакцию системы на резкие события (например, солнце скрылось за тучей), предотвращая перерегулирование.
Настройка ПИД-регулятора — это итеративный процесс подбора коэффициентов (Kp, Ki, Kd), который требует определенных навыков, но результат того стоит: система будет работать идеально плавно и точно.
Настройка DALI-шины на контроллере
Наш контроллер оснащен (или может быть оснащен) специальным модулем для работы с шиной DALI. Процесс пусконаладки обычно включает следующие шаги, выполняемые через консольные утилиты контроллера:
После пусконаладки управление светильниками становится доступно через MQTT, что позволяет легко интегрировать их в Node-RED.
---
Пример: Сценарии по расписанию и внешним событиям
Помимо автоматизации в реальном времени, важна возможность запускать сценарии по предопределенному графику или в ответ на события от смежных систем, таких как система контроля и управления доступом (СКУД).
> 🔗 Связанный материал: Базовые принципы работы со сценами, групповыми адресами и широковещательными командами были рассмотрены в уроке `COURSE-01-M05-L01 'Сценарии для дома: Управление световыми сценами'`. Рекомендуем повторить материал перед выполнением практического задания.
Создание сценариев по расписанию
Расписание — это скелет, на который нанизывается вся автоматизация офиса. Для его создания в Node-RED мы будем использовать мощный узел `node-red-contrib-cron-plus`, который позволяет задавать время срабатывания в гибком формате cron.
Типовые офисные сцены:| Сценарий | Время | Описание |
|---------------|-----------|-------------------------------------------------------------------------------------|
| "Утро" | 7:30 ПН-ПТ | Включение дежурного освещения (30%) в коридорах и на кухне, активация климат-систем. |
| "Рабочий день" | 9:00 ПН-ПТ | Перевод освещения рабочих зон в режим "Constant Light" или включение на 100%. |
| "Вечер" | 19:00 ПН-ПТ| Выключение света на большинстве рабочих мест, остается только дежурное освещение (20%). |
| "Уборка" | 22:00 ПН, СР, ПТ | Включение всего освещения в офисе на 100% на 2 часа для работы клининговой службы. |
| "Все выкл" | 00:00 Ежедневно | Гарантированное выключение всего освещения, если что-то осталось включенным. |
Пример потока в Node-RED:
// Отправляем широковещательную команду на всю DALI шину
// для вызова сцены №1
msg.topic = "/devices/wb-dali/controls/Broadcast/on";
msg.payload = "scene 1";
return msg;
Интеграция с системой контроля доступа (СКУД)
Современные СКУД часто могут отправлять уведомления о своих событиях по сети. Наиболее удобный способ интеграции — через MQTT.
Логика взаимодействия:- Постановка на охрану: Последний сотрудник выходит из офиса и прикладывает карту к считывателю на выход. СКУД ставит объект на охрану и отправляет MQTT-сообщение в топик `office/security/state` с `payload` вида `{"status": "armed"}`.
- Снятие с охраны: Утром первый сотрудник приходит и открывает дверь. СКУД снимает объект с охраны и шлет в тот же топик сообщение `{"status": "disarmed"}`.
Создаем поток, который подписывается на топик `office/security/state`.
- При получении `armed` — запускается сценарий "Все выкл". Это гарантирует, что в пустом офисе не останется гореть свет.
- При получении `disarmed` — запускается сценарий "Утро" или "Рабочий день", подготавливая офис к приходу сотрудников.
Это простой, но чрезвычайно эффективный способ связать две независимые системы в единый интеллектуальный организм.
Конфигурация MQTT-топиков и использование контекста
Для управления DALI-светильниками через MQTT-мост контроллера Wirenboard используются стандартизированные топики. Например, чтобы установить яркость для светильника с адресом `12` на `50%`:
- Topic: `/devices/wb-dali_1/controls/light-12/on`
- Payload: `50`
Чтобы его выключить:
- Topic: `/devices/wb-dali_1/controls/light-12/on`
- Payload: `0`
Для хранения текущего состояния системы (например, какой сценарий сейчас активен) удобно использовать переменные контекста.
// В узле, который активирует сцену "Рабочий день"
flow.set("currentLightScene", "WorkingDay");
node.status({ text: "Активна сцена: Рабочий день" });
Зачем это нужно? Например, у вас есть настенный выключатель для ручного управления. Его логика может проверять текущий сценарий: если активен `WorkingDay`, то нажатие на выключатель просто меняет яркость. А если активен `Cleaning`, то ручное управление блокируется, чтобы уборщики случайно не выключили себе свет.
Таким образом, комбинируя управление по присутствию, поддержание постоянной освещенности, сценарии по расписанию и интеграцию со смежными системами, мы строим по-настоящему интеллектуальную, гибкую и энергоэффективную систему освещения для современного офиса.