Sommario:

Controllo della testiera del letto MQTT wireless: 5 passaggi (con immagini)
Controllo della testiera del letto MQTT wireless: 5 passaggi (con immagini)

Video: Controllo della testiera del letto MQTT wireless: 5 passaggi (con immagini)

Video: Controllo della testiera del letto MQTT wireless: 5 passaggi (con immagini)
Video: Il NUMERO di TELEFONO di mia SORELLA… 2024, Luglio
Anonim
Controllo della testiera del letto MQTT wireless
Controllo della testiera del letto MQTT wireless
Controllo della testiera del letto MQTT wireless
Controllo della testiera del letto MQTT wireless

Qualche anno fa abbiamo acquistato un nuovo letto in memory foam e, come nel caso della maggior parte dei letti, è stato necessario acquistare anche una delle loro "basi approvate" per mantenere la garanzia. Quindi, abbiamo optato per la base meno costosa che prevedeva anche la possibilità di alzare e abbassare la testata del letto. Pochi giorni dopo il nostro materasso e la nostra base economica American Adjustables con comandi cablati (uno per ogni lato del letto) sono stati consegnati e installati.

La prima cosa che abbiamo notato è che le corde nello showroom che erano belle e lunghe non erano quelle che avevamo sul nostro letto! Quelle nello showroom avevano delle estensioni. Queste estensioni NON erano incluse con il nostro letto e abbastanza interessanti, nessuno era interessato a venderci un paio di cavi di prolunga. Questo ci ha lasciato con i controlli che raggiungevano a malapena la parte superiore del letto e che dovevamo girare per usare.

Si ottiene quello che si paga

Dopo circa 6 mesi notiamo che i collari antistrappo su uno dei controlli stavano iniziando a lacerarsi. Pochi mesi dopo - filo nudo. Avanti veloce di circa un anno, uno dei controlli non funziona più e l'altro sta diventando un po' nervoso.

Ancora una volta, nessuno era interessato a venderci ricambi. Poi mi ha colpito!

Aspetta un dannato minuto! Non sto costruendo un sistema domotico e di CONTROLLO?!?

Passaggio 1: scoperta

Scoperta
Scoperta
Scoperta
Scoperta

Volevo vedere cosa potevo fare con quello che avevo, quindi ho preso il controller difettoso a parte e wow! c'era un sacco di merda lì dentro! A cosa serviva tutta questa roba? Ho fatto un passo indietro e ho solo guardato le linee che entravano e uscivano. Ho potuto vedere che c'era una linea di alimentazione da 12 volt e una linea di terra. Le altre due linee sembravano linee di segnale per i due pulsanti su e giù. Quindi, ho colto l'occasione e ho semplicemente ponticellato l'alimentazione a 12 V sulla linea del segnale "su". Il letto ha iniziato a muoversi! Ho quindi spostato il cavo del ponticello sulla linea del segnale "giù" e il letto è caduto!

Nella scatola sono presenti i contatti per altre 4 linee di segnale e altri 4 pulsanti. La mia ipotesi migliore è che questa scheda controller sia utilizzata in tutti i loro modelli di base cablati e che mettano semplicemente diversi frontalini sulla scheda secondo necessità. Quindi, avevo una teoria funzionante. Ho testato la linea di alimentazione per vedere se si abbassava durante l'uso o si caricava in qualsiasi momento - no. C'era pochissimo assorbimento di corrente sulle linee di segnale, ma richiedevano 12 volt per attivare il motore.

Passaggio 2: progettazione

Design
Design
Design
Design
Design
Design
Design
Design

Quindi una semplice connessione di contatto tra VCC e il pin del segnale è tutto ciò che è necessario, ma come viene fatto all'interno del mio sistema. Sarebbero necessari due relè per i contatti e un ESP8266 funzionerebbe per il controller wireless. Poiché i relè possono richiedere più corrente di quella che possono fornire i pin digitali, è meglio utilizzare un optoisolatore tra il controller e il relè. Ciò consentirà a un piccolo segnale di attivare un interruttore di corrente più alta (in questo caso un transistor a luce) e attivare in sicurezza la bobina del relè. Inoltre, un optoisolatore isola il controller da eventuali picchi che possono formarsi quando la bobina del relè viene rilasciata e il campo magnetico crolla. Fortunatamente, esistono moduli relè che contengono già tutti questi circuiti e ad un prezzo piuttosto basso.

Il letto sarà l'alimentatore per il controller e per gestire i 12 volt forniti, avremo bisogno di un convertitore buck variabile. Uno molto economico è stato collegato di seguito e funziona magnificamente. La linea da 12 V e le linee GND si collegano al lato di ingresso del convertitore e il lato a 5 volt regolato si collega al VCC del NodeMCU e al pin VCC sul modulo relè. La massa (-) sul convertitore si collega ai pin GND su sia il modulo relè che il NodeMCU.

Il NodeMCU si connette a IN1 usando D1 (GPIO5) e IN2 usando D2 (GPIO4). La linea del segnale di salita sul letto si collega al terminale a vite normalmente aperto per il relè 1 e la linea del segnale di discesa si collega al connettore della morsettiera normalmente aperta del relè 2. Dovrai collegare il filo da 12 V che è collegato al lato di ingresso del convertitore buck anche all'altra connessione della morsettiera per ENTRAMBI i relè 1 e 2.

Parti

  • 1 - NodoMCU
  • 1 - Modulo relè Duel con isolamento di corrente
  • 1 - Convertitore buck ingresso/uscita variabile
  • 1 - PCB tagliere
  • Cavo con anima in rame intrecciato calibro 22
  • 2 - Viti M3x 8

Passaggio 3: allegato

Allegato
Allegato

L'allegato può essere trovato qui:

Ho progettato un semplice contenitore con Tinkercad che consente al cavo di controllo del letto di entrare nella scatola tra le staffe antistrappo all'interno della scatola. Ci sono fessure per una fascetta qui che aiuterebbero a evitare che il cavo scivoli, ma nel mio caso la vestibilità era molto aderente e non ne avevo bisogno. Il coperchio è fissato con 2 viti M3x8. Consiglierei di caricare il codice e testare il sistema prima di montarlo nella scatola.

Ho usato la colla a caldo per tenere le tavole in posizione, ma potrebbe non essere necessario.

Passaggio 4: codice

Il codice può essere trovato qui:

NOTA: questo progetto utilizza la libreria pubsubclient che può essere aggiunta nel Gestore della libreria nell'IDE di Arduino

Il codice qui è piuttosto semplice ed è stato progettato in base al tipo Cover MQTT in Home Assistant. L'idea qui è semplice: quando si preme il pulsante su o giù nell'assistente domestico, il relè appropriato si chiude fino a quando non viene ricevuto il comando di arresto OPPURE il sistema raggiunge un tempo massimo di attivazione e si arresta.

Il tempo massimo è inteso come precauzione di sicurezza nel caso in cui l'utente dimentichi di interromperlo o se il comando è stato inviato accidentalmente ed è improbabile che qualcuno lo fermi. Non vogliamo che il relè si accenda a tempo indeterminato o problemi imprevisti con il letto dovuti alla chiusura prolungata del contatto.

Nel mio codice, questo timeout è di 20 secondi e può essere regolato nel blocco della variabile globale nella parte superiore del codice.

Una seconda precauzione di sicurezza è stata quella di fare sempre in modo che se sto attivando un relè, venga sempre chiamata una disattivazione intenzionale dell'altro, anche se l'ultimo stato era già spento. Non voglio inviare 12v su entrambe le linee di segnale poiché non so cosa farà al letto.

Oltre a ciò, il letto pubblica che è disponibile ogni 60 secondi e basta. Niente campane o fischietti qui. Dal momento che il letto non ha feedback sulla posizione, non ho potuto inviarne indietro a Home Assistant.

Passaggio 5: esempio di integrazione

Esempio di integrazione
Esempio di integrazione
Esempio di integrazione
Esempio di integrazione

Il codice che ho scritto utilizza MQTT per comunicare tramite WiFi e quindi può comunicare con qualsiasi hub o dispositivo di automazione che utilizza MQTT. Uso Home Assistant che ha un broker MQTT integrato. Di seguito è riportato un esempio della mia configurazione HA.

In HA ho un file cover.yaml con la seguente definizione:

- piattaforma: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd" availability_topic: "master_bed_control/availability" qos: 0 keep: false payload_open: "SU" payload_close: "GI" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline" ottimista: vero

Questo mi dà una voce nella mia interfaccia HA con un pulsante su/stop/giù impostato con l'azione come descritto sopra.

Inoltre, ho definito due pulsanti sul mio pannello di controllo sul comodino (Instructable / Post del blog) per alzare e abbassare la testiera. I pulsanti sul pannello di controllo sono definiti come sensori MQTT:

- piattaforma: mqtt

state_topic: "bedside_cp1/button5" nome: "bedside CP1 Button 5" icona: mdi:circle

- piattaforma: mqtt

state_topic: "bedside_cp1/button6" nome: "bedside CP1 Button 6" icona: mdi:cerchio

… e 4 regole di automazione per quando ogni pulsante viene premuto e rilasciato. Alla pressione viene inviato il comando di salita o discesa al letto a seconda di quale pulsante è stato attivato, al rilascio del pulsante viene inviato il comando di stop:

- ID: '1548308650383'

alias: MBR Bedside CP Button 5a trigger: - entity_id: sensor.bedside_cp1_button_5 da: 'Off' piattaforma: stato a: 'On' condizione: azione: - dati: entity_id: ' cover.master_bed_headboard' servizio: cover.open_cover - id: '1548308758911' alias: MBR Bedside CP Button 5b trigger: - entity_id: sensor.bedside_cp1_button_5 da: 'On' piattaforma: stato a: 'Off' condizione: azione: - data: entity_id: servizio ' cover.master_bed_headboard': cover.stop_cover - id: '1548308863495' alias: MBR Comodino CP Pulsante 6a trigger: - entity_id: sensor.bedside_cp1_button_6 da: 'Off' piattaforma: stato a: 'On' condizione: azione: - data: entity_id: ' cover.master_bed_headboard' servizio: cover.close_cover - id: '1548308911467' alias: MBR Bedside CP Button 6b trigger: - entity_id: sensor.bedside_cp1_button_6 da: 'On' piattaforma: stato a: 'Off' condizione: azione: - dati: entity_id: 'cover.master_bed_headboard' servizio: cover.stop_cover

Consigliato: