Lattenrost- und Couchmotor smart gemacht

In diesem Artikel zeige ich wie ich vorgegangen bin um einen Sofa- bzw. Couch- und Lattenrost-Motor smart zu machen und die Steuerung an Home-Assistant anzubinden.

Disclaimer: In diesem Artikel beschreibe ich mein Vorgehen, mit dem ich eine solche Steuerung umgesetzt habe. Der Artikel soll nicht als Anleitung dienen. Ich übernehme keine Haftung für Schäden, die entstehen, sollte jemand mein Vorgehen nachmachen.

Worum geht es?

Es geht darum, wie ich meine Möbelmotoren (Lattenrost-Motor und Couch-Motor) smart gemacht habe. Das Ergebnis sieht man in dem folgenden Video.

Wie bin ich vorgegangen?

Der erste Motor, den ich an das Smarthome angebunden habe, war der vom elektrisch verstellbaren Lattenrost. Als erstes habe ich mir angeschaut wie die Fernbedienung angebunden ist. Also welcher Stecker verwendet wurde. In meinem Fall (ist wohl auch meistens der Fall) ist es ein DIN 5-Pol Stecker. Um herauszufinden welcher Pin was macht habe ich mir zunächst einen Splitter für den DIN 5-Pol Stecker und ein DIN 5-Pol Kabel gekauft. Den Splitter verwende ich dazu, die Fernbedienung an den Motor anzuschließen und an dem zweiten Stecker des Splitters trotzdem messen zu können welche Spannungen anliegen. Somit erfahre ich welche Pole vom Stecker welche Funktion erfüllen.

Im Normallfall kann man davon ausgehen, dass der Außenring „Minus“ bzw. „Ground“ ist. Also fing ich an zu messen. „Minus“ an den Außenring und „Plus“ an jeden einzelnen Pin. Bis auf einen Pin gab es keinen Messwert. Bei einem Pin ließ sich jedoch ein Wert messen – damit hatte ich dann auch schonmal „Plus“. Da mein Messgerät auf DC (Gleichstrom) eingestellt war und der Wert vom Positiven ins Negative wechselte, merkte ich, dass ich einen Wechselstrommotor habe. Also habe ich das Messgerät schnell auf AC (Wechselstrom) gestellt :).

Da ich jetzt „Plus“ und „Minus“ herausgefunden habe, habe ich mich um die anderen Pins gekümmert. Bei den anderen Pins ließ sich jedoch ersteinmal nichts messen. Im nächsten Schritt habe ich auf der Fernbedienung einen Taster betätigt und gemessen auf welchem der anderen Pins eine Spannung anliegt. Mein Lattenrost hat vier Funktionen: Kopfteil hoch, Kopfteil runter, Fußteil hoch, Fußteil runter. Durch das Messen konnte ich sämtliche Pins identifizieren. Einen für „Plus“, vier für die Funktionen und den Außenring für „Minus“. Meine Couch hat zwei Funktionen: hoch und runter. Hier sind auch nur drei der Pins belegt. Also einen für „Plus“ und jeweils einen für die Funktion.

Mit einem Kabel hatte ich kurz den „Plus“-Pin und den Pin einer Funktion verbunden um zu schauen ob das alles funktioniert – und Tatsache, der Motor machte was ich mir erhofft hatte.

Wie habe ich die Steuerung gebaut?

Da ich jetzt die Kontakt kannte, konnte ich damit weiterarbeiten. „Plus“ und „Minus“ lieferten jedoch noch Wechselstrom und sind somit nicht Plus und Minus im eigentlichen Sinne. Also habe ich als erstes einen Gleichrichter verwendet um den Wechselstrom in Gleichstrom umzuwandeln. Somit hatte ich Gleichstrom, jedoch war die Spannung mit 14V viel zu hoch um den Wemos D1 Mini damit zu betreiben. Ein DC-DC Konverter hat mir da aber Abhilfe geschaffen. Damit konnte ich die Spannung von 14V auf 5V herunterregeln um den Wemos D1 Mini zu betreiben.

Der Wemos D1 Mini war jetzt schonmal versorgt, jedoch ohne Funktion. Als nächstes musste ich also die Kontakte durchschalten (die restlichen vier Pins beim Lattenrost bzw. zwei Pins bei der Couch). Hierzu habe ich fertige Relay-Platinen verwendet, da die sich anbieten und ich sowieso noch einige davon zu Hause hatte. Da ich ja jetzt wusste welcher Pin am DIN-Stecker welchen Nutzen hat, konnte ich mit den Relais die einzelnen Pins mit dem „Plus“-Pol verbinden um die Funktion auszuführen.

Ein Relais auf der fertigen Platine hat im Normalfall (auf der Ausgangsseite) drei Anschlüsse. NC, COM und NO. NC steht für „normally closed“, also der Ausgang ist geschlossen, wenn das Relais nicht anzieht. NO steht für „normally open“, also der Ausgang der offen ist, wenn das Relais nicht anzieht. COM ist der Anschluss, der mit NO bzw. NC verbunden wird, jenachdem ob das Relais anzieht oder nicht. Soviel zu Relais.

Ich hatte ja herausgefunden, dass die Funktionen (hoch, runter) funktionieren, indem „Plus“ mit einem der restlichen Pins verbunden wird. Also habe ich in einem der Relais COM mit „Plus“ verbunden und NC mit einem der restlichen Pins. Das gleiche dann mit den anderen Pins und den anderen Relais-NC-Ports.

Bei den Relays, die ich verwende musste ich die Pins im Code invertieren. Das scheint aber nicht bei jedem Relay der Fall zu sein, bzw. bei meinen ist wohl nur die Beschriftung falschherum angebracht. Bevor ich die Relays an den DIN-Stecker angeschlossen habe, habe ich ersteinmal ausgemessen ob die Relays korrekt schalten um nicht den Motor kauputt zu machen, wenn doch irgendetwas falsch gelaufen wäre.

Wie sieht mein Code aus?

Für meinen Code habe ich ESPHome verwendet, da die Konfiguration extremst simpel ist und die Anbindung an Home-Assistant nativ integriert ist. Wie ich den Code auf meinen Wemos D1 Mini geladen bekomme, habe ich mir in deren Doku angeguckt. Meine Konfiguration für die Steuerung sieht wie folgt aus:

esphome:
  name: couch
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: "WLAN-SSID"
  password: "WLAN-PASSWORT"

switch:
  - platform: gpio
    pin: 
      number: D1
      inverted: yes
    name: "Head Up"
    id: relay_head_up
    interlock: [relay_head_down]

  - platform: gpio
    pin: 
      number: D2
      inverted: yes
    name: "Head Down"
    id: relay_head_down
    interlock: [relay_head_up]
    
  - platform: gpio
    pin: 
      number: D5
      inverted: yes
    name: "Feet Up"
    id: relay_feet_up
    interlock: [relay_feet_down]
    
  - platform: gpio
    pin: 
      number: D0
      inverted: yes
    name: "Feet Down"
    id: relay_feet_down
    interlock: [relay_feet_up]

cover:
  - platform: time_based
    name: "Head"

    open_action:
      - switch.turn_on: relay_head_up
    open_duration: 22s

    close_action:
      - switch.turn_on: relay_head_down
    close_duration: 20s

    stop_action:
      - switch.turn_off: relay_head_up
      - switch.turn_off: relay_head_down
  - platform: time_based
    name: "Feet"

    open_action:
      - switch.turn_on: relay_feet_up
    open_duration: 22s

    close_action:
      - switch.turn_on: relay_feet_down
    close_duration: 21s

    stop_action:
      - switch.turn_off: relay_feet_up
      - switch.turn_off: relay_feet_down



# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

Die Sekundenangabe ist leicht erklärt. Da ich keine Endstops habe, also nicht merke wann der Motor komplett hochgefahren ist, habe ich ihn mehrmals hoch- und runterfahren lassen und jeweils die benötigte Zeit gemessen. Ich habe da die maximal gemessene Zeit genommen und eine Sekunde draufgerechnet. Mir ist jedoch im Laufe der Zeit aufgefallen, dass es schon sehr darauf ankommen kann wer auf dem Bett liegt bzw. auf der Couch sitzt. Je höher das Gewicht umso länger braucht der Motor um hoch- bzw. herunterzufahren, da die Last, die er bewegen muss eine größere ist. Im Laufe der Zeit habe ich jedoch Werte gefunden mit den ich glücklich bin.

Was habe ich benötigt?

Splitter
DIN 5pol
Preis prüfenAmazon *

Kabel
DIN 5pol
Preis prüfenAmazon *

Buchse
DIN 5pol
Preis prüfenAmazon *

Multimeter
Tacklife DM01M
27,99€
33,99€
-18%Amazon *
Stand: 24.11.2020 00:44

Wemos D1 mini
Preis prüfenebay *
Preis prüfenAliExpress *
Preis prüfenBanggood *
Preis prüfenGearbest *
Preis prüfenAmazon *

DC-DC Konverter
LM2596
Preis prüfenBanggood *
Preis prüfenGearbest *
Preis prüfenAmazon *
Preis prüfenAliExpress *

B80C800DM
Preis prüfenebay *

2fach Relais Modul
Preis prüfenAmazon *

Fazit

Es ist immer schwer ein Fazit zu seinen eigenen Projekten zu ziehen. Zu allererst kann ich sagen, dass es viel Spaß gemacht hat und für mich auch Neuland war und ich extrems glücklich bin, dass ich nichts kaputt gemacht habe, obwohl sehr viel hätte schiefgehen können. Ich finde es schade, dass es so eine Lösung nicht direkt von den Herstellern gibt (abgesehen von Infrarot), da die Technik nun wirklich kein Hexenwerk ist. Ich musste es aber auch längere Zeit im Betrieb haben um die idealen Zeiten für das hoch- und herunterfahren herauszufinden. Anschließend wollte ich es jedoch nicht mehr missen. Durch die Home-Assistant Integration konnte ich auf sämtliche Schalter zugreifen, die in Home-Assistant integriert waren um den Motor zu steuern. Für ioBroker oder openHAB dürfte es nicht anders aussehen. Auch die Anbindung an Sprachsteuerung durch Amazon Alexa oder Google Home dürfte kein Problem darstellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.