Obsah:

Bezdrôtové ovládanie záhlavia postele MQTT: 5 krokov (s obrázkami)
Bezdrôtové ovládanie záhlavia postele MQTT: 5 krokov (s obrázkami)

Video: Bezdrôtové ovládanie záhlavia postele MQTT: 5 krokov (s obrázkami)

Video: Bezdrôtové ovládanie záhlavia postele MQTT: 5 krokov (s obrázkami)
Video: Oukitel BT10: Rugged Smartwatch Review - Built to Endure 2024, Júl
Anonim
Bezdrôtové ovládanie postele MQTT
Bezdrôtové ovládanie postele MQTT
Bezdrôtové ovládanie postele MQTT
Bezdrôtové ovládanie postele MQTT

Pred niekoľkými rokmi sme kúpili novú posteľ z pamäťovej peny a ako je to u väčšiny postelí, museli ste si kvôli zachovaniu záruky kúpiť aj jednu z ich „schválených základní“. Rozhodli sme sa preto pre najlacnejší základ, ktorý zahŕňal aj zdvíhanie a spúšťanie čela postele. O niekoľko dní neskôr bol dodaný a nastavený náš matrac a naša lacná základňa American Adjustables s káblovým ovládaním (jeden pre každú stranu postele).

Prvá vec, ktorú sme si všimli, bolo, že pekné a dlhé šnúry v predvádzacej miestnosti neboli to, čo sme mali na posteli! Tie v predvádzacej miestnosti mali nadstavby. Tieto predĺženia neboli súčasťou našej postele a boli dosť zaujímavé. Nikto nemal záujem predať nám pár predlžovacích káblov. Zostali nám teda ovládacie prvky, ktoré sotva siahali po hornú časť postele a ktoré sme museli otočiť, aby sme ich mohli použiť.

Dostaneš to, za čo platíš

Asi po 6 mesiacoch sme si všimli, že obojky na odľahčenie napätia na jednom z ovládačov sa začali trhať. O niekoľko mesiacov neskôr - holý drôt. Rýchlo dopredu asi rok, jeden z ovládačov už nefunguje a druhý začína byť trochu nervózny.

Opäť nikto nemal záujem predať nám náhrady. Potom mi to došlo!

„Počkaj, sakra! Nestavám domový automatizačný a riadiaci systém?!?“

Krok 1: Objavenie

Objav
Objav
Objav
Objav

Chcel som vidieť, čo môžem robiť s tým, čo mám, a tak som vzal vadný ovládač a wow! bolo tam veľa svinstva! Na čo boli všetky tieto veci? Ustúpil som a len som sa pozeral na rady prichádzajúce a vystupujúce. Videl som, že existuje 12 voltové napájacie vedenie a uzemňovacie vedenie. Ďalšie dva riadky vyzerali ako signálne riadky pre dve tlačidlá hore a dole. Využil som šancu a len som prepojil napájanie 12 V so signálnym vedením „hore“. Posteľ sa dala do pohybu! Potom som prepojovací drôt presunul na signálne vedenie „dole“a posteľ spadla!

V krabici sú kontakty pre ďalšie 4 signálne vedenia a ďalšie 4 tlačidlá. Môj najlepší odhad je, že táto doska ovládača sa používa vo všetkých ich káblových základných modeloch a podľa potreby na ňu položili rôzne čelné dosky. Takže som mal pracovnú teóriu. Testoval som prívodné potrubie, aby som zistil, či sa počas používania ponorilo alebo kedykoľvek skrášlilo - nie. Signálnym vedením bol veľmi malý odber prúdu, ale na aktiváciu motora vyžadovali 12 voltov.

Krok 2: Dizajn

Dizajn
Dizajn
Dizajn
Dizajn
Dizajn
Dizajn
Dizajn
Dizajn

Všetko, čo je potrebné, je však jednoduché kontaktné spojenie medzi VCC a signálnym kolíkom, ale ako sa to robí v mojom systéme. Na kontakty by boli potrebné dve relé a pre bezdrôtový ovládač by fungoval ESP8266. Pretože relé môžu vyžadovať viac prúdu, ako môžu digitálne piny dodať, je najlepšie použiť medzi regulátorom a relé optoizolátor. To umožní malému signálu zapnúť spínač s vyšším prúdom (v tomto prípade svetlo poháňaný tranzistor) a bezpečne aktivovať cievku relé. Optoizolátor tiež izoluje regulátor od všetkých hrotov, ktoré sa môžu vytvoriť pri uvoľnení cievky relé a zrútení magnetického poľa. Našťastie existujú reléové moduly, ktoré už obsahujú všetky tieto obvody a za dosť nízku cenu.

Posteľ bude zdrojom energie pre regulátor a aby sme zvládli dodaných 12 voltov, budeme potrebovať prevodník s premenlivou hodnotou. Nižšie je prepojený veľmi lacný a funguje krásne. Vedenie 12V a GND sa pripája na vstupnú stranu prevodníka a regulovaná 5-voltová strana sa pripája k VCC NodeMCU a kolíku VCC na reléovom module. Uzemnenie (-) na prevodníku sa pripája ku kolíkom GND na reléový modul aj NodeMCU.

NodeMCU sa pripája k IN1 pomocou D1 (GPIO5) a IN2 pomocou D2 (GPIO4). Signálne vedenie nahor na lôžku sa pripája k normálne otvorenej skrutkovej svorke pre relé 1 a dolné signálne vedenie k normálne otvorenému konektoru svorkovnice relé 2. Budete musieť pripojiť 12 V vodič, ktorý je pripojený k vstupnej strane prevodníka, tiež k ďalšiemu pripojeniu svorkovnice pre OBOJ relé 1 a 2.

Časti

  • 1 - NodeMCU
  • 1 - Modul reléového relé s izoláciou prúdu
  • 1 - Premenlivý prevodník vstupného/výstupného signálu
  • 1 - Doska plošných spojov
  • Lanko z medeného jadra s priemerom 22
  • 2 - skrutky M3x 8

Krok 3: Príloha

Ohrada
Ohrada

Prílohu nájdete tu:

S Tinkercadom som navrhol jednoduchý obal, ktorý umožňuje káblu ovládania postele vstupovať do boxu medzi konzoly na odľahčenie napätia vo vnútri boxu. Tu sú otvory pre zapínanie na zips, ktoré pomôžu zabrániť kĺzaniu kábla, ale v mojom prípade bol strih veľmi pohodlný a nepotreboval ho. Kryt je priskrutkovaný 2 skrutkami M3x 8. Pred montážou do krabice by som odporučil nahrať kód a otestovať systém.

Na pripevnenie dosiek na miesto som použil horúce lepidlo, ale nemusí to byť potrebné.

Krok 4: Kód

Kód nájdete tu:

POZNÁMKA: Tento projekt používa knižnicu pubsubclient, ktorú je možné pridať do Správcu knižníc v Arduino IDE

Kód tu je celkom základný a bol navrhnutý na základe typu Cover MQTT v aplikácii Home Assistant. Myšlienka je tu jednoduchá: keď v domácom asistentovi stlačíte tlačidlo nahor alebo nadol, príslušné relé sa zopne, kým neprijme príkaz na zastavenie ALEBO systém dosiahne maximálny čas aktivácie a zastaví sa.

Maximálny čas je myslený ako bezpečnostné opatrenie v prípade, že používateľ zabudne zastaviť alebo ak bol príkaz omylom odoslaný a je nepravdepodobné, že ho niekto zastaví. Nechceme, aby relé bolo donekonečna alebo aby došlo k neočakávaným problémom s posteľou z dôvodu predĺženého zopnutia kontaktu.

V mojom kóde je tento časový limit 20 sekúnd a je možné ho nastaviť v bloku globálnych premenných v hornej časti kódu.

Druhým bezpečnostným opatrením bolo vždy zaistiť, že ak aktivujem jedno relé, vždy sa vyvolá zámerná deaktivácia druhého, aj keď posledný stav bol už vypnutý. Nechcem posielať 12v po oboch signálnych vedeniach, pretože neviem, čo to urobí s posteľou.

Okrem toho posteľ uvádza, že je k dispozícii každých 60 sekúnd, a to je všetko. Žiadne zvončeky ani píšťalky tu. Pretože posteľ nemá spätnú väzbu o polohe, nemohol som žiadnu odoslať späť asistentovi domova.

Krok 5: Príklad integrácie

Príklad integrácie
Príklad integrácie
Príklad integrácie
Príklad integrácie

Kód, ktorý som napísal, používa MQTT na komunikáciu cez WiFi, a preto môže komunikovať s akýmkoľvek automatizačným centrom alebo zariadením, ktoré používa MQTT. Používam Home Assistant, ktorý má vstavaný broker MQTT. Nasleduje príklad mojej konfigurácie HA.

V HA mám súbor Cover.yaml s nasledujúcou definíciou:

- 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áva jeden záznam v mojom rozhraní HA s tlačidlom hore/stop/dole nastaveným pomocou akcie, ako je popísané vyššie.

Okrem toho som na svojom nočnom ovládacom paneli (inštrukčné / blogový príspevok) definoval dve tlačidlá na zdvihnutie a zníženie čelo postele. Tlačidlá na ovládacom paneli sú definované ako snímače MQTT:

- platforma: mqtt

state_topic: "bedside_cp1/button5" názov: "Nočný stolík CP1 tlačidlo 5" ikona: mdi: kruh

- platforma: mqtt

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

… A 4 pravidlá automatizácie pre každé stlačenie a uvoľnenie každého tlačidla. Po stlačení sa príkaz hore alebo dole odošle do postele podľa toho, ktoré tlačidlo bolo aktivované, po uvoľnení tlačidla sa odošle príkaz stop:

- 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: ' služba cover.master_bed_headboard ': 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: - údaje: entity_id: služba „cover.master_bed_headboard“: cover.stop_cover

Odporúča: