Cuprins:

Control wireless al tăbliei patului MQTT: 5 pași (cu imagini)
Control wireless al tăbliei patului MQTT: 5 pași (cu imagini)

Video: Control wireless al tăbliei patului MQTT: 5 pași (cu imagini)

Video: Control wireless al tăbliei patului MQTT: 5 pași (cu imagini)
Video: subtitlu) O liniște încântătoare: Dezvăluirea eleganței istorice cu luxul modern! 2024, Iulie
Anonim
Control wireless al tăbliei patului MQTT
Control wireless al tăbliei patului MQTT
Control wireless al tăbliei patului MQTT
Control wireless al tăbliei patului MQTT

În urmă cu câțiva ani, am achiziționat un pat nou din spumă cu memorie și, la fel ca în cazul majorității paturilor, a trebuit să achiziționați una dintre „bazele aprobate” pentru a menține o garanție. Deci, am optat pentru cea mai puțin costisitoare bază, care a inclus și capacitatea de a ridica și coborî capul patului. Câteva zile mai târziu, au fost livrate și configurate salteaua noastră și baza ieftină americană ajustabilă cu comenzi cu fir (una pentru fiecare parte a patului).

Primul lucru pe care l-am observat a fost că corzile din showroom, care erau frumoase și lungi, nu erau ceea ce aveam pe pat! Cele din showroom aveau extensii. Aceste extensii NU au fost incluse în patul nostru și sunt destul de interesante, nimeni nu era interesat să ne vândă o pereche de cabluri prelungitoare. Acest lucru ne-a lăsat cu comenzi care abia au ajuns în vârful patului și pe care a trebuit să le predăm pentru a le folosi.

Primesti ceea ce platesti

După aproximativ 6 luni, observăm că gulerele de reducere a tensiunii de pe unul dintre controale începeau să se rupă. Câteva luni mai târziu - sârmă goală. Avansează aproximativ un an, una dintre comenzi nu mai funcționează, iar cealaltă devine puțin zvâcnitoare.

Din nou, nimeni nu era interesat să ne vândă înlocuitori. Atunci m-a lovit!

Așteaptă al naibii de minut! Nu construiesc un sistem de automatizare și CONTROL?

Pasul 1: descoperire

Descoperire
Descoperire
Descoperire
Descoperire

Am vrut să văd ce aș putea face cu ceea ce aveam, așa că am luat controlerul defect appart și wow! acolo era multă porcărie acolo! Pentru ce erau toate aceste lucruri? M-am dat înapoi și m-am uitat doar la liniile care intrau și ieșeau. Am putut vedea că există o linie de alimentare de 12 volți și o linie de sol. Celelalte două linii arătau ca linii de semnal pentru cele două butoane sus și jos. Așadar, am riscat și am sărit alimentarea de 12V la linia de semnal „sus”. Patul a început să se miște! Mi-am mutat apoi firul jumper pe linia de semnal „jos” și patul a coborât!

În casetă există contacte pentru încă 4 linii de semnal și încă 4 butoane. Cea mai bună presupunere a mea este că această placă de control este utilizată în toate modelele de bază cu fir și au pus diferite plăci față peste placă, după cum este necesar. Deci, am avut o teorie de lucru. Am testat linia de alimentare pentru a vedea dacă a scăzut în timpul utilizării sau a crescut în orice moment - nu. A fost foarte puțin consumat curentul peste liniile de semnal, dar au necesitat 12 volți pentru a activa motorul.

Pasul 2: Proiectare

Proiecta
Proiecta
Proiecta
Proiecta
Proiecta
Proiecta
Proiecta
Proiecta

Deci, este nevoie doar de o conexiune simplă de contact între VCC și pinul de semnal, dar cum se face acest lucru în sistemul meu. Două relee ar fi necesare pentru contacte și un ESP8266 ar funcționa pentru controlerul wireless. Deoarece releele pot necesita mai mult curent decât pot furniza pinii digitali, este mai bine să utilizați un optoizolator între controler și releu. Acest lucru va permite un semnal mic să pornească un comutator de curent mai mare (în acest caz un tranzistor acționat de lumină) și să activeze în siguranță bobina releului. De asemenea, un optoizolator izolează controlerul de orice vârfuri care se pot forma atunci când bobina releului este eliberată și câmpul magnetic se prăbușește. Din fericire, există module de releu care conțin deja toate aceste circuite și la un preț destul de mic.

Patul va fi sursa de alimentare pentru controler și, pentru a face față celor 12 volți furnizați, vom avea nevoie de un convertor variabil. Unul foarte ieftin a fost legat mai jos și funcționează frumos. Linia de 12V și liniile GND se conectează la partea de intrare a convertorului, iar partea reglată de 5 volți se conectează la VCC-ul NodeMCU și pinul VCC de pe modulul releu. Masa (-) de pe convertor se conectează la pinii GND de pe atât modulul releu, cât și NodeMCU.

NodeMCU se conectează la IN1 folosind D1 (GPIO5) și IN2 utilizând D2 (GPIO4). Linia de semnal de sus de pe pat se conectează la borna cu șurub normal deschisă pentru releul 1, iar linia de semnal de jos se conectează la conectorul blocului de borne normal deschis al releului 2. Va trebui să conectați firul de 12v care este conectat la partea de intrare a convertorului Buck și la cealaltă conexiune a blocului de borne pentru AMBELE releelor 1 și 2.

Părți

  • 1 - NodeMCU
  • 1 - Modul releu dublu cu izolarea curentului
  • 1 - Convertor variabil de intrare / ieșire
  • 1 - PCB pentru panouri
  • Sârmă cu miez de cupru torsadat de calibru 22
  • 2 - M3x 8 șuruburi

Pasul 3: incintă

Incintă
Incintă

Incinta poate fi găsită aici:

Am proiectat o carcasă simplă cu Tinkercad care permite cablului de control al patului să intre în cutie între consolele de siguranță din interiorul cutiei. Există sloturi pentru o cravată cu fermoar care ar ajuta la menținerea cablului de a aluneca, dar în cazul meu, potrivirea a fost foarte confortabilă și nu a avut nevoie de ea. Capacul este înșurubat cu 2 șuruburi M3x 8. Aș recomanda încărcarea codului și testarea sistemului înainte de a-l monta în cutie.

Am folosit lipici fierbinte pentru a menține plăcile în loc, dar este posibil să nu fie necesar.

Pasul 4: Cod

Codul poate fi găsit aici:

NOTĂ: Acest proiect folosește biblioteca pubsubclient, care poate fi adăugată în Library Manager în Arduino IDE

Codul de aici este destul de simplu și a fost conceput pe baza tipului Cover MQTT din Home Assistant. Ideea de aici este simplă: când apăsați butonul sus sau jos din asistentul de acasă, releul corespunzător se închide până când se primește comanda de oprire SAU sistemul atinge un timp maxim de activare și se oprește.

Timpul maxim este menit ca o măsură de siguranță în cazul în care utilizatorul uită să o oprească sau dacă comanda a fost trimisă accidental și este puțin probabil ca cineva să o oprească. Nu dorim ca releul să fie pornit la nesfârșit sau orice probleme neașteptate cu patul datorită închiderii prelungite a contactului.

În codul meu, acest timeout este de 20 de secunde și poate fi ajustat în blocul global variabil din partea de sus a codului.

O a doua măsură de siguranță a fost să mă asigur întotdeauna că, dacă activez un releu, este întotdeauna apelată o dezactivare intenționată a celuilalt, chiar dacă ultima stare a fost deja oprită. Nu vreau să trimit 12V pe ambele linii de semnal, deoarece nu știu ce va face asta la pat.

În afară de asta, patul publică că este disponibil la fiecare 60 de secunde și asta este. Fără clopote sau fluiere aici. Deoarece patul nu are feedback de poziție, nu am putut să-l trimit înapoi pe niciunul la Home Assistant.

Pasul 5: Exemplu de integrare

Exemplu de integrare
Exemplu de integrare
Exemplu de integrare
Exemplu de integrare

Codul pe care l-am scris folosește MQTT pentru a comunica prin WiFi și, prin urmare, poate comunica cu orice hub sau dispozitiv de automatizare care utilizează MQTT. Folosesc Home Assistant care are un broker MQTT încorporat. Mai jos este un exemplu al configurației mele HA.

În HA am un fișier covers.yaml cu următoarea definiție:

- platformă: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control / cmd" Availability_topic: "master_bed_control / Availability" qos: 0 retain: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline "optimist: adevărat

Acest lucru îmi oferă o singură intrare în interfața mea HA cu un buton sus / stop / jos setat cu acțiunea așa cum este descris mai sus.

În plus, am definit două butoane de pe panoul de control al noptierei (instructabil / postare pe blog) pentru a ridica și a coborî tăblia. Butoanele de pe panoul de control sunt definite ca senzori MQTT:

- platformă: mqtt

state_topic: „pat_cp1 / buton5” nume: pictogramă „Buton CP1 noptieră 5”: mdi: cerc

- platformă: mqtt

state_topic: „pat de noapte_cp1 / buton6” nume: pictogramă „Buton de pat 6 CP1”: mdi: cerc

… Și 4 reguli de automatizare pentru momentul în care fiecare buton este apăsat și eliberat. Când este apăsată, comanda sus sau jos este trimisă în pat în funcție de butonul care a fost activat, când butonul este eliberat, comanda de oprire este trimisă:

- 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 Buton declanșator 5b: - entity_id: sensor.bedside_cp1_button_5 din: 'On' platform: state to: 'Off' condiție: action: - data: entity_id: serviciul 'cover.master_bed_headboard': 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: ' service.master_bed_headboard ': cover.close_cover - id:' 1548308911467 'alias: MBR Comodă Buton CP 6b declanșator: - entity_id: sensor.bedside_cp1_button_6 din:' On 'platform: state to:' Off 'condiție: acțiune: - date: entity_id: serviciul „cover.master_bed_headboard”: cover.stop_cover

Recomandat: