Sisällysluettelo:

Langaton MQTT -sängynpäätyohjaus: 5 vaihetta (kuvilla)
Langaton MQTT -sängynpäätyohjaus: 5 vaihetta (kuvilla)

Video: Langaton MQTT -sängynpäätyohjaus: 5 vaihetta (kuvilla)

Video: Langaton MQTT -sängynpäätyohjaus: 5 vaihetta (kuvilla)
Video: IoT and Wireless Communications 2024, Heinäkuu
Anonim
Langaton MQTT -sängynpäätyohjaus
Langaton MQTT -sängynpäätyohjaus
Langaton MQTT -sängynpäätyohjaus
Langaton MQTT -sängynpäätyohjaus

Muutama vuosi sitten ostimme uuden vaahtomuovisängyn, ja kuten useimpien sänkyjen tapauksessa, sinun oli ostettava myös yksi niiden "hyväksytyistä alustoista" takuun säilyttämiseksi. Joten valitsimme halvimman pohjan, joka sisälsi myös kyvyn nostaa ja laskea sängyn päätä. Muutamaa päivää myöhemmin toimitettiin patja ja amerikkalainen säädettävä halpa pohja, jossa on langalliset ohjaimet (yksi sängyn kummallekin puolelle).

Ensimmäinen asia, jonka huomasimme, oli se, että showroomin mukavat ja pitkät johdot eivät olleet sängyssämme! Näyttelytiloissa oli laajennuksia. Nämä laajennukset EIVÄT sisältyneet vuoteeseemme ja olivat tarpeeksi mielenkiintoisia, kukaan ei ollut kiinnostunut myymään meille pari jatkojohtoa. Tämä jätti meille säätimet, jotka tuskin saavuttivat sängyn yläosan ja jotka meidän oli käännettävä käyttämään.

Saat mitä maksat

Noin 6 kuukauden kuluttua huomaamme, että yhden kontrollin vedonpoistajan kaulukset alkoivat repeytyä. Muutamaa kuukautta myöhemmin - paljas lanka. Nopeasti eteenpäin noin vuosi, yksi ohjaimista ei enää toimi ja toinen on hieman nykimässä.

Jälleen kukaan ei ollut kiinnostunut myymään meille korvaavia tuotteita. Sitten se iski minuun!

Odota vitun minuutti! Enkö ole rakentamassa kodin automaatio- ja ohjausjärjestelmää?!?

Vaihe 1: Löytäminen

Löytö
Löytö
Löytö
Löytö

Halusin nähdä, mitä voisin tehdä sillä, mitä minulla oli, joten otin viallisen ohjaimen appart ja wow! siellä oli paljon paskaa! Mihin tämä kaikki oli tarkoitettu? Astuin taaksepäin ja katsoin vain sisään ja ulos tulevia linjoja. Huomasin, että siellä oli 12 voltin syöttöjohto ja maadoitusjohto. Muut kaksi riviä näyttivät signaalilinjoilta kahdelle ylös- ja alas -painikkeelle. Joten, otin mahdollisuuden ja hyppäsin vain 12 voltin syöttöä "ylös" -signaalilinjaan. Sänky alkoi liikkua! Sitten siirrän hyppyjohtimeni "alas" -signaalilinjaan ja sänky meni alas!

Laatikossa on kontakteja vielä 4 signaalilinjalle ja 4 painikkeelle. Paras arvaukseni on, että tätä ohjainkorttia käytetään kaikissa langallisissa perusmalleissaan ja he asettavat vain erilaisia etulevyjä levyn päälle tarpeen mukaan. Minulla oli siis toimiva teoria. Testasin syöttöjohtoa nähdäkseni, onko se kastunut käytön aikana vai piikki milloin tahansa - ei. Signaalilinjojen yli kului hyvin vähän virtaa, mutta ne vaativat 12 volttia moottorin aktivoimiseksi.

Vaihe 2: Suunnittelu

Design
Design
Design
Design
Design
Design
Design
Design

Joten yksinkertainen kosketusyhteys VCC: n ja signaalitapin välillä on kaikki mitä tarvitaan, mutta miten se tapahtuu järjestelmässäni. Koskettimia varten tarvitaan kaksi relettä ja ESP8266 toimii langattomassa ohjaimessa. Koska releet voivat vaatia enemmän virtaa kuin digitaaliset nastat voivat syöttää, on parasta käyttää optoerotinta ohjaimen ja releen välillä. Tämä mahdollistaa pienen signaalin käynnistää suuremman virtakytkimen (tässä tapauksessa valokäyttöisen transistorin) ja aktivoida relekelan turvallisesti. Lisäksi optoeristin eristää ohjaimen kaikista piikeistä, joita voi muodostua, kun relekela vapautetaan ja magneettikenttä romahtaa. Onneksi on olemassa relemoduuleja, jotka sisältävät jo kaiken tämän piirin ja melko alhaisella hinnalla.

Sängystä tulee ohjaimen virtalähde, ja tarvittavan 12 voltin käsittelemiseksi tarvitsemme muuttuvan buck -muuntimen. Erittäin edullinen on linkitetty alla ja toimii kauniisti. 12V-linja ja GND-linjat kytkeytyvät muuntimen tulopuolelle ja säädetty 5 voltin puoli NodeMCU: n VCC: hen ja relemoduulin VCC-nastaan. Muuntimen maa (-) kytketään sekä relemoduuli että NodeMCU.

NodeMCU muodostaa yhteyden IN1: een käyttämällä D1 (GPIO5) ja IN2 käyttäen D2 (GPIO4). Sängyn yläsignaalijohto kytkeytyy releen 1 normaalisti auki olevaan ruuviliittimeen ja alasignaalijohto releeseen 2 normaalisti auki olevaan riviliittimen liittimeen. Sinun on kytkettävä 12 V: n johto, joka on liitetty buck -muuntimen tulopuolelle, myös toiseen riviliittimen liitäntään molemmille releille 1 ja 2.

Osat

  • 1 - NodeMCU
  • 1 - Duel Relay Module, jossa on virraneristys
  • 1 - Muuttuva tulo/lähtö buck -muunnin
  • 1 - Leipälevyn piirilevy
  • 22 -mittainen kuparilankalanka
  • 2 - M3x 8 ruuvia

Vaihe 3: Kotelo

Kotelo
Kotelo

Kotelo löytyy täältä:

Suunnittelin yksinkertaisen kotelon, jossa oli Tinkercad, jonka avulla sängynohjauskaapeli pääsee laatikkoon laatikon sisällä olevien vedonpoistokannattimien väliin. Täällä on aukkoja vetoketjua varten, jotka auttaisivat estämään kaapelin liukumisen, mutta minun tapauksessani istuvuus oli erittäin tiukka eikä tarvinnut sitä. Kansi ruuvataan kiinni 2 M3x 8 ruuvilla. Suosittelen lataamaan koodin ja testaamaan järjestelmän ennen sen asentamista laatikkoon.

Pidin levyjä paikallaan kuumaliimalla, mutta tämä ei välttämättä ole tarpeen.

Vaihe 4: Koodi

Koodi löytyy täältä:

HUOMAUTUS: Tämä projekti käyttää pubsubclient -kirjastoa, joka voidaan lisätä Arduino IDE: n kirjastonhallintaan

Koodi on melko yksinkertainen ja suunniteltu Home Assistantin Cover MQTT -tyypin perusteella. Idea on yksinkertainen: kun painat kotiavustajan ylös- tai alas -painiketta, sopiva rele sulkeutuu, kunnes pysäytyskomento on vastaanotettu TAI järjestelmä saavuttaa maksimiaktivointiajan ja pysähtyy.

Enimmäisaika on tarkoitettu varotoimeksi siinä tapauksessa, että käyttäjä unohti pysäyttää sen tai jos komento lähetettiin vahingossa, ja on epätodennäköistä, että joku pysäyttää sen. Emme halua releen olevan päällä loputtomiin tai odottamattomia ongelmia sängyssä koskettimien pitkäaikaisen sulkemisen vuoksi.

Koodissani tämä aikakatkaisu on 20 sekuntia ja sitä voidaan säätää koodin yläosassa olevassa globaalimuuttujalohkossa.

Toinen turvatoimenpide oli aina varmistaa, että jos aktivoin yhden releen, toisen tahaton deaktivointi kutsutaan aina, vaikka viimeinen tila olisi jo pois päältä. En halua lähettää 12v alas molempia signaalilinjoja, koska en tiedä mitä se tekee sängylle.

Muuten sänky julkaisee, että se on saatavilla 60 sekunnin välein, ja se on siinä. Täällä ei ole kelloja tai pillejä. Koska sängyssä ei ole sijaintitietoa, en voinut lähettää mitään takaisin Home Assistantille.

Vaihe 5: Esimerkki integroinnista

Esimerkki integraatiosta
Esimerkki integraatiosta
Esimerkki integraatiosta
Esimerkki integraatiosta

Kirjoittamani koodi käyttää MQTT: tä kommunikoidakseen WiFi -yhteyden kautta ja voi siksi kommunikoida minkä tahansa automaatiokeskuksen tai laitteen kanssa, joka käyttää MQTT: tä. Käytän Home Assistantia, jossa on sisäänrakennettu MQTT -välittäjä. Alla on esimerkki HA -kokoonpanostani.

HA: ssa minulla on cover.yaml -tiedosto, jolla on seuraava määritelmä:

- alusta: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd" saatavuus_topic: "master_bed_control/saatavuus" qos: 0 keep: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: offline "optimistinen: totta

Tämä antaa minulle yhden merkinnän HA -käyttöliittymässäni, jossa on ylös/pysäytys/alas -painike, jolla on yllä kuvattu toiminto.

Lisäksi olen määritellyt kaksi painiketta Bedside -ohjauspaneelissani (Instructable / Blog Post) nostaaksesi ja laskeaksesi päätyyn. Ohjauspaneelin painikkeet määritellään MQTT -antureiksi:

- alusta: mqtt

state_topic: "bedside_cp1/button5" name: "Bedside CP1 Button 5" -kuvake: mdi: ympyrä

- alusta: mqtt

state_topic: "bedside_cp1/button6" name: "Bedside CP1 Button 6" -kuvake: mdi: ympyrä

… Ja 4 automaatiosääntöä, kun kutakin painiketta painetaan ja vapautetaan. Painamalla ylös- tai alas -komento lähetetään sängylle sen mukaan, mikä painike on aktivoitu, kun painike vapautetaan, pysäytyskomento lähetetään:

- 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: toiminto: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover

Suositeltava: