В этой статье я расскажу про то, как изменять температуру в доме, сократив при этом переключения реле. Я использую гистерезис для того, чтобы реле, к которому подключен обогреватель и к другому кондиционер не переключались слишком часто.
У меня в проекте есть файл json. В нём прописаны “точки” (время : значение температуры) для каждого дня недели. Их должна поддерживать система. Даже при небольшом отклонении от порогового значения, заданного в этом файле, реле будет переключаться в противоположное значение. Чтобы оно этого не делала, я добавил гистерезис. В чём его суть? Его суть в переключении состояния только при отклонении от порогового значения на определённую dt. Т.е, если температура меньше определённого значения (в моей системе 3 ℃), то реле включает обогреватель. Но если он включен, при достижении 20℃ (предположительно, значения, заданного в файле json) обогреватель выключится. Только при достижении 24℃ (при dt = 3℃) кондиционер включится и выключится обогреватель. При достижении 23℃ кондиционер выключится и ничего не будет включено.
У нас есть контроллер esp32, который отправляет в MQTT значение актуальной температуры. И Node-Red, обрабатывающий значение, полученное из MQTT.
Скриншот из Node-Red:
![](https://iot3.oldprinters.ru/wp-content/uploads/2021/06/2021-06-03-2.png)
В первой функции мы создаём переменные (вкладка “Настройка)”:
!["Настройка". Функция 1](https://iot3.oldprinters.ru/wp-content/uploads/2021/06/2021-05-28-5-edited-1.png)
И в функции присваиваем переменной значения:
![Сама функция 1](https://iot3.oldprinters.ru/wp-content/uploads/2021/05/2021-05-28-6.png)
Во второй функции мы получаем значение из json:
![Обработка файла json и получение порогового значения температуры](https://iot3.oldprinters.ru/wp-content/uploads/2021/05/2021-05-28-7.png)
А в третьей функции мы делаем гистерезис:
![](https://iot3.oldprinters.ru/wp-content/uploads/2021/06/2021-06-03-1.png)
Вкратце, мы получаем в Node-Red значение актуальной температуры из MQTT. Сравниваем с указанным в файле json значением. Если значение из MQTT ниже заданной на определённое значение, тогда система переходит в состояние обогрева. Но если сейчас она охлаждается, то при достижении порогового значения она перейдёт в состояние, когда и обогреватель, и кондиционер выключены. Но как только температура станет на заданное значение выше порогового, то тогда система перейдёт в состояние охлаждения.
В итоге, мы не ощущаем разницу температуры, продлили срок службы реле и избавились от излишних переключений.
Ссылка на мою предыдущую статью.