Obsah:

Bezdrátové ovládání postele MQTT: 5 kroků (s obrázky)
Bezdrátové ovládání postele MQTT: 5 kroků (s obrázky)

Video: Bezdrátové ovládání postele MQTT: 5 kroků (s obrázky)

Video: Bezdrátové ovládání postele MQTT: 5 kroků (s obrázky)
Video: Jak si namontovat LED osvětlení pod postel? 2024, Červenec
Anonim
Bezdrátové ovládání postele MQTT
Bezdrátové ovládání postele MQTT
Bezdrátové ovládání postele MQTT
Bezdrátové ovládání postele MQTT

Před několika lety jsme zakoupili novou postel z paměťové pěny a, jak je tomu u většiny postelí, museli jste také zakoupit jednu z jejich „schválených základen“, aby byla zachována záruka. Rozhodli jsme se tedy pro nejméně nákladnou základnu, která také zahrnovala schopnost zvedat a spouštět čelo postele. O několik dní později byla dodána a nastavena naše matrace a naše levná základna American Adjustables s kabelovým ovládáním (jedna pro každou stranu postele).

První, čeho jsme si všimli, bylo, že šňůry v předváděcí hale, které byly pěkné a dlouhé, nebyly tím, co jsme měli na posteli! Ty v předváděcí místnosti měly rozšíření. Tato prodloužení NENÍ zahrnuta v naší posteli a byla dostatečně zajímavá, nikdo neměl zájem prodat nám pár prodlužovacích kabelů. To nám zanechalo ovládací prvky, které sotva dosáhly na vrchol postele a které jsme museli otočit, abychom je mohli použít.

Dostanete to, za co zaplatíte

Asi po 6 měsících jsme si všimli, že se obojky na odlehčení tahu na jednom z kontrol začaly trhat. O několik měsíců později - holý drát. Rychle vpřed asi rok, jeden z ovládacích prvků již nefunguje a druhý začíná být trochu nervózní.

Opět nikdo neměl zájem prodat nám náhrady. Pak mi to došlo!

„Počkej, sakra! Nestavím domácí automatizační a řídicí systém?!?“

Krok 1: Objev

Objev
Objev
Objev
Objev

Chtěl jsem zjistit, co mohu dělat s tím, co jsem měl, a tak jsem vzal vadný ovladač a wow! bylo tam hodně svinstva! K čemu to všechno bylo? Ustoupil jsem a jen jsem se díval na linky přicházející a vystupující. Viděl jsem, že existuje 12voltové napájecí vedení a zemnící vedení. Další dva řádky vypadaly jako signální čáry pro dvě tlačítka nahoru a dolů. Takže jsem využil šance a jen jsem propojil napájení 12 V se signálním vedením „nahoru“. Postel se dala do pohybu! Potom jsem přemostil propojovací drát na signální vedení „dolů“a postel spadla!

V krabici jsou kontakty pro 4 další signální linky a 4 další tlačítka. Můj nejlepší odhad je, že tato řídicí deska se používá ve všech jejich kabelových základních modelech a podle potřeby na desku položily různé čelní desky. Takže jsem měl pracovní teorii. Otestoval jsem přívodní potrubí, abych zjistil, zda se během používání ponořilo nebo kdykoli spiklo - ne. Přes signální vedení byl velmi malý odběr proudu, ale k aktivaci motoru vyžadovaly 12 voltů.

Krok 2: Design

Design
Design
Design
Design
Design
Design
Design
Design

Vše, co je potřeba, je ale jednoduché kontaktní spojení mezi VCC a signálním pinem, ale jak se to dělá v mém systému. Pro kontakty by byla zapotřebí dvě relé a pro bezdrátový ovladač by fungoval ESP8266. Protože relé mohou vyžadovat více proudu, než mohou digitální piny dodávat, je nejlepší použít mezi regulátorem a relé optoizolátor. To umožní malému signálu zapnout spínač s vyšším proudem (v tomto případě světelný tranzistor) a bezpečně aktivovat cívku relé. Optoizolátor také izoluje ovladač od jakýchkoli špiček, které se mohou vytvořit při uvolnění cívky relé a zhroucení magnetického pole. Naštěstí existují reléové moduly, které již obsahují všechny tyto obvody a za docela nízkou cenu.

Postel bude zdrojem napájení pro ovladač a abychom zvládli dodané 12 voltů, budeme potřebovat převodník s proměnným buckem. Dole byl připojen velmi levný a funguje krásně. Vedení 12V a GND se připojuje ke vstupní straně převodníku a regulovaná 5voltová strana se připojuje k VCC NodeMCU a kolíku VCC na reléovém modulu. Zem (-) na převodníku se připojuje k pinům GND na reléový modul i NodeMCU.

NodeMCU se připojuje k IN1 pomocí D1 (GPIO5) a IN2 pomocí D2 (GPIO4). Signální vedení nahoru na loži se připojuje k normálně otevřenému šroubovému terminálu pro relé 1 a dolní signální vedení se připojuje k normálně otevřenému konektoru svorkovnice relé 2. Budete muset připojit vodič 12 V, který je připojen ke vstupní straně převodníku buck, také k dalšímu připojení svorkovnice pro OBOU relé 1 a 2.

Díly

  • 1 - NodeMCU
  • 1 - Modul reléového relé s izolací proudu
  • 1 - Variabilní převodník vstupů/výstupů
  • 1 - Deska plošných spojů
  • 22 měděného lanka z měděného jádra
  • 2 - šrouby M3x 8

Krok 3: Příloha

Ohrada
Ohrada

Přílohu najdete zde:

Navrhl jsem jednoduchý obal s Tinkercadem, který umožňuje, aby kabel ovládání postele vstoupil do boxu mezi konzoly pro odlehčení tahu uvnitř boxu. Zde jsou otvory pro zapínání na zip, které by pomohly zamezit sklouznutí kabelu, ale v mém případě byl fit velmi pohodlný a nepotřeboval ho. Kryt je přišroubován 2 šrouby M3x 8. Doporučil bych nahrát kód a otestovat systém před jeho montáží do krabice.

K uchycení desek na místo jsem použil horké lepidlo, ale to nemusí být nutné.

Krok 4: Kód

Kód najdete zde:

POZNÁMKA: Tento projekt používá knihovnu pubsubclient, kterou lze přidat do Správce knihoven v Arduino IDE

Zde je kód docela základní a byl navržen na základě typu Cover MQTT v Home Assistant. Myšlenka je zde jednoduchá: když stisknete tlačítko nahoru nebo dolů v domácím asistentovi, příslušné relé sepne, dokud není přijat příkaz k zastavení NEBO systém dosáhne maximální doby aktivace a zastaví se.

Maximální doba je míněna jako bezpečnostní opatření v případě, že uživatel zapomene zastavit nebo pokud byl příkaz omylem odeslán a je nepravděpodobné, že ho někdo zastaví. Nechceme relé na neurčito nebo nějaké neočekávané problémy s postelí kvůli prodlouženému sepnutí kontaktu.

V mém kódu je tento časový limit 20 sekund a lze jej upravit v globálním bloku proměnných v horní části kódu.

Druhým bezpečnostním opatřením bylo vždy zajistit, aby když aktivuji jedno relé, vždy bylo vyvoláno úmyslné vypnutí druhého, i když poslední stav již byl vypnutý. Nechci posílat 12v po obou signálních linkách, protože nevím, co to udělá s postelí.

Kromě toho postel zveřejňuje, že je k dispozici každých 60 sekund, a to je vše. Žádné zvonky ani píšťaly zde. Protože postel nemá zpětnou vazbu o poloze, nemohl jsem žádnou poslat zpět do Home Assistant.

Krok 5: Příklad integrace

Příklad integrace
Příklad integrace
Příklad integrace
Příklad integrace

Kód, který jsem napsal, používá ke komunikaci přes WiFi MQTT, a proto může komunikovat s jakýmkoli automatizačním centrem nebo zařízením, které používá MQTT. Používám Home Assistant, který má vestavěný MQTT broker. Níže je uveden příklad mé konfigurace HA.

V HA mám soubor Covers.yaml s následující definicí:

- platforma: mqtt

name: "Master Bed Headboard" 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: " offline “optimistický: pravda

To mi dává jeden záznam v mém rozhraní HA s tlačítkem nahoru/stop/dolů nastaveným s akcí, jak je popsáno výše.

Kromě toho jsem na svém nočním ovládacím panelu (Instructable / Blog Post) definoval dvě tlačítka ke zvedání a spouštění čela postele. Tlačítka na ovládacím panelu jsou definována jako senzory MQTT:

- platforma: mqtt

state_topic: "bedside_cp1/button5" name: "Bedside CP1 Button 5" ikona: mdi: kruh

- platforma: mqtt

state_topic: "bedside_cp1/button6" name: "Bedside CP1 Button 6" ikona: mdi: kruh

… A 4 pravidla automatizace pro každé stisknutí a uvolnění tlačítka. Po stisknutí se na postel odešle povel nahoru nebo dolů podle toho, jaké tlačítko bylo aktivováno, po uvolnění tlačítka se odešle příkaz zastavení:

- id: '1548308650383'

alias: MBR Bedside CP Button 5a trigger: - entity_id: sensor.bedside_cp1_button_5 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.open_cover - id: '1548308758911' alias: MBR Bedside CP Button 5b trigger: - 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' alias: MBR Bedside CP Button 6a trigger: - entity_id: sensor.bedside_cp1_button_6 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: ' cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'alias: MBR Bedside CP Button 6b trigger: - entity_id: sensor.bedside_cp1_button_6 from:' On 'platform: state to:' Off 'condition: action: - data: entity_id: 'Cover.master_bed_headboard' service: cover.stop_cover

Doporučuje: