Съдържание:

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

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

Видео: Безжично управление на табла за легло MQTT: 5 стъпки (със снимки)
Видео: Все будет Fine! Как не уронить Self-Service, меняя платформу 2024, Ноември
Anonim
Безжично управление на табла за легло MQTT
Безжично управление на табла за легло MQTT
Безжично управление на табла за легло MQTT
Безжично управление на табла за легло MQTT

Преди няколко години закупихме ново легло с мемори пяна и, както е при повечето легла, трябваше да закупите и една от техните „одобрени бази“, за да поддържате гаранция. Така че, ние избрахме най -евтината база, която включваше и възможността за повдигане и спускане на главата на леглото. Няколко дни по -късно нашият матрак и нашата евтина база American Adjustables с кабелни контроли (по един за всяка страна на леглото) бяха доставени и настроени.

Първото нещо, което забелязахме, беше, че кабелите в шоурума, които бяха хубави и дълги, не бяха това, което имахме на леглото си! Тези в шоурума имаха разширения. Тези разширения НЕ бяха включени в нашето легло и достатъчно интересни, никой не се интересуваше да ни продаде чифт удължителни кабели. Това ни остави с контроли, които едва достигнаха горната част на леглото и които трябваше да обърнем, за да ги използваме.

Получаваш това, за което плащаш

След около 6 месеца забелязваме, че накрайниците за облекчаване на напрежението на една от контролите започват да се разкъсват. Няколко месеца по -късно - гола жица. Бързо напред около една година, единият от контролите вече не работи, а другият става леко потрепващ.

Отново никой не се интересуваше да ни продава заместители. Тогава ме удари!

Чакайте по дяволите! Не изграждам ли система за домашна автоматизация и КОНТРОЛ?!?

Стъпка 1: Откриване

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

Исках да видя какво мога да направя с това, което имах, затова взех дефектния контролер и уау! имаше много глупости там! За какво бяха всички тези неща? Отстъпих назад и просто погледнах редовете, които влизаха и излизаха. Успях да видя, че има 12 -волтова захранваща линия и земна линия. Другите две линии изглеждаха като сигнални линии за двата бутона нагоре и надолу. И така, аз взех шанс и просто прехвърлих захранването 12v към сигналната линия "нагоре". Леглото започна да се движи! След това преместих джъмперния си проводник към сигналната линия „надолу“и леглото се спусна!

В кутията има контакти за още 4 сигнални линии и още 4 бутона. Най -доброто ми предположение е, че тази контролна платка се използва във всички техни базови модели с кабел и те просто поставят различни лицеви плочи върху дъската, ако е необходимо. И така, имах работеща теория. Тествах захранващия тръбопровод, за да видя дали е потънал по време на употреба или е скочил по всяко време - не. Имаше много малко изтегляне на ток по сигналните линии, но те изискваха 12 волта за активиране на двигателя.

Стъпка 2: Дизайн

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

Така че една проста контактна връзка между VCC и сигналния щифт е всичко, което е необходимо, но как това се прави в моята система. За контактите ще са необходими две релета, а ESP8266 ще работи за безжичния контролер. Тъй като релетата могат да изискват по -голям ток, отколкото могат да доставят цифровите щифтове, най -добре е да използвате оптоизолатор между контролера и релето. Това ще позволи на малък сигнал да включи превключвател с по -висок ток (в този случай лек транзистор) и безопасно да активира релейната бобина. Също така, оптоизолатор изолира контролера от всякакви шипове, които могат да се образуват, когато релейната бобина се освободи и магнитното поле се срине. За щастие съществуват релейни модули, които вече съдържат цялата тази схема и за доста ниска цена.

Леглото ще бъде захранването на контролера и за да се справим с доставените 12 волта, ще ни е необходим променлив конвертор. Много евтин е свързан по -долу и работи прекрасно. Линиите 12V и GND се свързват към входната страна на преобразувателя, а регулираната страна от 5 волта се свързва към VCC на NodeMCU и VCC щифта на релейния модул. както релейния модул, така и NodeMCU.

NodeMCU се свързва към IN1, използвайки D1 (GPIO5) и IN2, използвайки D2 (GPIO4). Сигналната линия нагоре на леглото се свързва към нормално отворения винтов извод за реле 1, а сигналната линия надолу се свързва към реле 2, нормално отворен конектор на клемния блок. Ще трябва да свържете 12v проводника, който е свързан към входната страна на доларовия преобразувател, също и към другата връзка на клемния блок за ДВЕ релета 1 и 2.

Части

  • 1 - NodeMCU
  • 1 - Дуел реле модул с токова изолация
  • 1 - Променлив конвертор на вход/изход
  • 1 - Платка за платка
  • Тел от медна жила с дължина 22 габарита
  • 2 - M3x 8 винта

Стъпка 3: Приложение

Корпус
Корпус

Кутията може да бъде намерена тук:

Проектирах прост корпус с Tinkercad, който позволява на кабела за управление на леглото да влиза в кутията между скобите за облекчаване на напрежението вътре в кутията. Тук има слотове за вратовръзка с цип, които биха помогнали за предпазване на кабела от плъзгане, но в моя случай прилягането беше много плътно и нямаше нужда от него. Капакът се завинтва с 2 винта M3x 8. Бих препоръчал да качите кода и да тествате системата, преди да го монтирате в кутията.

Използвах горещо лепило, за да задържа дъските на място, но това може да не е необходимо.

Стъпка 4: Код

Кодът може да бъде намерен тук:

ЗАБЕЛЕЖКА: Този проект използва библиотеката pubsubclient, която може да бъде добавена в библиотечния мениджър в IDE на Arduino

Кодът тук е доста основен и е проектиран въз основа на типа Cover MQTT в Home Assistant. Идеята тук е проста: когато натиснете бутона нагоре или надолу в домашния асистент, съответното реле се затваря, докато не бъде получена командата за спиране ИЛИ системата достига максимално време за активиране и спира.

Максималното време е предназначено като предпазна мярка за безопасност, в случай че потребителят забрави да го спре или ако командата е била изпратена случайно и е малко вероятно някой да я спре. Не искаме релето да работи безкрайно или някакви неочаквани проблеми с леглото поради продължително затваряне на контактите.

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

Втората предпазна мярка беше винаги да се уверя, че ако активирам едно реле, винаги се извиква умишлено деактивиране на другото, дори ако последното състояние вече е изключено. Не искам да изпращам 12v по двете сигнални линии, тъй като не знам какво ще направи това с леглото.

Освен това, леглото публикува, че е достъпно на всеки 60 секунди и това е всичко. Тук няма камбани или свирки. Тъй като леглото няма обратна връзка за позицията, не можах да го изпратя обратно на Home Assistant.

Стъпка 5: Примерна интеграция

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

Кодът, който написах, използва MQTT за комуникация през WiFi и следователно може да комуникира с всеки център за автоматизация или устройство, което използва MQTT. Използвам Home Assistant, който има вграден брокер MQTT. По -долу е даден пример за моята HA конфигурация.

В HA имам файл cover.yaml със следната дефиниция:

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

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

Това ми дава един запис в моя HA интерфейс с бутон за нагоре/спиране/надолу с действието, както е описано по -горе.

Освен това съм дефинирал два бутона на моя нощен контролен панел (инструктируем / публикация в блога) за повдигане и спускане на таблата. Бутоните на контролния панел са дефинирани като MQTT сензори:

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

state_topic: "bedide_cp1/button5" name: "Икона на бутон CP1 на нощното легло 5": mdi: кръг

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

state_topic: "bedide_cp1/button6" name: "Икона на бутон CP1 на нощното легло 6": mdi: кръг

… и 4 правила за автоматизация, когато всеки бутон е натиснат и освободен. Когато се натисне, командата нагоре или надолу се изпраща в леглото в зависимост от това кой бутон е активиран, когато бутонът е освободен, командата стоп се изпраща:

- id: '1548308650383'

псевдоним: MBR Bedside CP Button 5a задействане: - entity_id: sensor.bedside_cp1_button_5 от: „Off“платформа: state to: „On“условие: действие: - data: entity_id: „cover.master_bed_headboard“услуга: cover.open_cover - id: '1548308758911' псевдоним: MBR Нощен CP бутон 5b задействане: - entity_id: sensor.bedside_cp1_button_5 от: 'On' платформа: състояние на: 'Off' условие: действие: - data: entity_id: 'cover.master_bed_headboard' услуга: cover.stop_cover - id: '1548308863495' псевдоним: MBR Bedside CP бутон 6a задействане: - entity_id: sensor.bedside_cp1_button_6 от: 'Off' платформа: state to: 'On' условие: действие: - data: entity_id: ' cover.master_bed_headboard 'услуга: cover.close_cover - id:' 1548308911467 'псевдоним: MBR Bedside CP бутон 6b задействане: - entity_id: sensor.bedside_cp1_button_6 от:' On 'платформа: състояние на:' Off 'условие: действие: - данни: entity_id: 'cover.master_bed_headboard' услуга: cover.stop_cover

Препоръчано: