Indholdsfortegnelse:

Trådløs MQTT sengegavl kontrol: 5 trin (med billeder)
Trådløs MQTT sengegavl kontrol: 5 trin (med billeder)

Video: Trådløs MQTT sengegavl kontrol: 5 trin (med billeder)

Video: Trådløs MQTT sengegavl kontrol: 5 trin (med billeder)
Video: TERNCY SD01 - логический zigbee диммер-кнопка, интеграция в Home Assistant, практическое применение 2024, Juli
Anonim
Trådløs MQTT sengegavl kontrol
Trådløs MQTT sengegavl kontrol
Trådløs MQTT sengegavl kontrol
Trådløs MQTT sengegavl kontrol

For et par år siden købte vi en ny hukommelse af skum, og som det er tilfældet med de fleste senge, skulle du også købe en af deres "godkendte baser" for at opretholde en garanti. Så vi valgte den billigste base, der også omfattede evnen til at hæve og sænke sengens hoved. Et par dage senere blev vores madras og vores amerikanske justerbare billige base med kablede betjeninger (en til hver side af sengen) leveret og opsat.

Det første, vi lagde mærke til, var, at snore i showroomet, der var fine og lange, ikke var, hvad vi havde på vores seng! Dem i udstillingslokalet havde udvidelser. Disse forlængelser var IKKE inkluderet i vores seng og interessant nok, ingen var interesseret i at sælge os et par forlængerkabler. Dette efterlod os med kontroller, der næsten ikke nåede toppen af sengen, og som vi måtte vende om for at bruge.

Du får hvad du betaler for

Efter cirka 6 måneder bemærker vi, at belastningsaflastningskraverne på en af kontrollerne begyndte at rive. Et par måneder senere - bar ledning. Hurtigt frem omkring et år, den ene af betjeningselementerne fungerer ikke længere, og den anden bliver en smule rykende.

Igen var ingen interesseret i at sælge os erstatninger. Så ramte det mig!

Vent et forbandet minut! Bygger jeg ikke et hjemmeautomatiserings- og KONTROL -system?!?

Trin 1: Opdagelse

Opdagelse
Opdagelse
Opdagelse
Opdagelse

Jeg ville se, hvad jeg kunne gøre med det, jeg havde, så jeg tog den defekte controller -appart og wow! der var meget lort derinde! Hvad var alt dette til? Jeg trådte tilbage og kiggede bare på linjerne, der kom ind og ud. Jeg kunne se, at der var en 12 volt forsyningsledning og en jordledning. De to andre linjer lignede signallinjer for de to op- og nedknapper. Så jeg tog en chance og hoppede lige 12v -forsyningen over til "op" -linjen. Sengen begyndte at bevæge sig! Jeg flyttede derefter min jumper wire til "down" signallinjen og sengen gik ned!

I boksen er der kontakter til yderligere 4 signallinjer og 4 knapper mere. Mit bedste gæt er, at dette controller board bruges i alle deres kabelforbundne basismodeller, og de lægger bare forskellige ansigtsplader over brættet efter behov. Så jeg havde en arbejdsteori. Jeg testede forsyningsledningen for at se, om den dyppede under brug eller spidsede til enhver tid - nej. Der var meget lidt strømtræk over signallinjerne, men de krævede 12 volt for at aktivere motoren.

Trin 2: Design

Design
Design
Design
Design
Design
Design
Design
Design

Så en simpel kontaktforbindelse mellem VCC og signalstiften er alt, hvad der er nødvendigt, men hvordan gøres det i mit system. To relæer ville være nødvendige for kontakterne, og en ESP8266 ville fungere for den trådløse controller. Da relæerne kan kræve mere strøm, end de digitale stifter kan levere, er det bedst at bruge en optoisolator mellem controller og relæ. Dette vil tillade et lille signal at tænde en switch med højere strøm (i dette tilfælde en lysdrevet transistor) og sikkert aktivere relæspolen. En optoisolator isolerer også controlleren fra eventuelle pigge, der kan dannes, når relæspolen frigives, og magnetfeltet kollapser. Heldigvis findes relæmoduler, der allerede indeholder alt dette kredsløb og til en temmelig lav pris.

Sengen vil være strømforsyningen til controlleren, og for at håndtere de medfølgende 12 volt har vi brug for en variabel bukkonverter. En meget billig en er blevet linket herunder og fungerer smukt. 12V-ledningen og GND-ledningerne forbindes til konverterens indgangsside, og den regulerede 5 volt-side tilsluttes VCC på NodeMCU og VCC-stiften på relæmodulet. (-) på konverteren tilsluttes GND-stifterne på både relæmodulet og NodeMCU.

NodeMCU opretter forbindelse til IN1 ved hjælp af D1 (GPIO5) og IN2 ved hjælp af D2 (GPIO4). Op -signallinjen på sengen tilsluttes den normalt åbne skrueterminal for relæ 1, og ned -signallinjen tilsluttes til relæ 2, der normalt er åbnet til terminalblok. Du skal tilslutte 12v -ledningen, der er tilsluttet indgangssiden af bukkomformeren, også til den anden terminalblokforbindelse til BÅDE relæ 1 og 2.

Dele

  • 1 - NodeMCU
  • 1 - Duelrelæmodul med strømisolering
  • 1 - Variabel input/output buck konverter
  • 1 - Breadboard PCB
  • 22 gauge strenget kobberkerntråd
  • 2 - M3x 8 skruer

Trin 3: Kapsling

Kabinet
Kabinet

Kabinettet findes her:

Jeg har designet en enkel kabinet med Tinkercad, der gør det muligt for sengekontrolkablet at komme ind i kassen mellem trækaflastningsbeslag inde i kassen. Der er åbninger til lynlåse her, der ville hjælpe med at forhindre kablet i at glide, men i mit tilfælde var pasformen meget tæt og behøvede det ikke. Dækslet er skruet fast med 2 M3x 8 skruer. Jeg vil anbefale at uploade koden og teste systemet, før du monterer det i æsken.

Jeg brugte varm lim til at holde brædderne på plads, men det er muligvis ikke nødvendigt.

Trin 4: Kode

Koden kan findes her:

BEMÆRK: Dette projekt bruger pubsubclient -biblioteket, som kan tilføjes i Library Manager i Arduino IDE

Koden her er temmelig grundlæggende og blev designet baseret på Cover MQTT -typen i Home Assistant. Ideen her er enkel: Når du trykker på op- eller ned -knappen i hjemmeassistenten, lukker det relevante relæ, indtil stopkommandoen modtages ELLER systemet når en maksimal aktiveringstid og stopper.

Den maksimale tid er beregnet som en sikkerhedsforanstaltning, hvis brugeren glemmer at stoppe den, eller hvis kommandoen ved et uheld blev sendt, og det er usandsynligt, at nogen vil stoppe den. Vi ønsker ikke relæet på på ubestemt tid eller uventede problemer med sengen på grund af langvarig kontaktlukning.

I min kode er denne timeout 20 sekunder og kan justeres i den globale variabelblok øverst i koden.

En anden sikkerhedsforanstaltning var altid at sikre, at hvis jeg aktiverer det ene relæ, kaldes der altid en forsætlig deaktivering af det andet, selvom den sidste tilstand allerede var slukket. Jeg vil ikke sende 12v ned ad begge signallinjer, da jeg ikke ved, hvad det vil gøre ved sengen.

Bortset fra det offentliggør sengen, at den er tilgængelig hvert 60. sekund, og det er det. Ingen klokker eller fløjter her. Da sengen ikke har positionsfeedback, kunne jeg ikke sende nogen tilbage til Home Assistant.

Trin 5: Eksempel på integration

Eksempel på integration
Eksempel på integration
Eksempel på integration
Eksempel på integration

Koden, jeg skrev, bruger MQTT til at kommunikere via WiFi og kan derfor kommunikere med ethvert automatiseringshub eller en enhed, der bruger MQTT. Jeg bruger Home Assistant, der har en indbygget MQTT -mægler. Nedenfor er et eksempel på min HA -konfiguration.

I HA har jeg en covers.yaml -fil med følgende definition:

- platform: mqtt

navn: "Master Bed Headboard" command_topic: "master_bed_control/cmd" availability_topic: "master_bed_control/availability" qos: 0 behold: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline "optimistisk: sandt

Dette giver mig en post i min HA -grænseflade med en op/stop/ned -knap indstillet med handlingen som beskrevet ovenfor.

Derudover har jeg defineret to knapper på mit sengekontrolpanel (instruerbart / blogindlæg) til at hæve og sænke sengegavlen. Knapperne på kontrolpanelet er defineret som MQTT -sensorer:

- platform: mqtt

state_topic: "bedside_cp1/button5" navn: "CP1 -knap 5 ved sengen" -ikon: mdi: cirkel

- platform: mqtt

state_topic: "bedside_cp1/button6" navn: "CP1 -knap 6 ved sengen" -ikon: mdi: cirkel

… og 4 automatiseringsregler for, hvornår der trykkes på hver knap og slippes. Når der trykkes på, sendes op eller ned -kommandoen til sengen afhængigt af hvilken knap der blev aktiveret, når knappen slippes, sendes kommandoen 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: ' 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: handling: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover

Anbefalede: