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. |
3. Основной контур управления
Узел TS03 temperature_inner слушает параметр temperature_inner.
При изменении температуры он отправляет сообщение в поток.
Узел topic = temperature задает msg.topic = temperature,
после чего realiot-thermostat обновляет внутреннее состояние термостата.
realiot-thermostat сравнивает текущую температуру помещения с целевой уставкой,
используя гистерезис coldTolerance и hotTolerance.
В режиме cool он решает, нужно ли включить или выключить охлаждение.
Узел realiot-learned-climate получает команду от термостата и преобразует ее
в обученный IR-сигнал для ZS06.
- первый
mqtt outотправляет IR-команду; - второй
mqtt outотправляет телеметрию о выполненной команде.
Выход состояния от realiot-thermostat идет в realiot-db-writer,
чтобы Термостат1 на рабочем поле всегда показывал актуальные данные:
текущую температуру, режим и целевую уставку.
4. Контур день/ночь без function-узла
realiot-thermostat-schedule.
Логика работает так:
realiot-scheduleвычисляет текущее состояние расписания.realiot-virtual-switchзаписывает его в виджетРасписание1.- Узлы
realiot-state-changedследят заРасписание1,Термостат1.thermostatMode,Дневная t, °CиНочная t, °C. - Любое изменение одного из этих источников запускает
realiot-thermostat-schedule. - Если
Расписание1 = on, выбирается дневная уставка. - Если
Расписание1 = off, выбирается ночная уставка. - Если термостат находится в режиме
cool, узел отправляет командуset_temperatureвТермостат1.
Что это означает в текущем примере
- днем термостат поддерживает 24°C;
- ночью термостат поддерживает 26°C.
5. Что означает «Слежение за уставкой»
virtualThermostat нужна именно для этого сценария:
кондиционер работает как исполнитель, а целевая температура помещения определяется по датчику TS03.
- На рабочем поле задается уставка, например
24°C. realiot-thermostatследит за фактической температурой помещения по датчикуTS03.- Пока температура выше уставки, термостат держит охлаждение включенным.
- Когда температура в помещении снижается до уставки, термостат выключает охлаждение.
То есть в этом режиме уставка 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и по именам виджетов на рабочем поле.
virtualSchedule на том же рабочем поле.