Skip to content

breaching/Velux-Control-with-ESPHome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

Velux Window Automation - ESP32 + KUX 100 Remote

License: MIT ESP32 ESPHome Home Assistant

Cheap DIY automation for VELUX skylight windows. €30 to €50 in parts, vs €200+ for the official VELUX ACTIVE with NETATMO hub.

An ESP32 wired to 3 transistors that simulate the UP / DOWN / STOP button presses of a KUX 100 remote. Once flashed with ESPHome, the windows appear as three switches in Home Assistant.

How it works

  • ESP32 GPIOs trigger NPN transistors that short the button pads of an opened KUX 100 PCB.
  • ESPHome exposes 3 momentary switches (200 ms pulse).
  • Home Assistant picks them up via the ESPHome integration.
  • The remote runs off the ESP32's 3.3 V, batteries removed.

Bill of materials

Component Qty Cost Notes
ESP32 dev board 1 €4 to €5 DevKitC or Wemos D1 Mini
NPN transistor 3 €1 to €2 2N3904, 2N2222, or BC547
1 kΩ resistor 3 €0.50 Base current limiting
KUX 100 remote 1 €20 to €40 Second-hand, must be paired with your windows
Wires / pin headers 1 €2

Total: €30 to €50.

Wiring

For each button (UP, DOWN, STOP):

  • ESP32 GPIO -> 1 kΩ -> transistor base.
  • Transistor emitter -> shared ground (also connected to KUX 100 GND).
  • Transistor collector -> button pad on the KUX 100 PCB.
  • ESP32 3.3 V and GND also power the KUX 100 PCB (batteries removed).

Default GPIO assignment in the ESPHome config below:

  • UP: GPIO 18
  • DOWN: GPIO 27
  • STOP: GPIO 17

Opening the remote

Remote opened

Remove batteries, gently pry the plastic clips, lift the PCB. Keep the metal battery contacts intact, they're reused for VCC and GND. Peel the tape covering the button pads to expose the contacts.

PCB ready for solder

My build

Finished PCB

ESP32 mounted under the perfboard. VCC and GND go to a 2-pin terminal block.

ESPHome config

esphome:
  name: velux_remote
  platform: ESP32
  board: esp32dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

output:
  - platform: gpio
    pin: 18
    id: button_up
  - platform: gpio
    pin: 27
    id: button_down
  - platform: gpio
    pin: 17
    id: button_stop

switch:
  - platform: template
    name: "Velux UP"
    turn_on_action:
      - output.turn_on: button_up
      - delay: 200ms
      - output.turn_off: button_up

  - platform: template
    name: "Velux DOWN"
    turn_on_action:
      - output.turn_on: button_down
      - delay: 200ms
      - output.turn_off: button_down

  - platform: template
    name: "Velux STOP"
    turn_on_action:
      - output.turn_on: button_stop
      - delay: 200ms
      - output.turn_off: button_stop

Store Wi-Fi credentials in ESPHome's secrets.yaml, not in this file.

Troubleshooting

  • No remote response: the KUX 100 must still be paired with the window. Verify transistor orientation (E/B/C), and that all grounds are tied together.
  • ESPHome can't reach the device: check Wi-Fi credentials and boot logs over USB.
  • One button works, not the others: almost always a cold solder joint on the button pad.

Roadmap

  • Custom 3D-printed enclosure.
  • Compact KiCad PCB to replace the perfboard.

Contributing

Issues and PRs welcome, particularly with pinouts for other VELUX remote models.

License

MIT, see LICENSE.

About

💡 This project automates Velux windows using an ESP32 microcontroller connected to a KUX 100 remote.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors