Оглавление:

Беспроводное управление изголовьем кровати MQTT: 5 шагов (с изображениями)
Беспроводное управление изголовьем кровати MQTT: 5 шагов (с изображениями)

Видео: Беспроводное управление изголовьем кровати MQTT: 5 шагов (с изображениями)

Видео: Беспроводное управление изголовьем кровати MQTT: 5 шагов (с изображениями)
Видео: Кровать Ergomotion 450 2024, Июль
Anonim
Беспроводное управление изголовьем кровати MQTT
Беспроводное управление изголовьем кровати MQTT
Беспроводное управление изголовьем кровати MQTT
Беспроводное управление изголовьем кровати MQTT

Несколько лет назад мы приобрели новую кровать из пены с эффектом памяти, и, как и в случае с большинством кроватей, вам также пришлось приобрести одну из их «утвержденных оснований», чтобы сохранить гарантию. Итак, мы выбрали наименее дорогую основу, которая также включала возможность поднимать и опускать изголовье кровати. Несколько дней спустя наш матрас и наша дешевая база American Adjustables с проводным управлением (по одному для каждой стороны кровати) были доставлены и настроены.

Первое, что мы заметили, это то, что шнуры в выставочном зале, которые были хорошими и длинными, были не тем, что у нас было на нашей кровати! Те, что в выставочном зале, имели пристройки. Эти удлинители НЕ были включены в нашу кровать и, что достаточно интересно, никто не был заинтересован в продаже нам пары удлинительных кабелей. Это оставило нас с элементами управления, которые едва доходили до верха кровати и которые нам пришлось перевернуть, чтобы использовать.

Ты получаешь то, за что платишь

Примерно через 6 месяцев мы замечаем, что хомуты для снятия натяжения на одном из элементов управления начали рваться. Через несколько месяцев - оголенный провод. Перенесемся примерно на год, и один из элементов управления больше не работает, а другой начинает дергаться.

Опять же, никто не был заинтересован в продаже нам замен. Потом меня осенило!

«Погоди минутку! Разве я не строю систему домашней автоматизации и УПРАВЛЕНИЯ?!?»

Шаг 1: открытие

Открытие
Открытие
Открытие
Открытие

Я хотел посмотреть, что я могу сделать с тем, что у меня было, поэтому я взял неисправный контроллер и вау! там было много дерьма! Для чего все это было? Я отступил и просто посмотрел на входящие и выходящие линии. Я смог увидеть, что есть линия питания 12 вольт и линия заземления. Две другие линии выглядели как сигнальные линии для двух кнопок вверх и вниз. Итак, я рискнул и просто перемкнул источник питания 12 В на сигнальную линию "вверх". Кровать начала двигаться! Затем я переместил перемычку на сигнальную линию «вниз», и кровать упала!

В коробке есть контакты еще для 4-х сигнальных линий и еще 4-х кнопок. Я предполагаю, что эта плата контроллера используется во всех их проводных базовых моделях, и они просто кладут на плату разные лицевые панели по мере необходимости. Итак, у меня была рабочая теория. Я проверил линию питания, чтобы увидеть, просела ли она во время использования или поднялась в любое время - нет. По сигнальным линиям потреблялся очень небольшой ток, но для активации двигателя им требовалось 12 вольт.

Шаг 2: Дизайн

Дизайн
Дизайн
Дизайн
Дизайн
Дизайн
Дизайн
Дизайн
Дизайн

Итак, простое контактное соединение между VCC и сигнальным контактом - это все, что нужно, но как это делается в моей системе. Для контактов потребуются два реле, а для беспроводного контроллера будет работать ESP8266. Поскольку реле может потреблять больше тока, чем могут обеспечить цифровые выводы, лучше всего использовать оптоизолятор между контроллером и реле. Это позволит слабым сигналом включить переключатель с более высоким током (в данном случае транзистор с управляемым светом) и безопасно активировать катушку реле. Кроме того, оптоизолятор изолирует контроллер от любых всплесков, которые могут образоваться, когда катушка реле отпускается и магнитное поле схлопывается. К счастью, существуют релейные модули, которые уже содержат всю эту схему и по довольно низкой цене.

Кровать будет источником питания для контроллера, и для того, чтобы работать с подаваемым напряжением 12 вольт, нам понадобится переменный понижающий преобразователь. Ниже приведена ссылка на очень недорогой вариант, который прекрасно работает. Линия 12 В и линии GND подключаются к входной стороне преобразователя, а сторона с регулируемым напряжением 5 В подключается к VCC NodeMCU и контакту VCC на модуле реле. Земля (-) на преобразователе подключается к контактам GND на как релейный модуль, так и NodeMCU.

NodeMCU подключается к IN1 с помощью D1 (GPIO5) и IN2 с помощью D2 (GPIO4). Верхняя сигнальная линия на платформе подключается к нормально разомкнутой винтовой клемме реле 1, а нижняя сигнальная линия подключается к нормально разомкнутой клеммной колодке реле 2. Вам нужно будет подключить провод 12 В, который подключен к входной стороне понижающего преобразователя, также к другому соединению клеммной колодки для ОБЕИХ реле 1 и 2.

Запчасти

  • 1 - NodeMCU
  • 1 - Модуль реле Duel с токовой изоляцией
  • 1 - Понижающий преобразователь переменного ввода / вывода
  • 1 - Макетная плата
  • Многожильный медный провод 22 калибра
  • 2 - винты M3x 8

Шаг 3: корпус

Вложение
Вложение

Корпус можно найти здесь:

Я разработал простой корпус с помощью Tinkercad, который позволяет кабелю управления кроватью входить в коробку между скобами для снятия натяжения внутри коробки. Здесь есть прорези для стяжки, которые помогут предотвратить скольжение кабеля, но в моем случае посадка была очень плотной и не нуждалась в этом. Крышка прикручивается двумя винтами M3x 8. Я бы рекомендовал загрузить код и протестировать систему, прежде чем устанавливать ее в коробку.

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

Шаг 4: Код

Код можно найти здесь:

ПРИМЕЧАНИЕ. В этом проекте используется библиотека pubsubclient, которую можно добавить в диспетчере библиотек в Arduino IDE

Код здесь довольно простой и был разработан на основе типа Cover MQTT в Home Assistant. Идея здесь проста: когда вы нажимаете кнопку вверх или вниз в домашнем помощнике, соответствующее реле замыкается до тех пор, пока не будет получена команда останова, ИЛИ система достигнет максимального времени активации и остановится.

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

В моем коде этот таймаут составляет 20 секунд и может быть изменен в блоке глобальной переменной в верхней части кода.

Вторая мера предосторожности заключалась в том, чтобы всегда быть уверенным, что если я активирую одно реле, всегда вызывается преднамеренное отключение другого, даже если последнее состояние уже было выключено. Я не хочу подавать 12 В по обеим сигнальным линиям, потому что не знаю, что это сделает с кроватью.

Кроме того, кровать публикует, что она доступна каждые 60 секунд, и все. Никаких наворотов. Поскольку у кровати нет обратной связи по положению, я не мог отправить ее обратно в Home Assistant.

Шаг 5: Пример интеграции

Пример интеграции
Пример интеграции
Пример интеграции
Пример интеграции

Код, который я написал, использует MQTT для связи по Wi-Fi и, следовательно, может взаимодействовать с любым центром автоматизации или устройством, использующим MQTT. Я использую Home Assistant со встроенным брокером MQTT. Ниже приведен пример моей конфигурации высокой доступности.

В HA у меня есть файл cover.yaml со следующим определением:

- платформа: mqtt

name: "Изголовье главной кровати" command_topic: "master_bed_control / cmd" availability_topic: "master_bed_control / availability" qos: 0 keep: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " офлайн "оптимистично: верно

Это дает мне одну запись в моем интерфейсе высокой доступности с кнопкой вверх / стоп / вниз, настроенной с действием, как описано выше.

Кроме того, я определил две кнопки на моей прикроватной панели управления (инструкция / сообщение в блоге) для подъема и опускания изголовья. Кнопки на панели управления определены как датчики MQTT:

- платформа: mqtt

state_topic: "bedside_cp1 / button5" имя: "Прикроватная кнопка CP1 5" значок: mdi: круг

- платформа: mqtt

state_topic: "bedside_cp1 / button6" имя: "Прикроватная кнопка CP1 6" значок: mdi: круг

… И 4 правила автоматизации для каждого нажатия и отпускания кнопки. При нажатии на кровать отправляется команда вверх или вниз в зависимости от того, какая кнопка была активирована, при отпускании кнопки отправляется команда остановки:

- идентификатор: '1548308650383'

псевдоним: MBR Прикроватная кнопка CP 5a триггер: - entity_id: sensor.bedside_cp1_button_5 от: 'Off' платформа: состояние до: 'On' условие: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.open_cover - id: '1548308758911' псевдоним: MBR Прикроватная кнопка CP 5b триггер: - entity_id: sensor.bedside_cp1_button_5 from: 'On' platform: state to: 'Off' condition: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover - id: '1548308863495' псевдоним: MBR Прикроватная кнопка CP 6a триггер: - entity_id: sensor.bedside_cp1_button_6 от: 'Off' платформа: состояние для: 'On' условие: action: - data: entity_id: ' cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'псевдоним: MBR Прикроватная кнопка CP 6b триггер: - entity_id: sensor.bedside_cp1_button_6 от:' On 'платформа: состояние до:' Off 'условие: действие: - данные: entity_id: 'cover.master_bed_headboard' сервис: cover.stop_cover

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