Пример термостата кондиционера ZS06

virtualThermostat, day/night расписание и Node-RED без function-узлов
Этот пример показывает, как в RealIoT управлять кондиционером через обученный IR-передатчик ZS06, используя virtualThermostat, датчик температуры помещения, virtualSchedule и узел Node-RED realiot-thermostat-schedule без промежуточных function-узлов.
Система поддерживает температуру в помещении по датчику TS03, автоматически переключает дневную и ночную уставку и отправляет кондиционеру обученные IR-команды через ZS06.

1. Элементы на рабочем поле

Элемент Тип Назначение
TS03 sensor Физический датчик температуры. В примере используется параметр temperature_inner.
Термостат1 virtualThermostat Главный управляющий виджет. Хранит режим, текущую температуру, целевую уставку и состояние термостата.
Расписание1 virtualSchedule Хранит расписание день/ночь и переводит его в состояние on или off.
Дневная t, °C virtualNumber Дневная уставка термостата. В текущем примере: 24.
Ночная t, °C virtualNumber Ночная уставка термостата. В текущем примере: 26.
Рабочее поле с термостатом, расписанием и уставками
Рабочее поле с термостатом, расписанием и уставками

2. Как устроен поток Node-RED

Узел Роль
realiot-state-changed для TS03 Слушает изменения температуры помещения в реальном времени.
change с msg.topic = temperature Приводит сообщение к формату, который ожидает realiot-thermostat.
realiot-thermostat Сравнивает температуру помещения с уставкой и решает, нужно ли охлаждать.
realiot-learned-climate Преобразует состояние термостата в обученную IR-команду для ZS06.
realiot-db-writer Записывает актуальное состояние обратно в virtualThermostat на рабочем поле.
realiot-schedule + realiot-virtual-switch Поддерживают состояние virtualSchedule на рабочем поле.
realiot-thermostat-schedule Выбирает дневную или ночную уставку и отправляет в термостат команду set_temperature.
Поток Node-RED для управления кондиционером
Поток Node-RED для управления кондиционером

3. Основной контур управления

Шаг 1. Датчик передает температуру помещения

Узел TS03 temperature_inner слушает параметр temperature_inner. При изменении температуры он отправляет сообщение в поток.

Шаг 2. Термостат принимает новую температуру

Узел topic = temperature задает msg.topic = temperature, после чего realiot-thermostat обновляет внутреннее состояние термостата.

Шаг 3. Термостат сравнивает температуру с уставкой

realiot-thermostat сравнивает текущую температуру помещения с целевой уставкой, используя гистерезис coldTolerance и hotTolerance. В режиме cool он решает, нужно ли включить или выключить охлаждение.

Шаг 4. Отправка IR-команды через ZS06

Узел realiot-learned-climate получает команду от термостата и преобразует ее в обученный IR-сигнал для ZS06.

  • первый mqtt out отправляет IR-команду;
  • второй mqtt out отправляет телеметрию о выполненной команде.
Шаг 5. Состояние термостата обновляется на рабочем поле

Выход состояния от realiot-thermostat идет в realiot-db-writer, чтобы Термостат1 на рабочем поле всегда показывал актуальные данные: текущую температуру, режим и целевую уставку.

4. Контур день/ночь без function-узла

В актуальной схеме day/night логика вынесена в отдельный узел realiot-thermostat-schedule.

Логика работает так:

  1. realiot-schedule вычисляет текущее состояние расписания.
  2. realiot-virtual-switch записывает его в виджет Расписание1.
  3. Узлы realiot-state-changed следят за Расписание1, Термостат1.thermostatMode, Дневная t, °C и Ночная t, °C.
  4. Любое изменение одного из этих источников запускает realiot-thermostat-schedule.
  5. Если Расписание1 = on, выбирается дневная уставка.
  6. Если Расписание1 = off, выбирается ночная уставка.
  7. Если термостат находится в режиме cool, узел отправляет команду set_temperature в Термостат1.

Что это означает в текущем примере

  • днем термостат поддерживает 24°C;
  • ночью термостат поддерживает 26°C.

5. Что означает «Слежение за уставкой»

Галочка «Слежение за уставкой» у virtualThermostat нужна именно для этого сценария: кондиционер работает как исполнитель, а целевая температура помещения определяется по датчику TS03.
  1. На рабочем поле задается уставка, например 24°C.
  2. realiot-thermostat следит за фактической температурой помещения по датчику TS03.
  3. Пока температура выше уставки, термостат держит охлаждение включенным.
  4. Когда температура в помещении снижается до уставки, термостат выключает охлаждение.

То есть в этом режиме уставка 24°C означает не "передать кондиционеру внутреннюю уставку 24", а "поддерживать в помещении около 24°C по внешнему датчику".

6. Что может менять пользователь

Пользователь меняет Результат
Дневная t, °C Меняется дневная целевая температура помещения.
Ночная t, °C Меняется ночная целевая температура помещения.
Расписание1 Меняется интервал, когда действует дневная уставка.
Режим Термостат1 В примере day/night логика работает только в режиме cool.

7. Что важно помнить

  • В примере используются узлы realiot-state-changed, realiot-thermostat, realiot-learned-climate, realiot-db-writer, realiot-schedule, realiot-virtual-switch и realiot-thermostat-schedule.
  • Для day/night логики здесь больше не используется function-узел.
  • Все ключевые связи должны совпадать по Device SN и по именам виджетов на рабочем поле.
Если вы переносите этот пример в свой проект, проверьте обученные IR-состояния ZS06, совпадение идентификаторов и наличие виджета virtualSchedule на том же рабочем поле.
← Назад к справке