Inhaltsverzeichnis:

Kabellose MQTT-Bettkopfteilsteuerung - Gunook
Kabellose MQTT-Bettkopfteilsteuerung - Gunook

Video: Kabellose MQTT-Bettkopfteilsteuerung - Gunook

Video: Kabellose MQTT-Bettkopfteilsteuerung - Gunook
Video: JBL | Endurance Race | Wasserdichte, komplett kabellose, aktive Sport-Ohrhörer 2024, Juli
Anonim
Kabellose MQTT-Bettkopfteilsteuerung
Kabellose MQTT-Bettkopfteilsteuerung
Kabellose MQTT-Bettkopfteilsteuerung
Kabellose MQTT-Bettkopfteilsteuerung

Vor einigen Jahren haben wir ein neues Memory-Foam-Bett angeschafft und wie bei den meisten Betten musste man auch eine der "zugelassenen Untergestelle" erwerben, um die Garantie zu erhalten. Also haben wir uns für die kostengünstigste Basis entschieden, die auch die Möglichkeit bietet, das Kopfende des Bettes anzuheben und abzusenken. Ein paar Tage später wurde unsere Matratze und unsere billige American Adjustables-Unterlage mit kabelgebundenen Bedienelementen (eine für jede Seite des Bettes) geliefert und eingerichtet.

Als erstes fiel uns auf, dass die schönen und langen Schnüre im Ausstellungsraum nicht das waren, was wir auf unserem Bett hatten! Die im Showroom hatten Erweiterungen. Diese Verlängerungen waren NICHT im Lieferumfang unseres Bettes enthalten und interessant genug, niemand wollte uns ein Paar Verlängerungskabel verkaufen. Dies ließ uns mit Bedienelementen zurück, die kaum die Oberseite des Bettes erreichten und die wir umdrehen mussten, um sie zu benutzen.

Sie bekommen, wofür Sie bezahlen

Nach ca. 6 Monaten stellen wir fest, dass die Zugentlastungsmanschetten an einer der Kontrollen zu reißen begannen. Ein paar Monate später - blanker Draht. Etwa ein Jahr später funktioniert eine der Steuerungen nicht mehr und die andere wird etwas unruhig.

Auch hier war niemand daran interessiert, uns Ersatz zu verkaufen. Dann hat es mich erwischt!

Warte eine verdammte Minute! Baue ich nicht ein Hausautomatisierungs- und STEUERsystem?!?

Schritt 1: Entdeckung

Entdeckung
Entdeckung
Entdeckung
Entdeckung

Ich wollte sehen, was ich mit dem, was ich hatte, machen kann, also nahm ich den defekten Controller auseinander und wow! da war viel scheiße drin! Wofür war das ganze Zeug? Ich trat einen Schritt zurück und sah mir nur die Linien an, die ein- und ausgingen. Ich konnte sehen, dass es eine 12-Volt-Versorgungsleitung und eine Masseleitung gab. Die anderen beiden Leitungen sahen aus wie Signalleitungen für die beiden Auf- und Ab-Tasten. Also habe ich eine Chance ergriffen und einfach die 12-V-Versorgung auf die "Up"-Signalleitung geschoben. Das Bett begann sich zu bewegen! Ich habe dann mein Überbrückungskabel auf die Signalleitung "unten" verlegt und das Bett ging runter!

In der Box befinden sich Kontakte für 4 weitere Signalleitungen und 4 weitere Taster. Meine beste Vermutung ist, dass diese Controller-Platine in allen kabelgebundenen Basismodellen verwendet wird und sie bei Bedarf einfach verschiedene Frontplatten über die Platine legen. Ich hatte also eine Arbeitstheorie. Ich habe die Versorgungsleitung getestet, um zu sehen, ob sie während des Gebrauchs eingetaucht oder zu irgendeinem Zeitpunkt aufgestockt wurde - nein. Es gab sehr wenig Stromaufnahme über die Signalleitungen, aber sie benötigten 12 Volt, um den Motor zu aktivieren.

Schritt 2: Design

Entwurf
Entwurf
Entwurf
Entwurf
Entwurf
Entwurf
Entwurf
Entwurf

Es wird also nur eine einfache Kontaktverbindung zwischen VCC und dem Signalstift benötigt, aber wie wird das in meinem System gemacht? Für die Kontakte wären zwei Relais erforderlich und für den drahtlosen Controller würde ein ESP8266 funktionieren. Da die Relais möglicherweise mehr Strom benötigen, als die digitalen Pins liefern können, ist es am besten, einen Optoisolator zwischen Controller und Relais zu verwenden. Dadurch kann ein kleines Signal einen Schalter mit höherem Strom (in diesem Fall einen lichtgesteuerten Transistor) einschalten und die Relaisspule sicher aktivieren. Außerdem isoliert ein Optoisolator den Controller von jeglichen Spitzen, die sich bilden können, wenn die Relaisspule losgelassen wird und das Magnetfeld zusammenbricht. Glücklicherweise gibt es Relaismodule, die all diese Schaltungen bereits enthalten und das zu einem ziemlich niedrigen Preis.

Das Bett wird die Stromversorgung für den Controller sein und um die gelieferten 12 Volt zu verarbeiten, benötigen wir einen variablen Abwärtswandler. Ein sehr preiswertes wurde unten verlinkt und funktioniert wunderbar. Die 12-V-Leitung und die GND-Leitungen sind mit der Eingangsseite des Konverters verbunden und die geregelte 5-Volt-Seite ist mit dem VCC der NodeMCU und dem VCC-Pin des Relaismoduls verbunden. Die Masse (-) des Konverters ist mit den GND-Pins an verbunden sowohl das Relaismodul als auch die NodeMCU.

Die NodeMCU verbindet sich mit IN1 über D1 (GPIO5) und IN2 mit D2 (GPIO4). Die Aufwärts-Signalleitung am Bett wird an die normalerweise offene Schraubklemme für Relais 1 und die Abwärts-Signalleitung an den normalerweise offenen Klemmenblockstecker von Relais 2 angeschlossen. Sie müssen das 12-V-Kabel, das an die Eingangsseite des Abwärtswandlers angeschlossen ist, auch an den anderen Klemmenblockanschluss für BEIDE Relais 1 und 2 anschließen.

Teile

  • 1 - KnotenMCU
  • 1 - Duel-Relais-Modul mit Stromtrennung
  • 1 - Variabler Eingangs-/Ausgangs-Abwärtswandler
  • 1 - Steckbrettplatine
  • 22 Gauge verseilter Kupferkerndraht
  • 2 - M3x 8 Schrauben

Schritt 3: Gehäuse

Gehege
Gehege

Die Anlage findet ihr hier:

Ich habe mit Tinkercad ein einfaches Gehäuse entworfen, das es ermöglicht, dass das Bettsteuerkabel zwischen Zugentlastungsklammern in der Box in die Box eingeführt wird. Es gibt hier Schlitze für einen Kabelbinder, die helfen würden, das Kabel am Verrutschen zu hindern, aber in meinem Fall war die Passform sehr eng und brauchte sie nicht. Die Abdeckung wird mit 2 M3x 8 Schrauben verschraubt. Ich würde empfehlen, den Code hochzuladen und das System zu testen, bevor Sie es in die Box einbauen.

Ich habe Heißkleber verwendet, um die Bretter an Ort und Stelle zu halten, aber dies ist möglicherweise nicht erforderlich.

Schritt 4: Code

Den Code finden Sie hier:

HINWEIS: Dieses Projekt verwendet die pubsubclient-Bibliothek, die im Bibliotheksmanager in der Arduino IDE hinzugefügt werden kann

Der Code hier ist ziemlich einfach und wurde basierend auf dem Cover MQTT-Typ in Home Assistant entworfen. Die Idee hier ist einfach: Wenn Sie im Home Assistant die Auf- oder Ab-Taste drücken, schließt das entsprechende Relais, bis der Stoppbefehl empfangen wird ODER das System eine maximale Aktivierungszeit erreicht und stoppt.

Die maximale Zeit dient als Sicherheitsvorkehrung für den Fall, dass der Benutzer vergisst, ihn zu stoppen oder wenn der Befehl versehentlich gesendet wurde und es unwahrscheinlich ist, dass jemand ihn stoppt. Wir möchten nicht, dass das Relais auf unbestimmte Zeit eingeschaltet wird oder unerwartete Probleme mit dem Bett aufgrund eines längeren Kontaktschlusses auftreten.

In meinem Code beträgt dieser Timeout 20 Sekunden und kann im globalen Variablenblock oben im Code angepasst werden.

Eine zweite Sicherheitsvorkehrung war, immer darauf zu achten, dass beim Aktivieren eines Relais immer eine bewusste Deaktivierung des anderen aufgerufen wird, auch wenn der letzte Zustand schon ausgeschaltet war. Ich möchte nicht 12 V über beide Signalleitungen senden, da ich nicht weiß, was das mit dem Bett macht.

Ansonsten veröffentlicht das Bett alle 60 Sekunden, dass es verfügbar ist und das wars. Kein Schnickschnack hier. Da das Bett keine Positionsrückmeldung hat, konnte ich keine an Home Assistant zurücksenden.

Schritt 5: Beispielintegration

Beispielintegration
Beispielintegration
Beispielintegration
Beispielintegration

Der von mir geschriebene Code verwendet MQTT, um über WLAN zu kommunizieren und kann daher mit jedem Automatisierungs-Hub oder -Gerät kommunizieren, das MQTT verwendet. Ich verwende Home Assistant, der über einen integrierten MQTT-Broker verfügt. Unten ist ein Beispiel für meine HA-Konfiguration.

In HA habe ich eine cover.yaml-Datei mit der folgenden Definition:

- Plattform: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd" available_topic: "master_bed_control/availability" qos: 0 keep: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline" optimistisch: wahr

Dies gibt mir einen Eintrag in meiner HA-Schnittstelle mit einer Auf/Stop/Down-Taste mit der oben beschriebenen Aktion.

Zusätzlich habe ich zwei Tasten auf meinem Bedside Control Panel (Instructable / Blog Post) definiert, um das Kopfteil anzuheben und abzusenken. Die Tasten auf dem Bedienfeld sind als MQTT-Sensoren definiert:

- Plattform: mqtt

state_topic: "bedside_cp1/button5" Name: "Bedside CP1 Button 5" Symbol: mdi:circle

- Plattform: mqtt

state_topic: "bedside_cp1/button6" Name: "Bedside CP1 Button 6" Symbol: mdi:circle

… und 4 Automatisierungsregeln für das Drücken und Loslassen jeder Taste. Beim Drücken wird der Auf- oder Ab-Befehl an das Bett gesendet, je nachdem welche Taste aktiviert wurde, beim Loslassen der Taste der Stopp-Befehl:

- 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: action: - Daten: Entity_id: 'cover.master_bed_headboard' Dienst: cover.stop_cover

Empfohlen: