Оглавление:

NEST ваш старый термостат: 4 шага (с изображениями)
NEST ваш старый термостат: 4 шага (с изображениями)

Видео: NEST ваш старый термостат: 4 шага (с изображениями)

Видео: NEST ваш старый термостат: 4 шага (с изображениями)
Видео: Уверенное касание, новая мелодрама, полная версия сериала (2023) 2024, Июль
Anonim
Image
Image
Как работает термостат
Как работает термостат

Система отопления в моем доме, наверное, такая же старая, как и сам дом. Ему около 30 лет, и это нормально с точки зрения домашних лет, но с точки зрения технологий он в значительной степени застрял в ледниковом периоде. Есть 2 основные проблемы с коммерческими решениями:

  • непомерно высокая цена
  • продукт как услуга

Мы все помним, что случилось с Revolv, и я не очень хочу, чтобы это случилось со мной посреди зимы. Имея это в виду, я представляю вам невероятно подозрительно выглядящий, но функциональный контроллер NEST-Alike для вашего старого термостата. Не волнуйтесь, я планирую вскоре добавить гораздо лучший корпус!

Функции:

  • возможность пользоваться имеющимся термостатом (на случай, если жена по этому поводу стонет)
  • удаленный доступ
  • ВНУТРЕННИЙ режим
  • индикатор оптимальной температуры
  • Работает с Alexa

Скоро (проверяйте обновления здесь)

  • Google Home
  • Календарь Google
  • Несколько датчиков
  • Управление радиатором
  • IFTT интеграции
  • Поддержка таскеров
  • HTTP-запросы
  • Намного лучше выглядящий корпус

Шаг 1: Как работает термостат

Как работает термостат
Как работает термостат
Как работает термостат
Как работает термостат

Термостат скорее всего подключен к ВЫСОКОМУ НАПРЯЖЕНИЮ! Не пытайтесь что-либо сделать, если не убедитесь, что цепь отключена. Вы можете причинить себе вред и повредить подключенное оборудование. Проконсультируйтесь с квалифицированным электриком, чтобы обеспечить вашу безопасность

Термостат Honeywell - это настенный блок с питанием от сети (для обычных устройств Sonoff требуется минимум 90 В, в моей схеме - 230 В). Блок подключен к основному блоку управления (который является более продвинутым блоком) и отправляет сигнал, когда температура падает ниже заданного уровня. Хотя ваш блок может быть другим, принцип, скорее всего, тот же. Если у вас 3 провода и нет радиосвязи между настенным блоком - это руководство для вас.

Я знаю принцип работы 3-х проводных термостатов, и это не помешало мне сжечь предохранитель, случайно закоротив 2 провода! У меня к устройству подключено 3 провода (4-й - земля). Мой термостат Honeywell не является беспроводным, поэтому для переключения сигнала я могу использовать Sonoff Basic. Пришло время разобрать его и посмотреть, как сигнал поступает на блок. При ближайшем рассмотрении терминал подключается следующим образом:

  1. (синий) - Земля
  2. (желтый) - сигнал, при сильном нажатии включается обогрев
  3. не используется
  4. (красный) - провод под напряжением, используемый для высокого уровня сигнала

Чтобы достичь своей цели, я должен замкнуть провод под напряжением на сигнальный провод, когда я хочу, чтобы мой обогрев был включен. Если у вас есть термостат, подключенный аналогичным образом, вам повезло, так как Sonoff Basic будет достаточно, чтобы сделать свое дело.

Шаг 2. Подготовка Sonoff Basic

Подготовка к работе с Sonoff Basic
Подготовка к работе с Sonoff Basic
Подготовка к работе с Sonoff Basic
Подготовка к работе с Sonoff Basic
Подготовка к работе с Sonoff Basic
Подготовка к работе с Sonoff Basic

Прежде чем мы начнем подключать провода, мы должны добавить в смесь датчик температуры (DHT11). Убедитесь, что на вашем устройстве Sonoff установлена прошивка Tasmota (у меня есть отличное руководство по перепрошивке), и ваш Sonoff с поддержкой Tasmota настроен правильно (также я уже охвачен мной). Теперь все, что вам осталось, это подключить датчик DHT11 к Sonoff и настроить его для отчетов о температуре.

DHT11 поставляется с 3 подключенными контактами: сигнал - GPIO14Vcc - 3.3VGND - GND

Я проделал дыру, меня не беспокоит, как это выглядит сейчас, все, что мне нужно, это подтверждение концепции и валидация. Я сделаю красивый и блестящий корпус, когда прибудет мой 3D-принтер. Я уделил особое внимание тому, как я подключаю Sonoff, так как я должен убедиться, что провод под напряжением подключается к сигнальному проводу на другом конце устройства Sonoff. В блоке Honeywell встроен нагрузочный резистор (R), ограничивающий ток. Хотя цепь защищена предохранителем на 3 А, разумно подобрать такое же сопротивление для дополнительной защиты. Как только я подготовил провода, пришло время выключить основное питание и подключить Sonoff обратно.

Sonoff Tasmota - термостат Honeywell

INPUT Live - 4-й терминал Live

INPUT GND - 1-й контакт GND

ВЫХОДНОЙ сигнал - сигнал 2-го терминала

Я уже упоминал об этом раньше, я не собираюсь акцентировать внимание на внешнем виде этого. Жена убедилась, и я могу сосредоточиться на функциональности и устранении любых ошибок, которые могут возникнуть. Хорошо, что оригинальный термостат все еще работает. Если я включу его, он переопределит тот, который основан на Sonoff Tasmota. Это должно быть отличной резервной копией на случай непредвиденных событий.

Шаг 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Обратите внимание, что видео может содержать старые ссылки на NodeRed, я постоянно работаю над улучшением дизайна. Это небольшие изменения, и файлы статей постоянно обновляются

Я наткнулся на этот дизайн в Интернете. Выглядит отлично, однако при ближайшем рассмотрении виджет не совсем подходит для NodeRED. Для этого нужно установить 5 полезных нагрузок, что совершенно не так, как работает дизайн узлов. Мне потребовалось некоторое время, чтобы придумать лучший способ передать всю эту информацию, чтобы обновить виджет и сохранить его работоспособность. Я уверен, что со временем я потрачу больше времени на дизайн, чтобы можно было продвигать все необходимые обновления с помощью одного объекта msg. На данный момент это то, что есть.

Температурный поток

DHT11 отправляет отчеты каждые X секунд на сервер NodeRED. Я увеличил эту частоту через консоль Tasmota. Просто запустите команду, чтобы установить частоту в секундах:

TelePeriod Установите период телеметрии от 10 до 3600 секунд.

Это делается в основном для тестов, так как я не хочу ждать минуты, чтобы проверить, сработали ли мои исправления ошибок. Сохранение высокой частоты приведет к более частому срабатыванию нагревателя в течение более коротких периодов времени, поэтому не устанавливайте его на 10 секунд для других целей, кроме тестирования. Узел MQTT извлекает данные из:

sonoff / tele / датчик

и хранит наиболее полезные данные в следующих объектах:

msg.payload. DHT11. Temperature msg.payload. DHT11. Humidity

Чтобы ограничить количество ошибок, я добавил узел сглаживания для усреднения результатов и обновил переменную потока: NodeRED:

Функциональный узел - Обновите TempAmbient

flow.set ('TempAmbient', msg.payload. DHT11. Temperature); return msg;

Обновление виджета

Я решил, что 5 секунд - это хорошая частота обновления, поэтому выставляю все необходимые значения с этой частотой. Единственное исключение - слайдер, который по понятной причине срабатывает мгновенно.

Каждый соответствующий узел отправляет полезную нагрузку с назначенной темой виджету типа «гнездо».

  • цвет (отопление | охлаждение * | выкл. & hvac_state)
  • лист (истина | ложь и has_leaf)
  • прочь (истина | ложь и прочь)
  • Окружающая температура (число и окружающая_температура)
  • Целевая температура (число и целевая температура)

*не используется

NodeRED: узел функции - обновление виджета

цвет

x = flow.get ('TempTarget'); // targetz = flow.get ('TempAmbient'); //окружающий

if (z = x) {

flow.set ('heatingState', "выключено"); flow.set ('HeatingSwitch', "ВЫКЛ"); } msg.payload = z; msg.topic = "температура_окружающей среды"; return msg;

лист

x = flow.get ('TempAmbient'); если (x> 17 && x <23) {flow.set ('лист', истина); msg.payload = true; msg.topic = "has_leaf"; return msg; } else {flow.set ('лист', ложь); msg.payload = false; msg.topic = "has_leaf"; return msg; }

Отмена цвета

x = flow.get ('прочь'); если (x === true) {msg.topic = "hvac_state"; msg.payload = "выключено"; return msg; }

msg.topic = "hvac_state";

msg.payload = flow.get ('heatingState');

return msg;

Прочь

x = flow.get ('прочь'); if (x === true) {flow.set ('HeatingSwitch', "ВЫКЛ"); flow.set ('heatingState', "выключено"); }

msg.topic = "прочь";

msg.payload = flow.get ('прочь'); return msg;

Целевая температура

если (msg.topic === "обновление") {msg.topic = "целевая_температура"; msg.payload = flow.get ('TempTarget'); return msg; }

if (msg.command === "SetTargetTemperatureRequest") {

flow.set ('прочь', ложь); msg.topic = "целевая температура"; flow.set ('TempTarget', msg.payload); }

if (msg.topic === "слайдер") {

flow.set ('прочь', ложь); msg.topic = "целевая температура"; flow.set ('TempTarget', msg.payload); }

if (msg.command === "GetTemperatureReadingRequest") {}

return msg;

Как видите, я отказался от переменных потока, чтобы можно было вспомнить значение в любой момент времени. У меня есть поток отладки, который в основном считывает все сохраненные значения.

  • «TempAmbinet» - сохраняет текущую температуру
  • «TempTarget» - содержит целевое временное значение.
  • «Лист» - при необходимости отображает лист
  • «Ушел» - при необходимости отображает статус «ушел»
  • «HeatingState» - меняет цвет дисплея
  • «HeatingSwitch» - контролирует состояние реле.

Задача заключалась в том, чтобы на самом деле убедиться, что информация обновляется при «обновлении» и при запросе другими способами (Alexa и т. Д.). Вот почему вы увидите разные условия в JavaScript. Каждый раз, когда значения обновляются, отправляются в переменную потока, и виджет обновляется.

Слайдер

Тестирование показало, что необходимо дополнительное обновление ползунка (ползунок подталкивает целевую температуру). Slider отправляет полезную нагрузку (номер) со связанной темой «слайдер» при перемещении. Вдобавок ко всему, я хочу, чтобы ползунок занял правильное положение, если имеется несколько веб-интерфейсов. Для этого каждые 5 секунд я просто обновляю положение ползунка до текущей целевой температуры.

NodeRED: узел функции - ползунок обновления '

msg.payload = flow.get ('TempTarget'); вернуть сообщение;

Релейное управление

Контроллер реле простой, занимает (пока) два входа. Алекса истинно | ложно и взаимодействие, которое следует за обновлением переменной потока «Переключатель нагрева». Нет необходимости в мгновенном действии, поэтому для простоты он выполняется с той же частотой обновления 5 секунд, что и остальная часть потока.

Реле подключается через MQTT. Узел отправляет в тему команды ON | OFF:

sonoff / cmnd / POWER1

Функциональный узел принимает истинное | ложное значение от Alexa, а также изменяет состояние входа в соответствии с переменной потока «heatingSwitch».

NodeRED: Функциональный узел - управляющее реле '

если (msg.command === "TurnOffRequest") {msg.payload = "ВЫКЛ"; return msg; }

if (msg.command === "TurnOnRequest") {

msg.payload = "ВКЛ"; flow.set ('TempTarget', 21); return msg; } если (msg.topic === "обновление") {msg.payload = flow.get ('heatingSwitch'); } return msg;

Интеграция с Alexa

Это первое устройство, на котором мне пришлось отключить «автоматическое подтверждение». Вместо того, чтобы автоматически предполагать ответ, я сгенерировал его, поскольку мне нужна возможность запрашивать установленную температуру. В принципе, msg.payload = true | false указывает, был ли запрос успешным, а найденные здесь шаблоны сделают все остальное. Если вы новичок в Alexa и NodeRed, обязательно прочтите это.

Я решил передать благодарности отдельно (я знаю, что это не лучший способ), чтобы иметь возможность контролировать все это немного лучше. Правильно, каждый ответ должен быть дан в конце цепочки команд. Моя компания рискует не вернуть ошибки, если они произойдут. Обратите внимание, что для согласованности я обновляю только переменные, в то время как цикл обновления подталкивает новые значения к виджету.

NodeRED: функциональный узел - обработка ответов Alexa '

// Какова целевая температура термостата if (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"value": x}, "applianceResponseTimestamp": новая дата (). toISOString ()}; msg.payload = true; return msg; } // Устанавливаем температуру (не ниже 10 или выше 30) if (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10.0, max: 30.0} msg.payload = false; msg.extra = диапазон; } еще {msg.extra = {targetTemperature: {значение: msg.payload}}; msg.payload = true; } return msg; } // Включаем if (msg.command === "TurnOnRequest") {msg.payload = true; flow.set ('прочь', ложь); flow.set ('TempTarget', 21); return msg; } // Отключаем if (msg.command === "TurnOffRequest") {msg.payload = true; flow.set ('прочь', истина); return msg;

Шаг 4: Заключение

Заключение
Заключение

Если вы открываете панель управления NodeRED для WAN, всей системой отопления можно будет управлять удаленно. Я бы порекомендовал вам прочитать следующие статьи, чтобы узнать больше о безопасности NodeRED и NodeRED.

  • NodeRED для новичков
  • Безопасность NodeRED

Кроме того, если вы хотите быть в курсе обновлений этого проекта - подпишитесь на меня на платформе по вашему выбору:

  • Facebo хорошо
  • Твиттер
  • Instagram
  • YouTube

И если вам хочется купить мне кофе или поддержать меня более продолжительно:

  • Paypal
  • Патреон

Надеюсь, вам понравился проект!

Рекомендуемые: