Sisukord:

Juhtmeta MQTT voodipeatüki juhtimine: 5 sammu (piltidega)
Juhtmeta MQTT voodipeatüki juhtimine: 5 sammu (piltidega)

Video: Juhtmeta MQTT voodipeatüki juhtimine: 5 sammu (piltidega)

Video: Juhtmeta MQTT voodipeatüki juhtimine: 5 sammu (piltidega)
Video: TERNCY SD01 - логический zigbee диммер-кнопка, интеграция в Home Assistant, практическое применение 2024, Juuli
Anonim
Juhtmeta MQTT voodipeatüki juhtimine
Juhtmeta MQTT voodipeatüki juhtimine
Juhtmeta MQTT voodipeatüki juhtimine
Juhtmeta MQTT voodipeatüki juhtimine

Mõni aasta tagasi ostsime uue mäluvahtvoodi ja nagu enamiku voodite puhul, pidite garantii säilitamiseks ostma ka ühe nende "heakskiidetud aluse". Niisiis, valisime kõige odavama aluse, mis hõlmas ka voodi pea tõstmist ja langetamist. Mõni päev hiljem tarniti ja seadistati meie madrats ja meie Ameerika reguleeritav odav alus koos juhtmega juhtnuppudega (üks voodi mõlemale küljele).

Esimese asjana märkasime, et müügisalongi toredad ja pikad nöörid ei olnud need, mis meil voodis olid! Näitusesaalis olid laiendused. Need pikendused EI olnud meie voodi komplektis ja piisavalt huvitavad, keegi polnud huvitatud meile paari pikendusjuhtme müümisest. See jättis meile juhtnupud, mis jõudsid vaevalt voodi ülaosani ja mille kasutamiseks pidime ümber pöörama.

Saate selle, mille eest maksate

Umbes 6 kuu pärast märkame, et ühe juhtelemendi venituskraed hakkasid rebenema. Mõni kuu hiljem - paljas traat. Umbes aasta edasi kerides ei tööta üks juhtnupp enam ja teine hakkab natuke tõmblema.

Jällegi polnud keegi huvitatud meile asenduste müümisest. Siis tabas see mind!

Oota kuradima hetk! Kas ma ei ehita koduautomaatika- ja KONTROLLIsüsteemi?!?

1. samm: avastamine

Avastus
Avastus
Avastus
Avastus

Tahtsin näha, mida saaksin sellega, mis mul oli, nii et võtsin defektse kontrolleri ja vau! seal oli palju jama! Milleks see kõik oli? Astusin tagasi ja vaatasin lihtsalt sisse ja välja tulevaid ridu. Nägin, et seal on 12 -voldine toiteliin ja maandusliin. Ülejäänud kaks rida nägid välja nagu kahe üles ja alla nupu signaaljooned. Niisiis, kasutasin juhust ja hüppasin 12 -voldise toite üle signaaliliini "üles". Voodi hakkas liikuma! Seejärel nihutasin oma hüppaja juhtme "alla" signaalijoonele ja voodi läks alla!

Karbis on kontaktid veel 4 signaaliliini ja veel 4 nupu jaoks. Minu parim oletus on see, et seda kontrollerplaati kasutatakse kõigis nende juhtmega baasmudelites ja nad panevad vastavalt vajadusele plaadi peale erinevaid esiplaate. Niisiis, mul oli töötav teooria. Testisin toiteliini, et näha, kas see kasvas kasutamise ajal või kasvas igal ajal - ei. Signaaliliinide voolutugevus oli väga väike, kuid need nõudsid mootori aktiveerimiseks 12 volti.

2. samm: disain

Disain
Disain
Disain
Disain
Disain
Disain
Disain
Disain

Nii et lihtne kontaktühendus VCC ja signaali tihvti vahel on kõik, mida vaja, kuid kuidas seda minu süsteemis tehakse. Kontaktide jaoks on vaja kahte releed ja traadita kontrolleri jaoks töötab ESP8266. Kuna releed võivad vajada rohkem voolu kui digitaalsed tihvtid suudavad toota, on kõige parem kasutada kontrolleri ja relee vahel optoisolaatorit. See võimaldab väikesel signaalil sisse lülitada suurema voolulüliti (antud juhul valgusjuhtimisega transistor) ja relee mähise ohutult aktiveerida. Samuti eraldab optoisolaator kontrolleri naelu eest, mis võivad tekkida relee mähise vabastamisel ja magnetvälja kokkuvarisemisel. Õnneks on olemas releemoodulid, mis sisaldavad juba kogu seda vooluringi ja üsna madala hinna eest.

Voodi saab kontrolleri toiteallikaks ja kaasasoleva 12 volti käsitsemiseks vajame muutuva puldiga muundurit. Väga odav on allpool lingitud ja töötab ilusti. 12V liin ja GND liinid ühenduvad muunduri sisendpoolega ja reguleeritud 5-voldine külg ühendub NodeMCU VCC ja releemooduli VCC tihvtiga. Muunduri maandus (-) ühendub GND-pistikutega nii releemoodul kui ka NodeMCU.

NodeMCU loob ühenduse IN1 -ga, kasutades D1 (GPIO5) ja IN2, kasutades D2 (GPIO4). Voodil olev ülemine signaaliliin ühendub relee 1 normaalselt avatud kruviklemmiga ja alumine signaaliliin releega 2 tavaliselt avatud klemmiploki pistikuga. Peate ühendama 12V juhtme, mis on ühendatud buck -muunduri sisendpoolega, ka teise klemmliistude ühendusega nii MÕHU relee 1 kui ka 2 jaoks.

Osad

  • 1 - NodeMCU
  • 1 - Duel Relay Module koos voolu eraldamisega
  • 1 - Muutuva sisendi/väljundi muundur
  • 1 - Leivaplaadi trükkplaat
  • 22 -mõõtmelise ahelaga vasktraattraat
  • 2 - M3x 8 kruvi

3. samm: ümbris

Korpus
Korpus

Korpuse leiate siit:

Kujundasin Tinkercadiga lihtsa ümbrise, mis võimaldab voodi juhtkaablil kasti siseneda kasti sees olevate pingutusklambrite vahele. Siin on tõmblukuga lipsud, mis aitaksid kaablit libiseda, kuid minu puhul sobis see väga hästi ja ei vajanud seda. Kaas kinnitatakse 2 kruviga M3x8. Soovitan koodi üles laadida ja süsteemi enne kasti paigaldamist testida.

Kasutasin plaatide paigal hoidmiseks kuuma liimi, kuid see ei pruugi olla vajalik.

4. samm: kood

Koodi leiate siit:

MÄRKUS. See projekt kasutab pubsubclient teeki, mille saab lisada Arduino IDE raamatukoguhaldurisse

Siin olev kood on üsna lihtne ja kujundati Home Assistanti katte MQTT tüübi põhjal. Idee on siin lihtne: kui vajutate koduabil üles või alla nuppu, sulgub vastav relee, kuni peatamiskäsk on saadud VÕI süsteem saavutab maksimaalse aktiveerimisaja ja peatub.

Maksimaalne aeg on mõeldud ettevaatusabinõuks juhuks, kui kasutaja unustab selle peatada või kui käsk saadeti kogemata ja on ebatõenäoline, et keegi seda peatab. Me ei taha, et relee oleks lõputult sisse lülitatud või ootamatuid probleeme voodiga seoses pikaajalise kontaktide sulgemisega.

Minu koodis on see aeg 20 sekundit ja seda saab reguleerida koodi ülaosas asuvas globaalses muutujaplokis.

Teine ettevaatusabinõu oli alati veenduda, et kui ma aktiveerin ühe relee, kutsutakse alati välja teise tahtlik väljalülitamine, isegi kui viimane olek oli juba välja lülitatud. Ma ei taha saata 12v mõlemat signaaliliini, sest ma ei tea, mida see voodile teeb.

Peale selle avaldab voodi, et see on saadaval iga 60 sekundi tagant ja ongi kõik. Siin ei ole kellad ega viled. Kuna voodil pole positsiooni tagasisidet, ei saanud ma ühtegi koduabilisele tagasi saata.

Samm 5: Integreerimise näide

Integratsiooni näide
Integratsiooni näide
Integratsiooni näide
Integratsiooni näide

Minu kirjutatud kood kasutab WiFi kaudu suhtlemiseks MQTT -d ja saab seega suhelda mis tahes automaatika jaoturi või seadmega, mis kasutab MQTT -d. Ma kasutan Home Assistanti, millel on sisseehitatud MQTT maakler. Allpool on näide minu HA konfiguratsioonist.

HA -s on mul cover.yaml -fail järgmise määratlusega:

- platvorm: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd" availability_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 "optimistlik: tõsi

See annab mulle ühe kirje minu HA liidesesse, millel on üles/välja/alla nupp koos ülalkirjeldatud toimingutega.

Lisaks olen määranud oma voodiäärsel juhtpaneelil (juhendatav / ajaveebi postitus) kaks nuppu voodipea tõstmiseks ja langetamiseks. Juhtpaneeli nupud on määratletud kui MQTT -andurid:

- platvorm: mqtt

state_topic: "bedside_cp1/button5" nimi: "Bedside CP1 Button 5" ikoon: mdi: ring

- platvorm: mqtt

state_topic: "bedside_cp1/button6" name: "Bedside CP1 Button 6" ikoon: mdi: ring

… Ja 4 automatiseerimisreeglit iga nupu vajutamisel ja vabastamisel. Vajutamisel saadetakse üles või alla käsk voodile sõltuvalt sellest, milline nupp aktiveeriti, kui nupp vabastatakse, saadetakse stoppkäsk:

- id: '1548308650383'

varjunimi: MBR Bedside CP nupu 5a päästik: - 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 nupu 5b päästik: - 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 nupu 6a päästik: - 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: tegevus: - andmed: olemi_id: 'cover.master_bed_headboard' teenus: cover.stop_cover

Soovitan: